Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Unified Diff: chrome/browser/ui/gtk/find_bar_gtk.h

Issue 6099014: Move chrome/browser/gtk to chrome/browser/ui/gtk (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Move browser/gtk/ to browser/ui/gtk/, leave header stubs, update new header guards Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/gtk/external_protocol_dialog_gtk.cc ('k') | chrome/browser/ui/gtk/find_bar_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/gtk/find_bar_gtk.h
diff --git a/chrome/browser/ui/gtk/find_bar_gtk.h b/chrome/browser/ui/gtk/find_bar_gtk.h
new file mode 100644
index 0000000000000000000000000000000000000000..602c1bc7c88e6a4257b0a107a55b368c2c404e36
--- /dev/null
+++ b/chrome/browser/ui/gtk/find_bar_gtk.h
@@ -0,0 +1,240 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_GTK_FIND_BAR_GTK_H_
+#define CHROME_BROWSER_UI_GTK_FIND_BAR_GTK_H_
+#pragma once
+
+#include <gtk/gtk.h>
+
+#include "base/basictypes.h"
+#include "base/scoped_ptr.h"
+#include "chrome/browser/gtk/focus_store_gtk.h"
+#include "chrome/browser/gtk/owned_widget_gtk.h"
+#include "chrome/browser/gtk/slide_animator_gtk.h"
+#include "chrome/browser/ui/find_bar/find_bar.h"
+#include "chrome/common/notification_observer.h"
+#include "chrome/common/notification_registrar.h"
+#include "gfx/point.h"
+
+class Browser;
+class BrowserWindowGtk;
+class CustomDrawButton;
+class FindBarController;
+class GtkThemeProvider;
+class NineBox;
+class SlideAnimatorGtk;
+class TabContentsContainerGtk;
+
+typedef struct _GtkFloatingContainer GtkFloatingContainer;
+
+// Currently this class contains both a model and a view. We may want to
+// eventually pull out the model specific bits and share with Windows.
+class FindBarGtk : public FindBar,
+ public FindBarTesting,
+ public NotificationObserver {
+ public:
+ explicit FindBarGtk(Browser* browser);
+ virtual ~FindBarGtk();
+
+ GtkWidget* widget() const { return slide_widget_->widget(); }
+
+ // Methods from FindBar.
+ virtual FindBarController* GetFindBarController() const;
+ virtual void SetFindBarController(FindBarController* find_bar_controller);
+ virtual void Show(bool animate);
+ virtual void Hide(bool animate);
+ virtual void SetFocusAndSelection();
+ virtual void ClearResults(const FindNotificationDetails& results);
+ virtual void StopAnimation();
+ virtual void MoveWindowIfNecessary(const gfx::Rect& selection_rect,
+ bool no_redraw);
+ virtual void SetFindText(const string16& find_text);
+ virtual void UpdateUIForFindResult(const FindNotificationDetails& result,
+ const string16& find_text);
+ virtual void AudibleAlert();
+ virtual bool IsFindBarVisible();
+ virtual void RestoreSavedFocus();
+ virtual FindBarTesting* GetFindBarTesting();
+
+ // Methods from FindBarTesting.
+ virtual bool GetFindBarWindowInfo(gfx::Point* position,
+ bool* fully_visible);
+ virtual string16 GetFindText();
+ virtual string16 GetFindSelectedText();
+ virtual string16 GetMatchCountText();
+
+ // Overridden from NotificationObserver:
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
+
+ private:
+ void InitWidgets();
+
+ // Store the currently focused widget if it is not in the find bar.
+ // This should always be called before we claim focus.
+ void StoreOutsideFocus();
+
+ // For certain keystrokes, such as up or down, we want to forward the event
+ // to the renderer rather than handling it ourselves. Returns true if the
+ // key event was forwarded.
+ // See similar function in FindBarWin.
+ bool MaybeForwardKeyEventToRenderer(GdkEventKey* event);
+
+ // Searches for another occurrence of the entry text, moving forward if
+ // |forward_search| is true.
+ void FindEntryTextInContents(bool forward_search);
+
+ void UpdateMatchLabelAppearance(bool failure);
+
+ // Asynchronously repositions the dialog.
+ void Reposition();
+
+ // Returns the rectangle representing where to position the find bar. If
+ // |avoid_overlapping_rect| is specified, the return value will be a rectangle
+ // located immediately to the left of |avoid_overlapping_rect|, as long as
+ // there is enough room for the dialog to draw within the bounds. If not, the
+ // dialog position returned will overlap |avoid_overlapping_rect|.
+ // Note: |avoid_overlapping_rect| is expected to use coordinates relative to
+ // the top of the page area, (it will be converted to coordinates relative to
+ // the top of the browser window, when comparing against the dialog
+ // coordinates). The returned value is relative to the browser window.
+ gfx::Rect GetDialogPosition(gfx::Rect avoid_overlapping_rect);
+
+ // Adjust the text alignment according to the text direction of the widget
+ // and |text_entry_|'s content, to make sure the real text alignment is
+ // always in sync with the UI language direction.
+ void AdjustTextAlignment();
+
+ // Get the position of the findbar within the floating container.
+ gfx::Point GetPosition();
+
+ static void OnParentSet(GtkWidget* widget, GtkObject* old_parent,
+ FindBarGtk* find_bar);
+
+ static void OnSetFloatingPosition(GtkFloatingContainer* floating_container,
+ GtkAllocation* allocation,
+ FindBarGtk* find_bar);
+
+ // Callback when the entry text changes.
+ static gboolean OnChanged(GtkWindow* window, FindBarGtk* find_bar);
+
+ static gboolean OnKeyPressEvent(GtkWidget* widget, GdkEventKey* event,
+ FindBarGtk* find_bar);
+ static gboolean OnKeyReleaseEvent(GtkWidget* widget, GdkEventKey* event,
+ FindBarGtk* find_bar);
+
+ // Callback for previous, next, and close button.
+ static void OnClicked(GtkWidget* button, FindBarGtk* find_bar);
+
+ // Handles shapping and drawing the find bar background.
+ static gboolean OnExpose(GtkWidget* widget, GdkEventExpose* event,
+ FindBarGtk* bar);
+
+ // Expose that draws the text entry background in GTK mode.
+ static gboolean OnContentEventBoxExpose(GtkWidget* widget,
+ GdkEventExpose* event,
+ FindBarGtk* bar);
+
+ // These are both used for focus management.
+ static gboolean OnFocus(GtkWidget* text_entry, GtkDirectionType focus,
+ FindBarGtk* find_bar);
+ static gboolean OnButtonPress(GtkWidget* text_entry, GdkEventButton* e,
+ FindBarGtk* find_bar);
+
+ // Forwards ctrl-Home/End key bindings to the renderer.
+ static void OnMoveCursor(GtkEntry* entry, GtkMovementStep step, gint count,
+ gboolean selection, FindBarGtk* bar);
+
+ // Handles Enter key.
+ static void OnActivate(GtkEntry* entry, FindBarGtk* bar);
+
+ static void OnWidgetDirectionChanged(GtkWidget* widget,
+ GtkTextDirection previous_direction,
+ FindBarGtk* find_bar) {
+ find_bar->AdjustTextAlignment();
+ }
+
+ static void OnKeymapDirectionChanged(GdkKeymap* keymap,
+ FindBarGtk* find_bar) {
+ find_bar->AdjustTextAlignment();
+ }
+
+ static gboolean OnFocusIn(GtkWidget* entry, GdkEventFocus* event,
+ FindBarGtk* find_bar);
+
+ static gboolean OnFocusOut(GtkWidget* entry, GdkEventFocus* event,
+ FindBarGtk* find_bar);
+
+ Browser* browser_;
+ BrowserWindowGtk* window_;
+
+ // Provides colors and information about GTK.
+ GtkThemeProvider* theme_provider_;
+
+ // The widget that animates the slide-in and -out of the findbar.
+ scoped_ptr<SlideAnimatorGtk> slide_widget_;
+
+ // A GtkAlignment that is the child of |slide_widget_|.
+ GtkWidget* container_;
+
+ // Cached allocation of |container_|. We keep this on hand so that we can
+ // reset the widget's shape when the width/height change.
+ int container_width_;
+ int container_height_;
+
+ // The widget where text is entered.
+ GtkWidget* text_entry_;
+
+ // An event box and alignment that wrap the entry area and the count label.
+ GtkWidget* content_event_box_;
+ GtkWidget* content_alignment_;
+
+ // The border around the text entry area.
+ GtkWidget* border_bin_;
+ GtkWidget* border_bin_alignment_;
+
+ // The next and previous match buttons.
+ scoped_ptr<CustomDrawButton> find_previous_button_;
+ scoped_ptr<CustomDrawButton> find_next_button_;
+
+ // The GtkLabel listing how many results were found.
+ GtkWidget* match_count_label_;
+ GtkWidget* match_count_event_box_;
+ // Cache whether the match count label is showing failure or not so that
+ // we can update its appearance without changing its semantics.
+ bool match_label_failure_;
+
+ // The X to close the find bar.
+ scoped_ptr<CustomDrawButton> close_button_;
+
+ // The last matchcount number we reported to the user.
+ int last_reported_matchcount_;
+
+ // Pointer back to the owning controller.
+ FindBarController* find_bar_controller_;
+
+ // Saves where the focus used to be whenever we get it.
+ FocusStoreGtk focus_store_;
+
+ // If true, the change signal for the text entry is ignored.
+ bool ignore_changed_signal_;
+
+ // This is the width of widget(). We cache it so we can recognize whether
+ // allocate signals have changed it, and if so take appropriate actions.
+ int current_fixed_width_;
+
+ scoped_ptr<NineBox> dialog_background_;
+
+ // The selection rect we are currently showing. We cache it to avoid covering
+ // it up.
+ gfx::Rect selection_rect_;
+
+ NotificationRegistrar registrar_;
+
+ DISALLOW_COPY_AND_ASSIGN(FindBarGtk);
+};
+
+#endif // CHROME_BROWSER_UI_GTK_FIND_BAR_GTK_H_
« no previous file with comments | « chrome/browser/ui/gtk/external_protocol_dialog_gtk.cc ('k') | chrome/browser/ui/gtk/find_bar_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698