Skip to content

Commit ab6ba8a

Browse files
authored
Search: Add a close button (#550)
Previously the find toolbar could only be closed by pressing the Esc key which is currently not documented in Help -> Contents -> Shortcuts. We should have a graphical analogue anyway (See #501).
1 parent c7f244f commit ab6ba8a

1 file changed

Lines changed: 41 additions & 0 deletions

File tree

shell/eggfindbar.c

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ struct _EggFindBarPrivate
3535
GtkToolItem *status_separator;
3636
GtkToolItem *status_item;
3737
GtkToolItem *case_button;
38+
GtkToolItem *close_separator;
39+
GtkToolItem *close_button;
3840

3941
GtkWidget *find_entry;
4042
GtkWidget *status_label;
@@ -204,6 +206,12 @@ egg_find_bar_emit_previous (EggFindBar *find_bar)
204206
g_signal_emit (find_bar, find_bar_signals[PREVIOUS], 0);
205207
}
206208

209+
static void
210+
egg_find_bar_emit_close (EggFindBar *find_bar)
211+
{
212+
g_signal_emit (find_bar, find_bar_signals[CLOSE], 0);
213+
}
214+
207215
static void
208216
next_clicked_callback (GtkButton *button,
209217
void *data)
@@ -242,6 +250,15 @@ entry_activate_callback (GtkEntry *entry,
242250
egg_find_bar_emit_next (find_bar);
243251
}
244252

253+
static void
254+
close_clicked_callback (GtkButton *widget,
255+
void *data)
256+
{
257+
EggFindBar *find_bar = EGG_FIND_BAR (data);
258+
259+
egg_find_bar_emit_close (find_bar);
260+
}
261+
245262
static void
246263
entry_changed_callback (GtkEntry *entry,
247264
void *data)
@@ -281,6 +298,7 @@ egg_find_bar_init (EggFindBar *find_bar)
281298
GtkWidget *box;
282299
GtkToolItem *item;
283300
GtkWidget *arrow;
301+
GtkWidget *cross;
284302

285303
/* Data */
286304
priv = egg_find_bar_get_instance_private (find_bar);
@@ -348,6 +366,22 @@ egg_find_bar_init (EggFindBar *find_bar)
348366
gtk_widget_set_halign (priv->status_label, GTK_ALIGN_START);
349367
gtk_widget_set_valign (priv->status_label, GTK_ALIGN_CENTER);
350368

369+
/* Close Separator */
370+
priv->close_separator = gtk_separator_tool_item_new ();
371+
/* The effect of setting draw to FALSE and expand to TRUE will
372+
* push items added to the toolbar after this separator to the
373+
* end of the toolbar. */
374+
gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (priv->close_separator),
375+
FALSE);
376+
gtk_tool_item_set_expand (priv->close_separator, TRUE);
377+
378+
/* Close button */
379+
cross = gtk_image_new_from_icon_name ("window-close-symbolic",
380+
GTK_ICON_SIZE_BUTTON);
381+
priv->close_button = gtk_tool_button_new (cross, NULL);
382+
gtk_widget_set_tooltip_text (GTK_WIDGET (priv->close_button),
383+
_("Close find bar"));
384+
351385

352386
g_signal_connect (priv->find_entry, "changed",
353387
G_CALLBACK (entry_changed_callback),
@@ -364,6 +398,9 @@ egg_find_bar_init (EggFindBar *find_bar)
364398
g_signal_connect (priv->case_button, "toggled",
365399
G_CALLBACK (case_sensitive_toggled_callback),
366400
find_bar);
401+
g_signal_connect (priv->close_button, "clicked",
402+
G_CALLBACK (close_clicked_callback),
403+
find_bar);
367404

368405
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
369406
gtk_box_pack_start (GTK_BOX (box), priv->find_entry, TRUE, TRUE, 0);
@@ -375,13 +412,17 @@ egg_find_bar_init (EggFindBar *find_bar)
375412
gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->status_separator, -1);
376413
gtk_container_add (GTK_CONTAINER (priv->status_item), priv->status_label);
377414
gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->status_item, -1);
415+
gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->close_separator, -1);
416+
gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->close_button, -1);
378417

379418
/* don't show status separator/label until they are set */
380419

381420
gtk_widget_show_all (GTK_WIDGET (item));
382421
gtk_widget_show_all (GTK_WIDGET (priv->next_button));
383422
gtk_widget_show_all (GTK_WIDGET (priv->previous_button));
384423
gtk_widget_show_all (GTK_WIDGET (priv->case_button));
424+
gtk_widget_show_all (GTK_WIDGET (priv->close_separator));
425+
gtk_widget_show_all (GTK_WIDGET (priv->close_button));
385426
gtk_widget_show (priv->status_label);
386427
}
387428

0 commit comments

Comments
 (0)