[Xfce4-commits] [panel-plugins/xfce4-pulseaudio-plugin] 01/03: Fixed a crash in menu popup/popdown

noreply at xfce.org noreply at xfce.org
Mon Mar 9 01:09:58 CET 2015


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

andrzejr pushed a commit to branch master
in repository panel-plugins/xfce4-pulseaudio-plugin.

commit bdc61d057f3197cbc553ce9f83a979e912f4f802
Author: Andrzej <ndrwrdck at gmail.com>
Date:   Sun Mar 8 23:57:42 2015 +0000

    Fixed a crash in menu popup/popdown
    
    Seems like creating/destroying menus leaks memory.
---
 panel-plugin/pulseaudio-button.c |   20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/panel-plugin/pulseaudio-button.c b/panel-plugin/pulseaudio-button.c
index 631b3ea..d064be8 100644
--- a/panel-plugin/pulseaudio-button.c
+++ b/panel-plugin/pulseaudio-button.c
@@ -199,22 +199,25 @@ pulseaudio_button_button_press (GtkWidget      *widget,
 {
   PulseaudioButton *button = PULSEAUDIO_BUTTON (widget);
 
-  if(event->button == 1) /* left button */
+  if(event->button == 1 && button->menu == NULL) /* left button */
     {
       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), TRUE);
-      if (button->menu == NULL)
-          button->menu = pulseaudio_menu_new (button->volume, button->config, widget);
+      button->menu = pulseaudio_menu_new (button->volume, button->config, widget);
+      gtk_menu_attach_to_widget (GTK_MENU (button->menu), widget, NULL);
+
       if (button->deactivate_id == 0)
+        {
           button->deactivate_id = g_signal_connect_swapped
             (GTK_MENU_SHELL (button->menu), "deactivate",
              G_CALLBACK (pulseaudio_button_menu_deactivate), button);
+        }
 
       gtk_menu_popup (GTK_MENU (button->menu),
                       NULL, NULL,
                       xfce_panel_plugin_position_menu, button->plugin,
                       //NULL, NULL,
-                      0,
-                      gtk_get_current_event_time ());
+                      1,
+                      event->time);
       return TRUE;
     }
 
@@ -258,6 +261,13 @@ pulseaudio_button_menu_deactivate (PulseaudioButton *button,
       button->deactivate_id = 0;
     }
 
+  if (button->menu != NULL)
+    {
+      gtk_menu_detach (GTK_MENU (button->menu));
+      gtk_menu_popdown (GTK_MENU (button->menu));
+      button->menu = NULL;
+    }
+
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
 }
 

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


More information about the Xfce4-commits mailing list