| Index: ash/system/tray/tray_bubble_view.h
|
| diff --git a/ash/system/tray/tray_bubble_view.h b/ash/system/tray/tray_bubble_view.h
|
| index d6887b79722f2c44066ac745611bd757c50838fc..de8b8385ff1a3c677157bb25d104fb18f60e0553 100644
|
| --- a/ash/system/tray/tray_bubble_view.h
|
| +++ b/ash/system/tray/tray_bubble_view.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef ASH_SYSTEM_TRAY_TRAY_BUBBLE_VIEW_H_
|
| #define ASH_SYSTEM_TRAY_TRAY_BUBBLE_VIEW_H_
|
|
|
| +#include "ash/wm/shelf_types.h"
|
| #include "ui/aura/event_filter.h"
|
| #include "ui/views/bubble/bubble_delegate.h"
|
|
|
| @@ -24,15 +25,23 @@ namespace internal {
|
| // Mostly this handles custom anchor location and arrow and border rendering.
|
| class TrayBubbleView : public views::BubbleDelegateView {
|
| public:
|
| + enum AnchorType {
|
| + ANCHOR_TYPE_TRAY,
|
| + ANCHOR_TYPE_BUBBLE
|
| + };
|
| +
|
| class Host : public aura::EventFilter {
|
| public:
|
| Host();
|
| virtual ~Host();
|
|
|
| - void InitializeHost(views::Widget* widget, views::View* tray_view);
|
| + // Set widget_ and tray_view_, set up animations, and show the bubble.
|
| + // Must occur after bubble_view->CreateBubble() is called.
|
| + void InitializeAndShowBubble(views::Widget* widget,
|
| + TrayBubbleView* bubble_view,
|
| + views::View* tray_view);
|
|
|
| virtual void BubbleViewDestroyed() = 0;
|
| - virtual gfx::Rect GetAnchorRect() const = 0;
|
| virtual void OnMouseEnteredView() = 0;
|
| virtual void OnMouseExitedView() = 0;
|
| virtual void OnClickedOutsideView() = 0;
|
| @@ -58,17 +67,27 @@ class TrayBubbleView : public views::BubbleDelegateView {
|
| DISALLOW_COPY_AND_ASSIGN(Host);
|
| };
|
|
|
| - TrayBubbleView(views::View* anchor,
|
| - views::BubbleBorder::ArrowLocation arrow_location,
|
| - Host* host,
|
| - bool can_activate,
|
| - int bubble_width);
|
| - virtual ~TrayBubbleView();
|
| + struct InitParams {
|
| + static const int kArrowDefaultOffset;
|
| +
|
| + InitParams(AnchorType anchor_type,
|
| + ShelfAlignment shelf_alignment);
|
| + AnchorType anchor_type;
|
| + ShelfAlignment shelf_alignment;
|
| + int bubble_width;
|
| + int max_height;
|
| + bool can_activate;
|
| + int arrow_offset;
|
| + SkColor arrow_color;
|
| + };
|
|
|
| - // Creates a bubble border with the specified arrow offset.
|
| - void SetBubbleBorder(int arrow_offset);
|
| + static TrayBubbleView* Create(views::View* anchor,
|
| + Host* host,
|
| + const InitParams& init_params);
|
|
|
| - // Called whenever the bubble size or location may have moved.
|
| + virtual ~TrayBubbleView();
|
| +
|
| + // Called whenever the bubble size or location may have changed.
|
| void UpdateBubble();
|
|
|
| // Sets the maximum bubble height and resizes the bubble.
|
| @@ -79,6 +98,8 @@ class TrayBubbleView : public views::BubbleDelegateView {
|
|
|
| // Overridden from views::WidgetDelegate.
|
| virtual bool CanActivate() const OVERRIDE;
|
| + virtual views::NonClientFrameView* CreateNonClientFrameView(
|
| + views::Widget* widget) OVERRIDE;
|
|
|
| // Overridden from views::BubbleDelegateView.
|
| virtual gfx::Rect GetAnchorRect() OVERRIDE;
|
| @@ -90,6 +111,11 @@ class TrayBubbleView : public views::BubbleDelegateView {
|
| virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;
|
|
|
| protected:
|
| + TrayBubbleView(const InitParams& init_params,
|
| + views::BubbleBorder::ArrowLocation arrow_location,
|
| + views::View* anchor,
|
| + Host* host);
|
| +
|
| // Overridden from views::BubbleDelegateView.
|
| virtual void Init() OVERRIDE;
|
| virtual gfx::Rect GetBubbleBounds() OVERRIDE;
|
| @@ -101,10 +127,8 @@ class TrayBubbleView : public views::BubbleDelegateView {
|
| views::View* child) OVERRIDE;
|
|
|
| private:
|
| + InitParams params_;
|
| Host* host_;
|
| - bool can_activate_;
|
| - int max_height_;
|
| - int bubble_width_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TrayBubbleView);
|
| };
|
|
|