Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(683)

Unified Diff: chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc

Issue 1056793006: [Docking] Persists docked state on Chrome OS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: [Docking] Makes docked state persistent on Chrome OS Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}
« no previous file with comments | « chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.h ('k') | chrome/common/extensions/api/windows.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698