fix combobox issue
All checks were successful
pyrite-dev/milsko/pipeline/head This commit looks good

This commit is contained in:
Nishi 2026-04-24 12:53:27 +09:00
commit 4536b30fbc
2 changed files with 9 additions and 2 deletions

View file

@ -424,6 +424,8 @@ struct _MwLLWayland {
MwBool did_initial_resize; MwBool did_initial_resize;
MwBool is_toplevel;
/* Map of Wayland interfaces to their relevant setup functions. */ /* Map of Wayland interfaces to their relevant setup functions. */
struct { struct {
char* key; char* key;

View file

@ -1787,7 +1787,7 @@ static void clip(MwLL handle) {
arrput(ws, handle); arrput(ws, handle);
while(toplevel) { while(toplevel) {
arrput(ws, toplevel); arrput(ws, toplevel);
if(!toplevel->wayland.parent) { if(!toplevel->wayland.parent || toplevel->wayland.is_toplevel) {
break; break;
} }
toplevel = toplevel->wayland.parent; toplevel = toplevel->wayland.parent;
@ -1841,7 +1841,7 @@ static void clip(MwLL handle) {
region_setup(handle); region_setup(handle);
cairo_reset_clip(handle->wayland.front_cairo); cairo_reset_clip(handle->wayland.front_cairo);
if(handle->wayland.type == MwLL_WAYLAND_SUBLEVEL) { if(handle->wayland.type == MwLL_WAYLAND_SUBLEVEL && !handle->wayland.is_toplevel) {
cairo_rectangle(handle->wayland.front_cairo, cx - x, cy - y, mx - cx, my - cy); cairo_rectangle(handle->wayland.front_cairo, cx - x, cy - y, mx - cx, my - cy);
cairo_clip(handle->wayland.front_cairo); cairo_clip(handle->wayland.front_cairo);
} }
@ -1953,6 +1953,8 @@ static MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) {
undestroy(r); undestroy(r);
} }
r->wayland.is_toplevel = parent == NULL;
widget_setup(r, parent, x, y, width, height, MwLL_WAYLAND_UNKNOWN); widget_setup(r, parent, x, y, width, height, MwLL_WAYLAND_UNKNOWN);
#ifdef USE_DBUS #ifdef USE_DBUS
@ -2514,6 +2516,7 @@ static void MwLLSetIconImpl(MwLL handle, MwLLPixmap pixmap) {
static void MwLLForceRenderImpl(MwLL handle) { static void MwLLForceRenderImpl(MwLL handle) {
WIDGET_CHECK(handle); WIDGET_CHECK(handle);
if(handle->wayland.force_render) return;
wl_surface_damage(handle->wayland.framebuffer.surface, 0, 0, handle->wayland.ww, handle->wayland.wh); wl_surface_damage(handle->wayland.framebuffer.surface, 0, 0, handle->wayland.ww, handle->wayland.wh);
handle->wayland.force_render = MwTRUE; handle->wayland.force_render = MwTRUE;
@ -2769,6 +2772,8 @@ static void MwLLEndStateChangeImpl(MwLL handle) {
widget_setup(handle, handle->wayland.parent, handle->wayland.detach_point.x, handle->wayland.detach_point.y, handle->wayland.ww, handle->wayland.wh, handle->wayland.type_to_be); widget_setup(handle, handle->wayland.parent, handle->wayland.detach_point.x, handle->wayland.detach_point.y, handle->wayland.ww, handle->wayland.wh, handle->wayland.type_to_be);
handle->wayland.is_toplevel = MwTRUE;
if(!handle->wayland.parent) if(!handle->wayland.parent)
handle->wayland.dark_theme_detection = MwTRUE; handle->wayland.dark_theme_detection = MwTRUE;