Eliminate usage of lxpanel_plugin_button_press_event() in plugins.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Fri, 15 Aug 2014 17:41:50 +0000 (20:41 +0300)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Sat, 16 Aug 2014 16:23:40 +0000 (19:23 +0300)
The panel code will do it on plugin behalf and show the content menu.
The plugin may use appropriate callback to modify that menu.

15 files changed:
src/plugin.c
src/plugin.h
src/plugins/batt/batt.c
src/plugins/cpufreq/cpufreq.c
src/plugins/dclock.c
src/plugins/deskno/deskno.c
src/plugins/dirmenu.c
src/plugins/launchtaskbar.c
src/plugins/menu.c
src/plugins/monitors/monitors.c
src/plugins/netstatus/netstatus.c
src/plugins/volume/volume.c
src/plugins/volumealsa/volumealsa.c
src/plugins/wincmd.c
src/plugins/xkb/xkb-plugin.c

index 66ee92f..ab16299 100644 (file)
@@ -279,7 +279,8 @@ void plugin_widget_set_background(GtkWidget * w, LXPanel * panel)
  * External so can be used from a plugin. */
 gboolean lxpanel_plugin_button_press_event(GtkWidget *plugin, GdkEventButton *event, LXPanel *panel)
 {
-    if (event->button == 3) /* right button */
+    if (event->button == 3 && /* right button */
+        (event->state & gtk_accelerator_get_default_mod_mask()) == 0) /* no key */
     {
         GtkMenu* popup = (GtkMenu*)lxpanel_get_plugin_menu(panel, plugin, FALSE);
         gtk_menu_popup(popup, NULL, NULL, NULL, NULL, event->button, event->time);
@@ -593,12 +594,12 @@ GtkWidget *lxpanel_add_plugin(LXPanel *p, const char *name, config_setting_t *cf
         widget = init->new_instance(p, pconf);
         if (widget == NULL)
             return widget;
+        /* always connect lxpanel_plugin_button_press_event() */
+        g_signal_connect(widget, "button-press-event",
+                         G_CALLBACK(lxpanel_plugin_button_press_event), p);
         if (init->button_press_event)
             g_signal_connect(widget, "button-press-event",
                              G_CALLBACK(init->button_press_event), p);
-        else
-            g_signal_connect(widget, "button-press-event",
-                             G_CALLBACK(lxpanel_plugin_button_press_event), p);
     }
     else
     {
index dc97b2b..a1c42e4 100644 (file)
@@ -66,8 +66,10 @@ G_BEGIN_DECLS
  * own subwidgets appropriately to new geometry.
  *
  * Callback @button_press_event is a handler for "button-press-event"
- * signal on the plugin instance. If this callback is not set then
- * lxpanel_plugin_button_press_event() will be used.
+ * signal on the plugin instance. If this callback is not set then only
+ * lxpanel_plugin_button_press_event() will be used. Note that callback
+ * will never receive right-clicks without modifier because mentioned
+ * lxpanel_plugin_button_press_event() handles it.
  *
  * Callback @show_system_menu is called when lxpanel received a message
  * by 'lxpanelctl menu' command. It will be sent to each instance if more
@@ -139,7 +141,7 @@ extern gboolean lxpanel_register_plugin_type(const char *name, LXPanelPluginInit
 /* few helper functions */
 extern GtkMenu* lxpanel_get_plugin_menu(LXPanel* panel, GtkWidget* plugin, gboolean use_sub_menu);
 extern gboolean lxpanel_plugin_button_press_event(GtkWidget *plugin, GdkEventButton *event, LXPanel *panel);
-                       /* Handler for "button_press_event" signal with Plugin as parameter */
+                       /* Handler for "button-press-event" signal on plugin */
 extern void lxpanel_plugin_adjust_popup_position(GtkWidget * popup, GtkWidget * plugin);
                        /* Helper to move popup windows away from the panel */
 extern void lxpanel_plugin_popup_set_position_helper(LXPanel * p, GtkWidget * near, GtkWidget * popup, gint * px, gint * py);
index caecc85..39cfb79 100644 (file)
@@ -343,7 +343,7 @@ static gboolean buttonPressEvent(GtkWidget *p, GdkEventButton *event,
 
     update_display(lx_b, TRUE);
 
-    return lxpanel_plugin_button_press_event(p, event, panel);
+    return FALSE;
 }
 
 
index 4b99ca0..327acd5 100644 (file)
@@ -302,8 +302,6 @@ clicked(GtkWidget *widget, GdkEventButton *evt, LXPanel *panel)
     ENTER2;
 
     /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, evt, panel))
-        return TRUE;
     if( evt->button == 1 )
     {
 // Setting governor can't work without root privilege
index 8f1c2e9..eba18ae 100644 (file)
@@ -104,13 +104,7 @@ static GtkWidget * dclock_create_calendar(DClockPlugin * dc)
 /* Handler for "button-press-event" event from main widget. */
 static gboolean dclock_button_press_event(GtkWidget * widget, GdkEventButton * evt, LXPanel * panel)
 {
-    DClockPlugin * dc;
-
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, evt, panel))
-        return TRUE;
-
-    dc = lxpanel_plugin_get_data(widget);
+    DClockPlugin * dc = lxpanel_plugin_get_data(widget);
 
     /* If an action is set, execute it. */
     if (dc->action != NULL)
index db2de9c..af21ca7 100644 (file)
@@ -89,10 +89,6 @@ static void deskno_redraw(GtkWidget * widget, DesknoPlugin * dc)
 /* Handler for button-press-event on top level widget. */
 static gboolean deskno_button_press_event(GtkWidget * widget, GdkEventButton * event, LXPanel * p)
 {
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, event, p))
-        return TRUE;
-
     /* Right-click goes to next desktop, wrapping around to first. */
     int desknum = get_net_current_desktop();
     int desks = get_net_number_of_desktops();
index 331fa60..efef864 100644 (file)
@@ -239,10 +239,6 @@ static gboolean dirmenu_button_press_event(GtkWidget * widget, GdkEventButton *
 {
     DirMenuPlugin * dm = lxpanel_plugin_get_data(widget);
 
-    /* Standard left-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, event, p))
-        return TRUE;
-
     if (event->button == 1)
     {
         dirmenu_show_menu(widget, dm, event->button, event->time);
index 963a496..7ad6f86 100644 (file)
@@ -334,10 +334,6 @@ static void launchbutton_free(LaunchButton * btn)
 /* Handler for "button-press-event" event from launchtaskbar button. */
 static gboolean launchbutton_press_event(GtkWidget * widget, GdkEventButton * event, LaunchButton * b)
 {
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(b->p->plugin, event, b->p->panel))
-        return TRUE;
-
     if (event->button == 1 && event->type == GDK_BUTTON_PRESS) /* left button */
     {
         if (b->fi == NULL)  /* The bootstrap button */
index 710c95f..7733dfa 100644 (file)
@@ -664,10 +664,6 @@ my_button_pressed(GtkWidget *widget, GdkEventButton *event, menup *m)
     GtkAllocation allocation;
     gtk_widget_get_allocation(GTK_WIDGET(widget), &allocation);
 
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(m->box, event, m->panel))
-        return TRUE;
-
     if ((event->type == GDK_BUTTON_PRESS)
           && (event->x >=0 && event->x < allocation.width)
           && (event->y >=0 && event->y < allocation.height)) {
index f469ca3..d5bbf7a 100644 (file)
@@ -493,10 +493,6 @@ static gboolean monitors_button_press_event(GtkWidget* widget, GdkEventButton* e
 {
     MonitorsPlugin* mp = lxpanel_plugin_get_data(widget);
 
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, evt, panel))
-        return TRUE;
-
     if (mp->action != NULL)
         fm_launch_command_simple(NULL, NULL, 0, mp->action, NULL);
     else
index 638eebc..7d98f25 100644 (file)
@@ -84,10 +84,6 @@ static gboolean on_button_press( GtkWidget* widget, GdkEventButton* evt, LXPanel
     NetstatusIface* iface;
     netstatus *ns = lxpanel_plugin_get_data(widget);
 
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, evt, p))
-        return TRUE;
-
     if( evt->button == 1 ) /*  Left click*/
     {
         if( ! ns->dlg )
index 274e66f..7d5a00c 100644 (file)
@@ -193,11 +193,6 @@ static gboolean on_button_press (GtkWidget* widget, GdkEventButton* evt, LXPanel
                break;
        }
 
-       case 3: {       /* right button */
-               lxpanel_plugin_button_press_event(widget, evt, p);
-               return TRUE;
-       }
-
        case 2: {       /* middle mouse button */
                if ( ! vol->dlg ) {
                        vol->dlg = create_volume_window();
index a75a7dd..b45011b 100644 (file)
@@ -360,13 +360,7 @@ static void volumealsa_update_display(VolumeALSAPlugin * vol)
 /* Handler for "button-press-event" signal on main widget. */
 static gboolean volumealsa_button_press_event(GtkWidget * widget, GdkEventButton * event, LXPanel * panel)
 {
-    VolumeALSAPlugin * vol;
-
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, event, panel))
-        return TRUE;
-
-    vol = lxpanel_plugin_get_data(widget);
+    VolumeALSAPlugin * vol = lxpanel_plugin_get_data(widget);
 
     /* Left-click.  Show or hide the popup window. */
     if (event->button == 1)
index d404151..5005323 100644 (file)
@@ -111,13 +111,7 @@ static void wincmd_execute(WinCmdPlugin * wc, WindowCommand command)
 /* Handler for "clicked" signal on main widget. */
 static gboolean wincmd_button_clicked(GtkWidget * widget, GdkEventButton * event, LXPanel * panel)
 {
-    WinCmdPlugin * wc;
-
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, event, panel))
-        return TRUE;
-
-    wc = lxpanel_plugin_get_data(widget);
+    WinCmdPlugin * wc = lxpanel_plugin_get_data(widget);
 
     /* Left-click to iconify. */
     if (event->button == 1)
index 9d95388..12ccadf 100644 (file)
@@ -196,10 +196,6 @@ static gboolean on_xkb_button_scroll_event(GtkWidget * widget, GdkEventScroll *
 /* Handler for button-press-event on top level widget. */
 static gboolean on_xkb_button_press_event(GtkWidget * widget,  GdkEventButton * event, LXPanel * panel)
 {
-    /* Standard right-click handling. */
-    if (lxpanel_plugin_button_press_event(widget, event, panel))
-        return TRUE;
-
     /* Change to next group. */
     xkb_change_group(lxpanel_plugin_get_data(widget), 1);
     return TRUE;