From: John Lindgren Date: Thu, 8 Sep 2022 17:16:19 +0000 (-0400) Subject: ssd: Make ssd_get_part_type() work for corner buttons X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=48fde32e62c75f136c8d4c920c2f8c9612179457;p=proto%2Flabwc.git ssd: Make ssd_get_part_type() work for corner buttons Corner buttons (WINDOW_MENU and CLOSE) are one more level down in the scene-tree (see add_scene_button_corner() in ssd_part.c). This fixes a minor issue where, when right-clicking on the CLOSE button, the client-menu would be displayed in the wrong location. --- diff --git a/src/ssd/ssd.c b/src/ssd/ssd.c index 744f650e..14e7f462 100644 --- a/src/ssd/ssd.c +++ b/src/ssd/ssd.c @@ -68,12 +68,16 @@ ssd_get_part_type(struct view *view, struct wlr_scene_node *node) struct wl_list *part_list = NULL; struct wlr_scene_tree *grandparent = node->parent ? node->parent->node.parent : NULL; + struct wlr_scene_tree *greatgrandparent = + grandparent ? grandparent->node.parent : NULL; /* active titlebar */ if (node->parent == view->ssd.titlebar.active.tree) { part_list = &view->ssd.titlebar.active.parts; } else if (grandparent == view->ssd.titlebar.active.tree) { part_list = &view->ssd.titlebar.active.parts; + } else if (greatgrandparent == view->ssd.titlebar.active.tree) { + part_list = &view->ssd.titlebar.active.parts; /* extents */ } else if (node->parent == view->ssd.extents.tree) { @@ -88,6 +92,8 @@ ssd_get_part_type(struct view *view, struct wlr_scene_node *node) part_list = &view->ssd.titlebar.inactive.parts; } else if (grandparent == view->ssd.titlebar.inactive.tree) { part_list = &view->ssd.titlebar.inactive.parts; + } else if (greatgrandparent == view->ssd.titlebar.inactive.tree) { + part_list = &view->ssd.titlebar.inactive.parts; /* inactive border */ } else if (node->parent == view->ssd.border.inactive.tree) {