diff -ur owb.orig/knotsbrowser.vala owb/knotsbrowser.vala --- owb.orig/knotsbrowser.vala 2009-07-05 20:05:57.000000000 +0100 +++ owb/knotsbrowser.vala 2009-07-06 17:47:59.000000000 +0100 @@ -1,5 +1,6 @@ using GLib; using Gtk; +using Hildon; public class Browser : PageWidget { @@ -17,6 +18,7 @@ private bool icon_view; private string virtual; private int virtual_page; + private Hildon.FindToolbar dialog; construct { sort_list = new List(); @@ -412,23 +414,40 @@ } return false; } - + + bool searchisactive=false; + public void destroy_search() + { + dialog.visible = !dialog.visible; + dialog.destroy(); + get_knots().get_window().remove_toolbar (dialog); + dialog=null; + searchisactive=false; + } + + public void show_search() { - Gtk.MessageDialog dialog = new MessageDialog.with_markup(null, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.OK_CANCEL, "Search for?"); - var search_box = new Gtk.Entry(); - search_box.activate += (widget) => { - search(widget); - }; - dialog.vbox.pack_start(search_box, true, true, 1); - search_box.show(); - var response = dialog.run(); - if (response == ResponseType.OK) + if(!searchisactive) { - search((Gtk.Entry)dialog.vbox.get_children().nth_data(1)); + searchisactive=true; + dialog = new FindToolbar ("Search for:"); + dialog.close += destroy_search; + dialog.search += findbar_search; + get_knots().get_window().add_toolbar (dialog); + dialog.show(); + dialog.highlight_entry(true); } - dialog.hide(); - dialog = null; + else + { + destroy_search(); + } + } + + public void findbar_search() + { + search(dialog.prefix); + destroy_search(); } public void* browse_server() @@ -471,9 +490,9 @@ return ((Scroller)get_content()).window_scrolled(); } - public bool search(Gtk.Entry search_box) + public bool search(string search_box) { - search_string = search_box.get_text(); + search_string = search_box; if (search_string != "") { browse();