}
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
{
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",
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);
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);
}