Commit 34b17f5e authored by Avery Musbach's avatar Avery Musbach Committed by Commit Bot

split view: Stack divider below dragged window when the parents differ

Before the present CL, SplitViewDivider::OnWindowDragStarted checks if
the dragged window and the divider window have the same parent, and if
so, stacks the divider window below the dragged window. For when the
parents are different, there is no provision, and that is a problem as
shown in the video linked on https://crbug.com/1035984.

Fixed: 1035984
Change-Id: Ib5a5e628b59a87b55fc5369150b784d3004d86fa
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1979102Reviewed-by: default avatarXiaoqian Dai <xdai@chromium.org>
Commit-Queue: Avery Musbach <amusbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#727474}
parent 55ebc7db
......@@ -792,7 +792,7 @@ void SplitViewController::OnWindowDragStarted(aura::Window* dragged_window) {
// OnSnappedWindowDetached() may end split view mode.
if (split_view_divider_)
split_view_divider_->OnWindowDragStarted(dragged_window);
split_view_divider_->OnWindowDragStarted();
}
void SplitViewController::OnWindowDragEnded(
......
......@@ -344,15 +344,12 @@ void SplitViewDivider::RemoveObservedWindow(aura::Window* window) {
}
}
void SplitViewDivider::OnWindowDragStarted(aura::Window* dragged_window) {
void SplitViewDivider::OnWindowDragStarted() {
is_dragging_window_ = true;
SetAlwaysOnTop(false);
aura::Window* divider_window = divider_widget_->GetNativeWindow();
// If |divider_window| and |dragged_window| are siblings, then make sure that
// |divider_window| is stacked below |dragged_window|.
if (divider_window->parent() == dragged_window->parent())
divider_window->parent()->StackChildBelow(divider_window, dragged_window);
divider_window->parent()->StackChildAtBottom(divider_window);
}
void SplitViewDivider::OnWindowDragEnded() {
......
......@@ -70,7 +70,7 @@ class ASH_EXPORT SplitViewDivider : public aura::WindowObserver,
// Called when a window tab(s) are being dragged around the workspace. The
// divider should be placed beneath the dragged window during dragging.
void OnWindowDragStarted(aura::Window* dragged_window);
void OnWindowDragStarted();
void OnWindowDragEnded();
// aura::WindowObserver:
......
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