diff options
author | Ray Strode <rstrode@redhat.com> | 2008-05-01 03:42:22 +0000 |
---|---|---|
committer | Ray Strode <halfline@src.gnome.org> | 2008-05-01 03:42:22 +0000 |
commit | 59cf48eed931307e0a4617004a3eee4dfd7327c2 (patch) | |
tree | 436dad2c238440ae969009fa338651f5c09523a1 | |
parent | 7a5870976d4eb1dff78c58f616156c809b6f5ee9 (diff) | |
download | gdm-59cf48eed931307e0a4617004a3eee4dfd7327c2.tar.gz |
Don't show Session selector if only one session available
2008-04-30 Ray Strode <rstrode@redhat.com>
* gui/simple-greeter/gdm-option-widget.c
(gdm_option_widget_check_visibility):
(gdm_option_widget_queue_visibility_check),
(check_item_visibility), (gdm_option_widget_init):
Don't show Session selector if only one session available
svn path=/trunk/; revision=6195
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gui/simple-greeter/gdm-option-widget.c | 41 |
2 files changed, 47 insertions, 2 deletions
@@ -1,6 +1,14 @@ 2008-04-30 Ray Strode <rstrode@redhat.com> * gui/simple-greeter/gdm-option-widget.c + (gdm_option_widget_check_visibility): + (gdm_option_widget_queue_visibility_check), + (check_item_visibility), (gdm_option_widget_init): + Don't show Session selector if only one session available + +2008-04-30 Ray Strode <rstrode@redhat.com> + + * gui/simple-greeter/gdm-option-widget.c (gdm_option_widget_mnemonic_activate): (gdm_option_widget_class_init), (gdm_option_widget_init): automatically diff --git a/gui/simple-greeter/gdm-option-widget.c b/gui/simple-greeter/gdm-option-widget.c index d1d3c313..2fc8bcff 100644 --- a/gui/simple-greeter/gdm-option-widget.c +++ b/gui/simple-greeter/gdm-option-widget.c @@ -68,6 +68,8 @@ struct GdmOptionWidgetPrivate gint number_of_top_rows; gint number_of_middle_rows; gint number_of_bottom_rows; + + guint check_idle_id; }; enum { @@ -613,6 +615,39 @@ path_is_separator (GdmOptionWidget *widget, } static gboolean +gdm_option_widget_check_visibility (GdmOptionWidget *widget) +{ + int number_of_rows; + + number_of_rows = widget->priv->number_of_top_rows + + widget->priv->number_of_middle_rows + + widget->priv->number_of_bottom_rows; + + if (number_of_rows > 1) { + gtk_widget_show (widget->priv->items_combo_box); + gtk_widget_show (widget->priv->label); + + if (widget->priv->icon_name != NULL) { + gtk_widget_show (widget->priv->image); + } + } else { + gtk_widget_hide (widget->priv->items_combo_box); + gtk_widget_hide (widget->priv->label); + gtk_widget_hide (widget->priv->image); + } + + return FALSE; +} + +static void +gdm_option_widget_queue_visibility_check (GdmOptionWidget *widget) +{ + if (widget->priv->check_idle_id == 0) { + widget->priv->check_idle_id = g_idle_add ((GSourceFunc) gdm_option_widget_check_visibility, widget); + } +} + +static gboolean check_item_visibilty (GtkTreeModel *model, GtkTreeIter *iter, gpointer data) @@ -642,6 +677,8 @@ check_item_visibilty (GtkTreeModel *model, is_visible = TRUE; } + gdm_option_widget_queue_visibility_check (widget); + return is_visible; } @@ -838,7 +875,7 @@ gdm_option_widget_init (GdmOptionWidget *widget) widget->priv->label = gtk_label_new (""); gtk_label_set_use_underline (GTK_LABEL (widget->priv->label), TRUE); gtk_label_set_use_markup (GTK_LABEL (widget->priv->label), TRUE); - gtk_widget_show (widget->priv->label); + gtk_widget_set_no_show_all (widget->priv->label, TRUE); gtk_box_pack_start (GTK_BOX (box), widget->priv->label, FALSE, FALSE, 0); widget->priv->items_combo_box = gtk_combo_box_new (); @@ -856,7 +893,7 @@ gdm_option_widget_init (GdmOptionWidget *widget) G_CALLBACK (on_default_item_changed), NULL); - gtk_widget_show (widget->priv->items_combo_box); + gtk_widget_set_no_show_all (widget->priv->items_combo_box, TRUE); gtk_container_add (GTK_CONTAINER (box), widget->priv->items_combo_box); gtk_label_set_mnemonic_widget (GTK_LABEL (widget->priv->label), |