[gnome-control-center/change-hostname-on-activate-signal: 2/2] info-overview: Allow changing "Device Name" by pressing "Enter"




commit b094a0b3921ae8a324d52d21fb6aea3c338ae68a
Author: Felipe Borges <felipeborges gnome org>
Date:   Mon Mar 7 17:01:02 2022 +0100

    info-overview: Allow changing "Device Name" by pressing "Enter"
    
    The hostname/device name dialog has only a GtkEntry. So a user
    navigating with only a keyboard should be able to apply their
    changes by pressing "Enter".

 panels/info-overview/cc-info-overview-panel.c  | 28 +++++++++++++++++++-------
 panels/info-overview/cc-info-overview-panel.ui |  1 +
 2 files changed, 22 insertions(+), 7 deletions(-)
---
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index 274a3c644..b348c0fc6 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -871,6 +871,18 @@ on_device_name_entry_changed (CcInfoOverviewPanel *self)
                             g_strcmp0 (current_hostname, new_hostname) != 0);
 }
 
+static void
+update_device_name (CcInfoOverviewPanel *self)
+{
+  const gchar *hostname;
+
+  /* We simply change the CcHostnameEntry text. CcHostnameEntry
+   * listens to changes and updates hostname on change.
+   */
+  hostname = gtk_editable_get_text (GTK_EDITABLE (self->device_name_entry));
+  gtk_editable_set_text (GTK_EDITABLE (self->hostname_entry), hostname);
+}
+
 static void
 on_hostname_editor_dialog_response_cb (GtkDialog           *dialog,
                                        gint                 response,
@@ -878,18 +890,19 @@ on_hostname_editor_dialog_response_cb (GtkDialog           *dialog,
 {
   if (response == GTK_RESPONSE_APPLY)
     {
-      const gchar *hostname;
-
-      /* We simply change the CcHostnameEntry text.  CcHostnameEntry
-       * listens to changes and updates hostname on change.
-       */
-      hostname = gtk_editable_get_text (GTK_EDITABLE (self->device_name_entry));
-      gtk_editable_set_text (GTK_EDITABLE (self->hostname_entry), hostname);
+      update_device_name (self);
     }
 
   gtk_window_close (GTK_WINDOW (dialog));
 }
 
+static void
+on_device_name_entry_activated_cb (CcInfoOverviewPanel *self)
+{
+  update_device_name (self);
+  gtk_window_close (GTK_WINDOW (self->hostname_editor));
+}
+
 static void
 open_hostname_edit_dialog (CcInfoOverviewPanel *self)
 {
@@ -991,6 +1004,7 @@ cc_info_overview_panel_class_init (CcInfoOverviewPanelClass *klass)
 
   gtk_widget_class_bind_template_callback (widget_class, cc_info_panel_row_activated_cb);
   gtk_widget_class_bind_template_callback (widget_class, on_device_name_entry_changed);
+  gtk_widget_class_bind_template_callback (widget_class, on_device_name_entry_activated_cb);
   gtk_widget_class_bind_template_callback (widget_class, on_hostname_editor_dialog_response_cb);
 
   g_type_ensure (CC_TYPE_LIST_ROW);
diff --git a/panels/info-overview/cc-info-overview-panel.ui b/panels/info-overview/cc-info-overview-panel.ui
index d7cacbc4d..5bac29f50 100644
--- a/panels/info-overview/cc-info-overview-panel.ui
+++ b/panels/info-overview/cc-info-overview-panel.ui
@@ -177,6 +177,7 @@
         <child>
           <object class="GtkEntry" id="device_name_entry">
             <signal name="changed" handler="on_device_name_entry_changed" swapped="yes"/>
+            <signal name="activate" handler="on_device_name_entry_activated_cb" swapped="yes" />
           </object>
         </child>
       </object>


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