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

Unified Diff: ash/wm/window_state.cc

Issue 68033003: Undocks window first before side-snapping bounds (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Undocks window first before side-snapping bounds (comments) Created 7 years, 1 month 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
« no previous file with comments | « ash/wm/window_state.h ('k') | ash/wm/workspace/workspace_layout_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/wm/window_state.cc
diff --git a/ash/wm/window_state.cc b/ash/wm/window_state.cc
index 1a06a58da1bb0a0b876bb2c64457d10d234feab1..4e603f838fcbc0fc7744660f2da059948a6f2c2a 100644
--- a/ash/wm/window_state.cc
+++ b/ash/wm/window_state.cc
@@ -136,7 +136,7 @@ void WindowState::SnapLeft(const gfx::Rect& bounds) {
}
void WindowState::SnapRight(const gfx::Rect& bounds) {
- SnapWindow(SHOW_TYPE_LEFT_SNAPPED, bounds);
+ SnapWindow(SHOW_TYPE_RIGHT_SNAPPED, bounds);
varkha 2013/11/20 00:11:13 We did not really use this show type so everything
}
void WindowState::Minimize() {
@@ -244,6 +244,20 @@ void WindowState::SetTrackedByWorkspace(bool tracked_by_workspace) {
OnTrackedByWorkspaceChanged(this, old));
}
+void WindowState::SetWindowShowTypeUnsnapped() {
+ if (window_show_type_ != SHOW_TYPE_LEFT_SNAPPED &&
+ window_show_type_ != SHOW_TYPE_RIGHT_SNAPPED) {
+ return;
+ }
+ window_show_type_ = SHOW_TYPE_NORMAL;
+}
+
+void WindowState::SetBoundsChangedByUser(bool bounds_changed_by_user) {
+ bounds_changed_by_user_ = bounds_changed_by_user;
+ if (bounds_changed_by_user_)
+ SetWindowShowTypeUnsnapped();
+}
+
void WindowState::OnWindowPropertyChanged(aura::Window* window,
const void* key,
intptr_t old) {
@@ -265,6 +279,13 @@ void WindowState::OnWindowDestroying(aura::Window* window) {
void WindowState::SnapWindow(WindowShowType left_or_right,
const gfx::Rect& bounds) {
+ DCHECK(left_or_right == SHOW_TYPE_LEFT_SNAPPED ||
+ left_or_right == SHOW_TYPE_RIGHT_SNAPPED);
+ WindowShowType old_type = window_show_type_;
+ window_show_type_ = left_or_right;
+ FOR_EACH_OBSERVER(
+ WindowStateObserver, observer_list_,
+ OnWindowShowTypeChanged(this, old_type));
if (IsMaximizedOrFullscreen()) {
// Before we can set the bounds we need to restore the window.
// Restoring the window will set the window to its restored bounds.
@@ -280,9 +301,6 @@ void WindowState::SnapWindow(WindowShowType left_or_right,
} else {
window_->SetBounds(bounds);
}
- DCHECK(left_or_right == SHOW_TYPE_LEFT_SNAPPED ||
- left_or_right == SHOW_TYPE_RIGHT_SNAPPED);
- window_show_type_ = left_or_right;
}
WindowState* GetActiveWindowState() {
« no previous file with comments | « ash/wm/window_state.h ('k') | ash/wm/workspace/workspace_layout_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698