Prechádzať zdrojové kódy

Use stateful action for search activation

Matthias Vogelgesang 7 rokov pred
rodič
commit
a9e6ea1b88
1 zmenil súbory, kde vykonal 15 pridanie a 5 odobranie
  1. 15 5
      src/iridium-window.c

+ 15 - 5
src/iridium-window.c

@@ -115,16 +115,26 @@ on_note_selected (IridiumWindow *self, IridiumNoteRow *row, gpointer user_data)
 }
 
 static void
-search_activated (GSimpleAction *action, GVariant *param, gpointer user_data)
+search_toggled (GSimpleAction *action,
+                GVariant *param,
+                gpointer user_data)
 {
   IridiumWindow *self;
+  GVariant *state;
+  gboolean visible;
 
   self = IRIDIUM_WINDOW (user_data);
-  gtk_search_bar_set_search_mode (self->search_bar, !gtk_search_bar_get_search_mode (self->search_bar));
+  state = g_action_get_state (G_ACTION (action));
+  visible = !g_variant_get_boolean (state);
+  g_simple_action_set_state (action, g_variant_new_boolean (visible));
+  gtk_search_bar_set_search_mode (self->search_bar, visible);
+  g_variant_unref (state);
 }
 
 static void
-preview_toggled (GSimpleAction *action, GVariant *param, gpointer user_data)
+preview_toggled (GSimpleAction *action,
+                 GVariant *param,
+                 gpointer user_data)
 {
   IridiumWindow *self;
   GVariant *state;
@@ -348,8 +358,8 @@ iridium_window_init (IridiumWindow *self)
   GError *error = NULL;
 
   static GActionEntry entries[] = {
-    { "search",     search_activated,   NULL, NULL,     NULL },
-    { "preview",    NULL,               NULL, "false",  preview_toggled },
+    { "search",     NULL,   NULL, "false",  search_toggled },
+    { "preview",    NULL,   NULL, "false",  preview_toggled },
   };
 
   gtk_widget_init_template (GTK_WIDGET (self));