summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mate-panel/drawer.c53
1 files changed, 21 insertions, 32 deletions
diff --git a/mate-panel/drawer.c b/mate-panel/drawer.c
index 3d9ee804..da33ea0e 100644
--- a/mate-panel/drawer.c
+++ b/mate-panel/drawer.c
@@ -47,20 +47,26 @@ toplevel_destroyed (GtkWidget *widget,
Drawer *drawer)
{
drawer->toplevel = NULL;
- gtk_widget_destroy (drawer->button);
+
+ if (drawer->button) {
+ gtk_widget_destroy (drawer->button);
+ drawer->button = NULL;
+ }
}
static void
destroy_drawer (GtkWidget *widget,
Drawer *drawer)
{
- if (drawer->toplevel)
+ if (drawer->toplevel) {
gtk_widget_destroy (GTK_WIDGET (drawer->toplevel));
- drawer->toplevel = NULL;
+ drawer->toplevel = NULL;
+ }
- if (drawer->close_timeout_id)
+ if (drawer->close_timeout_id) {
g_source_remove (drawer->close_timeout_id);
- drawer->close_timeout_id = 0;
+ drawer->close_timeout_id = 0;
+ }
}
static void
@@ -413,37 +419,20 @@ drawer_button_size_allocated (GtkWidget *widget,
}
static void
-panel_drawer_use_custom_icon_changed (GSettings *settings,
+panel_drawer_custom_icon_changed (GSettings *settings,
gchar *key,
Drawer *drawer)
{
- gboolean use_custom_icon;
- char *custom_icon = NULL;
-
- use_custom_icon = g_settings_get_boolean (settings, key);
-
- if (use_custom_icon) {
- custom_icon = g_settings_get_string (settings, PANEL_OBJECT_CUSTOM_ICON_KEY);
- }
-
- button_widget_set_icon_name (BUTTON_WIDGET (drawer->button), custom_icon);
+ g_return_if_fail (drawer != NULL);
+ g_return_if_fail (drawer->button != NULL);
- g_free (custom_icon);
-}
+ gboolean use_custom_icon = g_settings_get_boolean (settings, PANEL_OBJECT_USE_CUSTOM_ICON_KEY);
+ char *custom_icon = g_settings_get_string (settings, PANEL_OBJECT_CUSTOM_ICON_KEY);
-static void
-panel_drawer_custom_icon_changed (GSettings *settings,
- gchar *key,
- Drawer *drawer)
-{
- char *custom_icon;
- custom_icon = g_settings_get_string (settings, key);
-
- if (custom_icon && custom_icon [0]) {
- gboolean use_custom_icon;
- use_custom_icon = g_settings_get_boolean (settings, PANEL_OBJECT_USE_CUSTOM_ICON_KEY);
- if (use_custom_icon)
- button_widget_set_icon_name (BUTTON_WIDGET (drawer->button), custom_icon);
+ if (use_custom_icon && custom_icon != NULL && custom_icon [0] != '\0') {
+ button_widget_set_icon_name (BUTTON_WIDGET (drawer->button), custom_icon);
+ } else {
+ button_widget_set_icon_name (BUTTON_WIDGET (drawer->button), PANEL_ICON_DRAWER);
}
g_free (custom_icon);
@@ -464,7 +453,7 @@ panel_drawer_connect_to_gsettings (Drawer *drawer)
{
g_signal_connect (drawer->info->settings,
"changed::" PANEL_OBJECT_USE_CUSTOM_ICON_KEY,
- G_CALLBACK (panel_drawer_use_custom_icon_changed),
+ G_CALLBACK (panel_drawer_custom_icon_changed),
drawer);
g_signal_connect (drawer->info->settings,
"changed::" PANEL_OBJECT_CUSTOM_ICON_KEY,