| 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 2b8bb77b0efb38e8ba29049cb196669f6ffdff98..eb5dd067822b015bd313fcb34c30eb42867f885c 100644
|
| --- a/chrome/browser/ui/views/tabs/tab_drag_controller.cc
|
| +++ b/chrome/browser/ui/views/tabs/tab_drag_controller.cc
|
| @@ -198,7 +198,6 @@ TabDragController::TabDragController()
|
| : event_source_(EVENT_SOURCE_MOUSE),
|
| source_tabstrip_(NULL),
|
| attached_tabstrip_(NULL),
|
| - host_desktop_type_(chrome::HOST_DESKTOP_TYPE_NATIVE),
|
| can_release_capture_(true),
|
| offset_to_width_ratio_(0),
|
| old_focused_view_id_(
|
| @@ -262,8 +261,6 @@ void TabDragController::Init(
|
| source_tabstrip_ = source_tabstrip;
|
| was_source_maximized_ = source_tabstrip->GetWidget()->IsMaximized();
|
| was_source_fullscreen_ = source_tabstrip->GetWidget()->IsFullscreen();
|
| - host_desktop_type_ = chrome::GetHostDesktopTypeForNativeView(
|
| - source_tabstrip->GetWidget()->GetNativeView());
|
| // Do not release capture when transferring capture between widgets on:
|
| // - Desktop Linux
|
| // Mouse capture is not synchronous on desktop Linux. Chrome makes
|
| @@ -271,11 +268,8 @@ void TabDragController::Init(
|
| // synchronous on desktop Linux, so use that.
|
| // - Ash
|
| // Releasing capture on Ash cancels gestures so avoid it.
|
| -#if defined(OS_LINUX)
|
| +#if defined(OS_LINUX) || defined(USE_ASH)
|
| can_release_capture_ = false;
|
| -#else
|
| - can_release_capture_ =
|
| - (host_desktop_type_ != chrome::HOST_DESKTOP_TYPE_ASH);
|
| #endif
|
| start_point_in_screen_ = gfx::Point(source_tab_offset, mouse_offset.y());
|
| views::View::ConvertPointToScreen(source_tab, &start_point_in_screen_);
|
| @@ -604,10 +598,10 @@ TabDragController::DragBrowserToNewTabStrip(
|
| // ReleaseCapture() is going to result in calling back to us (because it
|
| // results in a move). That'll cause all sorts of problems. Reset the
|
| // observer so we don't get notified and process the event.
|
| - if (host_desktop_type_ == chrome::HOST_DESKTOP_TYPE_ASH) {
|
| - move_loop_widget_->RemoveObserver(this);
|
| - move_loop_widget_ = NULL;
|
| - }
|
| +#if defined(USE_ASH)
|
| + move_loop_widget_->RemoveObserver(this);
|
| + move_loop_widget_ = nullptr;
|
| +#endif // USE_ASH
|
| views::Widget* browser_widget = GetAttachedBrowserWidget();
|
| // Need to release the drag controller before starting the move loop as it's
|
| // going to trigger capture lost, which cancels drag.
|
| @@ -1541,8 +1535,7 @@ void TabDragController::CompleteDrag() {
|
| void TabDragController::MaximizeAttachedWindow() {
|
| GetAttachedBrowserWidget()->Maximize();
|
| #if defined(USE_ASH)
|
| - if (was_source_fullscreen_ &&
|
| - host_desktop_type_ == chrome::HOST_DESKTOP_TYPE_ASH) {
|
| + if (was_source_fullscreen_) {
|
| // In fullscreen mode it is only possible to get here if the source
|
| // was in "immersive fullscreen" mode, so toggle it back on.
|
| ash::accelerators::ToggleFullscreen();
|
| @@ -1575,36 +1568,32 @@ void TabDragController::BringWindowUnderPointToFront(
|
| return;
|
|
|
| #if defined(USE_ASH)
|
| - if (host_desktop_type_ == chrome::HOST_DESKTOP_TYPE_ASH) {
|
| - // TODO(varkha): The code below ensures that the phantom drag widget
|
| - // is shown on top of browser windows. The code should be moved to ash/
|
| - // and the phantom should be able to assert its top-most state on its own.
|
| - // One strategy would be for DragWindowController to
|
| - // be able to observe stacking changes to the phantom drag widget's
|
| - // siblings in order to keep it on top. One way is to implement a
|
| - // notification that is sent to a window parent's observers when a
|
| - // stacking order is changed among the children of that same parent.
|
| - // Note that OnWindowStackingChanged is sent only to the child that is the
|
| - // argument of one of the Window::StackChildX calls and not to all its
|
| - // siblings affected by the stacking change.
|
| - aura::Window* browser_window = widget_window->GetNativeView();
|
| - // Find a topmost non-popup window and stack the recipient browser above
|
| - // it in order to avoid stacking the browser window on top of the phantom
|
| - // drag widget created by DragWindowController in a second display.
|
| - for (aura::Window::Windows::const_reverse_iterator it =
|
| - browser_window->parent()->children().rbegin();
|
| - it != browser_window->parent()->children().rend(); ++it) {
|
| - // If the iteration reached the recipient browser window then it is
|
| - // already topmost and it is safe to return with no stacking change.
|
| - if (*it == browser_window)
|
| - return;
|
| - if ((*it)->type() != ui::wm::WINDOW_TYPE_POPUP) {
|
| - widget_window->StackAbove(*it);
|
| - break;
|
| - }
|
| + // TODO(varkha): The code below ensures that the phantom drag widget
|
| + // is shown on top of browser windows. The code should be moved to ash/
|
| + // and the phantom should be able to assert its top-most state on its own.
|
| + // One strategy would be for DragWindowController to
|
| + // be able to observe stacking changes to the phantom drag widget's
|
| + // siblings in order to keep it on top. One way is to implement a
|
| + // notification that is sent to a window parent's observers when a
|
| + // stacking order is changed among the children of that same parent.
|
| + // Note that OnWindowStackingChanged is sent only to the child that is the
|
| + // argument of one of the Window::StackChildX calls and not to all its
|
| + // siblings affected by the stacking change.
|
| + aura::Window* browser_window = widget_window->GetNativeView();
|
| + // Find a topmost non-popup window and stack the recipient browser above
|
| + // it in order to avoid stacking the browser window on top of the phantom
|
| + // drag widget created by DragWindowController in a second display.
|
| + for (aura::Window::Windows::const_reverse_iterator it =
|
| + browser_window->parent()->children().rbegin();
|
| + it != browser_window->parent()->children().rend(); ++it) {
|
| + // If the iteration reached the recipient browser window then it is
|
| + // already topmost and it is safe to return with no stacking change.
|
| + if (*it == browser_window)
|
| + return;
|
| + if ((*it)->type() != ui::wm::WINDOW_TYPE_POPUP) {
|
| + widget_window->StackAbove(*it);
|
| + break;
|
| }
|
| - } else {
|
| - widget_window->StackAtTop();
|
| }
|
| #else
|
| widget_window->StackAtTop();
|
| @@ -1762,8 +1751,7 @@ Browser* TabDragController::CreateBrowserForDrag(
|
|
|
| gfx::Point TabDragController::GetCursorScreenPoint() {
|
| #if defined(USE_ASH)
|
| - if (host_desktop_type_ == chrome::HOST_DESKTOP_TYPE_ASH &&
|
| - event_source_ == EVENT_SOURCE_TOUCH &&
|
| + if (event_source_ == EVENT_SOURCE_TOUCH &&
|
| aura::Env::GetInstance()->is_touch_down()) {
|
| views::Widget* widget = GetAttachedBrowserWidget();
|
| DCHECK(widget);
|
|
|