aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-gtk
diff options
context:
space:
mode:
authorAlberto Mardegan <alberto.mardegan@canonical.com>2012-02-22 12:02:01 +0200
committerAlberto Mardegan <alberto.mardegan@canonical.com>2012-02-22 12:02:01 +0200
commit0c3006bfaac388b88b2597e0959e0ded3bd7be96 (patch)
treec4df33f9a9cc4a014cc2cb059f38dab4df501f2b /libdbusmenu-gtk
parentaef71fa6d08309a29df51d94bcb2c7713e9c04ee (diff)
downloadlibdbusmenu-0c3006bfaac388b88b2597e0959e0ded3bd7be96.tar.gz
libdbusmenu-0c3006bfaac388b88b2597e0959e0ded3bd7be96.tar.bz2
libdbusmenu-0c3006bfaac388b88b2597e0959e0ded3bd7be96.zip
Do not read the label text from the label widget
The label text stored in the widget might have been modified with markup. Instead of reading it back from the widget, return the text as set by the client, unmodified. Alter the test-gtk-submenu so that the correct behaviour is checked for.
Diffstat (limited to 'libdbusmenu-gtk')
-rw-r--r--libdbusmenu-gtk/genericmenuitem.c28
1 files changed, 10 insertions, 18 deletions
diff --git a/libdbusmenu-gtk/genericmenuitem.c b/libdbusmenu-gtk/genericmenuitem.c
index 098de67..bdbd190 100644
--- a/libdbusmenu-gtk/genericmenuitem.c
+++ b/libdbusmenu-gtk/genericmenuitem.c
@@ -43,6 +43,7 @@ struct _GenericmenuitemPrivate {
GenericmenuitemCheckType check_type;
GenericmenuitemState state;
GenericmenuitemDisposition disposition;
+ gchar * label_text;
};
/* Private macro */
@@ -106,6 +107,7 @@ genericmenuitem_init (Genericmenuitem *self)
self->priv->check_type = GENERICMENUITEM_CHECK_TYPE_NONE;
self->priv->state = GENERICMENUITEM_STATE_UNCHECKED;
self->priv->disposition = GENERICMENUITEM_DISPOSITION_NORMAL;
+ self->priv->label_text = NULL;
return;
}
@@ -205,6 +207,12 @@ set_label (GtkMenuItem * menu_item, const gchar * in_label)
{
if (in_label == NULL) return;
+ Genericmenuitem * item = GENERICMENUITEM(menu_item);
+ if (in_label != item->priv->label_text) {
+ g_free (item->priv->label_text);
+ item->priv->label_text = g_strdup(in_label);
+ }
+
/* Build a label that might include the colors of the disposition
so that it gets rendered in the menuitem. */
gchar * local_label = NULL;
@@ -308,25 +316,9 @@ set_label (GtkMenuItem * menu_item, const gchar * in_label)
static const gchar *
get_label (GtkMenuItem * menu_item)
{
- GtkWidget * child = gtk_bin_get_child(GTK_BIN(menu_item));
- GtkLabel * labelw = NULL;
-
- /* Try to find if we have a label already */
- if (child != NULL) {
- if (GTK_IS_LABEL(child)) {
- /* We've got a label, let's update it. */
- labelw = GTK_LABEL(child);
- } else if (GTK_IS_BOX(child)) {
- /* Look for the label in the box */
- gtk_container_foreach(GTK_CONTAINER(child), set_label_helper, &labelw);
- }
- }
-
- if (labelw != NULL) {
- return gtk_label_get_label(labelw);
- }
+ Genericmenuitem * item = GENERICMENUITEM(menu_item);
- return NULL;
+ return item->priv->label_text;
}
/* Make sure we don't toggle when there is an