Simplify help_search_window signals handling
authorArkadiy Illarionov <[email protected]>
Sun, 16 Feb 2025 14:51:41 +0000 (17:51 +0300)
committerColin Clark <[email protected]>
Sun, 16 Feb 2025 16:16:09 +0000 (16:16 +0000)
Remove redundant HelpSearchData struct.

src/window.cc

index 44dbb020ca4b22ad349f6356bae6ff14001af37a..9e035293547e3d079498ac2936b9afce3109cf86 100644 (file)
@@ -325,49 +325,39 @@ void help_window_show(const gchar *key)
  *-----------------------------------------------------------------------------
  */
 
-struct HelpSearchData {
-       GenericDialog *gd;
-       GtkWidget *edit_widget;
-       gchar *text_entry;
-};
-
-static void help_search_window_show_icon_press(GtkEntry *, GtkEntryIconPosition, GdkEvent *, gpointer userdata)
+static void help_search_window_show_icon_press(GtkEntry *edit_widget, GtkEntryIconPosition, GdkEvent *, gpointer)
 {
-       auto hsd = static_cast<HelpSearchData *>(userdata);
-
-       g_free(hsd->text_entry);
-       hsd->text_entry = g_strdup("");
-       gq_gtk_entry_set_text(GTK_ENTRY(hsd->edit_widget), hsd->text_entry);
+       gq_gtk_entry_set_text(edit_widget, "");
 }
 
 static void help_search_window_ok_cb(GenericDialog *, gpointer data)
 {
-       auto hsd = static_cast<HelpSearchData *>(data);
+       auto *edit_widget = GTK_ENTRY(data);
 
        g_autofree gchar *search_command = g_strconcat(options->help_search_engine,
-                                                      gq_gtk_entry_get_text(GTK_ENTRY(hsd->edit_widget)),
+                                                      gq_gtk_entry_get_text(edit_widget),
                                                       NULL);
        help_browser_run(search_command);
-
-       g_free(hsd);
-}
-
-static void help_search_window_cancel_cb(GenericDialog *, gpointer data)
-{
-       g_free(data);
 }
 
 void help_search_window_show()
 {
-       GenericDialog *gd;
        GtkWidget *table;
        GtkWidget *label1;
        GtkWidget *label2;
 
-       auto hsd = g_new0(HelpSearchData, 1);
-       hsd->gd = gd = generic_dialog_new(_("On-line help search"), "help_search",
-                               nullptr, TRUE,
-                               help_search_window_cancel_cb, hsd);
+       GtkWidget *edit_widget = gtk_entry_new();
+       gtk_entry_set_icon_from_icon_name(GTK_ENTRY(edit_widget),
+                                         GTK_ENTRY_ICON_SECONDARY, GQ_ICON_CLEAR);
+       gtk_entry_set_icon_tooltip_text(GTK_ENTRY(edit_widget),
+                                       GTK_ENTRY_ICON_SECONDARY, _("Clear"));
+       gtk_widget_set_size_request(edit_widget, 300, -1);
+       g_signal_connect(GTK_ENTRY(edit_widget), "icon-press",
+                        G_CALLBACK(help_search_window_show_icon_press), nullptr);
+
+       GenericDialog *gd = generic_dialog_new(_("On-line help search"), "help_search",
+                                              nullptr, TRUE,
+                                              nullptr, edit_widget);
        generic_dialog_add_message(gd, nullptr, _("Search the on-line help files.\n"), nullptr, FALSE);
 
        generic_dialog_add_button(gd, GQ_ICON_OK, "OK",
@@ -385,20 +375,11 @@ void help_search_window_show()
 
        table = pref_table_new(gd->vbox, 3, 1, FALSE, TRUE);
        pref_table_label(table, 0, 0, _("Search terms:"), GTK_ALIGN_END);
-       hsd->edit_widget = gtk_entry_new();
-       gtk_widget_set_size_request(hsd->edit_widget, 300, -1);
-       gq_gtk_grid_attach_default(GTK_GRID(table), hsd->edit_widget, 1, 2, 0, 1);
-       generic_dialog_attach_default(gd, hsd->edit_widget);
-       gtk_widget_show(hsd->edit_widget);
-
-       gtk_entry_set_icon_from_icon_name(GTK_ENTRY(hsd->edit_widget),
-                                               GTK_ENTRY_ICON_SECONDARY, GQ_ICON_CLEAR);
-       gtk_entry_set_icon_tooltip_text (GTK_ENTRY(hsd->edit_widget),
-                                               GTK_ENTRY_ICON_SECONDARY, _("Clear"));
-       g_signal_connect(GTK_ENTRY(hsd->edit_widget), "icon-press",
-                                               G_CALLBACK(help_search_window_show_icon_press), hsd);
-
-       gtk_widget_grab_focus(hsd->edit_widget);
+       gq_gtk_grid_attach_default(GTK_GRID(table), edit_widget, 1, 2, 0, 1);
+       generic_dialog_attach_default(gd, edit_widget);
+       gtk_widget_show(edit_widget);
+
+       gtk_widget_grab_focus(edit_widget);
 
        gtk_widget_show(gd->dialog);
 }