From 48fde32e62c75f136c8d4c920c2f8c9612179457 Mon Sep 17 00:00:00 2001 From: John Lindgren Date: Thu, 8 Sep 2022 13:16:19 -0400 Subject: [PATCH] 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. --- src/ssd/ssd.c | 6 ++++++ 1 file changed, 6 insertions(+) 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) {