From b0969bfe4707c56eb17b7d7df56102b92359339a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 9 Dec 2009 23:33:30 -0600 Subject: Flow through GValue changes. --- libdbusmenu-gtk/client.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 68c0549..66b876f 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -49,8 +49,8 @@ static gboolean new_item_normal (DbusmenuMenuitem * newitem, DbusmenuMenuite static gboolean new_item_seperator (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); static gboolean new_item_image (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); -static void process_visible (GtkMenuItem * gmi, const gchar * value); -static void process_sensitive (GtkMenuItem * gmi, const gchar * value); +static void process_visible (GtkMenuItem * gmi, const GValue * value); +static void process_sensitive (GtkMenuItem * gmi, const GValue * value); /* GObject Stuff */ G_DEFINE_TYPE (DbusmenuGtkClient, dbusmenu_gtkclient, DBUSMENU_TYPE_CLIENT); @@ -115,9 +115,9 @@ menu_pressed_cb (GtkMenuItem * gmi, DbusmenuMenuitem * mi) /* Process the visible property */ static void -process_visible (GtkMenuItem * gmi, const gchar * value) +process_visible (GtkMenuItem * gmi, const GValue * value) { - if (value == NULL || !g_strcmp0(value, "true")) { + if (value == NULL || !g_strcmp0(g_value_get_string(value), "true")) { gtk_widget_show(GTK_WIDGET(gmi)); } else { gtk_widget_hide(GTK_WIDGET(gmi)); @@ -127,9 +127,9 @@ process_visible (GtkMenuItem * gmi, const gchar * value) /* Process the sensitive property */ static void -process_sensitive (GtkMenuItem * gmi, const gchar * value) +process_sensitive (GtkMenuItem * gmi, const GValue * value) { - if (value == NULL || !g_strcmp0(value, "true")) { + if (value == NULL || !g_strcmp0(g_value_get_string(value), "true")) { gtk_widget_set_sensitive(GTK_WIDGET(gmi), TRUE); } else { gtk_widget_set_sensitive(GTK_WIDGET(gmi), FALSE); @@ -140,10 +140,10 @@ process_sensitive (GtkMenuItem * gmi, const gchar * value) /* Whenever we have a property change on a DbusmenuMenuitem we need to be responsive to that. */ static void -menu_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, gchar * value, GtkMenuItem * gmi) +menu_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GValue * value, GtkMenuItem * gmi) { if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_LABEL)) { - gtk_menu_item_set_label(gmi, value); + gtk_menu_item_set_label(gmi, g_value_get_string(value)); } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_VISIBLE)) { process_visible(gmi, value); } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_SENSITIVE)) { @@ -228,8 +228,8 @@ dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * /* Life insurance */ g_object_weak_ref(G_OBJECT(item), destoryed_dbusmenuitem_cb, gmi); - process_visible(gmi, dbusmenu_menuitem_property_get(item, DBUSMENU_MENUITEM_PROP_VISIBLE)); - process_sensitive(gmi, dbusmenu_menuitem_property_get(item, DBUSMENU_MENUITEM_PROP_SENSITIVE)); + process_visible(gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_VISIBLE)); + process_sensitive(gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_SENSITIVE)); if (parent != NULL) { new_child(parent, item, dbusmenu_menuitem_get_position(item, parent), DBUSMENU_GTKCLIENT(client)); @@ -395,10 +395,11 @@ new_item_seperator (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbusm /* This handler looks at property changes for items that are image menu items. */ static void -image_property_handle (DbusmenuMenuitem * item, const gchar * property, const gchar * value, gpointer userdata) +image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GValue * invalue, gpointer userdata) { /* We're only looking at these two properties here */ g_return_if_fail(!g_strcmp0(property, DBUSMENU_MENUITEM_PROP_ICON) || !g_strcmp0(property, DBUSMENU_MENUITEM_PROP_ICON_DATA)); + const gchar * value = g_value_get_string(invalue); if (value == NULL || value[0] == '\0') { /* This means that we're unsetting a value. */ @@ -501,11 +502,11 @@ new_item_image (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuC image_property_handle(newitem, DBUSMENU_MENUITEM_PROP_ICON, - dbusmenu_menuitem_property_get(newitem, DBUSMENU_MENUITEM_PROP_ICON), + dbusmenu_menuitem_property_get_value(newitem, DBUSMENU_MENUITEM_PROP_ICON), client); image_property_handle(newitem, DBUSMENU_MENUITEM_PROP_ICON_DATA, - dbusmenu_menuitem_property_get(newitem, DBUSMENU_MENUITEM_PROP_ICON_DATA), + dbusmenu_menuitem_property_get_value(newitem, DBUSMENU_MENUITEM_PROP_ICON_DATA), client); g_signal_connect(G_OBJECT(newitem), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, -- cgit v1.2.3 From 676987c27da3fb20881d9c56c25a005bdd088010 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 9 Dec 2009 23:38:20 -0600 Subject: Killing the image item as it's own beast. --- libdbusmenu-gtk/client.c | 50 ++++++++++++++---------------------------------- 1 file changed, 14 insertions(+), 36 deletions(-) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 66b876f..d201cc4 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -47,10 +47,10 @@ static void move_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint n static gboolean new_item_normal (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); static gboolean new_item_seperator (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); -static gboolean new_item_image (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); static void process_visible (GtkMenuItem * gmi, const GValue * value); static void process_sensitive (GtkMenuItem * gmi, const GValue * value); +static void image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GValue * invalue, gpointer userdata); /* GObject Stuff */ G_DEFINE_TYPE (DbusmenuGtkClient, dbusmenu_gtkclient, DBUSMENU_TYPE_CLIENT); @@ -74,7 +74,6 @@ dbusmenu_gtkclient_init (DbusmenuGtkClient *self) { dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(self), DBUSMENU_CLIENT_TYPES_DEFAULT, new_item_normal); dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(self), DBUSMENU_CLIENT_TYPES_SEPARATOR, new_item_seperator); - dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(self), DBUSMENU_CLIENT_TYPES_IMAGE, new_item_image); g_signal_connect(G_OBJECT(self), DBUSMENU_CLIENT_SIGNAL_NEW_MENUITEM, G_CALLBACK(new_menuitem), NULL); @@ -367,6 +366,19 @@ new_item_normal (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbusmenu return FALSE; } + image_property_handle(newitem, + DBUSMENU_MENUITEM_PROP_ICON, + dbusmenu_menuitem_property_get_value(newitem, DBUSMENU_MENUITEM_PROP_ICON), + client); + image_property_handle(newitem, + DBUSMENU_MENUITEM_PROP_ICON_DATA, + dbusmenu_menuitem_property_get_value(newitem, DBUSMENU_MENUITEM_PROP_ICON_DATA), + client); + g_signal_connect(G_OBJECT(newitem), + DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, + G_CALLBACK(image_property_handle), + client); + return TRUE; } @@ -481,37 +493,3 @@ image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GV return; } -/* This is a type call back for the image type where - it uses the GtkImageMenuitem to create the menu item. */ -static gboolean -new_item_image (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) -{ - g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); - g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); - /* Note: not checking parent, it's reasonable for it to be NULL */ - - GtkMenuItem * gmi; - gmi = GTK_MENU_ITEM(gtk_image_menu_item_new_with_label(dbusmenu_menuitem_property_get(newitem, DBUSMENU_MENUITEM_PROP_LABEL))); - gtk_menu_item_set_use_underline (gmi, TRUE); - - if (gmi != NULL) { - dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent); - } else { - return FALSE; - } - - image_property_handle(newitem, - DBUSMENU_MENUITEM_PROP_ICON, - dbusmenu_menuitem_property_get_value(newitem, DBUSMENU_MENUITEM_PROP_ICON), - client); - image_property_handle(newitem, - DBUSMENU_MENUITEM_PROP_ICON_DATA, - dbusmenu_menuitem_property_get_value(newitem, DBUSMENU_MENUITEM_PROP_ICON_DATA), - client); - g_signal_connect(G_OBJECT(newitem), - DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, - G_CALLBACK(image_property_handle), - client); - - return TRUE; -} -- cgit v1.2.3 From d3ce0f4a3b2f5b087586429a5f188a494dedc6fe Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 15 Dec 2009 14:27:15 -0600 Subject: Switching around the visible and sensitive handling to use our new fancy getters so that we have consistent handling there. --- libdbusmenu-gtk/client.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index d201cc4..66862d3 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -48,8 +48,8 @@ static void move_child (DbusmenuMenuitem * mi, DbusmenuMenuitem * child, guint n static gboolean new_item_normal (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); static gboolean new_item_seperator (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client); -static void process_visible (GtkMenuItem * gmi, const GValue * value); -static void process_sensitive (GtkMenuItem * gmi, const GValue * value); +static void process_visible (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value); +static void process_sensitive (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value); static void image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GValue * invalue, gpointer userdata); /* GObject Stuff */ @@ -114,9 +114,14 @@ menu_pressed_cb (GtkMenuItem * gmi, DbusmenuMenuitem * mi) /* Process the visible property */ static void -process_visible (GtkMenuItem * gmi, const GValue * value) +process_visible (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value) { - if (value == NULL || !g_strcmp0(g_value_get_string(value), "true")) { + gboolean val = TRUE; + if (value != NULL) { + val = dbusmenu_menuitem_property_get_bool(mi, DBUSMENU_MENUITEM_PROP_VISIBLE); + } + + if (val) { gtk_widget_show(GTK_WIDGET(gmi)); } else { gtk_widget_hide(GTK_WIDGET(gmi)); @@ -126,13 +131,13 @@ process_visible (GtkMenuItem * gmi, const GValue * value) /* Process the sensitive property */ static void -process_sensitive (GtkMenuItem * gmi, const GValue * value) +process_sensitive (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value) { - if (value == NULL || !g_strcmp0(g_value_get_string(value), "true")) { - gtk_widget_set_sensitive(GTK_WIDGET(gmi), TRUE); - } else { - gtk_widget_set_sensitive(GTK_WIDGET(gmi), FALSE); + gboolean val = TRUE; + if (value != NULL) { + val = dbusmenu_menuitem_property_get_bool(mi, DBUSMENU_MENUITEM_PROP_SENSITIVE); } + gtk_widget_set_sensitive(GTK_WIDGET(gmi), val); return; } @@ -144,9 +149,9 @@ menu_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GValue * value, GtkMen if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_LABEL)) { gtk_menu_item_set_label(gmi, g_value_get_string(value)); } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_VISIBLE)) { - process_visible(gmi, value); + process_visible(mi, gmi, value); } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_SENSITIVE)) { - process_sensitive(gmi, value); + process_sensitive(mi, gmi, value); } return; @@ -227,8 +232,8 @@ dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * /* Life insurance */ g_object_weak_ref(G_OBJECT(item), destoryed_dbusmenuitem_cb, gmi); - process_visible(gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_VISIBLE)); - process_sensitive(gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_SENSITIVE)); + process_visible(item, gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_VISIBLE)); + process_sensitive(item, gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_SENSITIVE)); if (parent != NULL) { new_child(parent, item, dbusmenu_menuitem_get_position(item, parent), DBUSMENU_GTKCLIENT(client)); -- cgit v1.2.3 From 4cc0915b394bb63dad3018d342d4baf57fd215f0 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 16 Dec 2009 16:26:49 -0600 Subject: Switching the client over to creating generic items. --- libdbusmenu-gtk/client.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 66862d3..325399d 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -34,6 +34,7 @@ License version 3 and version 2.1 along with this program. If not, see #include "client.h" #include "menuitem.h" +#include "genericmenuitem.h" /* Prototypes */ static void dbusmenu_gtkclient_class_init (DbusmenuGtkClientClass *klass); @@ -362,8 +363,8 @@ new_item_normal (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbusmenu /* Note: not checking parent, it's reasonable for it to be NULL */ GtkMenuItem * gmi; - gmi = GTK_MENU_ITEM(gtk_menu_item_new_with_label(dbusmenu_menuitem_property_get(newitem, DBUSMENU_MENUITEM_PROP_LABEL))); - gtk_menu_item_set_use_underline (gmi, TRUE); + gmi = GTK_MENU_ITEM(g_object_new(GENERICMENUITEM_TYPE, NULL)); + gtk_menu_item_set_label(gmi, dbusmenu_menuitem_property_get(newitem, DBUSMENU_MENUITEM_PROP_LABEL)); if (gmi != NULL) { dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent); @@ -416,7 +417,12 @@ image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GV { /* We're only looking at these two properties here */ g_return_if_fail(!g_strcmp0(property, DBUSMENU_MENUITEM_PROP_ICON) || !g_strcmp0(property, DBUSMENU_MENUITEM_PROP_ICON_DATA)); - const gchar * value = g_value_get_string(invalue); + + const gchar * value = NULL; + + if (invalue != NULL && G_VALUE_TYPE(invalue) == G_TYPE_STRING) { + value = g_value_get_string(invalue); + } if (value == NULL || value[0] == '\0') { /* This means that we're unsetting a value. */ @@ -435,12 +441,12 @@ image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GV g_warning("Oddly we're handling image properties on a menuitem that doesn't have any GTK structures associated with it."); return; } - GtkWidget * gtkimage = gtk_image_menu_item_get_image(GTK_IMAGE_MENU_ITEM(gimi)); + GtkWidget * gtkimage = genericmenuitem_get_image(GENERICMENUITEM(gimi)); if (!g_strcmp0(property, DBUSMENU_MENUITEM_PROP_ICON_DATA)) { /* If we have an image already built from a name that is way better than a pixbuf. Keep it. */ - if (gtk_image_get_storage_type(GTK_IMAGE(gtkimage)) == GTK_IMAGE_ICON_NAME) { + if (gtkimage != NULL && gtk_image_get_storage_type(GTK_IMAGE(gtkimage)) == GTK_IMAGE_ICON_NAME) { return; } } @@ -493,7 +499,7 @@ image_property_handle (DbusmenuMenuitem * item, const gchar * property, const GV } - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(gimi), gtkimage); + genericmenuitem_set_image(GENERICMENUITEM(gimi), gtkimage); return; } -- cgit v1.2.3 From 763a7a3e7915858a80ceb0140a13631c7c042a13 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 16 Dec 2009 21:31:32 -0600 Subject: Handline the toggle based properties --- libdbusmenu-gtk/client.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 325399d..80d067f 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -142,6 +142,47 @@ process_sensitive (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * valu return; } +/* Process the sensitive property */ +static void +process_toggle_type (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value) +{ + if (!IS_GENERICMENUITEM(gmi)) return; + if (G_VALUE_TYPE(value) != G_TYPE_STRING) return; + + const gchar * strval = g_value_get_string(value); + GenericmenuitemCheckType type = GENERICMENUITEM_CHECK_TYPE_NONE; + + if (!g_strcmp0(strval, "checkbox")) { + type = GENERICMENUITEM_CHECK_TYPE_CHECKBOX; + } else if (!g_strcmp0(strval, "radio")) { + type = GENERICMENUITEM_CHECK_TYPE_RADIO; + } + + genericmenuitem_set_check_type(GENERICMENUITEM(gmi), type); + + return; +} + +/* Process the sensitive property */ +static void +process_toggle_checked (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value) +{ + if (!IS_GENERICMENUITEM(gmi)) return; + if (G_VALUE_TYPE(value) != G_TYPE_STRING) return; + + const gchar * strval = g_value_get_string(value); + GenericmenuitemState state = GENERICMENUITEM_STATE_UNCHECKED; + + if (!g_strcmp0(strval, "checked")) { + state = GENERICMENUITEM_STATE_CHECKED; + } else if (!g_strcmp0(strval, "indeterminate")) { + state = GENERICMENUITEM_STATE_INDETERMINATE; + } + + genericmenuitem_set_state(GENERICMENUITEM(gmi), state); + return; +} + /* Whenever we have a property change on a DbusmenuMenuitem we need to be responsive to that. */ static void @@ -153,6 +194,10 @@ menu_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GValue * value, GtkMen process_visible(mi, gmi, value); } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_SENSITIVE)) { process_sensitive(mi, gmi, value); + } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE)) { + process_toggle_type(mi, gmi, value); + } else if (!g_strcmp0(prop, DBUSMENU_MENUITEM_PROP_TOGGLE_CHECKED)) { + process_toggle_checked(mi, gmi, value); } return; @@ -233,9 +278,13 @@ dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * /* Life insurance */ g_object_weak_ref(G_OBJECT(item), destoryed_dbusmenuitem_cb, gmi); + /* Check our set of props to see if any are set already */ process_visible(item, gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_VISIBLE)); process_sensitive(item, gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_SENSITIVE)); + process_toggle_type(item, gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_TOGGLE_TYPE)); + process_toggle_checked(item, gmi, dbusmenu_menuitem_property_get_value(item, DBUSMENU_MENUITEM_PROP_TOGGLE_CHECKED)); + /* Oh, we're a child, let's deal with that */ if (parent != NULL) { new_child(parent, item, dbusmenu_menuitem_get_position(item, parent), DBUSMENU_GTKCLIENT(client)); } -- cgit v1.2.3 From 8ae44198e16818478035a666e2f998d8e584ab7c Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 16 Dec 2009 21:43:40 -0600 Subject: Protect against NULL values and treat them as default values. --- libdbusmenu-gtk/client.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 80d067f..80d2b4f 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -147,15 +147,17 @@ static void process_toggle_type (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value) { if (!IS_GENERICMENUITEM(gmi)) return; - if (G_VALUE_TYPE(value) != G_TYPE_STRING) return; - const gchar * strval = g_value_get_string(value); GenericmenuitemCheckType type = GENERICMENUITEM_CHECK_TYPE_NONE; - if (!g_strcmp0(strval, "checkbox")) { - type = GENERICMENUITEM_CHECK_TYPE_CHECKBOX; - } else if (!g_strcmp0(strval, "radio")) { - type = GENERICMENUITEM_CHECK_TYPE_RADIO; + if (value != NULL && G_VALUE_TYPE(value) == G_TYPE_STRING) { + const gchar * strval = g_value_get_string(value); + + if (!g_strcmp0(strval, "checkbox")) { + type = GENERICMENUITEM_CHECK_TYPE_CHECKBOX; + } else if (!g_strcmp0(strval, "radio")) { + type = GENERICMENUITEM_CHECK_TYPE_RADIO; + } } genericmenuitem_set_check_type(GENERICMENUITEM(gmi), type); @@ -168,15 +170,17 @@ static void process_toggle_checked (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * value) { if (!IS_GENERICMENUITEM(gmi)) return; - if (G_VALUE_TYPE(value) != G_TYPE_STRING) return; - const gchar * strval = g_value_get_string(value); GenericmenuitemState state = GENERICMENUITEM_STATE_UNCHECKED; - if (!g_strcmp0(strval, "checked")) { - state = GENERICMENUITEM_STATE_CHECKED; - } else if (!g_strcmp0(strval, "indeterminate")) { - state = GENERICMENUITEM_STATE_INDETERMINATE; + if (value != NULL && G_VALUE_TYPE(value) == G_TYPE_STRING) { + const gchar * strval = g_value_get_string(value); + + if (!g_strcmp0(strval, "checked")) { + state = GENERICMENUITEM_STATE_CHECKED; + } else if (!g_strcmp0(strval, "indeterminate")) { + state = GENERICMENUITEM_STATE_INDETERMINATE; + } } genericmenuitem_set_state(GENERICMENUITEM(gmi), state); -- cgit v1.2.3 From 53ce3275daf3cd64f160a5f77a03b9949f196e1d Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 17 Dec 2009 16:43:32 -0600 Subject: Not setting the underline for seperators. --- libdbusmenu-gtk/client.c | 1 - 1 file changed, 1 deletion(-) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 80d2b4f..27ac4dc 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -452,7 +452,6 @@ new_item_seperator (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbusm GtkMenuItem * gmi; gmi = GTK_MENU_ITEM(gtk_separator_menu_item_new()); - gtk_menu_item_set_use_underline (gmi, TRUE); if (gmi != NULL) { dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent); -- cgit v1.2.3 From c561e59d23bd1a06aa4a1b384c18833e05cbcffb Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 7 Jan 2010 10:49:22 -0600 Subject: Using #defines for the type of box --- libdbusmenu-gtk/client.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 27ac4dc..aba98f4 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -153,9 +153,9 @@ process_toggle_type (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * va if (value != NULL && G_VALUE_TYPE(value) == G_TYPE_STRING) { const gchar * strval = g_value_get_string(value); - if (!g_strcmp0(strval, "checkbox")) { + if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_CHECK)) { type = GENERICMENUITEM_CHECK_TYPE_CHECKBOX; - } else if (!g_strcmp0(strval, "radio")) { + } else if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_RADIO)) { type = GENERICMENUITEM_CHECK_TYPE_RADIO; } } -- cgit v1.2.3 From 52eae1022d9bd79f24b2c85c63b40ce6d51c0389 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 7 Jan 2010 10:53:27 -0600 Subject: Using the state defines for the check state. --- libdbusmenu-gtk/client.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libdbusmenu-gtk/client.c') diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index aba98f4..4a8637a 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -176,9 +176,9 @@ process_toggle_checked (DbusmenuMenuitem * mi, GtkMenuItem * gmi, const GValue * if (value != NULL && G_VALUE_TYPE(value) == G_TYPE_STRING) { const gchar * strval = g_value_get_string(value); - if (!g_strcmp0(strval, "checked")) { + if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_STATE_CHECKED)) { state = GENERICMENUITEM_STATE_CHECKED; - } else if (!g_strcmp0(strval, "indeterminate")) { + } else if (!g_strcmp0(strval, DBUSMENU_MENUITEM_TOGGLE_STATE_UNKNOWN)) { state = GENERICMENUITEM_STATE_INDETERMINATE; } } -- cgit v1.2.3