[gnome-control-center/add-printers-dialog-entry-grab-focus: 3/3] printers: Focus search entry in new printer dialog



commit f3257ce82a1f7db6eac649fa5d26d487ea946a85
Author: Marek Kasik <mkasik redhat com>
Date:   Thu May 10 14:13:38 2018 +0200

    printers: Focus search entry in new printer dialog
    
    Focus search entry in the new printer dialog once user starts to type
    so he does not need to click on it.
    
    Closes #41

 panels/printers/new-printer-dialog.ui   |  1 +
 panels/printers/pp-new-printer-dialog.c | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)
---
diff --git a/panels/printers/new-printer-dialog.ui b/panels/printers/new-printer-dialog.ui
index 0e9a8110a..437220542 100644
--- a/panels/printers/new-printer-dialog.ui
+++ b/panels/printers/new-printer-dialog.ui
@@ -153,6 +153,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="transition-type">none</property>
+                    <property name="has_focus">True</property>
                     <style>
                       <class name="view"/>
                     </style>
diff --git a/panels/printers/pp-new-printer-dialog.c b/panels/printers/pp-new-printer-dialog.c
index 7a15a455f..e7857fc01 100644
--- a/panels/printers/pp-new-printer-dialog.c
+++ b/panels/printers/pp-new-printer-dialog.c
@@ -506,6 +506,20 @@ authenticate_samba_server (GtkButton *button,
     }
 }
 
+static gboolean
+stack_key_press_cb (GtkWidget *widget,
+                    GdkEvent  *event,
+                    gpointer   user_data)
+{
+  PpNewPrinterDialog        *dialog = (PpNewPrinterDialog *) user_data;
+  PpNewPrinterDialogPrivate *priv = dialog->priv;
+
+  gtk_widget_grab_focus (WID ("search-entry"));
+  gtk_main_do_event (event);
+
+  return TRUE;
+}
+
 static void
 pp_new_printer_dialog_init (PpNewPrinterDialog *dialog)
 {
@@ -556,6 +570,8 @@ pp_new_printer_dialog_init (PpNewPrinterDialog *dialog)
   widget = WID ("unlock-button");
   g_signal_connect (widget, "clicked", G_CALLBACK (authenticate_samba_server), dialog);
 
+  g_signal_connect (WID ("stack"), "key-press-event", G_CALLBACK (stack_key_press_cb), dialog);
+
   /* Authentication form widgets */
   g_signal_connect (WID ("username-entry"), "changed", G_CALLBACK (auth_entries_changed), dialog);
   g_signal_connect (WID ("password-entry"), "changed", G_CALLBACK (auth_entries_changed), dialog);


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