diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-11 20:00:25 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-11 20:00:25 +0000 |
commit | 80f295565f826a6566595ff5dfab0563dbb700f6 (patch) | |
tree | f456ec7f17e3429bd63dfdb148f19b406a22077f | |
parent | b7176f086e6582f05741395f062204ba2dea7372 (diff) | |
download | chromium_src-80f295565f826a6566595ff5dfab0563dbb700f6.zip chromium_src-80f295565f826a6566595ff5dfab0563dbb700f6.tar.gz chromium_src-80f295565f826a6566595ff5dfab0563dbb700f6.tar.bz2 |
Add Activation support to WindowDelegate.
WindowDelegate now sports two additional methods: CanActivate() and OnWindowActivated().
Converts BrowserView to implement these methods instead of requiring BrowserFrame to override WindowWin methods to handle activation events.
BUG=72040
TEST=none
Review URL: http://codereview.chromium.org/6679002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77848 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/frame/panel_browser_view.cc | 20 | ||||
-rw-r--r-- | chrome/browser/chromeos/frame/panel_browser_view.h | 2 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_frame_gtk.cc | 6 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_frame_gtk.h | 1 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_frame_win.cc | 15 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_frame_win.h | 4 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_view.cc | 14 | ||||
-rw-r--r-- | chrome/browser/ui/views/frame/browser_view.h | 248 | ||||
-rw-r--r-- | views/window/native_window_delegate.h | 3 | ||||
-rw-r--r-- | views/window/window.cc | 5 | ||||
-rw-r--r-- | views/window/window.h | 1 | ||||
-rw-r--r-- | views/window/window_delegate.cc | 4 | ||||
-rw-r--r-- | views/window/window_delegate.h | 6 | ||||
-rw-r--r-- | views/window/window_gtk.cc | 5 | ||||
-rw-r--r-- | views/window/window_gtk.h | 1 | ||||
-rw-r--r-- | views/window/window_win.cc | 14 | ||||
-rw-r--r-- | views/window/window_win.h | 3 |
17 files changed, 182 insertions, 170 deletions
diff --git a/chrome/browser/chromeos/frame/panel_browser_view.cc b/chrome/browser/chromeos/frame/panel_browser_view.cc index 0a4e8b5..657039e 100644 --- a/chrome/browser/chromeos/frame/panel_browser_view.cc +++ b/chrome/browser/chromeos/frame/panel_browser_view.cc @@ -83,16 +83,6 @@ void PanelBrowserView::UpdateTitleBar() { panel_controller_->UpdateTitleBar(); } -void PanelBrowserView::ActivationChanged(bool activated) { - ::BrowserView::ActivationChanged(activated); - if (panel_controller_.get()) { - if (activated) - panel_controller_->OnFocusIn(); - else - panel_controller_->OnFocusOut(); - } -} - void PanelBrowserView::SetCreatorView(PanelBrowserView* creator) { DCHECK(creator); GtkWindow* window = creator->GetNativeHandle(); @@ -106,6 +96,16 @@ bool PanelBrowserView::GetSavedWindowBounds(gfx::Rect* bounds) const { return res; } +void PanelBrowserView::OnWindowActivate(bool active) { + ::BrowserView::OnWindowActivate(active); + if (panel_controller_.get()) { + if (active) + panel_controller_->OnFocusIn(); + else + panel_controller_->OnFocusOut(); + } +} + //////////////////////////////////////////////////////////////////////////////// // PanelController::Delegate overrides. diff --git a/chrome/browser/chromeos/frame/panel_browser_view.h b/chrome/browser/chromeos/frame/panel_browser_view.h index 822d9d1..cb51c3e 100644 --- a/chrome/browser/chromeos/frame/panel_browser_view.h +++ b/chrome/browser/chromeos/frame/panel_browser_view.h @@ -30,9 +30,9 @@ class PanelBrowserView : public ::BrowserView, virtual void SetBounds(const gfx::Rect& bounds); virtual void Close(); virtual void UpdateTitleBar(); - virtual void ActivationChanged(bool activated); virtual void SetCreatorView(PanelBrowserView* creator); virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const; + virtual void OnWindowActivate(bool active); // PanelController::Delegate overrides virtual string16 GetPanelTitle(); diff --git a/chrome/browser/ui/views/frame/browser_frame_gtk.cc b/chrome/browser/ui/views/frame/browser_frame_gtk.cc index b7d3888..5c4d964 100644 --- a/chrome/browser/ui/views/frame/browser_frame_gtk.cc +++ b/chrome/browser/ui/views/frame/browser_frame_gtk.cc @@ -64,12 +64,6 @@ views::RootView* BrowserFrameGtk::CreateRootView() { return root_view_; } -void BrowserFrameGtk::IsActiveChanged() { - GetRootView()->SchedulePaint(); - browser_view_->ActivationChanged(IsActive()); - views::WidgetGtk::IsActiveChanged(); -} - void BrowserFrameGtk::SetInitialFocus() { browser_view_->RestoreFocus(); } diff --git a/chrome/browser/ui/views/frame/browser_frame_gtk.h b/chrome/browser/ui/views/frame/browser_frame_gtk.h index 6bec934..78c8400 100644 --- a/chrome/browser/ui/views/frame/browser_frame_gtk.h +++ b/chrome/browser/ui/views/frame/browser_frame_gtk.h @@ -31,7 +31,6 @@ class BrowserFrameGtk : public BrowserFrame, // Overridden from views::Widget: virtual ui::ThemeProvider* GetThemeProvider() const OVERRIDE; - virtual void IsActiveChanged() OVERRIDE; virtual void SetInitialFocus() OVERRIDE; protected: diff --git a/chrome/browser/ui/views/frame/browser_frame_win.cc b/chrome/browser/ui/views/frame/browser_frame_win.cc index a51eb25..e646969 100644 --- a/chrome/browser/ui/views/frame/browser_frame_win.cc +++ b/chrome/browser/ui/views/frame/browser_frame_win.cc @@ -122,13 +122,6 @@ void BrowserFrameWin::OnInitMenuPopup(HMENU menu, UINT position, browser_view_->PrepareToRunSystemMenu(menu); } -LRESULT BrowserFrameWin::OnMouseActivate(UINT message, - WPARAM w_param, - LPARAM l_param) { - return browser_view_->ActivateAppModalDialog() ? MA_NOACTIVATEANDEAT - : MA_ACTIVATE; -} - void BrowserFrameWin::OnMove(const CPoint& point) { browser_view_->WindowMoved(); } @@ -137,14 +130,6 @@ void BrowserFrameWin::OnMoving(UINT param, LPRECT new_bounds) { browser_view_->WindowMoved(); } -LRESULT BrowserFrameWin::OnNCActivate(BOOL active) { - if (browser_view_->ActivateAppModalDialog()) - return TRUE; - - browser_view_->ActivationChanged(!!active); - return WindowWin::OnNCActivate(active); -} - LRESULT BrowserFrameWin::OnNCHitTest(const CPoint& pt) { // Only do DWM hit-testing when we are using the native frame. if (non_client_view()->UseNativeFrame()) { diff --git a/chrome/browser/ui/views/frame/browser_frame_win.h b/chrome/browser/ui/views/frame/browser_frame_win.h index d0a1e88..dbbd55a 100644 --- a/chrome/browser/ui/views/frame/browser_frame_win.h +++ b/chrome/browser/ui/views/frame/browser_frame_win.h @@ -56,12 +56,8 @@ class BrowserFrameWin : public BrowserFrame, virtual void OnInitMenuPopup(HMENU menu, UINT position, BOOL is_system_menu) OVERRIDE; - virtual LRESULT OnMouseActivate(UINT message, - WPARAM w_param, - LPARAM l_param) OVERRIDE; virtual void OnMove(const CPoint& point) OVERRIDE; virtual void OnMoving(UINT param, LPRECT new_bounds) OVERRIDE; - virtual LRESULT OnNCActivate(BOOL active) OVERRIDE; virtual LRESULT OnNCHitTest(const CPoint& pt) OVERRIDE; virtual void OnWindowPosChanged(WINDOWPOS* window_pos) OVERRIDE; virtual ui::ThemeProvider* GetThemeProvider() const OVERRIDE; diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index f878ca4..ce088e1 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc @@ -649,11 +649,6 @@ bool BrowserView::ActivateAppModalDialog() const { return false; } -void BrowserView::ActivationChanged(bool activated) { - if (activated) - BrowserList::SetLastActive(browser_.get()); -} - TabContents* BrowserView::GetSelectedTabContents() const { return browser_->GetSelectedTabContents(); } @@ -1528,6 +1523,10 @@ bool BrowserView::CanMaximize() const { return true; } +bool BrowserView::CanActivate() const { + return !ActivateAppModalDialog(); +} + bool BrowserView::IsModal() const { return false; } @@ -1655,6 +1654,11 @@ views::ClientView* BrowserView::CreateClientView(views::Window* window) { return this; } +void BrowserView::OnWindowActivate(bool active) { + if (active) + BrowserList::SetLastActive(browser_.get()); +} + /////////////////////////////////////////////////////////////////////////////// // BrowserView, views::ClientView overrides: diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h index efddfc5..602159c 100644 --- a/chrome/browser/ui/views/frame/browser_view.h +++ b/chrome/browser/ui/views/frame/browser_view.h @@ -228,162 +228,164 @@ class BrowserView : public BrowserBubbleHost, // when a new browser window is created. void RestoreFocus(); - // Called when the activation of the frame changes. - virtual void ActivationChanged(bool activated); - // Overridden from BrowserWindow: - virtual void Show(); - virtual void SetBounds(const gfx::Rect& bounds); - virtual void Close(); - virtual void Activate(); - virtual void Deactivate(); - virtual bool IsActive() const; - virtual void FlashFrame(); - virtual gfx::NativeWindow GetNativeHandle(); - virtual BrowserWindowTesting* GetBrowserWindowTesting(); - virtual StatusBubble* GetStatusBubble(); - virtual void SelectedTabToolbarSizeChanged(bool is_animating); - virtual void UpdateTitleBar(); - virtual void ShelfVisibilityChanged(); - virtual void UpdateDevTools(); - virtual void UpdateLoadingAnimations(bool should_animate); - virtual void SetStarredState(bool is_starred); - virtual gfx::Rect GetRestoredBounds() const; - virtual gfx::Rect GetBounds() const; - virtual bool IsMaximized() const; - virtual void SetFullscreen(bool fullscreen); - virtual bool IsFullscreen() const; - virtual LocationBar* GetLocationBar() const; - virtual void SetFocusToLocationBar(bool select_all); - virtual void UpdateReloadStopState(bool is_loading, bool force); + virtual void Show() OVERRIDE; + virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; + virtual void Close() OVERRIDE; + virtual void Activate() OVERRIDE; + virtual void Deactivate() OVERRIDE; + virtual bool IsActive() const OVERRIDE; + virtual void FlashFrame() OVERRIDE; + virtual gfx::NativeWindow GetNativeHandle() OVERRIDE; + virtual BrowserWindowTesting* GetBrowserWindowTesting() OVERRIDE; + virtual StatusBubble* GetStatusBubble() OVERRIDE; + virtual void SelectedTabToolbarSizeChanged(bool is_animating) OVERRIDE; + virtual void UpdateTitleBar() OVERRIDE; + virtual void ShelfVisibilityChanged() OVERRIDE; + virtual void UpdateDevTools() OVERRIDE; + virtual void UpdateLoadingAnimations(bool should_animate) OVERRIDE; + virtual void SetStarredState(bool is_starred) OVERRIDE; + virtual gfx::Rect GetRestoredBounds() const OVERRIDE; + virtual gfx::Rect GetBounds() const OVERRIDE; + virtual bool IsMaximized() const OVERRIDE; + virtual void SetFullscreen(bool fullscreen) OVERRIDE; + virtual bool IsFullscreen() const OVERRIDE; + virtual LocationBar* GetLocationBar() const OVERRIDE; + virtual void SetFocusToLocationBar(bool select_all) OVERRIDE; + virtual void UpdateReloadStopState(bool is_loading, bool force) OVERRIDE; virtual void UpdateToolbar(TabContentsWrapper* contents, - bool should_restore_state); - virtual void FocusToolbar(); - virtual void FocusAppMenu(); - virtual void FocusBookmarksToolbar(); - virtual void FocusChromeOSStatus() {} - virtual void RotatePaneFocus(bool forwards); - virtual void DestroyBrowser(); - virtual bool IsBookmarkBarVisible() const; - virtual bool IsBookmarkBarAnimating() const; - virtual bool IsTabStripEditable() const; - virtual bool IsToolbarVisible() const; - virtual void DisableInactiveFrame(); + bool should_restore_state) OVERRIDE; + virtual void FocusToolbar() OVERRIDE; + virtual void FocusAppMenu() OVERRIDE; + virtual void FocusBookmarksToolbar() OVERRIDE; + virtual void FocusChromeOSStatus() OVERRIDE {} + virtual void RotatePaneFocus(bool forwards) OVERRIDE; + virtual void DestroyBrowser() OVERRIDE; + virtual bool IsBookmarkBarVisible() const OVERRIDE; + virtual bool IsBookmarkBarAnimating() const OVERRIDE; + virtual bool IsTabStripEditable() const OVERRIDE; + virtual bool IsToolbarVisible() const OVERRIDE; + virtual void DisableInactiveFrame() OVERRIDE; virtual void ConfirmSetDefaultSearchProvider( TabContents* tab_contents, TemplateURL* template_url, - TemplateURLModel* template_url_model); + TemplateURLModel* template_url_model) OVERRIDE; virtual void ConfirmAddSearchProvider(const TemplateURL* template_url, - Profile* profile); - virtual void ToggleBookmarkBar(); - virtual void ShowAboutChromeDialog(); - virtual void ShowUpdateChromeDialog(); - virtual void ShowTaskManager(); - virtual void ShowBackgroundPages(); - virtual void ShowBookmarkBubble(const GURL& url, bool already_bookmarked); - virtual void SetDownloadShelfVisible(bool visible); - virtual bool IsDownloadShelfVisible() const; - virtual DownloadShelf* GetDownloadShelf(); - virtual void ShowRepostFormWarningDialog(TabContents* tab_contents); + Profile* profile) OVERRIDE; + virtual void ToggleBookmarkBar() OVERRIDE; + virtual void ShowAboutChromeDialog() OVERRIDE; + virtual void ShowUpdateChromeDialog() OVERRIDE; + virtual void ShowTaskManager() OVERRIDE; + virtual void ShowBackgroundPages() OVERRIDE; + virtual void ShowBookmarkBubble(const GURL& url, bool already_bookmarked) + OVERRIDE; + // TODO(beng): Not an override, move somewhere else. + void SetDownloadShelfVisible(bool visible); + virtual bool IsDownloadShelfVisible() const OVERRIDE; + virtual DownloadShelf* GetDownloadShelf() OVERRIDE; + virtual void ShowRepostFormWarningDialog(TabContents* tab_contents) OVERRIDE; virtual void ShowContentSettingsWindow(ContentSettingsType content_type, - Profile* profile); - virtual void ShowCollectedCookiesDialog(TabContents* tab_contents); - virtual void ShowProfileErrorDialog(int message_id); - virtual void ShowThemeInstallBubble(); - virtual void ConfirmBrowserCloseWithPendingDownloads(); + Profile* profile) OVERRIDE; + virtual void ShowCollectedCookiesDialog(TabContents* tab_contents) OVERRIDE; + virtual void ShowProfileErrorDialog(int message_id) OVERRIDE; + virtual void ShowThemeInstallBubble() OVERRIDE; + virtual void ConfirmBrowserCloseWithPendingDownloads() OVERRIDE; virtual void ShowHTMLDialog(HtmlDialogUIDelegate* delegate, - gfx::NativeWindow parent_window); - virtual void UserChangedTheme(); - virtual int GetExtraRenderViewHeight() const; - virtual void TabContentsFocused(TabContents* source); + gfx::NativeWindow parent_window) OVERRIDE; + virtual void UserChangedTheme() OVERRIDE; + virtual int GetExtraRenderViewHeight() const OVERRIDE; + virtual void TabContentsFocused(TabContents* source) OVERRIDE; virtual void ShowPageInfo(Profile* profile, const GURL& url, const NavigationEntry::SSLStatus& ssl, - bool show_history); - virtual void ShowAppMenu(); + bool show_history) OVERRIDE; + virtual void ShowAppMenu() OVERRIDE; virtual bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, - bool* is_keyboard_shortcut); - virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event); - virtual void ShowCreateWebAppShortcutsDialog(TabContents* tab_contents); - virtual void ShowCreateChromeAppShortcutsDialog(Profile*, - const Extension* app); - virtual void Cut(); - virtual void Copy(); - virtual void Paste(); - virtual void ToggleTabStripMode(); - virtual void PrepareForInstant(); - virtual void ShowInstant(TabContents* preview_contents); - virtual void HideInstant(bool instant_is_active); - virtual gfx::Rect GetInstantBounds(); - + bool* is_keyboard_shortcut) OVERRIDE; + virtual void HandleKeyboardEvent(const NativeWebKeyboardEvent& event) + OVERRIDE; + virtual void ShowCreateWebAppShortcutsDialog(TabContents* tab_contents) + OVERRIDE; + virtual void ShowCreateChromeAppShortcutsDialog( + Profile*, const Extension* app) OVERRIDE; + virtual void Cut() OVERRIDE; + virtual void Copy() OVERRIDE; + virtual void Paste() OVERRIDE; + virtual void ToggleTabStripMode() OVERRIDE; + virtual void PrepareForInstant() OVERRIDE; + virtual void ShowInstant(TabContents* preview_contents) OVERRIDE; + virtual void HideInstant(bool instant_is_active) OVERRIDE; + virtual gfx::Rect GetInstantBounds() OVERRIDE; #if defined(OS_CHROMEOS) - virtual void ShowKeyboardOverlay(gfx::NativeWindow owning_window); + virtual void ShowKeyboardOverlay(gfx::NativeWindow owning_window) OVERRIDE; #endif // Overridden from BrowserWindowTesting: - virtual BookmarkBarView* GetBookmarkBarView() const; - virtual LocationBarView* GetLocationBarView() const; - virtual views::View* GetTabContentsContainerView() const; - virtual views::View* GetSidebarContainerView() const; - virtual ToolbarView* GetToolbarView() const; + virtual BookmarkBarView* GetBookmarkBarView() const OVERRIDE; + virtual LocationBarView* GetLocationBarView() const OVERRIDE; + virtual views::View* GetTabContentsContainerView() const OVERRIDE; + virtual views::View* GetSidebarContainerView() const OVERRIDE; + virtual ToolbarView* GetToolbarView() const OVERRIDE; // Overridden from NotificationObserver: virtual void Observe(NotificationType type, const NotificationSource& source, - const NotificationDetails& details); + const NotificationDetails& details) OVERRIDE; // Overridden from TabStripModelObserver: - virtual void TabDetachedAt(TabContentsWrapper* contents, int index); - virtual void TabDeselected(TabContentsWrapper* contents); + virtual void TabDetachedAt(TabContentsWrapper* contents, int index) OVERRIDE; + virtual void TabDeselected(TabContentsWrapper* contents) OVERRIDE; virtual void TabSelectedAt(TabContentsWrapper* old_contents, TabContentsWrapper* new_contents, int index, - bool user_gesture); + bool user_gesture) OVERRIDE; virtual void TabReplacedAt(TabStripModel* tab_strip_model, TabContentsWrapper* old_contents, TabContentsWrapper* new_contents, - int index); - virtual void TabStripEmpty(); + int index) OVERRIDE; + virtual void TabStripEmpty() OVERRIDE; // Overridden from ui::SimpleMenuModel::Delegate: - virtual bool IsCommandIdChecked(int command_id) const; - virtual bool IsCommandIdEnabled(int command_id) const; - virtual bool GetAcceleratorForCommandId(int command_id, - ui::Accelerator* accelerator); - virtual bool IsItemForCommandIdDynamic(int command_id) const; - virtual string16 GetLabelForCommandId(int command_id) const; - virtual void ExecuteCommand(int command_id); + virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; + virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; + virtual bool GetAcceleratorForCommandId( + int command_id, ui::Accelerator* accelerator) OVERRIDE; + virtual bool IsItemForCommandIdDynamic(int command_id) const OVERRIDE; + virtual string16 GetLabelForCommandId(int command_id) const OVERRIDE; + virtual void ExecuteCommand(int command_id) OVERRIDE; // Overridden from views::WindowDelegate: - virtual bool CanResize() const; - virtual bool CanMaximize() const; - virtual bool IsModal() const; - virtual std::wstring GetWindowTitle() const; - virtual std::wstring GetAccessibleWindowTitle() const; - virtual views::View* GetInitiallyFocusedView(); - virtual bool ShouldShowWindowTitle() const; - virtual SkBitmap GetWindowAppIcon(); - virtual SkBitmap GetWindowIcon(); - virtual bool ShouldShowWindowIcon() const; - virtual bool ExecuteWindowsCommand(int command_id); - virtual std::wstring GetWindowName() const; + virtual bool CanResize() const OVERRIDE; + virtual bool CanMaximize() const OVERRIDE; + virtual bool CanActivate() const OVERRIDE; + virtual bool IsModal() const OVERRIDE; + virtual std::wstring GetWindowTitle() const OVERRIDE; + virtual std::wstring GetAccessibleWindowTitle() const OVERRIDE; + virtual views::View* GetInitiallyFocusedView() OVERRIDE; + virtual bool ShouldShowWindowTitle() const OVERRIDE; + virtual SkBitmap GetWindowAppIcon() OVERRIDE; + virtual SkBitmap GetWindowIcon() OVERRIDE; + virtual bool ShouldShowWindowIcon() const OVERRIDE; + virtual bool ExecuteWindowsCommand(int command_id) OVERRIDE; + virtual std::wstring GetWindowName() const OVERRIDE; virtual void SaveWindowPlacement(const gfx::Rect& bounds, - bool maximized); - virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const; - virtual bool GetSavedMaximizedState(bool* maximized) const; - virtual views::View* GetContentsView(); - virtual views::ClientView* CreateClientView(views::Window* window); + bool maximized) OVERRIDE; + virtual bool GetSavedWindowBounds(gfx::Rect* bounds) const OVERRIDE; + virtual bool GetSavedMaximizedState(bool* maximized) const OVERRIDE; + virtual views::View* GetContentsView() OVERRIDE; + virtual views::ClientView* CreateClientView(views::Window* window) OVERRIDE; + virtual void OnWindowActivate(bool active) OVERRIDE; // Overridden from views::ClientView: - virtual bool CanClose(); - virtual int NonClientHitTest(const gfx::Point& point); - virtual gfx::Size GetMinimumSize(); + virtual bool CanClose() OVERRIDE; + virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE; + virtual gfx::Size GetMinimumSize() OVERRIDE; // InfoBarContainer::Delegate overrides - virtual void InfoBarContainerSizeChanged(bool is_animating); + virtual void InfoBarContainerSizeChanged(bool is_animating) OVERRIDE; // views::SingleSplitView::Observer overrides: - virtual bool SplitHandleMoved(views::SingleSplitView* view); + virtual bool SplitHandleMoved(views::SingleSplitView* view) OVERRIDE; protected: // Appends to |toolbars| a pointer to each AccessiblePaneView that @@ -400,14 +402,14 @@ class BrowserView : public BrowserBubbleHost, } // Overridden from views::View: - virtual std::string GetClassName() const; - virtual void Layout(); - virtual void PaintChildren(gfx::Canvas* canvas); + virtual std::string GetClassName() const OVERRIDE; + virtual void Layout() OVERRIDE; + virtual void PaintChildren(gfx::Canvas* canvas) OVERRIDE; virtual void ViewHierarchyChanged(bool is_add, views::View* parent, - views::View* child); - virtual void ChildPreferredSizeChanged(View* child); - virtual AccessibilityTypes::Role GetAccessibleRole(); + views::View* child) OVERRIDE; + virtual void ChildPreferredSizeChanged(View* child) OVERRIDE; + virtual AccessibilityTypes::Role GetAccessibleRole() OVERRIDE; // Factory Methods. // Returns a new LayoutManager for this browser view. A subclass may diff --git a/views/window/native_window_delegate.h b/views/window/native_window_delegate.h index 8e3eb02..3807cfa 100644 --- a/views/window/native_window_delegate.h +++ b/views/window/native_window_delegate.h @@ -19,6 +19,9 @@ class NativeWindowDelegate { public: virtual ~NativeWindowDelegate() {} + // Returns true if the window can be activated. + virtual bool CanActivate() const = 0; + virtual bool IsInactiveRenderingDisabled() const = 0; virtual void EnableInactiveRendering() = 0; diff --git a/views/window/window.cc b/views/window/window.cc index ed321c1..6ac43f6 100644 --- a/views/window/window.cc +++ b/views/window/window.cc @@ -238,6 +238,10 @@ const Widget* Window::AsWidget() const { //////////////////////////////////////////////////////////////////////////////// // Window, internal::NativeWindowDelegate implementation: +bool Window::CanActivate() const { + return window_delegate_->CanActivate(); +} + bool Window::IsInactiveRenderingDisabled() const { return disable_inactive_rendering_; } @@ -292,6 +296,7 @@ void Window::OnNativeWindowCreated(const gfx::Rect& bounds) { void Window::OnNativeWindowActivationChanged(bool active) { if (!active) SaveWindowPosition(); + window_delegate_->OnWindowActivate(active); } void Window::OnNativeWindowDestroying() { diff --git a/views/window/window.h b/views/window/window.h index 5bd270b..fc9f3a5 100644 --- a/views/window/window.h +++ b/views/window/window.h @@ -202,6 +202,7 @@ class Window : public internal::NativeWindowDelegate { } // Overridden from NativeWindowDelegate: + virtual bool CanActivate() const OVERRIDE; virtual bool IsInactiveRenderingDisabled() const OVERRIDE; virtual void EnableInactiveRendering() OVERRIDE; virtual bool IsModal() const OVERRIDE; diff --git a/views/window/window_delegate.cc b/views/window/window_delegate.cc index aa710ee..843fc70 100644 --- a/views/window/window_delegate.cc +++ b/views/window/window_delegate.cc @@ -28,6 +28,10 @@ bool WindowDelegate::CanMaximize() const { return false; } +bool WindowDelegate::CanActivate() const { + return true; +} + bool WindowDelegate::IsModal() const { return false; } diff --git a/views/window/window_delegate.h b/views/window/window_delegate.h index e73a7fa..0e69e30 100644 --- a/views/window/window_delegate.h +++ b/views/window/window_delegate.h @@ -46,6 +46,9 @@ class WindowDelegate { // Returns true if the window can ever be maximized. virtual bool CanMaximize() const; + // Returns true if the window can be activated. + virtual bool CanActivate() const; + // Returns true if the dialog should be displayed modally to the window that // opened it. Only windows with WindowType == DIALOG can be modal. virtual bool IsModal() const; @@ -113,6 +116,9 @@ class WindowDelegate { // this time if necessary. virtual void DeleteDelegate() {} + // Called when the window's activation state changes. + virtual void OnWindowActivate(bool active) {} + // Returns the View that is contained within this Window. virtual View* GetContentsView(); diff --git a/views/window/window_gtk.cc b/views/window/window_gtk.cc index 5e625a6..cfd393d 100644 --- a/views/window/window_gtk.cc +++ b/views/window/window_gtk.cc @@ -218,6 +218,11 @@ gboolean WindowGtk::OnLeaveNotify(GtkWidget* widget, GdkEventCrossing* event) { return WidgetGtk::OnLeaveNotify(widget, event); } +void WindowGtk::IsActiveChanged() { + WidgetGtk::IsActiveChanged(); + delegate_->OnNativeWindowActivationChanged(IsActive()); +} + void WindowGtk::SetInitialFocus() { View* v = GetWindow()->window_delegate()->GetInitiallyFocusedView(); if (v) { diff --git a/views/window/window_gtk.h b/views/window/window_gtk.h index 5e9915a..60c9b4b 100644 --- a/views/window/window_gtk.h +++ b/views/window/window_gtk.h @@ -41,6 +41,7 @@ class WindowGtk : public WidgetGtk, public NativeWindow, public Window { virtual gboolean OnWindowStateEvent(GtkWidget* widget, GdkEventWindowState* event); virtual gboolean OnLeaveNotify(GtkWidget* widget, GdkEventCrossing* event); + virtual void IsActiveChanged(); virtual void SetInitialFocus(); protected: diff --git a/views/window/window_win.cc b/views/window/window_win.cc index 1b2e648..863c56a 100644 --- a/views/window/window_win.cc +++ b/views/window/window_win.cc @@ -368,10 +368,6 @@ int WindowWin::GetShowState() const { /////////////////////////////////////////////////////////////////////////////// // WindowWin, WidgetWin overrides: -void WindowWin::OnActivate(UINT action, BOOL minimized, HWND window) { - delegate_->OnNativeWindowActivationChanged(action == WA_ACTIVE); -} - void WindowWin::OnActivateApp(BOOL active, DWORD thread_id) { if (!active && thread_id != GetCurrentThreadId()) { // Another application was activated, we should reset any state that @@ -471,6 +467,11 @@ void WindowWin::OnInitMenu(HMENU menu) { !is_minimized); } +LRESULT WindowWin::OnMouseActivate(UINT message, WPARAM w_param, + LPARAM l_param) { + return delegate_->CanActivate() ? MA_ACTIVATE : MA_NOACTIVATEANDEAT; +} + LRESULT WindowWin::OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param) { if (message == WM_RBUTTONUP) { if (is_right_mouse_pressed_on_caption_) { @@ -501,7 +502,11 @@ LRESULT WindowWin::OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param) { LRESULT WindowWin::OnNCActivate(BOOL active) { + if (!delegate_->CanActivate()) + return TRUE; + is_active_ = !!active; + delegate_->OnNativeWindowActivationChanged(is_active_); // The frame may need to redraw as a result of the activation change. // We can get WM_NCACTIVATE before we're actually visible. If we're not @@ -514,6 +519,7 @@ LRESULT WindowWin::OnNCActivate(BOOL active) { bool inactive_rendering_disabled = delegate_->IsInactiveRenderingDisabled(); if (IsActive()) delegate_->EnableInactiveRendering(); + return CallDefaultNCActivateHandler(inactive_rendering_disabled || active); } diff --git a/views/window/window_win.h b/views/window/window_win.h index acb001e..dbe8ad2 100644 --- a/views/window/window_win.h +++ b/views/window/window_win.h @@ -91,7 +91,6 @@ class WindowWin : public WidgetWin, virtual int GetShowState() const; // Overridden from WidgetWin: - virtual void OnActivate(UINT action, BOOL minimized, HWND window) OVERRIDE; virtual void OnActivateApp(BOOL active, DWORD thread_id) OVERRIDE; virtual LRESULT OnAppCommand(HWND window, short app_command, @@ -108,6 +107,8 @@ class WindowWin : public WidgetWin, virtual void OnFinalMessage(HWND window) OVERRIDE; virtual void OnGetMinMaxInfo(MINMAXINFO* minmax_info) OVERRIDE; virtual void OnInitMenu(HMENU menu) OVERRIDE; + virtual LRESULT OnMouseActivate(UINT message, WPARAM w_param, LPARAM l_param) + OVERRIDE; virtual LRESULT OnMouseRange(UINT message, WPARAM w_param, LPARAM l_param) OVERRIDE; |