[nautilus/wip/antoniof/modernize-properties-dialog: 17/19] properties-window: Stop using GtkGrid for properties




commit 0adde483a9218533d55f71fec18e74c6f75353ac
Author: António Fernandes <antoniof gnome org>
Date:   Sun Jan 2 13:52:57 2022 +0000

    properties-window: Stop using GtkGrid for properties
    
    The height-for-width interaction between permission rows and the grid,
    with the list box spanning two columns, is buggy.
    
    Port the remaining element (the "Others" label) to a list row and use
    the vertical GtkBox directly, with no GtkGrid interposed.

 src/nautilus-properties-window.c               |   2 +-
 src/resources/ui/nautilus-properties-window.ui | 344 +++++++++++--------------
 2 files changed, 150 insertions(+), 196 deletions(-)
---
diff --git a/src/nautilus-properties-window.c b/src/nautilus-properties-window.c
index 4f9153674..ca5d39070 100644
--- a/src/nautilus-properties-window.c
+++ b/src/nautilus-properties-window.c
@@ -3642,7 +3642,7 @@ setup_permissions_page (NautilusPropertiesWindow *self)
             gtk_widget_show (self->bottom_prompt_seperator);
         }
 
-        gtk_stack_set_visible_child_name (GTK_STACK (self->permissions_stack), "permission-grid");
+        gtk_stack_set_visible_child_name (GTK_STACK (self->permissions_stack), "permissions-box");
         create_simple_permissions (self);
 
 #ifdef HAVE_SELINUX
diff --git a/src/resources/ui/nautilus-properties-window.ui b/src/resources/ui/nautilus-properties-window.ui
index a5cb09ed5..ced428c75 100644
--- a/src/resources/ui/nautilus-properties-window.ui
+++ b/src/resources/ui/nautilus-properties-window.ui
@@ -629,10 +629,11 @@
                     </child>
                     <child>
                       <object class="GtkStackPage">
-                        <property name="name">permission-grid</property>
+                        <property name="name">permissions-box</property>
                         <property name="child">
                           <object class="GtkBox" id="permissions_box">
                             <property name="orientation">vertical</property>
+                            <property name="spacing">12</property>
                             <child>
                               <object class="GtkLabel" id="not_the_owner_label">
                                 <property name="visible">False</property>
@@ -659,232 +660,185 @@
                               </object>
                             </child>
                             <child>
-                              <object class="GtkGrid">
-                                <property name="halign">center</property>
-                                <property name="vexpand">True</property>
-                                <property name="orientation">vertical</property>
-                                <property name="row_spacing">6</property>
-                                <property name="column_spacing">12</property>
+                              <object class="GtkListBox" id="owner_list_box">
+                                <property name="selection-mode">none</property>
                                 <child>
-                                  <object class="GtkLabel" id="others_label">
-                                    <property name="margin_top">12</property>
-                                    <property name="label" translatable="yes">Others</property>
-                                    <property name="xalign">1</property>
-                                    <style>
-                                      <class name="dim-label"/>
-                                    </style>
-                                    <layout>
-                                      <property name="column">0</property>
-                                      <property name="row">4</property>
-                                    </layout>
+                                  <object class="AdwComboRow" id="owner_row">
+                                    <property name="sensitive">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">_Owner</property>
+                                    <property name="use-underline">True</property>
                                   </object>
                                 </child>
                                 <child>
-                                  <object class="GtkListBox" id="owner_list_box">
-                                    <property name="selection-mode">none</property>
-                                    <child>
-                                      <object class="AdwComboRow" id="owner_row">
-                                        <property name="sensitive">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">_Owner</property>
-                                        <property name="use-underline">True</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="AdwComboRow" id="owner_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">Access</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="AdwComboRow" id="owner_folder_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">Folder Access</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="AdwComboRow" id="owner_file_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">File Access</property>
-                                      </object>
-                                    </child>
-                                    <layout>
-                                      <property name="column">0</property>
-                                      <property name="row">1</property>
-                                      <property name="column-span">2</property>
-                                    </layout>
-                                    <style>
-                                      <class name="boxed-list"/>
-                                    </style>
+                                  <object class="AdwComboRow" id="owner_access_row">
+                                    <property name="visible">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">Access</property>
                                   </object>
                                 </child>
                                 <child>
-                                  <object class="GtkListBox" id="group_list_box">
-                                    <property name="selection-mode">none</property>
-                                    <child>
-                                      <object class="AdwComboRow" id="group_row">
-                                        <property name="sensitive">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">_Group</property>
-                                        <property name="use-underline">True</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="AdwComboRow" id="group_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">Access</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="AdwComboRow" id="group_folder_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">Folder Access</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="AdwComboRow" id="group_file_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">File Access</property>
-                                      </object>
-                                    </child>
-                                    <style>
-                                      <class name="boxed-list"/>
-                                    </style>
-                                    <layout>
-                                      <property name="column">0</property>
-                                      <property name="row">3</property>
-                                      <property name="column-span">2</property>
-                                    </layout>
+                                  <object class="AdwComboRow" id="owner_folder_access_row">
+                                    <property name="visible">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">Folder Access</property>
                                   </object>
                                 </child>
                                 <child>
-                                  <object class="GtkListBox" id="others_list_box">
-                                    <property name="selection-mode">none</property>
-                                    <child>
-                                      <object class="AdwComboRow" id="others_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">Access</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="AdwComboRow" id="others_folder_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">Folder Access</property>
-                                      </object>
-                                    </child>
-                                    <child>
-                                      <object class="AdwComboRow" id="others_file_access_row">
-                                        <property name="visible">False</property>
-                                        <property name="activatable">False</property>
-                                        <property name="title" translatable="yes">File Access</property>
-                                      </object>
-                                    </child>
-                                    <style>
-                                      <class name="boxed-list"/>
-                                    </style>
-                                    <layout>
-                                      <property name="column">0</property>
-                                      <property name="row">5</property>
-                                      <property name="column-span">2</property>
-                                    </layout>
+                                  <object class="AdwComboRow" id="owner_file_access_row">
+                                    <property name="visible">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">File Access</property>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="boxed-list"/>
+                                </style>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkListBox" id="group_list_box">
+                                <property name="selection-mode">none</property>
+                                <child>
+                                  <object class="AdwComboRow" id="group_row">
+                                    <property name="sensitive">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">_Group</property>
+                                    <property name="use-underline">True</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="AdwComboRow" id="group_access_row">
+                                    <property name="visible">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">Access</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="AdwComboRow" id="group_folder_access_row">
+                                    <property name="visible">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">Folder Access</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="AdwComboRow" id="group_file_access_row">
+                                    <property name="visible">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">File Access</property>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="boxed-list"/>
+                                </style>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkListBox" id="others_list_box">
+                                <property name="selection-mode">none</property>
+                                <child>
+                                  <object class="AdwComboRow" id="others_row">
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">Others</property>
                                   </object>
                                 </child>
                                 <child>
-                                  <object class="GtkListBox" id="execution_list_box">
+                                  <object class="AdwComboRow" id="others_access_row">
                                     <property name="visible">False</property>
-                                    <property name="selection-mode">none</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">Access</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="AdwComboRow" id="others_folder_access_row">
+                                    <property name="visible">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">Folder Access</property>
+                                  </object>
+                                </child>
+                                <child>
+                                  <object class="AdwComboRow" id="others_file_access_row">
+                                    <property name="visible">False</property>
+                                    <property name="activatable">False</property>
+                                    <property name="title" translatable="yes">File Access</property>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="boxed-list"/>
+                                </style>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkListBox" id="execution_list_box">
+                                <property name="visible">False</property>
+                                <property name="selection-mode">none</property>
+                                <child>
+                                  <object class="AdwActionRow" id="execution_row">
+                                    <property name="activatable">True</property>
+                                    <property name="title" translatable="yes">_Executable as 
Program</property>
+                                    <property name="tooltip-text" translatable="yes">Not all files are 
marked executable for all users</property>
+                                    <property name="use-underline">True</property>
                                     <child>
-                                      <object class="AdwActionRow" id="execution_row">
-                                        <property name="activatable">True</property>
-                                        <property name="title" translatable="yes">_Executable as 
Program</property>
-                                        <property name="tooltip-text" translatable="yes">Not all files are 
marked executable for all users</property>
-                                        <property name="use-underline">True</property>
+                                      <object class="GtkBox">
+                                        <property name="spacing">6</property>
                                         <child>
-                                          <object class="GtkBox">
-                                            <property name="spacing">6</property>
+                                          <object class="GtkRevealer" id="execution_inconsistent_revealer">
+                                            <property name="transition-type">crossfade</property>
+                                            <property name="reveal-child">False</property>
                                             <child>
-                                              <object class="GtkRevealer" 
id="execution_inconsistent_revealer">
-                                                <property name="transition-type">crossfade</property>
-                                                <property name="reveal-child">False</property>
-                                                <child>
-                                                  <object class="GtkLabel">
-                                                    <property name="label" 
translatable="yes">Inconsistent</property>
-                                                    <style>
-                                                      <class name="dim-label"/>
-                                                    </style>
-                                                  </object>
-                                                </child>
-                                              </object>
-                                            </child>
-                                            <child>
-                                              <object class="GtkSwitch" id="execution_switch">
-                                                <property name="halign">center</property>
-                                                <property name="valign">center</property>
+                                              <object class="GtkLabel">
+                                                <property name="label" 
translatable="yes">Inconsistent</property>
+                                                <style>
+                                                  <class name="dim-label"/>
+                                                </style>
                                               </object>
                                             </child>
                                           </object>
                                         </child>
-                                      </object>
-                                    </child>
-                                    <style>
-                                      <class name="boxed-list"/>
-                                    </style>
-                                    <layout>
-                                      <property name="column">0</property>
-                                      <property name="row">6</property>
-                                      <property name="column-span">2</property>
-                                    </layout>
-                                  </object>
-                                </child>
-                                <child>
-                                  <object class="GtkListBox" id="security_context_list_box">
-                                    <property name="visible">False</property>
-                                    <child>
-                                      <object class="AdwActionRow">
-                                        <property name="title" translatable="yes">Security Context</property>
                                         <child>
-                                          <object class="GtkLabel" id="security_context_value_label">
-                                            <property name="selectable">True</property>
-                                            <property name="max-width-chars">24</property>
-                                            <property name="xalign">1</property>
+                                          <object class="GtkSwitch" id="execution_switch">
+                                            <property name="halign">center</property>
+                                            <property name="valign">center</property>
                                           </object>
                                         </child>
                                       </object>
                                     </child>
-                                    <style>
-                                      <class name="boxed-list"/>
-                                    </style>
-                                    <layout>
-                                      <property name="column">0</property>
-                                      <property name="row">7</property>
-                                      <property name="column-span">2</property>
-                                    </layout>
                                   </object>
                                 </child>
+                                <style>
+                                  <class name="boxed-list"/>
+                                </style>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkListBox" id="security_context_list_box">
+                                <property name="visible">False</property>
                                 <child>
-                                  <object class="GtkBox" id="change_permissions_button_box">
-                                    <property name="visible">False</property>
-                                    <property name="margin_top">12</property>
+                                  <object class="AdwActionRow">
+                                    <property name="title" translatable="yes">Security Context</property>
                                     <child>
-                                      <object class="GtkButton" id="change_permissions_button">
-                                        <property name="label" translatable="yes">Change Permissions for 
Enclosed Files…</property>
-                                        <property name="focusable">True</property>
-                                        <property name="receives_default">True</property>
+                                      <object class="GtkLabel" id="security_context_value_label">
+                                        <property name="selectable">True</property>
+                                        <property name="max-width-chars">24</property>
+                                        <property name="xalign">1</property>
                                       </object>
                                     </child>
-                                    <layout>
-                                      <property name="column">0</property>
-                                      <property name="row">8</property>
-                                      <property name="column-span">2</property>
-                                    </layout>
+                                  </object>
+                                </child>
+                                <style>
+                                  <class name="boxed-list"/>
+                                </style>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkBox" id="change_permissions_button_box">
+                                <property name="visible">False</property>
+                                <property name="margin_top">12</property>
+                                <child>
+                                  <object class="GtkButton" id="change_permissions_button">
+                                    <property name="label" translatable="yes">Change Permissions for 
Enclosed Files…</property>
+                                    <property name="focusable">True</property>
+                                    <property name="receives_default">True</property>
                                   </object>
                                 </child>
                               </object>


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