[gtranslator: 7/10] search-bar: Refactor how actions were used




commit 864b78a125cca7aa5b34e14bff7d417972a88524
Author: Maximiliano Sandoval R <msandova gnome org>
Date:   Wed Mar 16 00:14:20 2022 +0100

    search-bar: Refactor how actions were used
    
    Allows to add back the menu.
    
    It works as follow, for each option a property was added, which has an
    associated GPropertyAction, then both the menu and the check button use
    this action.

 src/gtr-search-bar.c  | 376 +++++++++++++++++++++++++++++---------------------
 src/gtr-search-bar.ui |   5 +
 2 files changed, 225 insertions(+), 156 deletions(-)
---
diff --git a/src/gtr-search-bar.c b/src/gtr-search-bar.c
index f490ac19..5926d9f3 100644
--- a/src/gtr-search-bar.c
+++ b/src/gtr-search-bar.c
@@ -36,7 +36,6 @@ struct _GtrSearchBar
 
   GObject                 *search_entry_tag;
 
-  GtkCheckButton          *case_sensitive;
   GtkButton               *replace_all_button;
   GtkButton               *replace_button;
   GtkButton               *previous_button;
@@ -44,22 +43,29 @@ struct _GtrSearchBar
   GtkEntry                *replace_entry;
   GtkEntry                *search_entry;
   GtkGrid                 *search_options;
-  GtkCheckButton          *whole_word;
-  GtkCheckButton          *wrap_around_button;
-  GtkCheckButton          *original_text_checkbutton;
-  GtkCheckButton          *translated_text_checkbutton;
   GtkLabel                *search_text_error;
 
   GtrWindow               *active_window;
 
   guint                    show_options : 1;
   guint                    replace_mode : 1;
+
+  gboolean                 case_sensitive;
+  gboolean                 at_word_boundaries;
+  gboolean                 wrap_around;
+  gboolean                 at_original_text;
+  gboolean                 at_translated_text;
 };
 
 enum {
   PROP_0,
   PROP_REPLACE_MODE,
   PROP_SHOW_OPTIONS,
+  PROP_CASE_SENSITIVE,
+  PROP_AT_WORD_BOUNDARIES,
+  PROP_WRAP_AROUND,
+  PROP_AT_ORIGINAL_TEXT,
+  PROP_AT_TRANSLATED_TEXT,
   N_PROPS
 };
 
@@ -117,110 +123,117 @@ gtr_search_bar_get_replace_text (GtrSearchBar *dialog)
 }
 
 void
-gtr_search_bar_set_original_text (GtrSearchBar *dialog,
-                                  gboolean match_case)
+gtr_search_bar_set_original_text (GtrSearchBar *self,
+                                  gboolean      at_original_text)
 {
-  g_return_if_fail (GTR_IS_SEARCH_BAR (dialog));
+  g_return_if_fail (GTR_IS_SEARCH_BAR (self));
 
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                (dialog->original_text_checkbutton),
-                                match_case);
+  if (self->at_original_text == at_original_text)
+    return;
+
+  self->at_original_text = at_original_text;
+  g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_AT_ORIGINAL_TEXT]);
+
+  /* Make sure at least one is activated */
+  if (!at_original_text && !self->at_translated_text)
+    gtr_search_bar_set_translated_text (self, TRUE);
 }
 
 gboolean
-gtr_search_bar_get_original_text (GtrSearchBar *dialog)
+gtr_search_bar_get_original_text (GtrSearchBar *self)
 {
-  g_return_val_if_fail (GTR_IS_SEARCH_BAR (dialog), FALSE);
+  g_return_val_if_fail (GTR_IS_SEARCH_BAR (self), FALSE);
 
-  return
-    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                  (dialog->original_text_checkbutton));
+  return self->at_original_text;
 }
 
 void
-gtr_search_bar_set_translated_text (GtrSearchBar *dialog,
-                                    gboolean match_case)
+gtr_search_bar_set_translated_text (GtrSearchBar *self,
+                                    gboolean      at_translated_text)
 {
+  g_return_if_fail (GTR_IS_SEARCH_BAR (self));
 
-  g_return_if_fail (GTR_IS_SEARCH_BAR (dialog));
+  if (self->at_translated_text == at_translated_text)
+    return;
+
+  self->at_translated_text = at_translated_text;
+  g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_AT_TRANSLATED_TEXT]);
 
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                (dialog->translated_text_checkbutton),
-                                match_case);
+  /* Make sure at least one is activated */
+  if (!self->at_original_text && !at_translated_text)
+    gtr_search_bar_set_original_text (self, TRUE);
 }
 
 gboolean
-gtr_search_bar_get_translated_text (GtrSearchBar *dialog)
+gtr_search_bar_get_translated_text (GtrSearchBar *self)
 {
+  g_return_val_if_fail (GTR_IS_SEARCH_BAR (self), FALSE);
 
-  g_return_val_if_fail (GTR_IS_SEARCH_BAR (dialog), FALSE);
-
-  return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->translated_text_checkbutton));
+  return self->at_translated_text;
 }
 
 void
-gtr_search_bar_set_match_case (GtrSearchBar *dialog,
-                               gboolean match_case)
+gtr_search_bar_set_match_case (GtrSearchBar *self,
+                               gboolean      case_sensitive)
 {
+  g_return_if_fail (GTR_IS_SEARCH_BAR (self));
 
-  g_return_if_fail (GTR_IS_SEARCH_BAR (dialog));
+  if (self->case_sensitive == case_sensitive)
+    return;
 
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->case_sensitive),
-                                match_case);
+  self->case_sensitive = case_sensitive;
+  g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CASE_SENSITIVE]);
 }
 
 gboolean
-gtr_search_bar_get_match_case (GtrSearchBar *dialog)
+gtr_search_bar_get_match_case (GtrSearchBar *self)
 {
-  g_return_val_if_fail (GTR_IS_SEARCH_BAR (dialog), FALSE);
+  g_return_val_if_fail (GTR_IS_SEARCH_BAR (self), FALSE);
 
-  return
-    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                  (dialog->case_sensitive));
+  return self->case_sensitive;
 }
 
 void
-gtr_search_bar_set_entire_word (GtrSearchBar *dialog,
-                                gboolean entire_word)
+gtr_search_bar_set_entire_word (GtrSearchBar *self,
+                                gboolean      at_word_boundaries)
 {
-  g_return_if_fail (GTR_IS_SEARCH_BAR (dialog));
+  g_return_if_fail (GTR_IS_SEARCH_BAR (self));
+
+  if (self->at_word_boundaries == at_word_boundaries)
+    return;
 
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                (dialog->whole_word),
-                                entire_word);
+  self->at_word_boundaries = at_word_boundaries;
+  g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_AT_WORD_BOUNDARIES]);
 }
 
 gboolean
-gtr_search_bar_get_entire_word (GtrSearchBar *dialog)
+gtr_search_bar_get_entire_word (GtrSearchBar *self)
 {
+  g_return_val_if_fail (GTR_IS_SEARCH_BAR (self), FALSE);
 
-  g_return_val_if_fail (GTR_IS_SEARCH_BAR (dialog), FALSE);
-
-  return
-    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                  (dialog->whole_word));
+  return self->at_word_boundaries;
 }
 
 void
-gtr_search_bar_set_wrap_around (GtrSearchBar *dialog,
-                                   gboolean wrap_around)
+gtr_search_bar_set_wrap_around (GtrSearchBar *self,
+                                gboolean wrap_around)
 {
 
-  g_return_if_fail (GTR_IS_SEARCH_BAR (dialog));
+  g_return_if_fail (GTR_IS_SEARCH_BAR (self));
+
+  if (self->wrap_around == wrap_around)
+    return;
 
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                (dialog->wrap_around_button),
-                                wrap_around);
+  self->wrap_around = wrap_around;
+  g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_WRAP_AROUND]);
 }
 
 gboolean
-gtr_search_bar_get_wrap_around (GtrSearchBar *dialog)
+gtr_search_bar_get_wrap_around (GtrSearchBar *self)
 {
-  g_return_val_if_fail (GTR_IS_SEARCH_BAR (dialog), FALSE);
+  g_return_val_if_fail (GTR_IS_SEARCH_BAR (self), FALSE);
 
-  return
-    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                  (dialog->wrap_around_button));
+  return self->wrap_around;
 }
 
 void
@@ -295,56 +308,6 @@ insert_text_handler (GtkEditable * editable,
   g_free (escaped_text);
 }
 
-/*
- * Functions to make sure either translated or original checkbutton
- * is selected at any time. Anything else does not make any sense.
- */
-static void
-translated_checkbutton_toggled (GtkToggleButton * button,
-                                         GtrSearchBar * dialog)
-{
-  gboolean original_text;
-  gboolean translated_text;
-
-  original_text =
-    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                  (dialog->original_text_checkbutton));
-  translated_text =
-    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                  (
-                                   dialog->translated_text_checkbutton));
-
-  if (!original_text && !translated_text)
-    {
-      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                    (dialog->original_text_checkbutton),
-                                     TRUE);
-    }
-}
-
-static void
-original_checkbutton_toggled (GtkToggleButton * button,
-                              GtrSearchBar * dialog)
-{
-  gboolean original_text;
-  gboolean translated_text;
-
-  original_text =
-    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                  (dialog->original_text_checkbutton));
-  translated_text =
-    gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
-                                  (
-                                   dialog->translated_text_checkbutton));
-
-  if (!original_text && !translated_text)
-    {
-      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                    (dialog->translated_text_checkbutton),
-                                     TRUE);
-    }
-}
-
 /*-----------------------------END OF NEW RE_WRITTEN METHODS-----------------*/
 
 gboolean
@@ -433,6 +396,52 @@ gtr_search_bar_grab_focus (GtkWidget *widget)
   gtk_widget_grab_focus (GTK_WIDGET (self->search_entry));
 }
 
+static void
+search_entry_populate_popup (GtrSearchBar *self,
+                             GtkWidget    *widget,
+                             GtkEntry     *entry)
+{
+  g_assert (GTR_IS_SEARCH_BAR (self));
+  g_assert (GTK_IS_MENU (widget));
+  g_assert (GTK_IS_ENTRY (entry));
+
+  if (GTK_IS_MENU (widget))
+    {
+      GtkWidget *item;
+      GtkWidget *sep;
+      guint pos = 0;
+
+      item = gtk_check_menu_item_new_with_label (_("Case sensitive"));
+      gtk_actionable_set_action_name (GTK_ACTIONABLE (item), "search-settings.case-sensitive");
+      gtk_menu_shell_insert (GTK_MENU_SHELL (widget), item, pos++);
+      gtk_widget_show (item);
+
+      item = gtk_check_menu_item_new_with_label (_("Match whole word only"));
+      gtk_actionable_set_action_name (GTK_ACTIONABLE (item), "search-settings.at-word-boundaries");
+      gtk_menu_shell_insert (GTK_MENU_SHELL (widget), item, pos++);
+      gtk_widget_show (item);
+
+      item = gtk_check_menu_item_new_with_label (_("Wrap around"));
+      gtk_actionable_set_action_name (GTK_ACTIONABLE (item), "search-settings.wrap-around");
+      gtk_menu_shell_insert (GTK_MENU_SHELL (widget), item, pos++);
+      gtk_widget_show (item);
+
+      item = gtk_check_menu_item_new_with_label (_("Original text"));
+      gtk_actionable_set_action_name (GTK_ACTIONABLE (item), "search-settings.at-original-text");
+      gtk_menu_shell_insert (GTK_MENU_SHELL (widget), item, pos++);
+      gtk_widget_show (item);
+
+      item = gtk_check_menu_item_new_with_label (_("Translated text"));
+      gtk_actionable_set_action_name (GTK_ACTIONABLE (item), "search-settings.at-translated-text");
+      gtk_menu_shell_insert (GTK_MENU_SHELL (widget), item, pos++);
+      gtk_widget_show (item);
+
+      sep = gtk_separator_menu_item_new ();
+      gtk_menu_shell_insert (GTK_MENU_SHELL (widget), sep, pos++);
+      gtk_widget_show (sep);
+    }
+}
+
 static void
 gtr_search_bar_real_stop_search (GtrSearchBar *self)
 {
@@ -484,6 +493,35 @@ gtr_search_bar_set_show_options (GtrSearchBar *self,
     }
 }
 
+static void
+add_actions (GtrSearchBar *self)
+{
+  GSimpleActionGroup *group;
+  GPropertyAction *action;
+
+  group = g_simple_action_group_new ();
+
+  action = g_property_action_new ("case-sensitive", self, "case-sensitive");
+  g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action));
+
+  action = g_property_action_new ("at-word-boundaries", self, "at-word-boundaries");
+  g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action));
+
+  action = g_property_action_new ("wrap-around", self, "wrap-around");
+  g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action));
+
+  action = g_property_action_new ("at-original-text", self, "at-original-text");
+  g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action));
+
+  action = g_property_action_new ("at-translated-text", self, "at-translated-text");
+  g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action));
+
+  gtk_widget_insert_action_group (GTK_WIDGET (self), "search-settings", G_ACTION_GROUP (group));
+
+  g_object_unref (action);
+}
+
+
 static void
 gtr_search_bar_get_property (GObject    *object,
                              guint       prop_id,
@@ -502,6 +540,26 @@ gtr_search_bar_get_property (GObject    *object,
       g_value_set_boolean (value, gtr_search_bar_get_show_options (self));
       break;
 
+    case PROP_CASE_SENSITIVE:
+      g_value_set_boolean (value, gtr_search_bar_get_match_case (self));
+      break;
+
+    case PROP_AT_WORD_BOUNDARIES:
+      g_value_set_boolean (value, gtr_search_bar_get_entire_word (self));
+      break;
+
+    case PROP_WRAP_AROUND:
+      g_value_set_boolean (value, gtr_search_bar_get_wrap_around (self));
+      break;
+
+    case PROP_AT_ORIGINAL_TEXT:
+      g_value_set_boolean (value, gtr_search_bar_get_original_text (self));
+      break;
+
+    case PROP_AT_TRANSLATED_TEXT:
+      g_value_set_boolean (value, gtr_search_bar_get_translated_text (self));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
@@ -525,6 +583,26 @@ gtr_search_bar_set_property (GObject      *object,
       gtr_search_bar_set_show_options (self, g_value_get_boolean (value));
       break;
 
+    case PROP_CASE_SENSITIVE:
+      gtr_search_bar_set_match_case (self, g_value_get_boolean (value));
+      break;
+
+    case PROP_AT_WORD_BOUNDARIES:
+      gtr_search_bar_set_entire_word (self, g_value_get_boolean (value));
+      break;
+
+    case PROP_WRAP_AROUND:
+      gtr_search_bar_set_wrap_around (self, g_value_get_boolean (value));
+      break;
+
+    case PROP_AT_ORIGINAL_TEXT:
+      gtr_search_bar_set_original_text (self, g_value_get_boolean (value));
+      break;
+
+    case PROP_AT_TRANSLATED_TEXT:
+      gtr_search_bar_set_translated_text (self, g_value_get_boolean (value));
+      break;
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
     }
@@ -550,6 +628,26 @@ gtr_search_bar_class_init (GtrSearchBarClass *klass)
     g_param_spec_boolean ("show-options", NULL, NULL, FALSE,
                           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
+  properties [PROP_CASE_SENSITIVE] =
+    g_param_spec_boolean ("case-sensitive", NULL, NULL, FALSE,
+                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
+  properties [PROP_AT_WORD_BOUNDARIES] =
+    g_param_spec_boolean ("at-word-boundaries", NULL, NULL, FALSE,
+                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
+  properties [PROP_WRAP_AROUND] =
+    g_param_spec_boolean ("wrap-around", NULL, NULL, TRUE,
+                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
+  properties [PROP_AT_ORIGINAL_TEXT] =
+    g_param_spec_boolean ("at-original-text", NULL, NULL, TRUE,
+                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
+  properties [PROP_AT_TRANSLATED_TEXT] =
+    g_param_spec_boolean ("at-translated-text", NULL, NULL, TRUE,
+                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
   g_object_class_install_properties (object_class, N_PROPS, properties);
 
   signals [STOP_SEARCH] =
@@ -562,7 +660,6 @@ gtr_search_bar_class_init (GtrSearchBarClass *klass)
                                 G_TYPE_NONE, 0);
 
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/translator/gtr-search-bar.ui");
-  gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, case_sensitive);
   gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, replace_all_button);
   gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, replace_button);
   gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, replace_entry);
@@ -571,10 +668,6 @@ gtr_search_bar_class_init (GtrSearchBarClass *klass)
   gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, next_button);
   gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, search_options);
   gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, search_text_error);
-  gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, whole_word);
-  gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, wrap_around_button );
-  gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, original_text_checkbutton);
-  gtk_widget_class_bind_template_child (widget_class, GtrSearchBar, translated_text_checkbutton);
 
   gtk_widget_class_set_css_name (widget_class, "gtrsearchbar");
 }
@@ -584,19 +677,13 @@ gtr_search_bar_init (GtrSearchBar *self)
 {
   gtk_widget_init_template (GTK_WIDGET (self));
 
-  // Sets the Original-text, Translated-text and Wrap-around checkbuttons toggled by default.
+  // Sets the Original-text, Translated-text and Wrap-around enabled by default.
 
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                (self->original_text_checkbutton),
-                                TRUE);
-
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                (self->translated_text_checkbutton),
-                                TRUE);
-
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON
-                                (self->wrap_around_button),
-                                TRUE);
+  self->case_sensitive = FALSE;
+  self->at_word_boundaries = FALSE;
+  self->wrap_around = TRUE;
+  self->at_original_text = TRUE;
+  self->at_translated_text = TRUE;
 
   g_object_set (G_OBJECT (self->next_button), "can-default", TRUE, NULL);
 
@@ -612,47 +699,22 @@ gtr_search_bar_init (GtrSearchBar *self)
                              G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL,
                              pacify_null_text, pacify_null_text, NULL, NULL);
 
-  g_binding_group_bind (self->search_bindings, "case-sensitive",
-                        self->case_sensitive, "active",
-                        G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
-
-  g_binding_group_bind (self->search_bindings, "at-word-boundaries",
-                        self->whole_word, "active",
-                        G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
-
-  g_binding_group_bind (self->search_bindings, "wrap-around",
-                        self->whole_word, "active",
-                        G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
-
-  g_binding_group_bind (self->search_bindings, "at-original-text",
-                        self->whole_word, "active",
-                        G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
-
-  g_binding_group_bind (self->search_bindings, "at-translated-text",
-                        self->whole_word, "active",
-                        G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
-
   g_signal_connect (self->search_entry,
                     "insert_text", G_CALLBACK (insert_text_handler), NULL);
 
   g_signal_connect (self->replace_entry,
                     "insert_text", G_CALLBACK (insert_text_handler), NULL);
 
-  g_signal_connect (self->original_text_checkbutton,
-                    "toggled",
-                    G_CALLBACK (original_checkbutton_toggled),
-                    self);
-
-  g_signal_connect (self->translated_text_checkbutton,
-                    "toggled",
-                    G_CALLBACK (translated_checkbutton_toggled),
-                    self);
-
   g_signal_connect_swapped (self->search_entry,
                             "activate",
                             G_CALLBACK (gtr_search_bar_find_next),
                             self);
 
+  g_signal_connect_swapped (self->search_entry,
+                            "populate-popup",
+                            G_CALLBACK (search_entry_populate_popup),
+                            self);
+
   g_signal_connect_swapped (self->next_button,
                             "clicked",
                             G_CALLBACK (gtr_search_bar_find_next),
@@ -677,6 +739,8 @@ gtr_search_bar_init (GtrSearchBar *self)
                             "stop-search",
                             G_CALLBACK (search_entry_stop_search),
                             self);
+
+  add_actions (self);
 }
 
 void
diff --git a/src/gtr-search-bar.ui b/src/gtr-search-bar.ui
index 447c6d68..eb32eb51 100644
--- a/src/gtr-search-bar.ui
+++ b/src/gtr-search-bar.ui
@@ -214,6 +214,7 @@
                 <property name="can-focus">false</property>
                 <property name="xalign">0</property>
                 <property name="draw-indicator">true</property>
+                <property name="action-name">search-settings.case-sensitive</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
@@ -227,6 +228,7 @@
                 <property name="can-focus">false</property>
                 <property name="xalign">0</property>
                 <property name="draw-indicator">true</property>
+                <property name="action-name">search-settings.at-word-boundaries</property>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -240,6 +242,7 @@
                 <property name="can-focus">false</property>
                 <property name="xalign">1</property>
                 <property name="draw-indicator">true</property>
+                <property name="action-name">search-settings.wrap-around</property>
               </object>
               <packing>
                 <property name="left_attach">2</property>
@@ -253,6 +256,7 @@
                 <property name="can-focus">false</property>
                 <property name="xalign">1</property>
                 <property name="draw-indicator">true</property>
+                <property name="action-name">search-settings.at-original-text</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
@@ -266,6 +270,7 @@
                 <property name="can-focus">false</property>
                 <property name="xalign">1</property>
                 <property name="draw-indicator">true</property>
+                <property name="action-name">search-settings.at-translated-text</property>
               </object>
               <packing>
                 <property name="left_attach">1</property>


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