[nautilus/ux-review-3.29.90: 7/12] toolbar: Limit pathbar/location/search entry width



commit c19a9d9210795a3521b2194f258ca05da812d6f3
Author: Carlos Soriano <csoriano redhat com>
Date:   Wed Jul 25 15:08:40 2018 +0200

    toolbar: Limit pathbar/location/search entry width
    
    So it doesn't get as wide on bigger screens.
    
    Related: https://gitlab.gnome.org/GNOME/nautilus/issues/548

 src/nautilus-toolbar.c                        | 38 +++++++++++---
 src/resources/nautilus.gresource.xml          |  1 +
 src/resources/ui/nautilus-toolbar-switcher.ui | 76 +++++++++++++++++++++++++++
 src/resources/ui/nautilus-toolbar.ui          | 69 ++----------------------
 4 files changed, 111 insertions(+), 73 deletions(-)
---
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c
index 4664ae54a..9a7ee8496 100644
--- a/src/nautilus-toolbar.c
+++ b/src/nautilus-toolbar.c
@@ -40,6 +40,7 @@
 #include "nautilus-toolbar-menu-sections.h"
 #include "nautilus-ui-utilities.h"
 #include "nautilus-window.h"
+#include "nautilus-container-max-width.h"
 
 #define OPERATION_MINIMUM_TIME 2 /*s */
 #define NEEDS_ATTENTION_ANIMATION_TIMEOUT 2000 /*ms */
@@ -48,6 +49,9 @@
 #define ANIMATION_X_GROW 30
 #define ANIMATION_Y_GROW 30
 
+/* Just design, context at https://gitlab.gnome.org/GNOME/nautilus/issues/548#note_274131 */
+#define SWITCHER_MAX_WIDTH 840
+
 typedef enum
 {
     NAUTILUS_NAVIGATION_DIRECTION_NONE,
@@ -65,6 +69,8 @@ struct _NautilusToolbar
     GtkWidget *location_entry_container;
     GtkWidget *search_container;
     GtkWidget *toolbar_switcher;
+    GtkWidget *toolbar_switcher_container;
+    NautilusContainerMaxWidth *toolbar_switcher_container_max_width;
     GtkWidget *path_bar;
     GtkWidget *location_entry;
 
@@ -100,7 +106,6 @@ struct _NautilusToolbar
 
     GtkWidget *location_entry_close_button;
 
-
     NautilusProgressInfoManager *progress_manager;
 
     /* active slot & bindings */
@@ -880,9 +885,24 @@ on_location_entry_focus_changed (GObject    *object,
 }
 
 static void
-nautilus_toolbar_init (NautilusToolbar *self)
+nautilus_toolbar_constructed (GObject *object)
 {
-    gtk_widget_init_template (GTK_WIDGET (self));
+    GtkBuilder *builder;
+    NautilusToolbar *self = NAUTILUS_TOOLBAR (object);
+
+    builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/ui/nautilus-toolbar-switcher.ui");
+    self->toolbar_switcher = GTK_WIDGET (gtk_builder_get_object (builder, "toolbar_switcher"));
+    self->search_container = GTK_WIDGET (gtk_builder_get_object (builder, "search_container"));
+    self->path_bar_container = GTK_WIDGET (gtk_builder_get_object (builder, "path_bar_container"));
+    self->location_entry_container = GTK_WIDGET (gtk_builder_get_object (builder, 
"location_entry_container"));
+
+    self->toolbar_switcher_container_max_width = nautilus_container_max_width_new ();
+    nautilus_container_max_width_set_max_width (self->toolbar_switcher_container_max_width,
+                                                SWITCHER_MAX_WIDTH);
+    gtk_container_add (GTK_CONTAINER (self->toolbar_switcher_container_max_width),
+                       self->toolbar_switcher);
+    gtk_container_add (GTK_CONTAINER (self->toolbar_switcher_container),
+                       GTK_WIDGET (self->toolbar_switcher_container_max_width));
 
     self->path_bar = g_object_new (NAUTILUS_TYPE_PATH_BAR, NULL);
     gtk_container_add (GTK_CONTAINER (self->path_bar_container),
@@ -945,6 +965,12 @@ nautilus_toolbar_init (NautilusToolbar *self)
     toolbar_update_appearance (self);
 }
 
+static void
+nautilus_toolbar_init (NautilusToolbar *self)
+{
+    gtk_widget_init_template (GTK_WIDGET (self));
+}
+
 void
 nautilus_toolbar_on_window_constructed (NautilusToolbar *self)
 {
@@ -1134,6 +1160,7 @@ nautilus_toolbar_class_init (NautilusToolbarClass *klass)
     oclass->set_property = nautilus_toolbar_set_property;
     oclass->dispose = nautilus_toolbar_dispose;
     oclass->finalize = nautilus_toolbar_finalize;
+    oclass->constructed = nautilus_toolbar_constructed;
 
     properties[PROP_WINDOW] =
         g_param_spec_object ("window",
@@ -1167,15 +1194,12 @@ nautilus_toolbar_class_init (NautilusToolbarClass *klass)
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, operations_popover);
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, operations_container);
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, operations_revealer);
-    gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, search_container);
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, view_button);
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, view_toggle_button);
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, view_toggle_icon);
-    gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, path_bar_container);
-    gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, location_entry_container);
-    gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, toolbar_switcher);
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, back_button);
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, forward_button);
+    gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, toolbar_switcher_container);
 
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, view_menu_zoom_section);
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, view_menu_undo_redo_section);
diff --git a/src/resources/nautilus.gresource.xml b/src/resources/nautilus.gresource.xml
index 117431e4e..32db2cd6f 100644
--- a/src/resources/nautilus.gresource.xml
+++ b/src/resources/nautilus.gresource.xml
@@ -6,6 +6,7 @@
     <file>gtk/menus.ui</file>
     <file>ui/nautilus-pathbar-context-menu.ui</file>
     <file>ui/nautilus-toolbar.ui</file>
+    <file>ui/nautilus-toolbar-switcher.ui</file>
     <file>ui/nautilus-toolbar-view-menu.ui</file>
     <file>ui/nautilus-create-folder-dialog.ui</file>
     <file>ui/nautilus-compress-dialog.ui</file>
diff --git a/src/resources/ui/nautilus-toolbar-switcher.ui b/src/resources/ui/nautilus-toolbar-switcher.ui
new file mode 100644
index 000000000..5606b1733
--- /dev/null
+++ b/src/resources/ui/nautilus-toolbar-switcher.ui
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.0 -->
+<interface>
+  <requires lib="gtk+" version="3.20"/>
+  <object class="GtkStack" id="toolbar_switcher">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="hexpand">True</property>
+    <property name="transition_type">crossfade</property>
+    <child>
+      <object class="GtkBox" id="path_bar_container">
+        <property name="can_focus">False</property>
+        <property name="valign">center</property>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <style>
+          <class name="path-bar-box"/>
+        </style>
+      </object>
+      <packing>
+        <property name="name">pathbar</property>
+        <property name="title" translatable="yes">page0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="location_entry_container">
+        <property name="can_focus">False</property>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <style>
+          <class name="linked"/>
+        </style>
+      </object>
+      <packing>
+        <property name="name">location</property>
+        <property name="title" translatable="yes">page1</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="search_container">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+      <packing>
+        <property name="name">search</property>
+        <property name="title" translatable="yes">page2</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+  </object>
+</interface>
diff --git a/src/resources/ui/nautilus-toolbar.ui b/src/resources/ui/nautilus-toolbar.ui
index 5b8d3226a..408d73692 100644
--- a/src/resources/ui/nautilus-toolbar.ui
+++ b/src/resources/ui/nautilus-toolbar.ui
@@ -315,80 +315,17 @@
       <object class="GtkBox" id="header_toolbar">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="halign">center</property>
         <property name="margin_left">24</property>
         <property name="margin_right">24</property>
         <property name="spacing">6</property>
         <child>
-          <object class="GtkStack" id="toolbar_switcher">
+          <object class="GtkBox" id="toolbar_switcher_container">
             <property name="width_request">300</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-            <property name="transition_type">crossfade</property>
             <child>
-              <object class="GtkBox" id="path_bar_container">
-                <property name="can_focus">False</property>
-                <property name="valign">center</property>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <style>
-                  <class name="path-bar-box"/>
-                </style>
-              </object>
-              <packing>
-                <property name="name">pathbar</property>
-                <property name="title">page0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkBox" id="location_entry_container">
-                <property name="can_focus">False</property>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <style>
-                  <class name="linked"/>
-                </style>
-              </object>
-              <packing>
-                <property name="name">location</property>
-                <property name="title">page1</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkBox" id="search_container">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="orientation">vertical</property>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-                <child>
-                  <placeholder/>
-                </child>
-              </object>
-              <packing>
-                <property name="name">search</property>
-                <property name="title">page2</property>
-                <property name="position">2</property>
-              </packing>
+              <placeholder/>
             </child>
           </object>
           <packing>


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