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

Unified Diff: ash/display/screen_position_controller.cc

Issue 106303005: Fix AdjustBoundsToEnsureWindowVisibility to work with non primary display bounds (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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
« no previous file with comments | « no previous file | ash/wm/dock/docked_window_layout_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« no previous file with comments | « no previous file | ash/wm/dock/docked_window_layout_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698