[nautilus] general: Reimplement a11y for gtk4



commit 1c569b008e0ed7e896c41c43ef81554370ac85dc
Author: Corey Berla <corey berla me>
Date:   Thu Jul 28 09:39:39 2022 -0700

    general: Reimplement a11y for gtk4
    
    Set the accessible role for our custom UI widgets.  Misc
    labelling and descriptions.

 src/gtk/nautilusgtkplacessidebar.c                |  6 ++++++
 src/gtk/nautilusgtkplacesview.c                   |  1 +
 src/gtk/nautilusgtkplacesview.ui                  |  4 ++++
 src/nautilus-file-operations.c                    |  3 ---
 src/nautilus-files-view.c                         | 10 ----------
 src/nautilus-grid-cell.c                          |  2 ++
 src/nautilus-query-editor.c                       |  2 +-
 src/nautilus-toolbar.c                            |  2 ++
 src/resources/ui/nautilus-compress-dialog.ui      |  6 ++++++
 src/resources/ui/nautilus-create-folder-dialog.ui |  6 +++++-
 src/resources/ui/nautilus-files-view.ui           |  4 ++++
 src/resources/ui/nautilus-rename-file-popover.ui  |  3 +++
 12 files changed, 34 insertions(+), 15 deletions(-)
---
diff --git a/src/gtk/nautilusgtkplacessidebar.c b/src/gtk/nautilusgtkplacessidebar.c
index 967897769..59702bbe7 100644
--- a/src/gtk/nautilusgtkplacessidebar.c
+++ b/src/gtk/nautilusgtkplacessidebar.c
@@ -3976,6 +3976,11 @@ nautilus_gtk_places_sidebar_init (NautilusGtkPlacesSidebar *sidebar)
                                    entries, G_N_ELEMENTS (entries),
                                    sidebar);
   gtk_widget_insert_action_group (GTK_WIDGET (sidebar), "row", sidebar->row_actions);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (sidebar),
+                                  GTK_ACCESSIBLE_PROPERTY_LABEL, _("Sidebar"),
+                                  GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
+                                  _("List of common shortcuts, mountpoints, and bookmarks."), -1);
 }
 
 static void
@@ -4515,6 +4520,7 @@ nautilus_gtk_places_sidebar_class_init (NautilusGtkPlacesSidebarClass *class)
   g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
 
   gtk_widget_class_set_css_name (widget_class, "placessidebar");
+  gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_LIST);
 }
 
 /*
diff --git a/src/gtk/nautilusgtkplacesview.c b/src/gtk/nautilusgtkplacesview.c
index d841cfce9..4d470eff7 100644
--- a/src/gtk/nautilusgtkplacesview.c
+++ b/src/gtk/nautilusgtkplacesview.c
@@ -2418,6 +2418,7 @@ nautilus_gtk_places_view_class_init (NautilusGtkPlacesViewClass *klass)
   gtk_widget_class_install_action (widget_class, "location.properties", NULL, properties_cb);
 
   gtk_widget_class_set_css_name (widget_class, "placesview");
+  gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_LIST);
 }
 
 static void
diff --git a/src/gtk/nautilusgtkplacesview.ui b/src/gtk/nautilusgtkplacesview.ui
index d7976208d..fbedf70c5 100644
--- a/src/gtk/nautilusgtkplacesview.ui
+++ b/src/gtk/nautilusgtkplacesview.ui
@@ -154,6 +154,10 @@
     </child>
   </object>
   <template class="NautilusGtkPlacesView" parent="GtkBox">
+    <accessibility>
+      <property name="label" translatable="yes">Other Locations</property>
+      <property name="description" translatable="yes">List of common local and remote mountpoints.</property>
+    </accessibility>
     <property name="orientation">1</property>
     <child>
       <object class="GtkStack" id="stack">
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
index 8f5160a97..7a216d899 100644
--- a/src/nautilus-file-operations.c
+++ b/src/nautilus-file-operations.c
@@ -3030,9 +3030,6 @@ create_empty_trash_prompt (GtkWindow *parent_window)
                             _("Empty _Trash"), GTK_RESPONSE_ACCEPT, NULL);
     gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
     gtk_window_set_title (GTK_WINDOW (dialog), "");
-#if 0 && NAUTILUS_A11Y_NEEDS_GTK4_REIMPLEMENTATION
-    atk_object_set_role (gtk_widget_get_accessible (dialog), ATK_ROLE_ALERT);
-#endif
 
     return dialog;
 }
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 87af936dc..fe13d576a 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -9537,9 +9537,6 @@ nautilus_files_view_init (NautilusFilesView *view)
 {
     NautilusFilesViewPrivate *priv;
     GtkBuilder *builder;
-#if 0 && NAUTILUS_A11Y_NEEDS_GTK4_REIMPLEMENTATION
-    AtkObject *atk_object;
-#endif
     NautilusDirectory *scripts_directory;
     NautilusDirectory *templates_directory;
     GtkEventController *controller;
@@ -9670,13 +9667,6 @@ nautilus_files_view_init (NautilusFilesView *view)
 
     priv->in_destruction = FALSE;
 
-#if 0 && NAUTILUS_A11Y_NEEDS_GTK4_REIMPLEMENTATION
-    /* Accessibility */
-    atk_object = gtk_widget_get_accessible (GTK_WIDGET (view));
-    atk_object_set_name (atk_object, _("Content View"));
-    atk_object_set_description (atk_object, _("View of the current folder"));
-#endif
-
     priv->view_action_group = G_ACTION_GROUP (g_simple_action_group_new ());
     g_action_map_add_action_entries (G_ACTION_MAP (priv->view_action_group),
                                      view_entries,
diff --git a/src/nautilus-grid-cell.c b/src/nautilus-grid-cell.c
index 383d85b03..0eb20e281 100644
--- a/src/nautilus-grid-cell.c
+++ b/src/nautilus-grid-cell.c
@@ -203,6 +203,8 @@ nautilus_grid_cell_class_init (NautilusGridCellClass *klass)
     gtk_widget_class_bind_template_child (widget_class, NautilusGridCell, first_caption);
     gtk_widget_class_bind_template_child (widget_class, NautilusGridCell, second_caption);
     gtk_widget_class_bind_template_child (widget_class, NautilusGridCell, third_caption);
+
+    gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GRID_CELL);
 }
 
 static void
diff --git a/src/nautilus-query-editor.c b/src/nautilus-query-editor.c
index 22561b298..b671d818f 100644
--- a/src/nautilus-query-editor.c
+++ b/src/nautilus-query-editor.c
@@ -328,7 +328,7 @@ nautilus_query_editor_class_init (NautilusQueryEditorClass *class)
 
     gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BOX_LAYOUT);
     gtk_widget_class_set_css_name (widget_class, "entry");
-    gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_TEXT_BOX);
+    gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_SEARCH_BOX);
 }
 
 GFile *
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c
index 0437f25a6..6ea4c7cdc 100644
--- a/src/nautilus-toolbar.c
+++ b/src/nautilus-toolbar.c
@@ -1195,6 +1195,8 @@ nautilus_toolbar_class_init (NautilusToolbarClass *klass)
     gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, search_button);
 
     gtk_widget_class_bind_template_callback (widget_class, on_operations_popover_notify_visible);
+
+    gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_TOOLBAR);
 }
 
 GtkWidget *
diff --git a/src/resources/ui/nautilus-compress-dialog.ui b/src/resources/ui/nautilus-compress-dialog.ui
index 096369a55..810f72cfb 100644
--- a/src/resources/ui/nautilus-compress-dialog.ui
+++ b/src/resources/ui/nautilus-compress-dialog.ui
@@ -33,6 +33,9 @@
             <property name="spacing">12</property>
             <child>
               <object class="GtkEntry" id="name_entry">
+                <accessibility>
+                  <relation name="labelled-by">name_label</relation>
+                </accessibility>
                 <property name="hexpand">True</property>
                 <property name="width-chars">30</property>
               </object>
@@ -63,6 +66,9 @@
         </child>
         <child>
           <object class="GtkEntry" id="passphrase_entry">
+            <accessibility>
+              <relation name="labelled-by">passphrase_label</relation>
+            </accessibility>
             <property name="visible">False</property>
             <property name="placeholder-text" translatable="yes">Enter a password here.</property>
             <property name="input-purpose">password</property>
diff --git a/src/resources/ui/nautilus-create-folder-dialog.ui 
b/src/resources/ui/nautilus-create-folder-dialog.ui
index 33d7f438d..699180d56 100644
--- a/src/resources/ui/nautilus-create-folder-dialog.ui
+++ b/src/resources/ui/nautilus-create-folder-dialog.ui
@@ -21,7 +21,11 @@
           </object>
         </child>
         <child>
-          <object class="GtkEntry" id="name_entry"/>
+          <object class="GtkEntry" id="name_entry">
+            <accessibility>
+              <relation name="labelled-by">name_label</relation>
+            </accessibility>
+          </object>
         </child>
         <child>
           <object class="GtkRevealer" id="error_revealer">
diff --git a/src/resources/ui/nautilus-files-view.ui b/src/resources/ui/nautilus-files-view.ui
index 3ccdb0b09..eab5bddbe 100644
--- a/src/resources/ui/nautilus-files-view.ui
+++ b/src/resources/ui/nautilus-files-view.ui
@@ -2,6 +2,10 @@
 <interface>
   <requires lib="gtk" version="4.0"/>
   <template class="NautilusFilesView" parent="AdwBin">
+    <accessibility>
+      <property name="label" translatable="yes">Content View</property>
+      <property name="description" translatable="yes">View of the current folder</property>
+    </accessibility>
     <child>
       <object class="GtkOverlay" id="overlay">
         <property name="hexpand">True</property>
diff --git a/src/resources/ui/nautilus-rename-file-popover.ui 
b/src/resources/ui/nautilus-rename-file-popover.ui
index c4ab2d8e3..205a85c3d 100644
--- a/src/resources/ui/nautilus-rename-file-popover.ui
+++ b/src/resources/ui/nautilus-rename-file-popover.ui
@@ -19,6 +19,9 @@
         </child>
         <child>
           <object class="GtkEntry" id="name_entry">
+            <accessibility>
+              <property name="label" translatable="yes">New Filename</property>
+            </accessibility>
             <property name="margin-bottom">12</property>
           </object>
         </child>


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