libgimpwidgets: make GimpBrowser emit "stop-search" signal
This commit enables GimpBrowser to emit the "stop-search" signal, originally emitted only by the internal GtkSearchEntry. It also connects this signal to all widgets embedding a GimpBrowser, so they can intercept it and close themselves. This restores the behaviour that existed before the GtkSearchEntry update
This commit is contained in:
parent
24a69df9ab
commit
08abaa721a
4 changed files with 54 additions and 14 deletions
|
|
@ -96,6 +96,8 @@ static void browser_search (GimpBrowser *browser,
|
|||
const gchar *query_text,
|
||||
gint search_type,
|
||||
GimpProcBrowserDialog *dialog);
|
||||
static void browser_stop_search (GimpBrowser *browser,
|
||||
GimpProcBrowserDialog *dialog);
|
||||
|
||||
|
||||
G_DEFINE_TYPE (GimpProcBrowserDialog, gimp_proc_browser_dialog, GIMP_TYPE_DIALOG)
|
||||
|
|
@ -163,6 +165,9 @@ gimp_proc_browser_dialog_init (GimpProcBrowserDialog *dialog)
|
|||
g_signal_connect (dialog->browser, "search",
|
||||
G_CALLBACK (browser_search),
|
||||
dialog);
|
||||
g_signal_connect (dialog->browser, "stop-search",
|
||||
G_CALLBACK (browser_stop_search),
|
||||
dialog);
|
||||
|
||||
/* list : list in a scrolled_win */
|
||||
|
||||
|
|
@ -509,3 +514,10 @@ browser_search (GimpBrowser *browser,
|
|||
gimp_browser_show_message (browser, _("No matches"));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
browser_stop_search (GimpBrowser *browser,
|
||||
GimpProcBrowserDialog *dialog)
|
||||
{
|
||||
gtk_widget_destroy (GTK_WIDGET (dialog));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
enum
|
||||
{
|
||||
SEARCH,
|
||||
STOP_SEARCH,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
|
@ -79,6 +80,8 @@ static void gimp_browser_combo_changed (GtkComboBox *combo,
|
|||
GimpBrowser *browser);
|
||||
static void gimp_browser_entry_changed (GtkEntry *entry,
|
||||
GimpBrowser *browser);
|
||||
static void gimp_browser_stop_search (GtkSearchEntry *entry,
|
||||
GimpBrowser *browser);
|
||||
static gboolean gimp_browser_search_timeout (gpointer data);
|
||||
|
||||
|
||||
|
|
@ -105,6 +108,21 @@ gimp_browser_class_init (GimpBrowserClass *klass)
|
|||
G_TYPE_STRING,
|
||||
G_TYPE_INT);
|
||||
|
||||
/**
|
||||
* GimpBrowser::stop-search:
|
||||
* @browser: the object which received the signal
|
||||
*
|
||||
* This signal is emitted when the search operation was stopped by user input.
|
||||
*/
|
||||
browser_signals[STOP_SEARCH] =
|
||||
g_signal_new ("stop-search",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
0,
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
object_class->dispose = gimp_browser_dispose;
|
||||
}
|
||||
|
||||
|
|
@ -138,6 +156,9 @@ gimp_browser_init (GimpBrowser *browser)
|
|||
g_signal_connect (browser->search_entry, "changed",
|
||||
G_CALLBACK (gimp_browser_entry_changed),
|
||||
browser);
|
||||
g_signal_connect (browser->search_entry, "stop-search",
|
||||
G_CALLBACK (gimp_browser_stop_search),
|
||||
browser);
|
||||
|
||||
/* count label */
|
||||
|
||||
|
|
@ -409,6 +430,13 @@ gimp_browser_entry_changed (GtkEntry *entry,
|
|||
gimp_browser_queue_search (browser);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_browser_stop_search (GtkSearchEntry *entry,
|
||||
GimpBrowser *browser)
|
||||
{
|
||||
g_signal_emit (browser, browser_signals[STOP_SEARCH], 0);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_browser_search_timeout (gpointer data)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -113,9 +113,7 @@ static GimpValueArray * browser_run (GimpProcedure *procedur
|
|||
gpointer run_data);
|
||||
|
||||
static GtkWidget * browser_dialog_new (void);
|
||||
static void browser_dialog_response (GtkWidget *widget,
|
||||
gint response_id,
|
||||
PluginBrowser *browser);
|
||||
static void browser_dialog_quit (PluginBrowser *browser);
|
||||
static void browser_list_selection_changed (GtkTreeSelection *selection,
|
||||
PluginBrowser *browser);
|
||||
static void browser_tree_selection_changed (GtkTreeSelection *selection,
|
||||
|
|
@ -563,9 +561,9 @@ browser_dialog_new (void)
|
|||
gtk_window_set_default_size (GTK_WINDOW (browser->dialog),
|
||||
DBL_WIDTH, DBL_HEIGHT);
|
||||
|
||||
g_signal_connect (browser->dialog, "response",
|
||||
G_CALLBACK (browser_dialog_response),
|
||||
browser);
|
||||
g_signal_connect_swapped (browser->dialog, "response",
|
||||
G_CALLBACK (browser_dialog_quit),
|
||||
browser);
|
||||
|
||||
browser->browser = gimp_browser_new ();
|
||||
gtk_container_set_border_width (GTK_CONTAINER (browser->browser), 12);
|
||||
|
|
@ -576,6 +574,9 @@ browser_dialog_new (void)
|
|||
g_signal_connect (browser->browser, "search",
|
||||
G_CALLBACK (browser_search),
|
||||
browser);
|
||||
g_signal_connect_swapped (browser->browser, "stop-search",
|
||||
G_CALLBACK (browser_dialog_quit),
|
||||
browser);
|
||||
|
||||
/* left = notebook */
|
||||
|
||||
|
|
@ -728,9 +729,7 @@ browser_dialog_new (void)
|
|||
}
|
||||
|
||||
static void
|
||||
browser_dialog_response (GtkWidget *widget,
|
||||
gint response_id,
|
||||
PluginBrowser *browser)
|
||||
browser_dialog_quit (PluginBrowser *browser)
|
||||
{
|
||||
gtk_widget_destroy (browser->dialog);
|
||||
gtk_main_quit ();
|
||||
|
|
|
|||
|
|
@ -694,9 +694,7 @@ filter_browser_search (GimpBrowser *gimp_browser,
|
|||
}
|
||||
|
||||
static void
|
||||
browser_dialog_response (GtkWidget *widget,
|
||||
gint response_id,
|
||||
FilterBrowserPrivate *browser)
|
||||
browser_dialog_quit (FilterBrowserPrivate *browser)
|
||||
{
|
||||
gtk_widget_destroy (browser->dialog);
|
||||
g_list_free (browser->filters);
|
||||
|
|
@ -733,8 +731,8 @@ filter_browser_run (GimpProcedure *procedure,
|
|||
gtk_window_set_default_size (GTK_WINDOW (browser->dialog),
|
||||
FILTER_BROWSER_WIDTH, FILTER_BROWSER_HEIGHT);
|
||||
|
||||
g_signal_connect (browser->dialog, "response",
|
||||
G_CALLBACK (browser_dialog_response), browser);
|
||||
g_signal_connect_swapped (browser->dialog, "response",
|
||||
G_CALLBACK (browser_dialog_quit), browser);
|
||||
|
||||
browser->browser = gimp_browser_new ();
|
||||
gimp_browser_add_search_types (GIMP_BROWSER (browser->browser),
|
||||
|
|
@ -748,6 +746,9 @@ filter_browser_run (GimpProcedure *procedure,
|
|||
gtk_widget_show (browser->browser);
|
||||
|
||||
g_signal_connect (browser->browser, "search", G_CALLBACK (filter_browser_search), browser);
|
||||
g_signal_connect_swapped (browser->browser, "stop-search",
|
||||
G_CALLBACK (browser_dialog_quit),
|
||||
browser);
|
||||
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_IN);
|
||||
|
|
|
|||
Loading…
Reference in a new issue