[Xfce4-commits] [xfce/xfce4-panel] 01/01: tasklist: Fix crash middle-click-closing grouped windows (Bug #16410)

noreply at xfce.org noreply at xfce.org
Mon Feb 24 23:30:31 CET 2020


This is an automated email from the git hooks/post-receive script.

o   c   h   o   s   i       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       x   f   c   e   -   4   .   1   4   
   in repository xfce/xfce4-panel.

commit c6e5acdd8551d757ba988475ae2280add3ff0d6b
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Mon Feb 24 23:27:42 2020 +0100

    tasklist: Fix crash middle-click-closing grouped windows (Bug #16410)
    
    Unfortunately the menu doesn't resize when removing an item, so we close
    it (even though keeping it open would allow users to middle-click close
    multiple windows in a row, which seems to be a valid use case).
---
 plugins/tasklist/tasklist-widget.c | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

diff --git a/plugins/tasklist/tasklist-widget.c b/plugins/tasklist/tasklist-widget.c
index 653c299..f8b1be6 100644
--- a/plugins/tasklist/tasklist-widget.c
+++ b/plugins/tasklist/tasklist-widget.c
@@ -339,6 +339,9 @@ static XfceTasklistChild *xfce_tasklist_button_new                       (WnckWi
                                                                           XfceTasklist         *tasklist);
 
 /* tasklist group buttons */
+static void               xfce_tasklist_group_button_menu_close          (GtkWidget            *menuitem,
+                                                                          XfceTasklistChild    *child,
+                                                                          guint32               time);
 static gboolean           xfce_tasklist_group_button_button_draw         (GtkWidget            *widget,
                                                                           cairo_t         *cr,
                                                                           XfceTasklistChild    *group_child);
@@ -3041,7 +3044,11 @@ xfce_tasklist_button_button_release_event (GtkWidget         *button,
               break;
 
             case XFCE_TASKLIST_MIDDLE_CLICK_CLOSE_WINDOW:
-              wnck_window_close (child->window, event->time);
+              if (child->type == CHILD_TYPE_GROUP_MENU
+                  && GTK_IS_MENU_ITEM (button))
+                xfce_tasklist_group_button_menu_close (button, child, event->time);
+              else
+                wnck_window_close (child->window, event->time);
               return TRUE;
 
             case XFCE_TASKLIST_MIDDLE_CLICK_MINIMIZE_WINDOW:
@@ -3588,6 +3595,23 @@ xfce_tasklist_group_button_menu_close_all (XfceTasklistChild *group_child)
 
 
 
+static void
+xfce_tasklist_group_button_menu_close (GtkWidget         *menuitem,
+                                       XfceTasklistChild *child,
+                                       guint32            time)
+{
+  GtkWidget *menu = gtk_widget_get_parent (menuitem);
+
+  panel_return_if_fail (WNCK_IS_WINDOW (child->window));
+  panel_return_if_fail (GTK_IS_MENU (menu));
+
+  gtk_container_remove (GTK_CONTAINER (menu), menuitem);
+  gtk_menu_popdown (GTK_MENU (menu));
+  wnck_window_close (child->window, time);
+}
+
+
+
 static GtkWidget *
 xfce_tasklist_group_button_menu (XfceTasklistChild *group_child,
                                  gboolean           action_menu_entries)

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list