]> git.mdlowis.com Git - proto/labwc.git/commitdiff
ssd: Make ssd_get_part_type() work for corner buttons
authorJohn Lindgren <john@jlindgren.net>
Thu, 8 Sep 2022 17:16:19 +0000 (13:16 -0400)
committerJohn Lindgren <john@jlindgren.net>
Fri, 9 Sep 2022 19:23:13 +0000 (15:23 -0400)
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

index 744f650e23e5595d9bfc5593f13ce0524f0d0b7f..14e7f46249b398e7533c28c008d760c0090917ae 100644 (file)
@@ -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) {