summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2008-05-01 03:42:22 +0000
committerRay Strode <halfline@src.gnome.org>2008-05-01 03:42:22 +0000
commit59cf48eed931307e0a4617004a3eee4dfd7327c2 (patch)
tree436dad2c238440ae969009fa338651f5c09523a1
parent7a5870976d4eb1dff78c58f616156c809b6f5ee9 (diff)
downloadgdm-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--ChangeLog8
-rw-r--r--gui/simple-greeter/gdm-option-widget.c41
2 files changed, 47 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f67c89a8..81c08e62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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),