From 647b86fd7d9f53fcc008412bbf8392890a1f58d2 Mon Sep 17 00:00:00 2001 From: IoIxD Date: Sat, 26 Sep 2026 17:24:56 -0700 Subject: [PATCH] fix popup positions --- include/Mw/TypeDefs.h | 1 + src/backend/wayland/wayland.c | 10 +++++++--- src/widget/submenu.c | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/Mw/TypeDefs.h b/include/Mw/TypeDefs.h index 65700dbb..2a4093a5 100644 --- a/include/Mw/TypeDefs.h +++ b/include/Mw/TypeDefs.h @@ -158,6 +158,7 @@ struct _MwWidget { long last_tick; MwBool is_menu; + MwBool is_submenu; }; #endif diff --git a/src/backend/wayland/wayland.c b/src/backend/wayland/wayland.c index 07039bdc..fea04702 100644 --- a/src/backend/wayland/wayland.c +++ b/src/backend/wayland/wayland.c @@ -549,9 +549,13 @@ static void setup_popup(MwLL r, int x, int y, MwLL parent) { } if(!topmost_parent->wayland.has_decorations && topmost_parent->wayland.do_csd) { - if(p->is_menu) { - r->wayland.x += round((float)CSD_BORDER_FRAME_LEFT / 2.); - r->wayland.y += ceil((float)CSD_BORDER_FRAME_TOP / 2.); + if(p->is_submenu) { + } else if(p->is_menu) { + r->wayland.x += ((float)CSD_BORDER_FRAME_LEFT / 2.); + r->wayland.y += ((float)CSD_BORDER_FRAME_TOP / 2.); + } else { + r->wayland.x += ((float)CSD_BORDER_FRAME_LEFT); + r->wayland.y += ((float)CSD_BORDER_FRAME_TOP); } } } diff --git a/src/widget/submenu.c b/src/widget/submenu.c index 0b320e60..e2bab1cc 100644 --- a/src/widget/submenu.c +++ b/src/widget/submenu.c @@ -8,7 +8,8 @@ static int wcreate(MwWidget handle) { MwSetDefault(handle); MwSetInteger(handle, MwNleftPadding, 0); - handle->internal = NULL; + handle->internal = NULL; + handle->is_submenu = MwTRUE; return 0; }