diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-05 00:17:44 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-05 00:17:44 +0000 |
commit | a5bdb0b3f5dc0c7676d32e6a2043b5a68584a833 (patch) | |
tree | c1933a5d4c66d1ca61e6013c92fc287c9a2c1e32 /chrome/browser/gtk | |
parent | ed4bf2dbceed9daaf6401e6e65701d4e51798953 (diff) | |
download | chromium_src-a5bdb0b3f5dc0c7676d32e6a2043b5a68584a833.zip chromium_src-a5bdb0b3f5dc0c7676d32e6a2043b5a68584a833.tar.gz chromium_src-a5bdb0b3f5dc0c7676d32e6a2043b5a68584a833.tar.bz2 |
Highlight the next find result when the return key is pressed in the Linux find bar.
Review URL: http://codereview.chromium.org/99376
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15255 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk')
-rw-r--r-- | chrome/browser/gtk/find_bar_gtk.cc | 46 | ||||
-rw-r--r-- | chrome/browser/gtk/find_bar_gtk.h | 19 |
2 files changed, 34 insertions, 31 deletions
diff --git a/chrome/browser/gtk/find_bar_gtk.cc b/chrome/browser/gtk/find_bar_gtk.cc index 8eb8f2e..f3e0b05 100644 --- a/chrome/browser/gtk/find_bar_gtk.cc +++ b/chrome/browser/gtk/find_bar_gtk.cc @@ -36,20 +36,6 @@ const int kBarPaddingRight = 4; // images. const int kFindBarHeight = 32; -gboolean EntryContentsChanged(GtkWindow* window, FindBarGtk* find_bar) { - find_bar->ContentsChanged(); - return FALSE; -} - -gboolean KeyPressEvent(GtkWindow* window, GdkEventKey* event, - FindBarGtk* find_bar) { - if (GDK_Escape == event->keyval) { - find_bar->EscapePressed(); - return TRUE; - } - return FALSE; -} - // Get the ninebox that draws the background of |container_|. It is also used // to change the shape of |container_|. The pointer is shared by all instances // of FindBarGtk. @@ -88,9 +74,9 @@ FindBarGtk::FindBarGtk(BrowserWindowGtk* browser) // Hook up signals after the widget has been added to the hierarchy so the // widget will be realized. g_signal_connect(find_text_, "changed", - G_CALLBACK(EntryContentsChanged), this); + G_CALLBACK(OnChanged), this); g_signal_connect(find_text_, "key-press-event", - G_CALLBACK(KeyPressEvent), this); + G_CALLBACK(OnKeyPressEvent), this); g_signal_connect(widget(), "size-allocate", G_CALLBACK(OnFixedSizeAllocate), this); // We can't call ContourWidget() until after |container_| has been @@ -255,7 +241,7 @@ bool FindBarGtk::GetFindBarWindowInfo(gfx::Point* position, return false; } -void FindBarGtk::ContentsChanged() { +void FindBarGtk::FindEntryTextInContents(bool forward_search) { TabContents* tab_contents = find_bar_controller_->tab_contents(); if (!tab_contents) return; @@ -263,15 +249,30 @@ void FindBarGtk::ContentsChanged() { std::string new_contents(gtk_entry_get_text(GTK_ENTRY(find_text_))); if (new_contents.length() > 0) { - tab_contents->StartFinding(UTF8ToUTF16(new_contents), true); + tab_contents->StartFinding(UTF8ToUTF16(new_contents), forward_search); } else { // The textbox is empty so we reset. tab_contents->StopFinding(true); // true = clear selection on page. } } -void FindBarGtk::EscapePressed() { - find_bar_controller_->EndFindSession(); +// static +gboolean FindBarGtk::OnChanged(GtkWindow* window, FindBarGtk* find_bar) { + find_bar->FindEntryTextInContents(true); + return FALSE; +} + +// static +gboolean FindBarGtk::OnKeyPressEvent(GtkWindow* window, GdkEventKey* event, + FindBarGtk* find_bar) { + if (GDK_Escape == event->keyval) { + find_bar->find_bar_controller_->EndFindSession(); + return TRUE; + } else if (GDK_Return == event->keyval) { + find_bar->FindEntryTextInContents(true); + return TRUE; + } + return FALSE; } // static @@ -280,10 +281,7 @@ void FindBarGtk::OnButtonPressed(GtkWidget* button, FindBarGtk* find_bar) { find_bar->find_bar_controller_->EndFindSession(); } else if (button == find_bar->find_previous_button_->widget() || button == find_bar->find_next_button_->widget()) { - std::string find_text_utf8( - gtk_entry_get_text(GTK_ENTRY(find_bar->find_text_))); - find_bar->find_bar_controller_->tab_contents()->StartFinding( - UTF8ToUTF16(find_text_utf8), + find_bar->FindEntryTextInContents( button == find_bar->find_next_button_->widget()); } else { NOTREACHED(); diff --git a/chrome/browser/gtk/find_bar_gtk.h b/chrome/browser/gtk/find_bar_gtk.h index 6143e6c..721df0a 100644 --- a/chrome/browser/gtk/find_bar_gtk.h +++ b/chrome/browser/gtk/find_bar_gtk.h @@ -23,15 +23,9 @@ class TabContentsContainerGtk; class FindBarGtk : public FindBar, public FindBarTesting { public: - FindBarGtk(BrowserWindowGtk* browser); + explicit FindBarGtk(BrowserWindowGtk* browser); virtual ~FindBarGtk(); - // Callback when the text in the find box changes. - void ContentsChanged(); - - // Callback when Escape is pressed. - void EscapePressed(); - GtkWidget* widget() const { return fixed_.get(); } // Methods from FindBar. @@ -68,6 +62,17 @@ class FindBarGtk : public FindBar, // findbar. GtkWidget* slide_widget(); + // Searches for another occurrence of the entry text, moving forward if + // |forward_search| is true. + void FindEntryTextInContents(bool forward_search); + + // Callback when the entry text changes. + static gboolean OnChanged(GtkWindow* window, FindBarGtk* find_bar); + + // Callback for key presses. + static gboolean OnKeyPressEvent(GtkWindow* window, GdkEventKey* event, + FindBarGtk* find_bar); + // Callback for previous, next, and close button. static void OnButtonPressed(GtkWidget* button, FindBarGtk* find_bar); |