[gnome-control-center] mouse: use a dialog window for the mouse test



commit a98b939e47a8caa25c3e58cd0e92f409f08ca8ed
Author: Thomas Wood <thomas wood intel com>
Date:   Tue Jun 25 12:00:19 2013 +0100

    mouse: use a dialog window for the mouse test
    
    This avoids using a toggle button to switch to the test area and makes the
    interaction more consistent with other panels.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=702986

 panels/mouse/cc-mouse-panel.c    |   67 +++++++++++++++++++++----------------
 panels/mouse/gnome-mouse-test.ui |    6 ++--
 2 files changed, 41 insertions(+), 32 deletions(-)
---
diff --git a/panels/mouse/cc-mouse-panel.c b/panels/mouse/cc-mouse-panel.c
index b8276f6..d42067a 100644
--- a/panels/mouse/cc-mouse-panel.c
+++ b/panels/mouse/cc-mouse-panel.c
@@ -39,7 +39,7 @@ CC_PANEL_REGISTER (CcMousePanel, cc_mouse_panel)
 struct _CcMousePanelPrivate
 {
   GtkBuilder *builder;
-  GtkWidget  *widget;
+  GtkWidget  *test_dialog;
   GtkWidget  *prefs_widget;
   GtkWidget  *test_widget;
   GtkWidget  *shell_header;
@@ -57,6 +57,12 @@ cc_mouse_panel_dispose (GObject *object)
 
   g_clear_object (&priv->shell_header);
 
+  if (priv->test_dialog)
+    {
+      gtk_widget_destroy (priv->test_dialog);
+      priv->test_dialog = NULL;
+    }
+
   G_OBJECT_CLASS (cc_mouse_panel_parent_class)->dispose (object);
 }
 
@@ -66,43 +72,53 @@ cc_mouse_panel_get_help_uri (CcPanel *panel)
   return "help:gnome-help/mouse";
 }
 
-/* Toggle between mouse panel properties and testing area. */
 static void
-shell_test_button_toggle_event (GtkToggleButton *button, CcMousePanel *panel)
+shell_test_button_clicked (GtkButton *button, CcMousePanel *panel)
 {
-  GtkNotebook *notebook = GTK_NOTEBOOK (panel->priv->widget);
-  gint page_num;
-  gboolean active;
-
-  active = gtk_toggle_button_get_active (button);
-  page_num = active ? CC_MOUSE_PAGE_TEST : CC_MOUSE_PAGE_PREFS;
+  CcMousePanelPrivate *priv = panel->priv;
 
-  gtk_notebook_set_current_page (notebook, page_num);
+  /* GTK_RESPONSE_NONE is returned if the dialog is being destroyed, so only
+   * hide the dialog if it is not being destroyed */
+  if (gtk_dialog_run (GTK_DIALOG (priv->test_dialog)) != GTK_RESPONSE_NONE)
+    gtk_widget_hide (priv->test_dialog);
 }
 
 static void
 cc_mouse_panel_constructed (GObject *object)
 {
   CcMousePanel *self = CC_MOUSE_PANEL (object);
-  GtkWidget *box, *button;
+  CcMousePanelPrivate *priv = self->priv;
+  GtkWidget *box, *button, *container, *toplevel;
+  CcShell *shell;
 
   G_OBJECT_CLASS (cc_mouse_panel_parent_class)->constructed (object);
 
-  /* Add test area toggle to shell header. */
+  /* Add test area button to shell header. */
+  shell = cc_panel_get_shell (CC_PANEL (self));
   box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);
 
-  button = gtk_toggle_button_new_with_mnemonic (_("Test Your _Settings"));
+  button = gtk_button_new_with_mnemonic (_("Test Your _Settings"));
   gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
   gtk_widget_set_visible (button, TRUE);
 
-  cc_shell_embed_widget_in_header (cc_panel_get_shell (CC_PANEL (self)), box);
+  cc_shell_embed_widget_in_header (shell, box);
   gtk_widget_set_visible (box, TRUE);
 
-  self->priv->shell_header = g_object_ref (box);
+  priv->shell_header = g_object_ref (box);
 
-  g_signal_connect (GTK_BUTTON (button), "toggled",
-                    G_CALLBACK (shell_test_button_toggle_event),
+  g_signal_connect (GTK_BUTTON (button), "clicked",
+                    G_CALLBACK (shell_test_button_clicked),
                     self);
+
+  toplevel = cc_shell_get_toplevel (shell);
+  priv->test_dialog = gtk_dialog_new_with_buttons (_("Test Your Settings"),
+                                                   GTK_WINDOW (toplevel),
+                                                   GTK_DIALOG_MODAL,
+                                                   _("_Done"), GTK_RESPONSE_ACCEPT, NULL);
+  gtk_window_set_resizable (GTK_WINDOW (priv->test_dialog), FALSE);
+
+  container = gtk_dialog_get_content_area (GTK_DIALOG (priv->test_dialog));
+  gtk_container_add (GTK_CONTAINER (container), priv->test_widget);
 }
 
 static void
@@ -116,21 +132,14 @@ cc_mouse_panel_init (CcMousePanel *self)
   priv->prefs_widget = cc_mouse_properties_new ();
   priv->test_widget = cc_mouse_test_new ();
 
-  priv->widget = gtk_notebook_new ();
-  gtk_widget_set_margin_left (priv->widget, 6);
-  gtk_widget_set_margin_right (priv->widget, 6);
-  gtk_widget_set_margin_top (priv->widget, 6);
-  gtk_widget_set_margin_bottom (priv->widget, 6);
-  gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->widget), FALSE);
-  gtk_notebook_set_show_border (GTK_NOTEBOOK (priv->widget), FALSE);
-
-  gtk_notebook_append_page (GTK_NOTEBOOK (priv->widget), priv->prefs_widget, NULL);
-  gtk_notebook_append_page (GTK_NOTEBOOK (priv->widget), priv->test_widget, NULL);
+  gtk_widget_set_margin_left (priv->prefs_widget, 6);
+  gtk_widget_set_margin_right (priv->prefs_widget, 6);
+  gtk_widget_set_margin_top (priv->prefs_widget, 6);
+  gtk_widget_set_margin_bottom (priv->prefs_widget, 6);
 
-  gtk_container_add (GTK_CONTAINER (self), priv->widget);
+  gtk_container_add (GTK_CONTAINER (self), priv->prefs_widget);
   gtk_widget_show (priv->prefs_widget);
   gtk_widget_show (priv->test_widget);
-  gtk_widget_show (priv->widget);
 }
 
 static void
diff --git a/panels/mouse/gnome-mouse-test.ui b/panels/mouse/gnome-mouse-test.ui
index e83f691..b1a2e99 100644
--- a/panels/mouse/gnome-mouse-test.ui
+++ b/panels/mouse/gnome-mouse-test.ui
@@ -11,7 +11,7 @@
     <property name="can_focus">False</property>
     <child>
       <object class="GtkGrid" id="test_widget">
-        <property name="height_request">400</property>
+        <property name="height_request">540</property>
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="hexpand">True</property>
@@ -56,8 +56,8 @@
                       <object class="GtkImage" id="image">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="margin_left">35</property>
-                        <property name="margin_right">35</property>
+                        <property name="margin_left">25</property>
+                        <property name="margin_right">25</property>
                         <property name="pixbuf">scroll-test.svg</property>
                       </object>
                       <packing>


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