[gtranslator] Grab focus on msg just when clicking



commit ab01ab4cfe02af5f439484d9884ac20dcd8e3fd0
Author: Daniel GarcĂ­a Moreno <dani danigm net>
Date:   Wed May 11 20:36:27 2022 +0200

    Grab focus on msg just when clicking
    
    Fix https://gitlab.gnome.org/GNOME/gtranslator/-/issues/158

 src/gtr-actions-search.c |  4 ++--
 src/gtr-tab.c            | 24 +++++++++++++++++++++---
 2 files changed, 23 insertions(+), 5 deletions(-)
---
diff --git a/src/gtr-actions-search.c b/src/gtr-actions-search.c
index f05934b2..e65f7d9f 100644
--- a/src/gtr-actions-search.c
+++ b/src/gtr-actions-search.c
@@ -204,7 +204,7 @@ find_in_list (GtrWindow * window,
           found = run_search (GTR_VIEW (viewsaux->data), found);
           if (found)
             {
-              gtr_tab_message_go_to (tab, l->data, FALSE, GTR_TAB_MOVE_NONE);
+              gtr_tab_message_go_to (tab, l->data, TRUE, GTR_TAB_MOVE_NONE);
               run_search (GTR_VIEW (viewsaux->data), aux);
               return TRUE;
             }
@@ -303,7 +303,7 @@ do_find (GtrSearchBar * dialog, GtrWindow * window, gboolean search_backwards)
   restore_last_searched_data (dialog, tab);
 
   if (!found && current_msg)
-    gtr_tab_message_go_to (tab, current_msg->data, FALSE, GTR_TAB_MOVE_NONE);
+    gtr_tab_message_go_to (tab, current_msg->data, TRUE, GTR_TAB_MOVE_NONE);
 
   gtr_search_bar_set_found (dialog, found);
 }
diff --git a/src/gtr-tab.c b/src/gtr-tab.c
index 93b9059b..e317c464 100644
--- a/src/gtr-tab.c
+++ b/src/gtr-tab.c
@@ -261,6 +261,15 @@ show_hide_revealer (GtkWidget *widget, GdkEvent *ev, GtrTab *tab)
   return TRUE;
 }
 
+static gboolean
+msg_grab_focus (GtrTab *tab)
+{
+  GtrTabPrivate *priv;
+  priv = gtr_tab_get_instance_private (tab);
+  gtk_widget_grab_focus (priv->trans_msgstr[0]);
+  return FALSE;
+}
+
 static void
 install_autosave_timeout (GtrTab * tab)
 {
@@ -1182,7 +1191,9 @@ gtr_tab_get_all_views (GtrTab * tab, gboolean original, gboolean translated)
 **/
 void
 gtr_tab_message_go_to (GtrTab * tab,
-                       GtrMsg * to_go, gboolean searching, GtrTabMove move)
+                       GtrMsg * to_go,
+                       gboolean searching,
+                       GtrTabMove move)
 {
   static gboolean first_msg = TRUE;
   GtrTabPrivate *priv;
@@ -1254,8 +1265,15 @@ gtr_tab_message_go_to (GtrTab * tab,
    * Emitting showed-message signal
    */
   if (!searching)
-    g_signal_emit (G_OBJECT (tab), signals[SHOWED_MESSAGE], 0,
-                   GTR_MSG (to_go));
+    {
+      g_signal_emit (G_OBJECT (tab), signals[SHOWED_MESSAGE], 0,
+                     GTR_MSG (to_go));
+
+      // Grabbing the focus in the GtrView to edit the message
+      // This is done in the idle add to avoid the focus grab from the
+      // message-table
+      g_idle_add((GSourceFunc)msg_grab_focus, tab);
+    }
 }
 
 /**


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