[Xfce4-commits] [xfce/xfce4-power-manager] 34/64: Turn the panel button into a toggle button

noreply at xfce.org noreply at xfce.org
Mon May 26 06:00:29 CEST 2014


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

eric pushed a commit to branch master
in repository xfce/xfce4-power-manager.

commit a09c8b59287e091c898d7a23a929c24185f36e0c
Author: Eric Koegel <eric.koegel at gmail.com>
Date:   Wed May 7 12:41:00 2014 +0300

    Turn the panel button into a toggle button
---
 panel-plugins/battery/battery-button.c |   23 ++++++++++++++---------
 panel-plugins/battery/battery-button.h |    4 ++--
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/panel-plugins/battery/battery-button.c b/panel-plugins/battery/battery-button.c
index 959dbcc..7167115 100644
--- a/panel-plugins/battery/battery-button.c
+++ b/panel-plugins/battery/battery-button.c
@@ -81,13 +81,13 @@ typedef struct
     GtkWidget   *menu_item;    /* The device's item on the menu (if shown) */
 } BatteryDevice;
 
-G_DEFINE_TYPE (BatteryButton, battery_button, GTK_TYPE_BUTTON)
+G_DEFINE_TYPE (BatteryButton, battery_button, GTK_TYPE_TOGGLE_BUTTON)
 
 static void battery_button_finalize   (GObject *object);
 static gchar* get_device_description (BatteryButton *button, UpDevice *device);
 static GList* find_device_in_list (BatteryButton *button, const gchar *object_path);
 static gboolean battery_button_set_icon (BatteryButton *button);
-static void battery_button_clicked (GtkButton *b);
+static gboolean battery_button_press_event (GtkWidget *widget, GdkEventButton *event);
 static void battery_button_show_menu (BatteryButton *button);
 static void battery_button_menu_add_device (BatteryButton *button, BatteryDevice *battery_device, gboolean append);
 
@@ -474,12 +474,12 @@ static void
 battery_button_class_init (BatteryButtonClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
-    GtkButtonClass *button_class = GTK_BUTTON_CLASS (klass);
+    GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
 
     object_class->finalize = battery_button_finalize;
     object_class->set_property = battery_button_set_property;
 
-    button_class->clicked = battery_button_clicked;
+    widget_class->button_press_event = battery_button_press_event;
 
     g_object_class_install_property (object_class,
 				     PROP_PLUGIN,
@@ -556,12 +556,14 @@ battery_button_set_icon (BatteryButton *button)
     return FALSE;
 }
 
-static void
-battery_button_clicked (GtkButton *b)
+static gboolean
+battery_button_press_event (GtkWidget *widget, GdkEventButton *event)
 {
-    BatteryButton *button = BATTERY_BUTTON (b);
+    BatteryButton *button = BATTERY_BUTTON (widget);
 
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), TRUE);
     battery_button_show_menu (button);
+    return TRUE;
 }
 
 static gboolean
@@ -622,10 +624,13 @@ battery_button_show (BatteryButton *button)
 }
 
 static void
-menu_destroyed_cb(GtkWidget *object, gpointer user_data)
+menu_destroyed_cb(GtkMenuShell *menu, gpointer user_data)
 {
     BatteryButton *button = BATTERY_BUTTON (user_data);
 
+    DBG("entering");
+
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
     button->priv->menu = NULL;
 }
 
@@ -701,7 +706,7 @@ battery_button_show_menu (BatteryButton *button)
     gtk_menu_set_screen(GTK_MENU(menu), gscreen);
     /* keep track of the menu while it's being displayed */
     button->priv->menu = menu;
-    g_signal_connect(G_OBJECT(menu), "destroy", G_CALLBACK(menu_destroyed_cb), button);
+    g_signal_connect(GTK_MENU_SHELL(menu), "deactivate", G_CALLBACK(menu_destroyed_cb), button);
 
     for (item = g_list_first (button->priv->devices); item != NULL; item = g_list_next (item))
     {
diff --git a/panel-plugins/battery/battery-button.h b/panel-plugins/battery/battery-button.h
index e619cdb..d2be8b6 100644
--- a/panel-plugins/battery/battery-button.h
+++ b/panel-plugins/battery/battery-button.h
@@ -35,14 +35,14 @@ typedef struct BatteryButtonPrivate BatteryButtonPrivate;
 
 typedef struct
 {
-    GtkButton                 parent;
+    GtkToggleButton           parent;
     BatteryButtonPrivate     *priv;
 
 } BatteryButton;
 
 typedef struct
 {
-    GtkButtonClass parent_class;
+    GtkToggleButtonClass parent_class;
 
 } BatteryButtonClass;
 

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


More information about the Xfce4-commits mailing list