Index: ash/display/screen_position_controller.cc |
diff --git a/ash/display/screen_position_controller.cc b/ash/display/screen_position_controller.cc |
index 5b45b7c0aaab3c7bb3cf392c19443f3a0acb2ffc..9f17f684b6da7b9590974ddea7488543ede53341 100644 |
--- a/ash/display/screen_position_controller.cc |
+++ b/ash/display/screen_position_controller.cc |
@@ -11,6 +11,7 @@ |
#include "ash/wm/coordinate_conversion.h" |
#include "ash/wm/system_modal_container_layout_manager.h" |
#include "ash/wm/window_properties.h" |
+#include "ash/wm/window_state.h" |
#include "ui/aura/client/activation_client.h" |
#include "ui/aura/client/capture_client.h" |
#include "ui/aura/client/focus_client.h" |
@@ -193,6 +194,17 @@ void ScreenPositionController::SetBounds(aura::Window* window, |
if (active && focused != active) |
tracker.Add(active); |
+ window->parent()->RemoveChild(window); |
oshima
2014/01/10 04:54:02
I had to remove this because this was causing prob
varkha
2014/01/10 05:44:02
Still lgtm.
|
+ |
+ // Set new bounds now so that the container's layout manager |
+ // can adjust the bounds if necessary. |
+ gfx::Point origin = bounds.origin(); |
+ const gfx::Point display_origin = display.bounds().origin(); |
+ origin.Offset(-display_origin.x(), -display_origin.y()); |
+ gfx::Rect new_bounds = gfx::Rect(origin, bounds.size()); |
+ |
+ window->SetBounds(new_bounds); |
+ |
dst_container->AddChild(window); |
MoveAllTransientChildrenToNewRoot(display, window); |
@@ -206,9 +218,13 @@ void ScreenPositionController::SetBounds(aura::Window* window, |
} else if (tracker.Contains(active)) { |
activation_client->ActivateWindow(active); |
} |
+ // TODO(oshima): We should not have to update the bounds again |
+ // below in theory, but we currently do need as there is a code |
+ // that assumes that the bounds will never be overridden by the |
+ // layout mananger. We should have more explicit control how |
+ // constraints are applied by the layout manager. |
} |
} |
- |
gfx::Point origin(bounds.origin()); |
const gfx::Point display_origin = Shell::GetScreen()->GetDisplayNearestWindow( |
window).bounds().origin(); |