X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=sidebyside;f=shell%2Feggfindbar.c;h=f26237217d1eb5c4e8413c2c1a75504af6ae1fc3;hb=4f8bc8db98020835d2c4d39c902a296b784cf030;hp=4ce466266df64810416b6f8b3d293ed9280c77a4;hpb=3e73e947a3a8c03da8f35f52e2a42ba066e2be2a;p=evince.git diff --git a/shell/eggfindbar.c b/shell/eggfindbar.c index 4ce46626..f2623721 100644 --- a/shell/eggfindbar.c +++ b/shell/eggfindbar.c @@ -1,59 +1,55 @@ /* Copyright (C) 2004 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with the Gnome Library; see the file COPYING.LIB. If not, + * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with the Gnome Library; see the file COPYING.LIB. If not, -write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. -*/ - -#include +#include "config.h" -#include "eggfindbar.h" +#include #include -#include -#include -#include -#include -#include -#include +#include #include -#include -#include +#include "eggfindbar.h" -typedef struct _EggFindBarPrivate EggFindBarPrivate; struct _EggFindBarPrivate { gchar *search_string; - GtkWidget *hbox; - GtkWidget *close_button; + + GtkToolItem *next_button; + GtkToolItem *previous_button; + GtkToolItem *status_separator; + GtkToolItem *status_item; + GtkToolItem *case_button; + GtkWidget *find_entry; - GtkWidget *next_button; - GtkWidget *previous_button; - GtkWidget *case_button; + GtkWidget *status_label; + + gulong set_focus_handler; guint case_sensitive : 1; }; #define EGG_FIND_BAR_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EGG_TYPE_FIND_BAR, EggFindBarPrivate)) - -enum - { +enum { PROP_0, PROP_SEARCH_STRING, PROP_CASE_SENSITIVE - }; +}; static void egg_find_bar_finalize (GObject *object); static void egg_find_bar_get_property (GObject *object, @@ -64,18 +60,18 @@ static void egg_find_bar_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void egg_find_bar_size_request (GtkWidget *widget, - GtkRequisition *requisition); -static void egg_find_bar_size_allocate (GtkWidget *widget, - GtkAllocation *allocation); +static void egg_find_bar_show (GtkWidget *widget); +static void egg_find_bar_hide (GtkWidget *widget); +static void egg_find_bar_grab_focus (GtkWidget *widget); -G_DEFINE_TYPE (EggFindBar, egg_find_bar, GTK_TYPE_BIN); +G_DEFINE_TYPE (EggFindBar, egg_find_bar, GTK_TYPE_TOOLBAR); enum { NEXT, PREVIOUS, CLOSE, + SCROLL, LAST_SIGNAL }; @@ -86,26 +82,28 @@ egg_find_bar_class_init (EggFindBarClass *klass) { GObjectClass *object_class; GtkWidgetClass *widget_class; - GtkBinClass *bin_class; GtkBindingSet *binding_set; + + egg_find_bar_parent_class = g_type_class_peek_parent (klass); object_class = (GObjectClass *)klass; widget_class = (GtkWidgetClass *)klass; - bin_class = (GtkBinClass *)klass; object_class->set_property = egg_find_bar_set_property; object_class->get_property = egg_find_bar_get_property; object_class->finalize = egg_find_bar_finalize; - widget_class->size_request = egg_find_bar_size_request; - widget_class->size_allocate = egg_find_bar_size_allocate; + widget_class->show = egg_find_bar_show; + widget_class->hide = egg_find_bar_hide; + + widget_class->grab_focus = egg_find_bar_grab_focus; find_bar_signals[NEXT] = g_signal_new ("next", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - 0, + G_STRUCT_OFFSET (EggFindBarClass, next), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -113,7 +111,7 @@ egg_find_bar_class_init (EggFindBarClass *klass) g_signal_new ("previous", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST, - 0, + G_STRUCT_OFFSET (EggFindBarClass, previous), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -121,10 +119,19 @@ egg_find_bar_class_init (EggFindBarClass *klass) g_signal_new ("close", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - 0, + G_STRUCT_OFFSET (EggFindBarClass, close), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + find_bar_signals[SCROLL] = + g_signal_new ("scroll", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (EggFindBarClass, scroll), + NULL, NULL, + g_cclosure_marshal_VOID__ENUM, + G_TYPE_NONE, 1, + GTK_TYPE_SCROLL_TYPE); /** * EggFindBar:search_string: @@ -136,8 +143,8 @@ egg_find_bar_class_init (EggFindBarClass *klass) g_object_class_install_property (object_class, PROP_SEARCH_STRING, g_param_spec_string ("search_string", - _("Search string"), - _("The name of the string to be found"), + "Search string", + "The name of the string to be found", NULL, G_PARAM_READWRITE)); @@ -150,32 +157,36 @@ egg_find_bar_class_init (EggFindBarClass *klass) g_object_class_install_property (object_class, PROP_CASE_SENSITIVE, g_param_spec_boolean ("case_sensitive", - _("Case sensitive"), - _("TRUE for a case sensitive search"), + "Case sensitive", + "TRUE for a case sensitive search", FALSE, G_PARAM_READWRITE)); - /* Style properties */ - gtk_widget_class_install_style_property (widget_class, - g_param_spec_boxed ("all_matches_color", - _("Highlight color"), - _("Color of highlight for all matches"), - GDK_TYPE_COLOR, - G_PARAM_READABLE)); - - gtk_widget_class_install_style_property (widget_class, - g_param_spec_boxed ("current_match_color", - _("Current color"), - _("Color of highlight for the current match"), - GDK_TYPE_COLOR, - G_PARAM_READABLE)); - g_type_class_add_private (object_class, sizeof (EggFindBarPrivate)); binding_set = gtk_binding_set_by_class (klass); - gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0, + gtk_binding_entry_add_signal (binding_set, GDK_KEY_Escape, 0, "close", 0); + + gtk_binding_entry_add_signal (binding_set, GDK_KEY_Up, 0, + "scroll", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_BACKWARD); + gtk_binding_entry_add_signal (binding_set, GDK_KEY_Down, 0, + "scroll", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_STEP_FORWARD); + gtk_binding_entry_add_signal (binding_set, GDK_KEY_Page_Up, 0, + "scroll", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_BACKWARD); + gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Page_Up, 0, + "scroll", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_BACKWARD); + gtk_binding_entry_add_signal (binding_set, GDK_KEY_Page_Down, 0, + "scroll", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_FORWARD); + gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Page_Down, 0, + "scroll", 1, + GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_FORWARD); } static void @@ -190,21 +201,6 @@ egg_find_bar_emit_previous (EggFindBar *find_bar) g_signal_emit (find_bar, find_bar_signals[PREVIOUS], 0); } -static void -egg_find_bar_emit_close (EggFindBar *find_bar) -{ - g_signal_emit (find_bar, find_bar_signals[CLOSE], 0); -} - -static void -close_clicked_callback (GtkButton *button, - void *data) -{ - EggFindBar *find_bar = EGG_FIND_BAR (data); - - egg_find_bar_emit_close (find_bar); -} - static void next_clicked_callback (GtkButton *button, void *data) @@ -239,7 +235,8 @@ entry_activate_callback (GtkEntry *entry, { EggFindBar *find_bar = EGG_FIND_BAR (data); - egg_find_bar_emit_next (find_bar); + if (find_bar->priv->search_string != NULL) + egg_find_bar_emit_next (find_bar); } static void @@ -255,108 +252,98 @@ entry_changed_callback (GtkEntry *entry, text = g_strdup (gtk_entry_get_text (entry)); egg_find_bar_set_search_string (find_bar, text); - + g_free (text); } +static void +set_focus_cb (GtkWidget *window, + GtkWidget *widget, + EggFindBar *bar) +{ + GtkWidget *wbar = GTK_WIDGET (bar); + + while (widget != NULL && widget != wbar) + { + widget = gtk_widget_get_parent (widget); + } + + /* if widget == bar, the new focus widget is in the bar, so we + * don't deactivate. + */ + if (widget != wbar) + { + g_signal_emit (bar, find_bar_signals[CLOSE], 0); + } +} + static void egg_find_bar_init (EggFindBar *find_bar) { EggFindBarPrivate *priv; GtkWidget *label; - GtkWidget *separator; - GtkWidget *image; - GtkWidget *image_back; - GtkWidget *image_forward; + GtkWidget *alignment; + GtkWidget *box; + GtkToolItem *item; + GtkWidget *arrow; /* Data */ priv = EGG_FIND_BAR_GET_PRIVATE (find_bar); - find_bar->private_data = priv; - + + find_bar->priv = priv; priv->search_string = NULL; - /* Widgets */ - gtk_widget_push_composite_child (); - priv->hbox = gtk_hbox_new (FALSE, 6); - gtk_container_set_border_width (GTK_CONTAINER (priv->hbox), 3); + gtk_toolbar_set_style (GTK_TOOLBAR (find_bar), GTK_TOOLBAR_BOTH_HORIZ); - label = gtk_label_new_with_mnemonic (_("F_ind:")); - separator = gtk_vseparator_new (); + /* Find: |_____| */ + item = gtk_tool_item_new (); + box = gtk_hbox_new (FALSE, 12); + + alignment = gtk_alignment_new (0.0, 0.5, 1.0, 0.0); + gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 2, 2); - priv->close_button = gtk_button_new (); - gtk_button_set_relief (GTK_BUTTON (priv->close_button), - GTK_RELIEF_NONE); - image = gtk_image_new_from_stock (GTK_STOCK_CLOSE, - GTK_ICON_SIZE_SMALL_TOOLBAR); - gtk_container_add (GTK_CONTAINER (priv->close_button), image); + label = gtk_label_new_with_mnemonic (_("Find:")); priv->find_entry = gtk_entry_new (); + gtk_entry_set_width_chars (GTK_ENTRY (priv->find_entry), 32); + gtk_entry_set_max_length (GTK_ENTRY (priv->find_entry), 512); gtk_label_set_mnemonic_widget (GTK_LABEL (label), priv->find_entry); - - priv->previous_button = gtk_button_new_with_mnemonic (_("_Previous")); - priv->next_button = gtk_button_new_with_mnemonic (_("_Next")); - - image_back = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, - GTK_ICON_SIZE_BUTTON); - image_forward = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, - GTK_ICON_SIZE_BUTTON); - - gtk_button_set_image (GTK_BUTTON (priv->previous_button), - image_back); - gtk_button_set_image (GTK_BUTTON (priv->next_button), - image_forward); - - priv->case_button = gtk_check_button_new_with_mnemonic (_("C_ase Sensitive")); - -#if 0 - { - GtkWidget *button_label; - /* This hack doesn't work because GtkCheckButton doesn't pass the - * larger size allocation to the label, it always gives the label - * its exact request. If you un-ifdef this, set the box back - * on case_button to TRUE, TRUE below - */ - button_label = gtk_bin_get_child (GTK_BIN (priv->case_button)); - gtk_label_set_ellipsize (GTK_LABEL (button_label), - PANGO_ELLIPSIZE_END); - } -#endif - - gtk_box_pack_start (GTK_BOX (priv->hbox), - priv->close_button, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (priv->hbox), - label, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (priv->hbox), - priv->find_entry, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (priv->hbox), - priv->previous_button, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (priv->hbox), - priv->next_button, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (priv->hbox), - separator, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (priv->hbox), - priv->case_button, FALSE, FALSE, 0); - - gtk_container_add (GTK_CONTAINER (find_bar), priv->hbox); - - gtk_widget_show (priv->hbox); - gtk_widget_show (priv->close_button); - gtk_widget_show (priv->find_entry); - gtk_widget_show (priv->previous_button); - gtk_widget_show (priv->next_button); - gtk_widget_show (separator); - gtk_widget_show (label); - gtk_widget_show (image); - gtk_widget_show (image_back); - gtk_widget_show (image_forward); - - gtk_widget_pop_composite_child (); - - gtk_widget_show_all (priv->hbox); - - g_signal_connect (priv->close_button, "clicked", - G_CALLBACK (close_clicked_callback), - find_bar); + + /* Prev */ + arrow = gtk_arrow_new (GTK_ARROW_LEFT, GTK_SHADOW_NONE); + priv->previous_button = gtk_tool_button_new (arrow, Q_("Find Pre_vious")); + gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON (priv->previous_button), TRUE); + gtk_tool_item_set_is_important (priv->previous_button, TRUE); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->previous_button), + _("Find previous occurrence of the search string")); + + /* Next */ + arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_NONE); + priv->next_button = gtk_tool_button_new (arrow, Q_("Find Ne_xt")); + gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON (priv->next_button), TRUE); + gtk_tool_item_set_is_important (priv->next_button, TRUE); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->next_button), + _("Find next occurrence of the search string")); + + /* Separator*/ + priv->status_separator = gtk_separator_tool_item_new(); + + /* Case button */ + priv->case_button = gtk_toggle_tool_button_new (); + g_object_set (G_OBJECT (priv->case_button), "label", _("C_ase Sensitive"), NULL); + gtk_tool_item_set_is_important (priv->case_button, TRUE); + gtk_widget_set_tooltip_text (GTK_WIDGET (priv->case_button), + _("Toggle case sensitive search")); + + /* Status */ + priv->status_item = gtk_tool_item_new(); + gtk_tool_item_set_expand (priv->status_item, TRUE); + priv->status_label = gtk_label_new (NULL); + gtk_label_set_ellipsize (GTK_LABEL (priv->status_label), + PANGO_ELLIPSIZE_END); + gtk_misc_set_alignment (GTK_MISC (priv->status_label), 0.0, 0.5); + + g_signal_connect (priv->find_entry, "changed", G_CALLBACK (entry_changed_callback), find_bar); @@ -372,13 +359,32 @@ egg_find_bar_init (EggFindBar *find_bar) g_signal_connect (priv->case_button, "toggled", G_CALLBACK (case_sensitive_toggled_callback), find_bar); + + gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (box), priv->find_entry, TRUE, TRUE, 0); + gtk_container_add (GTK_CONTAINER (alignment), box); + gtk_container_add (GTK_CONTAINER (item), alignment); + gtk_toolbar_insert (GTK_TOOLBAR (find_bar), item, -1); + gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->previous_button, -1); + gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->next_button, -1); + gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->case_button, -1); + gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->status_separator, -1); + gtk_container_add (GTK_CONTAINER (priv->status_item), priv->status_label); + gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->status_item, -1); + + /* don't show status separator/label until they are set */ + + gtk_widget_show_all (GTK_WIDGET (item)); + gtk_widget_show_all (GTK_WIDGET (priv->next_button)); + gtk_widget_show_all (GTK_WIDGET (priv->previous_button)); + gtk_widget_show (priv->status_label); } static void egg_find_bar_finalize (GObject *object) { EggFindBar *find_bar = EGG_FIND_BAR (object); - EggFindBarPrivate *priv = (EggFindBarPrivate *)find_bar->private_data; + EggFindBarPrivate *priv = (EggFindBarPrivate *)find_bar->priv; g_free (priv->search_string); @@ -414,7 +420,7 @@ egg_find_bar_get_property (GObject *object, GParamSpec *pspec) { EggFindBar *find_bar = EGG_FIND_BAR (object); - EggFindBarPrivate *priv = (EggFindBarPrivate *)find_bar->private_data; + EggFindBarPrivate *priv = (EggFindBarPrivate *)find_bar->priv; switch (prop_id) { @@ -431,34 +437,52 @@ egg_find_bar_get_property (GObject *object, } static void -egg_find_bar_size_request (GtkWidget *widget, - GtkRequisition *requisition) +egg_find_bar_show (GtkWidget *widget) { - GtkBin *bin = GTK_BIN (widget); - GtkRequisition child_requisition; - if (bin->child && GTK_WIDGET_VISIBLE (bin->child)) + EggFindBar *bar = EGG_FIND_BAR (widget); + EggFindBarPrivate *priv = bar->priv; + + GTK_WIDGET_CLASS (egg_find_bar_parent_class)->show (widget); + + if (priv->set_focus_handler == 0) { - gtk_widget_size_request (bin->child, &child_requisition); + GtkWidget *toplevel; - *requisition = child_requisition; + toplevel = gtk_widget_get_toplevel (widget); + + priv->set_focus_handler = + g_signal_connect (toplevel, "set-focus", + G_CALLBACK (set_focus_cb), bar); } - else +} + +static void +egg_find_bar_hide (GtkWidget *widget) +{ + EggFindBar *bar = EGG_FIND_BAR (widget); + EggFindBarPrivate *priv = bar->priv; + + if (priv->set_focus_handler != 0) { - requisition->width = 0; - requisition->height = 0; + GtkWidget *toplevel; + + toplevel = gtk_widget_get_toplevel (widget); + + g_signal_handlers_disconnect_by_func + (toplevel, (void (*)) G_CALLBACK (set_focus_cb), bar); + priv->set_focus_handler = 0; } + + GTK_WIDGET_CLASS (egg_find_bar_parent_class)->hide (widget); } static void -egg_find_bar_size_allocate (GtkWidget *widget, - GtkAllocation *allocation) +egg_find_bar_grab_focus (GtkWidget *widget) { - GtkBin *bin = GTK_BIN (widget); - - widget->allocation = *allocation; + EggFindBar *find_bar = EGG_FIND_BAR (widget); + EggFindBarPrivate *priv = find_bar->priv; - if (bin->child && GTK_WIDGET_VISIBLE (bin->child)) - gtk_widget_size_allocate (bin->child, allocation); + gtk_widget_grab_focus (priv->find_entry); } /** @@ -496,7 +520,7 @@ egg_find_bar_set_search_string (EggFindBar *find_bar, g_return_if_fail (EGG_IS_FIND_BAR (find_bar)); - priv = (EggFindBarPrivate *)find_bar->private_data; + priv = (EggFindBarPrivate *)find_bar->priv; g_object_freeze_notify (G_OBJECT (find_bar)); @@ -519,6 +543,8 @@ egg_find_bar_set_search_string (EggFindBar *find_bar, (old && search_string && strcmp (old, search_string) != 0)) { + gboolean not_empty; + priv->search_string = g_strdup (search_string); g_free (old); @@ -526,7 +552,12 @@ egg_find_bar_set_search_string (EggFindBar *find_bar, priv->search_string ? priv->search_string : ""); - + + not_empty = (search_string == NULL) ? FALSE : TRUE; + + gtk_widget_set_sensitive (GTK_WIDGET (find_bar->priv->next_button), not_empty); + gtk_widget_set_sensitive (GTK_WIDGET (find_bar->priv->previous_button), not_empty); + g_object_notify (G_OBJECT (find_bar), "search_string"); } @@ -552,9 +583,9 @@ egg_find_bar_get_search_string (EggFindBar *find_bar) g_return_val_if_fail (EGG_IS_FIND_BAR (find_bar), NULL); - priv = (EggFindBarPrivate *)find_bar->private_data; + priv = find_bar->priv; - return priv->search_string; + return priv->search_string ? priv->search_string : ""; } /** @@ -572,7 +603,7 @@ egg_find_bar_set_case_sensitive (EggFindBar *find_bar, g_return_if_fail (EGG_IS_FIND_BAR (find_bar)); - priv = (EggFindBarPrivate *)find_bar->private_data; + priv = (EggFindBarPrivate *)find_bar->priv; g_object_freeze_notify (G_OBJECT (find_bar)); @@ -608,82 +639,32 @@ egg_find_bar_get_case_sensitive (EggFindBar *find_bar) g_return_val_if_fail (EGG_IS_FIND_BAR (find_bar), FALSE); - priv = (EggFindBarPrivate *)find_bar->private_data; + priv = (EggFindBarPrivate *)find_bar->priv; return priv->case_sensitive; } -static void -get_style_color (EggFindBar *find_bar, - const char *style_prop_name, - GdkColor *color) -{ - GdkColor *style_color; - - gtk_widget_ensure_style (GTK_WIDGET (find_bar)); - gtk_widget_style_get (GTK_WIDGET (find_bar), - "color", &style_color, NULL); - if (style_color) - { - *color = *style_color; - gdk_color_free (style_color); - } -} - /** - * egg_find_bar_get_all_matches_color: + * egg_find_bar_set_status_text: * - * Gets the color to use to highlight all the - * known matches. + * Sets some text to display if there's space; typical text would + * be something like "5 results on this page" or "No results" * - * Since: 2.6 - */ -void -egg_find_bar_get_all_matches_color (EggFindBar *find_bar, - GdkColor *color) -{ - GdkColor found_color = { 0, 0, 0, 0x0f0f }; - - get_style_color (find_bar, "all_matches_color", &found_color); - - *color = found_color; -} - -/** - * egg_find_bar_get_current_match_color: - * - * Gets the color to use to highlight the match - * we're currently on. + * @text: the text to display * * Since: 2.6 */ void -egg_find_bar_get_current_match_color (EggFindBar *find_bar, - GdkColor *color) -{ - GdkColor found_color = { 0, 0, 0, 0xffff }; - - get_style_color (find_bar, "current_match_color", &found_color); - - *color = found_color; -} - -/** - * egg_find_bar_grab_focus: - * - * Focuses the text entry in the find bar; currently GTK+ doesn't have - * a way to make this work on gtk_widget_grab_focus(find_bar). - * - * Since: 2.6 - */ -void -egg_find_bar_grab_focus (EggFindBar *find_bar) +egg_find_bar_set_status_text (EggFindBar *find_bar, + const char *text) { EggFindBarPrivate *priv; g_return_if_fail (EGG_IS_FIND_BAR (find_bar)); - priv = (EggFindBarPrivate *)find_bar->private_data; - - gtk_widget_grab_focus (priv->find_entry); + priv = (EggFindBarPrivate *)find_bar->priv; + + gtk_label_set_text (GTK_LABEL (priv->status_label), text); + g_object_set (priv->status_separator, "visible", text != NULL && *text != '\0', NULL); + g_object_set (priv->status_item, "visible", text != NULL && *text !='\0', NULL); }