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

Unified Diff: chrome/browser/ui/views/tabs/tab_drag_controller.cc

Issue 1156893008: Fixes tab dragging out of a window with maximzied bounds (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes tab dragging out of a window with maximzied bounds (test) Created 5 years, 6 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/tabs/tab_drag_controller.cc
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller.cc b/chrome/browser/ui/views/tabs/tab_drag_controller.cc
index 53e78b4301c955701ee2323282382206eb33c2e3..fe745e65426b42eff7496dff650644f57216f02c 100644
--- a/chrome/browser/ui/views/tabs/tab_drag_controller.cc
+++ b/chrome/browser/ui/views/tabs/tab_drag_controller.cc
@@ -77,6 +77,12 @@ const int kHorizontalMoveThreshold = 16; // Pixels.
// close enough to trigger moving.
const int kStackedDistance = 36;
+// Dragged window is forced to be a bit smaller than maximized bounds during a
msw 2015/06/05 17:20:51 nit: "Dragged windows are" or "A dragged window"
varkha 2015/06/05 17:55:28 Done.
+// drag. This prevents the dragged browser widget from getting maximized at
+// creation and makes it easier to drag tabs out of a restored window that had
+// maximized size.
+const int kMaximizedWindowInset = 10; // Pixels.
+
#if defined(USE_ASH)
void SetWindowPositionManaged(gfx::NativeWindow window, bool value) {
ash::wm::GetWindowState(window)->set_window_position_managed(value);
@@ -1640,6 +1646,19 @@ gfx::Rect TabDragController::CalculateDraggedBrowserBounds(
gfx::Point center(0, source->height() / 2);
views::View::ConvertPointToWidget(source, &center);
gfx::Rect new_bounds(source->GetWidget()->GetRestoredBounds());
+
+ // If the restore bounds is larger than work area make dragging window
msw 2015/06/05 17:20:51 nit: comma here "area," and "make the dragging"
msw 2015/06/05 17:20:51 ditto nit: comment redundancy
varkha 2015/06/05 17:55:28 Done (removed the original comment here in favour
+ // slightly smaller and behave as if it was maximized at the start of a drag.
+ gfx::Rect work_area =
+ screen_->GetDisplayNearestPoint(last_point_in_screen_).work_area();
+ if (new_bounds.size().width() >= work_area.size().width() &&
+ new_bounds.size().height() >= work_area.size().height()) {
+ new_bounds = work_area;
+ new_bounds.Inset(kMaximizedWindowInset, kMaximizedWindowInset,
+ kMaximizedWindowInset, kMaximizedWindowInset);
+ was_source_maximized_ = true;
+ }
+
if (source->GetWidget()->IsMaximized()) {
// If the restore bounds is really small, we don't want to honor it
// (dragging a really small window looks wrong), instead make sure the new

Powered by Google App Engine
This is Rietveld 408576698