[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