From: Salvatore Iovene Date: Sun, 10 Jan 2010 14:20:27 +0000 (+0200) Subject: Correctly hide the real Profile button, and assume its name and icon. X-Git-Tag: 0.0.13~1 X-Git-Url: https://vcs.maemo.org/git/?p=tweakr;a=commitdiff_plain;h=17ab9ca9d569c530cb1cfd451f585bcdf3787ed6 Correctly hide the real Profile button, and assume its name and icon. --- diff --git a/modules/tweakr-profile-status-menu-widget.c b/modules/tweakr-profile-status-menu-widget.c index 8ccce3e..ade651e 100644 --- a/modules/tweakr-profile-status-menu-widget.c +++ b/modules/tweakr-profile-status-menu-widget.c @@ -173,19 +173,35 @@ _button_clicked (HildonButton *b, TweakrProfileStatusPlugin *plugin) } static void -_hide_profile_button (GtkWidget *widget, - TweakrProfileStatusPlugin *plugin) +_hide_profile_button_real (GtkWidget *widget, + TweakrProfileStatusPlugin *plugin) { - if (HILDON_IS_BUTTON (widget)) + if (g_strcmp0 (G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (widget)), + "ProfilesStatusMenuItem") == 0) { - const gchar *title; + gtk_widget_hide (widget); + } +} - title = hildon_button_get_title (HILDON_BUTTON (widget)); - if (g_strcmp0 (title, dgettext ("Hildon", "general_profile")) == 0) - { - gtk_widget_hide (widget); - } +static void +_hide_profile_button (TweakrProfileStatusPlugin *plugin, gpointer data) +{ + GtkWidget *parent; + const gchar *class_name; + + parent = gtk_widget_get_parent (plugin->priv->button); + class_name = G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (G_OBJECT (parent))); + while (parent != NULL && g_strcmp0 (class_name, "HDStatusMenuBox") != 0) + { + parent = gtk_widget_get_parent (parent); + if (parent != NULL) + class_name = + G_OBJECT_CLASS_NAME (G_OBJECT_GET_CLASS (G_OBJECT (parent))); } + if (parent != NULL) + gtk_container_foreach (GTK_CONTAINER (parent), + (GtkCallback) _hide_profile_button_real, + plugin); } static void @@ -193,13 +209,12 @@ _create_main_button (TweakrProfileStatusPlugin *plugin) { gchar *current; GtkWidget *image; - GtkWidget *container; plugin->priv->button = hildon_button_new (HILDON_SIZE_AUTO | HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL); hildon_button_set_title (HILDON_BUTTON (plugin->priv->button), - _("Profile preset")); + dgettext ("osso-profiles", "profi_ti_menu_plugin")); current = gconf_client_get_string (plugin->priv->gconf, GCONF_PATH "/current-preset", @@ -209,7 +224,7 @@ _create_main_button (TweakrProfileStatusPlugin *plugin) g_free (current); gtk_button_set_alignment (GTK_BUTTON (plugin->priv->button), 0.0f, 0.5f); - image = gtk_image_new_from_icon_name ("control_tweakr", + image = gtk_image_new_from_icon_name ("general_profile", GTK_ICON_SIZE_BUTTON); hildon_button_set_image (HILDON_BUTTON (plugin->priv->button), image); @@ -219,11 +234,12 @@ _create_main_button (TweakrProfileStatusPlugin *plugin) gtk_container_add (GTK_CONTAINER (plugin), plugin->priv->button); /* Now go ahead and hide the real Profile button. Nasty, I know. */ - container = gtk_widget_get_ancestor (plugin->priv->button, - GTK_TYPE_CONTAINER); - gtk_container_foreach (GTK_CONTAINER (container), - (GtkCallback) _hide_profile_button, - plugin); + if (GTK_WIDGET_REALIZED (plugin)) + _hide_profile_button (plugin, NULL); + else + g_signal_connect (plugin, "realize", + G_CALLBACK (_hide_profile_button), NULL); + gtk_widget_show_all (plugin->priv->button); }