Find Toolbar

BAM <[email protected]> Wed, 10 Nov 2004 17:07:56 -0500
Newsgroups gmane.comp.web.galeon.devel
Message-ID <1100124476.5963.6.camel@localhost>
--Boundary_(ID_huNjSPxRhJ8GYaCizxWyVg)
Content-type: text/plain
Content-transfer-encoding: 7bit

This basically just the find dialog in a toolbar, like in Firefox. The
main advantage is that the toolbar doesn't cover up the page.

Notes/Caveats:
1. I've never used Firefox's find toolbar. 
2. Doesn't use glade or any of the galeon dialog-type classes.
3. I added a new gconf key to choose between the dialog and toolbar
   (/apps/galeon/Browsing/Find/use_dialog).


--Boundary_(ID_huNjSPxRhJ8GYaCizxWyVg)
Content-type: text/x-patch; name=galeon-ben-find_toolbar.patch;
 charset=ISO-8859-15
Content-transfer-encoding: 7bit
Content-disposition: attachment; filename=galeon-ben-find_toolbar.patch

diff -urwN galeon/src/Makefile.am galeon.ben/src/Makefile.am
--- galeon/src/Makefile.am	2004-11-10 17:00:13.252295272 -0500
+++ galeon.ben/src/Makefile.am	2004-11-10 17:02:56.910415456 -0500
@@ -48,6 +48,8 @@
 	galeon-shell.h					\
 	galeon-tab.c					\
 	galeon-tab.h					\
+	find-toolbar.c					\
+	find-toolbar.h					\
 	galeon-window.c					\
 	galeon-window.h					\
 	galeon-window-bookmark-activated-proxy.c	\
diff -urwN galeon/src/find-toolbar.c galeon.ben/src/find-toolbar.c
--- galeon/src/find-toolbar.c	1969-12-31 19:00:00.000000000 -0500
+++ galeon.ben/src/find-toolbar.c	2004-11-10 17:02:56.910415456 -0500
@@ -0,0 +1,476 @@
+/*
+ *  Copyright (C) 2004
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtkbutton.h>
+#include <gtk/gtkcombo.h>
+#include <gtk/gtkentry.h>
+#include <gtk/gtktogglebutton.h>
+#include <gtk/gtktoolbar.h>
+#include <gtk/gtkwidget.h>
+#include <libgnomeui/gnome-entry.h>
+#include <libgnomeui/libgnomeui.h>
+
+#include "eel-gconf-extensions.h"
+#include "galeon-embed.h"
+#include "galeon-window.h"
+
+#include "find-toolbar.h"
+
+#define GCONF_FIND_MATCH_CASE "/apps/galeon/Browsing/Find/match_case"
+#define GCONF_FIND_AUTOWRAP "/apps/galeon/Browsing/Find/autowrap"
+#define GCONF_FIND_WORD "/apps/galeon/Browsing/Find/word"
+
+struct FindToolbarPrivate
+{
+	gboolean b_match_case;
+	gboolean b_wrap;
+	gchar *search_string;
+
+	GaleonWindow *window;
+	GtkWidget *toolbar;
+	gboolean active;
+
+	GtkEntry *find_entry;
+	GtkWidget *button_prev;
+	GtkWidget *button_next;
+
+	gboolean dispose_has_run;
+};
+
+#define FIND_TOOLBAR_GET_PRIVATE(object)				\
+	(G_TYPE_INSTANCE_GET_PRIVATE ((object),				\
+				      TYPE_FIND_TOOLBAR, FindToolbarPrivate))
+
+static void find_toolbar_go_next_cb (GtkWidget *widget, FindToolbarPrivate *p);
+static void find_toolbar_go_prev_cb (GtkWidget *widget, FindToolbarPrivate *p);
+static void find_toolbar_string_changed_cb (GnomeEntry *find_gnome_entry,
+					    FindToolbarPrivate *p);
+static void find_toolbar_case_cb (GtkToggleButton *match_case,
+				  FindToolbarPrivate *p);
+static void find_toolbar_wrap_cb (GtkToggleButton *wrap,
+				  FindToolbarPrivate *p);
+static void find_toolbar_hide_cb (GtkButton *button_hide, FindToolbar *self);
+
+static void update_navigation_controls (GtkWidget *button_prev,
+					GtkWidget *button_next,
+					gboolean b_prev, gboolean b_next);
+
+static void find_toolbar_dispose (GObject *instance);
+static void find_toolbar_finalize (GObject *instance);
+
+static void find_toolbar_get_property (GObject *object,
+				       guint property_id,
+				       GValue *value,
+				       GParamSpec *pspec);
+static void find_toolbar_set_property (GObject *object,
+				       guint property_id,
+				       const GValue *value,
+				       GParamSpec *pspec);
+
+static void
+find_toolbar_set_property (GObject *object,
+			   guint property_id,
+			   const GValue *value,
+			   GParamSpec *pspec)
+{
+	FindToolbar *self = FIND_TOOLBAR (object);
+
+	switch (property_id)
+	{
+	case FIND_TOOLBAR_PROP_WINDOW:
+		self->priv->window = g_value_get_pointer (value);
+		break;
+	default:
+		g_assert (FALSE);
+		break;
+	}
+}
+
+static void
+find_toolbar_get_property (GObject *object,
+			   guint property_id,
+			   GValue *value,
+			   GParamSpec *pspec)
+{
+	FindToolbar *self = FIND_TOOLBAR (object);
+
+	switch (property_id)
+	{
+	case FIND_TOOLBAR_PROP_WINDOW:
+		g_value_set_pointer (value, self->priv->window);
+		break;
+	default:
+		g_assert (FALSE);
+		break;
+	}
+}
+
+static void
+find_toolbar_init (FindToolbar *self,
+		   gpointer data)
+{
+	self->area = gtk_vbox_new (FALSE, 0);
+
+	self->priv = g_new0 (FindToolbarPrivate, 1);
+	self->priv->active = FALSE;
+	self->priv->toolbar = gtk_toolbar_new ();
+
+	self->priv->dispose_has_run = FALSE;
+}
+
+static GObject *
+find_toolbar_constructor (GType type,
+			  guint n_props,
+			  GObjectConstructParam *props)
+{
+	GObject *obj;
+	FindToolbar *self;
+	FindToolbarPrivate *p;
+	GtkToolbar *tb;
+
+	{
+		FindToolbarClass *klass = FIND_TOOLBAR_CLASS
+			(g_type_class_peek (TYPE_FIND_TOOLBAR));
+		GObjectClass *parent_class =
+			G_OBJECT_CLASS (g_type_class_peek_parent (klass));
+		obj = parent_class->constructor (type, n_props, props);
+	}
+
+	self = FIND_TOOLBAR(obj);
+	p = self->priv;
+	tb = GTK_TOOLBAR (self->priv->toolbar);
+
+	p->b_match_case = eel_gconf_get_boolean (GCONF_FIND_MATCH_CASE);
+	p->b_wrap = eel_gconf_get_boolean (GCONF_FIND_AUTOWRAP);
+	p->search_string = eel_gconf_get_string (GCONF_FIND_WORD);
+
+	{
+	    GtkWidget *l = gtk_label_new_with_mnemonic ("Fin_d: ");
+	    GnomeEntry *find_gnome_entry =
+		GNOME_ENTRY (gnome_entry_new ("FindEntrySELF"));
+
+	    gtk_misc_set_padding (GTK_MISC (l), 5, 0);
+	    gtk_toolbar_append_element (tb, GTK_TOOLBAR_CHILD_WIDGET,
+					l,
+					NULL, NULL, NULL, NULL, NULL, NULL);
+
+	    p->find_entry = GTK_ENTRY (gnome_entry_gtk_entry(find_gnome_entry));
+	    gnome_entry_set_max_saved (find_gnome_entry, 10);
+	    gtk_entry_set_text (p->find_entry, p->search_string);
+	    gtk_label_set_mnemonic_widget (GTK_LABEL (l),
+					   GTK_WIDGET (find_gnome_entry));
+	    gtk_toolbar_append_element (tb, GTK_TOOLBAR_CHILD_WIDGET,
+					GTK_WIDGET (find_gnome_entry),
+					NULL, NULL, NULL, NULL, NULL, NULL);
+	    g_signal_connect (G_OBJECT(find_gnome_entry), "changed",
+			      G_CALLBACK (find_toolbar_string_changed_cb), p);
+	    g_signal_connect (G_OBJECT(p->find_entry), "activate",
+			      G_CALLBACK (find_toolbar_go_next_cb), p);
+	}
+
+	{
+	    GtkWidget *button_prev_box;
+	    p->button_prev = gtk_button_new ();
+	    gtk_button_set_relief (GTK_BUTTON (p->button_prev),
+				   GTK_RELIEF_NONE);
+	    button_prev_box = gtk_hbox_new (FALSE, 0);
+	    gtk_container_add (GTK_CONTAINER (p->button_prev), button_prev_box);
+	    gtk_box_pack_start (GTK_BOX (button_prev_box),
+				GTK_WIDGET (gtk_image_new_from_stock
+					    ("gtk-go-back",
+					     GTK_ICON_SIZE_SMALL_TOOLBAR)),
+				FALSE, FALSE, 0);
+	    gtk_box_pack_start (GTK_BOX (button_prev_box),
+				gtk_label_new("Previous"), FALSE, FALSE, 0);
+	    gtk_toolbar_append_element (tb, GTK_TOOLBAR_CHILD_WIDGET,
+					p->button_prev,
+					NULL, NULL, NULL, NULL, NULL, NULL);
+	    g_signal_connect (G_OBJECT(p->button_prev), "clicked",
+			      G_CALLBACK (find_toolbar_go_prev_cb), p);
+	}
+
+	{
+	    GtkWidget *button_next_box;
+	    p->button_next = gtk_button_new ();
+	    gtk_button_set_relief (GTK_BUTTON (p->button_next),
+				   GTK_RELIEF_NONE);
+	    button_next_box = gtk_hbox_new (FALSE, 0);
+	    gtk_container_add (GTK_CONTAINER (p->button_next), button_next_box);
+	    gtk_box_pack_start (GTK_BOX (button_next_box),
+				GTK_WIDGET (gtk_image_new_from_stock
+					    ("gtk-go-forward",
+					     GTK_ICON_SIZE_SMALL_TOOLBAR)),
+				FALSE, FALSE, 0);
+	    gtk_box_pack_start (GTK_BOX (button_next_box),
+				gtk_label_new("Next"), FALSE, FALSE, 0);
+	    gtk_toolbar_append_element (tb, GTK_TOOLBAR_CHILD_WIDGET,
+					p->button_next,
+					NULL, NULL, NULL, NULL, NULL, NULL);
+	    g_signal_connect (G_OBJECT(p->button_next), "clicked",
+			      G_CALLBACK (find_toolbar_go_next_cb), p);
+	}
+
+	gtk_toolbar_append_space (tb);
+
+	{
+	    GtkWidget *match_case =
+		gtk_toggle_button_new_with_label ("Case Sensitive");
+	    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (match_case),
+					  p->b_match_case);
+	    gtk_toolbar_append_element (tb, GTK_TOOLBAR_CHILD_WIDGET,
+					match_case,
+					NULL, NULL, NULL, NULL, NULL, NULL);
+	    g_signal_connect (G_OBJECT(match_case), "toggled",
+			      G_CALLBACK (find_toolbar_case_cb), p);
+	}
+
+	{
+	    GtkWidget *wrap = gtk_toggle_button_new_with_label ("Wrap Around");
+	    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wrap), p->b_wrap);
+	    gtk_toolbar_append_element (tb, GTK_TOOLBAR_CHILD_WIDGET,
+					wrap,
+					NULL, NULL, NULL, NULL, NULL, NULL);
+	    g_signal_connect (G_OBJECT(wrap), "toggled",
+			      G_CALLBACK (find_toolbar_wrap_cb), p);
+	}
+
+	gtk_toolbar_append_space (tb);
+
+	{
+	    GtkWidget *button_hide =
+		gtk_button_new_from_stock (GTK_STOCK_CLOSE);
+	    gtk_toolbar_append_element (tb, GTK_TOOLBAR_CHILD_WIDGET,
+					button_hide,
+					NULL, NULL, NULL, NULL, NULL, NULL);
+	    g_signal_connect (G_OBJECT(button_hide), "clicked",
+			      G_CALLBACK (find_toolbar_hide_cb), self);
+	}
+
+	gtk_widget_show_all (GTK_WIDGET (tb));
+	g_object_ref(self->priv->toolbar);
+	return obj;
+}
+
+static void
+find_toolbar_dispose (GObject *instance)
+{
+	FindToolbar *self = FIND_TOOLBAR(instance);
+	FindToolbarPrivate *p;
+
+	if (self->priv->dispose_has_run)
+	{
+		return;
+	}
+	self->priv->dispose_has_run = TRUE;
+	p = self->priv;
+
+	eel_gconf_set_boolean(GCONF_FIND_MATCH_CASE, p->b_match_case);
+	eel_gconf_set_boolean(GCONF_FIND_AUTOWRAP, p->b_wrap);
+	eel_gconf_set_string(GCONF_FIND_WORD, p->search_string);
+
+	g_object_unref(p->toolbar);
+	if (p->active)
+	{
+		gtk_container_remove(GTK_CONTAINER (self->area), p->toolbar);
+	}
+}
+
+static void
+find_toolbar_finalize (GObject *instance)
+{
+	FindToolbar *self = FIND_TOOLBAR(instance);
+	g_free(self->priv);
+}
+
+static void
+find_toolbar_class_init (FindToolbarClass *klass)
+{
+	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+	GParamSpec *pspec;
+
+	gobject_class->set_property = find_toolbar_set_property;
+	gobject_class->get_property = find_toolbar_get_property;
+	gobject_class->constructor = find_toolbar_constructor;
+	gobject_class->dispose = find_toolbar_dispose;
+	gobject_class->finalize = find_toolbar_finalize;
+
+	pspec = g_param_spec_pointer ("window",
+				      "GaleonWindow",
+				      "GaleonWindow to contain the toolbar.",
+				      G_PARAM_CONSTRUCT_ONLY
+				      | G_PARAM_READWRITE);
+	g_object_class_install_property (gobject_class,
+					 FIND_TOOLBAR_PROP_WINDOW, pspec);
+
+	g_type_class_add_private (klass, sizeof (FindToolbarPrivate));
+}
+
+FindToolbar *
+find_toolbar_new (GaleonWindow *window)
+{
+	return FIND_TOOLBAR (g_object_new (TYPE_FIND_TOOLBAR,
+					   "window", window,
+					   NULL));
+}
+
+static void
+find_toolbar_go_next_cb (GtkWidget *widget, FindToolbarPrivate *p)
+{
+	GaleonEmbed *embed = galeon_window_get_active_embed (p->window);
+	gresult result;
+
+	g_return_if_fail (embed != NULL);
+        result = galeon_embed_find_next (embed, FALSE);
+
+	if (result == G_OK)
+	{
+		update_navigation_controls(p->button_prev, p->button_next,
+					   TRUE, TRUE);
+	}
+	else
+	{
+		update_navigation_controls(p->button_prev, p->button_next,
+					   TRUE, FALSE);
+	}
+}
+
+static void
+find_toolbar_go_prev_cb (GtkWidget *widget, FindToolbarPrivate *p)
+{
+	GaleonEmbed *embed = galeon_window_get_active_embed (p->window);
+	gresult result;
+
+	g_return_if_fail (embed != NULL);
+        result = galeon_embed_find_next (embed, TRUE);
+
+	if (result == G_OK)
+	{
+		update_navigation_controls(p->button_prev, p->button_next,
+					   TRUE, TRUE);
+	}
+	else
+	{
+		update_navigation_controls(p->button_prev, p->button_next,
+					   FALSE, TRUE);
+	}
+}
+
+
+static void
+find_toolbar_string_changed_cb (GnomeEntry *find_gnome_entry,
+				FindToolbarPrivate *p)
+{
+	GaleonEmbed *embed = galeon_window_get_active_embed (p->window);
+	p->search_string = (gchar *)gtk_entry_get_text (p->find_entry);
+
+	galeon_embed_find_set_properties (embed,
+					  p->search_string,
+					  p->b_match_case,
+					  p->b_wrap);
+	update_navigation_controls(p->button_prev, p->button_next, TRUE, TRUE);
+}
+
+static void
+find_toolbar_case_cb (GtkToggleButton *match_case, FindToolbarPrivate *p)
+{
+	GaleonEmbed *embed = galeon_window_get_active_embed (p->window);
+
+	p->b_match_case = !(p->b_match_case);
+
+	galeon_embed_find_set_properties (embed,
+					  p->search_string,
+					  p->b_match_case,
+					  p->b_wrap);
+}
+
+static void
+find_toolbar_wrap_cb (GtkToggleButton *wrap, FindToolbarPrivate *p)
+{
+	GaleonEmbed *embed = galeon_window_get_active_embed (p->window);
+
+	p->b_wrap = !(p->b_wrap);
+
+	galeon_embed_find_set_properties (embed,
+					  p->search_string,
+					  p->b_match_case,
+					  p->b_wrap);
+}
+
+GType
+find_toolbar_get_type (void)
+{
+        static GType find_toolbar_type = 0;
+
+        if (find_toolbar_type == 0)
+        {
+                static const GTypeInfo info =
+			{
+				sizeof (FindToolbarClass),
+				NULL, /* base_init */
+				NULL, /* base_finalize */
+				(GClassInitFunc) find_toolbar_class_init,
+				NULL,
+				NULL, /* class_data */
+				sizeof (FindToolbar),
+				0, /* n_preallocs */
+				(GInstanceInitFunc) find_toolbar_init
+			};
+
+                find_toolbar_type = g_type_register_static (G_TYPE_OBJECT,
+							    "FindToolbar",
+							    &info, 0);
+        }
+
+        return find_toolbar_type;
+}
+
+static void
+update_navigation_controls (GtkWidget *button_prev,
+			    GtkWidget *button_next,
+			    gboolean b_prev, gboolean b_next)
+{
+	gtk_widget_set_sensitive (button_prev, b_prev);
+	gtk_widget_set_sensitive (button_next, b_next);
+}
+
+void
+find_toolbar_toggle_active (FindToolbar *self)
+{
+	if (self->priv->active)
+	{
+		gtk_container_remove(GTK_CONTAINER (self->area),
+				     self->priv->toolbar);
+	}
+	else
+	{
+		gtk_container_add(GTK_CONTAINER (self->area),
+				  self->priv->toolbar);
+
+		gtk_widget_grab_focus(GTK_WIDGET (self->priv->find_entry));
+	}
+
+
+	self->priv->active = !self->priv->active;
+	gtk_widget_show_all (self->area);
+}
+
+static void
+find_toolbar_hide_cb (GtkButton *button_hide, FindToolbar *self)
+{
+	find_toolbar_toggle_active (self);
+}
diff -urwN galeon/src/find-toolbar.h galeon.ben/src/find-toolbar.h
--- galeon/src/find-toolbar.h	1969-12-31 19:00:00.000000000 -0500
+++ galeon.ben/src/find-toolbar.h	2004-11-10 17:02:56.910415456 -0500
@@ -0,0 +1,65 @@
+/*
+ *  Copyright (C) 2004
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2, or (at your option)
+ *  any later version.
+ *
+ *  This program 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 General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef FIND_TOOLBAR_H
+#define FIND_TOOLBAR_H
+
+#include <glib-object.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef struct FindToolbar FindToolbar;
+typedef struct FindToolbarClass FindToolbarClass;
+
+#define TYPE_FIND_TOOLBAR             (find_toolbar_get_type ())
+#define FIND_TOOLBAR(obj)             (GTK_CHECK_CAST ((obj), TYPE_FIND_TOOLBAR, FindToolbar))
+#define FIND_TOOLBAR_CLASS(klass)     (GTK_CHECK_CLASS_CAST ((klass), TYPE_FIND_TOOLBAR, FindToolbarClass))
+#define IS_FIND_TOOLBAR(obj)          (GTK_CHECK_TYPE ((obj), TYPE_FIND_TOOLBAR))
+#define IS_FIND_TOOLBAR_CLASS(klass)  (GTK_CHECK_CLASS_TYPE ((klass), FIND_TOOLBAR))
+
+typedef struct FindToolbarPrivate FindToolbarPrivate;
+
+struct FindToolbar
+{
+        GObject parent;
+
+	GtkWidget *area;
+
+	FindToolbarPrivate *priv;
+};
+
+struct FindToolbarClass
+{
+        GObjectClass parent;
+};
+
+GType find_toolbar_get_type (void);
+FindToolbar *find_toolbar_new (GaleonWindow *window);
+
+
+void find_toolbar_toggle_active (FindToolbar *self);
+
+enum {
+	FIND_TOOLBAR_PROP_0,
+	FIND_TOOLBAR_PROP_WINDOW
+};
+
+G_END_DECLS
+
+#endif
diff -urwN galeon/src/galeon-window.c galeon.ben/src/galeon-window.c
--- galeon/src/galeon-window.c	2004-11-10 17:00:13.356279464 -0500
+++ galeon.ben/src/galeon-window.c	2004-11-10 17:02:56.912415152 -0500
@@ -33,6 +33,7 @@
 #include "ppview-toolbar.h"
 #include "window-commands.h"
 #include "find-dialog.h"
+#include "find-toolbar.h"
 #include "history-dialog.h"
 #include "galeon-shell.h"
 #include "bookmarks-gtk-menu.h"
@@ -102,6 +103,7 @@
 
 #define GCONF_DETACH_TOOLBAR "/desktop/gnome/interface/toolbar_detachable"
 #define GCONF_DETACH_MENUBAR "/desktop/gnome/interface/menubar_detachable"
+#define GCONF_FIND_USE_DIALOG "/apps/galeon/Browsing/Find/use_dialog"
 
 enum GaleonWindowSignalsEnum
 {
@@ -138,7 +140,10 @@
 	GaleonTab *active_tab;
 	GtkWidget *sidebar;
 	GaleonPopup *embed_popup;
+
 	GaleonDialog *find_dialog;
+	FindToolbar *find_toolbar;
+
 	GaleonDialog *history_dialog;
 	GaleonDialog *history_sidebar;
 	GbEditorDockable *bookmarks_sidebar;
@@ -1906,6 +1911,8 @@
 			 GTK_WIDGET(p->hpaned),
 			 TRUE, TRUE, 0);
 
+	p->find_toolbar = NULL;
+
 	gtk_container_add(GTK_CONTAINER(window),
 			  GTK_WIDGET(p->main_area));
 
@@ -2020,6 +2027,11 @@
 		g_object_unref (G_OBJECT (p->find_dialog));
 	}
 
+	if (p->find_toolbar)
+	{
+		g_object_unref (G_OBJECT (p->find_toolbar));
+	}
+
 	if (p->history_dialog)
 	{
 		g_object_remove_weak_pointer 
@@ -3341,6 +3353,9 @@
 void
 galeon_window_show_find (GaleonWindow *window)
 {			       
+	gboolean use_dialog = eel_gconf_get_boolean (GCONF_FIND_USE_DIALOG);
+	if (use_dialog)
+	{
 	GaleonDialog *dialog;
 	GaleonEmbed *embed;
 
@@ -3359,6 +3374,20 @@
 	galeon_dialog_show (window->priv->find_dialog);
 }
 
+	else {
+		if (!window->priv->find_toolbar)
+		{
+			window->priv->find_toolbar = find_toolbar_new (window);
+			gtk_box_pack_end(GTK_BOX (window->priv->main_area),
+					 GTK_WIDGET (window->priv->find_toolbar->area),
+					 FALSE, FALSE, 0);
+
+		}
+
+		find_toolbar_toggle_active(window->priv->find_toolbar);
+	}
+}
+
 void
 galeon_window_show_history (GaleonWindow *window)
 {

--Boundary_(ID_huNjSPxRhJ8GYaCizxWyVg)--


-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click