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 61dfd8ecffd722e196a48e88662507bc2a872d6a..521c8b47f8b39763b4d833db86b25e60f374830f 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,21 @@ 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); |
+ void PostCreateBubble(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,15 +65,24 @@ 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(TrayBubbleView::AnchorType anchor_type, |
+ ShelfAlignment shelf_alignment); |
+ TrayBubbleView::AnchorType anchor_type; |
+ ShelfAlignment shelf_alignment; |
+ int bubble_width; |
+ int max_height; |
+ bool can_activate; |
+ int arrow_offset; |
+ }; |
- // 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); |
+ |
+ virtual ~TrayBubbleView(); |
// Called whenever the bubble anchor location may have moved. |
void UpdateAnchor(); |
@@ -79,6 +95,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 +108,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 +124,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); |
}; |