summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/dropdown_bar_host.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/views/dropdown_bar_host.h')
-rw-r--r--chrome/browser/views/dropdown_bar_host.h181
1 files changed, 3 insertions, 178 deletions
diff --git a/chrome/browser/views/dropdown_bar_host.h b/chrome/browser/views/dropdown_bar_host.h
index 72b9aac..23c9053 100644
--- a/chrome/browser/views/dropdown_bar_host.h
+++ b/chrome/browser/views/dropdown_bar_host.h
@@ -6,183 +6,8 @@
#define CHROME_BROWSER_VIEWS_DROPDOWN_BAR_HOST_H_
#pragma once
-#include "app/animation.h"
-#include "base/scoped_ptr.h"
-#include "chrome/common/native_web_keyboard_event.h"
-#include "gfx/native_widget_types.h"
-#include "gfx/rect.h"
-#include "views/controls/textfield/textfield.h"
-#include "views/focus/focus_manager.h"
-
-class BrowserView;
-class DropdownBarView;
-class SlideAnimation;
-class TabContents;
-
-namespace views {
-class ExternalFocusTracker;
-class View;
-class Widget;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// The DropdownBarHost implements the container widget for the UI that
-// is shown at the top of browser contents. It uses the appropriate
-// implementation from dropdown_bar_host_win.cc or dropdown_bar_host_gtk.cc to
-// draw its content and is responsible for showing, hiding, animating, closing,
-// and moving the bar if needed, for example if the widget is
-// obscuring the selection results in FindBar.
-//
-////////////////////////////////////////////////////////////////////////////////
-class DropdownBarHost : public views::AcceleratorTarget,
- public views::FocusChangeListener,
- public AnimationDelegate {
- public:
- explicit DropdownBarHost(BrowserView* browser_view);
- virtual ~DropdownBarHost();
-
- // Initializes the dropdown bar host with the give view.
- void Init(DropdownBarView* view);
-
- // Whether we are animating the position of the dropdown widget.
- bool IsAnimating() const;
- // Returns true if the dropdown bar view is visible, or false otherwise.
- bool IsVisible() const;
- // Selects text in the entry field and set focus.
- void SetFocusAndSelection();
- // Stops the animation.
- void StopAnimation();
-
- // Shows the dropdown bar.
- virtual void Show(bool animate);
- // Hides the dropdown bar.
- virtual void Hide(bool animate);
-
- // Returns the rectangle representing where to position the dropdown widget.
- virtual gfx::Rect GetDialogPosition(gfx::Rect avoid_overlapping_rect) = 0;
-
- // Moves the widget to the provided location, moves it to top
- // in the z-order (HWND_TOP, not HWND_TOPMOST for windows) and shows
- // the widget (if hidden).
- virtual void SetDialogPosition(const gfx::Rect& new_pos, bool no_redraw) = 0;
-
- // Overridden from views::FocusChangeListener:
- virtual void FocusWillChange(views::View* focused_before,
- views::View* focused_now);
-
- // Overridden from views::AcceleratorTarget:
- virtual bool AcceleratorPressed(const views::Accelerator& accelerator) = 0;
-
- // AnimationDelegate implementation:
- virtual void AnimationProgressed(const Animation* animation);
- virtual void AnimationEnded(const Animation* animation);
-
- // During testing we can disable animations by setting this flag to true,
- // so that opening and closing the dropdown bar is shown instantly, instead of
- // having to poll it while it animates to open/closed status.
- static bool disable_animations_during_testing_;
-
- // Returns the browser view that the dropdown belongs to.
- BrowserView* browser_view() const { return browser_view_; }
-
- // Registers this class as the handler for when Escape is pressed. Once we
- // loose focus we will unregister Escape and (any accelerators the derived
- // classes registers by using overrides of RegisterAccelerators). See also:
- // SetFocusChangeListener().
- virtual void RegisterAccelerators();
-
- // When we loose focus, we unregister all accelerator handlers. See also:
- // SetFocusChangeListener().
- virtual void UnregisterAccelerators();
-
- protected:
- // Returns the dropdown bar view.
- DropdownBarView* view() const { return view_; }
-
- // Returns the focus tracker.
- views::ExternalFocusTracker* focus_tracker() const {
- return focus_tracker_.get();
- }
-
- // Resets the focus tracker.
- void ResetFocusTracker();
-
- // The focus manager we register with to keep track of focus changes.
- views::FocusManager* focus_manager() const { return focus_manager_; }
-
- // Returns the host widget.
- views::Widget* host() const { return host_.get(); }
-
- // Returns the animation offset.
- int animation_offset() const { return animation_offset_; }
-
- // Retrieves the boundary that the dropdown widget has to work with
- // within the Chrome frame window. The boundary differs depending on
- // the dropdown bar implementation. The default implementation
- // returns the boundary of browser_view and the drop down
- // can be shown in any client area.
- virtual void GetWidgetBounds(gfx::Rect* bounds);
-
- // The find bar widget needs rounded edges, so we create a polygon
- // that corresponds to the background images for this window (and
- // make the polygon only contain the pixels that we want to
- // draw). The polygon is then given to SetWindowRgn which changes
- // the window from being a rectangle in shape, to being a rect with
- // curved edges. We also check to see if the region should be
- // truncated to prevent from drawing onto Chrome's window border.
- void UpdateWindowEdges(const gfx::Rect& new_pos);
-
- // Creates and returns the native Widget.
- views::Widget* CreateHost();
-
- // Allows implementation to tweak widget position.
- void SetWidgetPositionNative(const gfx::Rect& new_pos, bool no_redraw);
-
- // Returns a keyboard event suitable for fowarding.
- NativeWebKeyboardEvent GetKeyboardEvent(
- const TabContents* contents,
- const views::Textfield::Keystroke& key_stroke);
-
- // Returns the animation for the dropdown.
- SlideAnimation* animation() {
- return animation_.get();
- }
-
- private:
- // The BrowserView that created us.
- BrowserView* browser_view_;
-
- // Our view, which is responsible for drawing the UI.
- DropdownBarView* view_;
-
- // The y position pixel offset of the widget while animating the
- // dropdown widget.
- int animation_offset_;
-
- // The animation class to use when opening the Dropdown widget.
- scoped_ptr<SlideAnimation> animation_;
-
- // The focus manager we register with to keep track of focus changes.
- views::FocusManager* focus_manager_;
-
- // True if the accelerator target for Esc key is registered.
- bool esc_accel_target_registered_;
-
- // Tracks and stores the last focused view which is not the DropdownBarView
- // or any of its children. Used to restore focus once the DropdownBarView is
- // closed.
- scoped_ptr<views::ExternalFocusTracker> focus_tracker_;
-
- // Host is the Widget implementation that is created and maintained by the
- // dropdown bar. It contains the DropdownBarView.
- scoped_ptr<views::Widget> host_;
-
- // A flag to manually manage visibility. GTK/X11 is asynchrnous and
- // the state of the widget can be out of sync.
- bool is_visible_;
-
- DISALLOW_COPY_AND_ASSIGN(DropdownBarHost);
-};
+#include "chrome/browser/ui/views/dropdown_bar_host.h"
+// TODO(beng): remove this file once all includes have been updated.
#endif // CHROME_BROWSER_VIEWS_DROPDOWN_BAR_HOST_H_
+