Commit ee595583 authored by prasadt@chromium.org's avatar prasadt@chromium.org

Hide panels in presence of full screen app for windows.

Disabled timer to support full screen detection on Linux as we don't need it there.

BUG=102731
TEST=Manual steps in the bug report.


Review URL: http://codereview.chromium.org/8824019

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113553 0039d316-1c4b-4281-b951-d872f2087c98
parent 5424bba1
......@@ -67,6 +67,16 @@ void PanelBrowserView::Init() {
l10n_util::GetStringUTF16(IDS_PRODUCT_NAME));
}
void PanelBrowserView::Show() {
if (!panel_->manager()->is_full_screen())
BrowserView::Show();
}
void PanelBrowserView::ShowInactive() {
if (!panel_->manager()->is_full_screen())
BrowserView::ShowInactive();
}
void PanelBrowserView::Close() {
GetWidget()->RemoveObserver(this);
closed_ = true;
......@@ -362,11 +372,13 @@ bool PanelBrowserView::PreHandlePanelKeyboardEvent(
}
void PanelBrowserView::FullScreenModeChanged(bool is_full_screen) {
// TODO(prasadt): Enable this code.
// if (is_full_screen)
// HideThePanel.
// else
// ShowThePanel.
if (is_full_screen) {
if (frame()->IsVisible()) {
frame()->Hide();
}
} else {
ShowInactive();
}
}
void PanelBrowserView::HandlePanelKeyboardEvent(
......
......@@ -52,6 +52,8 @@ class PanelBrowserView : public BrowserView,
// Overridden from BrowserView:
virtual void Init() OVERRIDE;
virtual void Show() OVERRIDE;
virtual void ShowInactive() OVERRIDE;
virtual void Close() OVERRIDE;
virtual void Deactivate() OVERRIDE;
virtual bool CanResize() const OVERRIDE;
......
......@@ -367,6 +367,9 @@ bool PanelBrowserWindowGtk::PreHandlePanelKeyboardEvent(
void PanelBrowserWindowGtk::FullScreenModeChanged(bool is_full_screen) {
// Nothing to do here as z-order rules for panels ensures that they're below
// any app running in full screen mode.
// Full screen detection should not have been enabled for Linux.
NOTREACHED();
}
void PanelBrowserWindowGtk::HandlePanelKeyboardEvent(
......
......@@ -98,11 +98,16 @@ Panel* PanelManager::CreatePanel(Browser* browser) {
content::Source<Panel>(panel),
content::NotificationService::NoDetails());
// We don't enable full screen detection for Linux as z-order rules for
// panels on Linux ensures that they're below any app running in full screen
// mode.
#if defined(OS_WIN) || defined(OS_MACOSX)
if (num_panels() == 1) {
full_screen_mode_timer_.Start(FROM_HERE,
base::TimeDelta::FromMilliseconds(kFullScreenModeCheckIntervalMs),
this, &PanelManager::CheckFullScreenMode);
}
#endif
return panel;
}
......@@ -121,8 +126,10 @@ void PanelManager::CheckFullScreenMode() {
}
void PanelManager::Remove(Panel* panel) {
#if defined(OS_WIN) || defined(OS_MACOSX)
if (num_panels() == 1)
full_screen_mode_timer_.Stop();
#endif
if (panel_strip_->Remove(panel))
return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment