[gnome-initial-setup/shell/4765: 151/362] display: hide overscan page when we can't get screen or primary output



commit cde2eef7622213bbd1e3f6dac9f92734ad4552d5
Author: Cosimo Cecchi <cosimo endlessm com>
Date:   Tue Aug 12 10:15:39 2014 -0700

    display: hide overscan page when we can't get screen or primary output
    
    Instead of showing a label that is probably not very helpful.
    
    [endlessm/eos-shell#3370]

 .../pages/display/gis-display-page.c               |   53 +++++++------------
 1 files changed, 20 insertions(+), 33 deletions(-)
---
diff --git a/gnome-initial-setup/pages/display/gis-display-page.c 
b/gnome-initial-setup/pages/display/gis-display-page.c
index 9c9fc45..36b1b55 100644
--- a/gnome-initial-setup/pages/display/gis-display-page.c
+++ b/gnome-initial-setup/pages/display/gis-display-page.c
@@ -48,7 +48,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (GisDisplayPage, gis_display_page, GIS_TYPE_PAGE);
 #define OBJ(type,name) ((type)gtk_builder_get_object(GIS_PAGE(page)->builder,(name)))
 #define WID(name) OBJ(GtkWidget*,name)
 
-static void
+static gboolean
 read_screen_config (GisDisplayPage *page)
 {
   GisDisplayPagePrivate *priv = gis_display_page_get_instance_private (page);
@@ -80,28 +80,14 @@ read_screen_config (GisDisplayPage *page)
         }
     }
 
-  check_button = WID ("overscan_checkbutton");
-
   priv->current_output = output;
   if (priv->current_output == NULL)
-    {
-      GtkWidget *label, *widget;
-
-      gtk_widget_hide (check_button);
-
-      /* Translators note: this is the same label we use in the
-       * Display page of the system settings
-       */
-      label = gtk_label_new (_("Could not get screen information"));
-      widget = WID ("box2");
-      gtk_container_add (GTK_CONTAINER (widget), label);
-      gtk_widget_show (label);
-
-      return;
-    }
+    return FALSE;
 
+  check_button = WID ("overscan_checkbutton");
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
                                 gnome_rr_output_info_get_underscanning (output));
+  return TRUE;
 }
 
 static void
@@ -156,6 +142,8 @@ gis_display_page_constructed (GObject *object)
   GisDisplayPage *page = GIS_DISPLAY_PAGE (object);
   GisDisplayPagePrivate *priv = gis_display_page_get_instance_private (page);
   GtkWidget *widget;
+  GError *error = NULL;
+  gboolean visible = FALSE;
 
   G_OBJECT_CLASS (gis_display_page_parent_class)->constructed (object);
 
@@ -165,35 +153,34 @@ gis_display_page_constructed (GObject *object)
   /* the page is always complete */
   gis_page_set_complete (GIS_PAGE (page), TRUE);
 
-  priv->screen = gnome_rr_screen_new (gdk_screen_get_default (), NULL);
+  priv->screen = gnome_rr_screen_new (gdk_screen_get_default (), &error);
   if (priv->screen == NULL)
     {
-      GtkWidget *label;
-
-      widget = WID ("overscan_checkbutton");
-      gtk_widget_hide (widget);
-
-      /* Translators note: this is the same label we use in the
-       * Display page of the system settings
-       */
-      label = gtk_label_new (_("Could not get screen information"));
-      widget = WID ("box2");
-      gtk_container_add (GTK_CONTAINER (widget), label);
-      gtk_widget_show (label);
+      g_critical ("Could not get screen information: %s. Hiding overscan page.",
+                  error->message);
+      g_error_free (error);
+      goto out;
+    }
 
-      return;
+  if (!read_screen_config (page))
+    {
+      g_critical ("Could not get primary output information. Hiding overscan page.");
+      goto out;
     }
 
+  visible = TRUE;
   priv->screen_changed_id = g_signal_connect_swapped (priv->screen,
                                                       "changed",
                                                       G_CALLBACK (read_screen_config),
                                                       page);
-  read_screen_config (page);
 
   widget = WID ("overscan_checkbutton");
   g_signal_connect_swapped (widget, "toggled",
                             G_CALLBACK (toggle_overscan),
                             page);
+
+ out:
+  gtk_widget_set_visible (GTK_WIDGET (page), visible);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]