Index: chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc |
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc |
index 8535c131c8a4b7993968358e439958d7c54eab6f..805c46e084ec1d1a7df6c147cd17735d8b956149 100644 |
--- a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc |
+++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc |
@@ -118,6 +118,19 @@ ChromeNativeAppWindowViewsAura::ChromeNativeAppWindowViewsAura() { |
ChromeNativeAppWindowViewsAura::~ChromeNativeAppWindowViewsAura() { |
} |
+void ChromeNativeAppWindowViewsAura::InitializeWindow( |
+ AppWindow* app_window, |
+ const AppWindow::CreateParams& create_params) { |
+ ChromeNativeAppWindowViews::InitializeWindow(app_window, create_params); |
+#if defined(OS_CHROMEOS) |
+ // Restore docked state on Chrome OS and ignore it elsewhere. |
+ if (create_params.state == ui::SHOW_STATE_DOCKED) { |
+ widget()->GetNativeWindow()->SetProperty(aura::client::kShowStateKey, |
+ create_params.state); |
+ } |
+#endif |
+} |
+ |
void ChromeNativeAppWindowViewsAura::OnBeforeWidgetInit( |
const AppWindow::CreateParams& create_params, |
views::Widget::InitParams* init_params, |
@@ -151,7 +164,11 @@ void ChromeNativeAppWindowViewsAura::OnBeforePanelWidgetInit( |
views::Widget* widget) { |
ChromeNativeAppWindowViews::OnBeforePanelWidgetInit(init_params, widget); |
- if (ash::Shell::HasInstance()) { |
+ typedef AppWindow::BoundsSpecification BoundsSpecification; |
oshima
2015/04/23 17:26:06
using BoundsSpecification = AppWindow::BoundsSpeci
varkha
2015/04/24 16:17:33
Done. Here and elsewhere.
|
+ bool position_specified = |
+ init_params->bounds.x() != BoundsSpecification::kUnspecifiedPosition && |
+ init_params->bounds.y() != BoundsSpecification::kUnspecifiedPosition; |
+ if (ash::Shell::HasInstance() && !position_specified) { |
// Open a new panel on the target root. |
init_params->bounds = ash::ScreenUtil::ConvertRectToScreen( |
ash::Shell::GetTargetRootWindow(), gfx::Rect(GetPreferredSize())); |
@@ -223,6 +240,10 @@ ui::WindowShowState ChromeNativeAppWindowViewsAura::GetRestoredState() const { |
} |
return ui::SHOW_STATE_FULLSCREEN; |
} |
+ if (widget()->GetNativeWindow()->GetProperty(aura::client::kShowStateKey) == |
+ ui::SHOW_STATE_DOCKED) { |
+ return ui::SHOW_STATE_DOCKED; |
+ } |
} |
// Whitelist states to return so that invalid and transient states |
// are not saved and used to restore windows when they are recreated. |
@@ -235,6 +256,7 @@ ui::WindowShowState ChromeNativeAppWindowViewsAura::GetRestoredState() const { |
case ui::SHOW_STATE_DEFAULT: |
case ui::SHOW_STATE_MINIMIZED: |
case ui::SHOW_STATE_INACTIVE: |
+ case ui::SHOW_STATE_DOCKED: |
case ui::SHOW_STATE_END: |
return ui::SHOW_STATE_NORMAL; |
} |