OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 5 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
6 | 6 |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include <windowsx.h> | 8 #include <windowsx.h> |
9 #endif | 9 #endif |
10 | 10 |
(...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1120 // is maximized or fullscreen, we know there are no other tabbed browsers the | 1120 // is maximized or fullscreen, we know there are no other tabbed browsers the |
1121 // user can drag to. | 1121 // user can drag to. |
1122 const chrome::HostDesktopType host_desktop_type = | 1122 const chrome::HostDesktopType host_desktop_type = |
1123 chrome::GetHostDesktopTypeForNativeView(widget->GetNativeView()); | 1123 chrome::GetHostDesktopTypeForNativeView(widget->GetNativeView()); |
1124 if (host_desktop_type == chrome::HOST_DESKTOP_TYPE_ASH && | 1124 if (host_desktop_type == chrome::HOST_DESKTOP_TYPE_ASH && |
1125 (widget->IsMaximized() || widget->IsFullscreen()) && | 1125 (widget->IsMaximized() || widget->IsFullscreen()) && |
1126 static_cast<int>(tabs.size()) == tab_count() && | 1126 static_cast<int>(tabs.size()) == tab_count() && |
1127 gfx::Screen::GetScreenFor(widget->GetNativeView())->GetNumDisplays() == 1) | 1127 gfx::Screen::GetScreenFor(widget->GetNativeView())->GetNumDisplays() == 1) |
1128 detach_behavior = TabDragController::NOT_DETACHABLE; | 1128 detach_behavior = TabDragController::NOT_DETACHABLE; |
1129 | 1129 |
| 1130 #if defined(OS_CHROMEOS) |
| 1131 // TODO(wittman): This is a temporary workaround to avoid crbug.com/275274 and |
| 1132 // crbug.com/274856 in M30 and should be reverted after merge, as we have a |
| 1133 // solution to these bugs in trunk. |
| 1134 // |
| 1135 // Don't allow detaching if the tab has a WebContentsModalDialogView opened. |
| 1136 if (controller()->IsTabShowingWebViewModalDialog(GetModelIndexOfTab(tab))) |
| 1137 detach_behavior = TabDragController::NOT_DETACHABLE; |
| 1138 #endif |
| 1139 |
1130 #if defined(OS_WIN) | 1140 #if defined(OS_WIN) |
1131 // It doesn't make sense to drag tabs out on Win8's single window Metro mode. | 1141 // It doesn't make sense to drag tabs out on Win8's single window Metro mode. |
1132 if (win8::IsSingleWindowMetroMode()) | 1142 if (win8::IsSingleWindowMetroMode()) |
1133 detach_behavior = TabDragController::NOT_DETACHABLE; | 1143 detach_behavior = TabDragController::NOT_DETACHABLE; |
1134 #endif | 1144 #endif |
1135 // Gestures don't automatically do a capture. We don't allow multiple drags at | 1145 // Gestures don't automatically do a capture. We don't allow multiple drags at |
1136 // the same time, so we explicitly capture. | 1146 // the same time, so we explicitly capture. |
1137 if (event.type() == ui::ET_GESTURE_BEGIN) | 1147 if (event.type() == ui::ET_GESTURE_BEGIN) |
1138 widget->SetCapture(this); | 1148 widget->SetCapture(this); |
1139 drag_controller_.reset(new TabDragController); | 1149 drag_controller_.reset(new TabDragController); |
(...skipping 1572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2712 if (!adjust_layout_) | 2722 if (!adjust_layout_) |
2713 return false; | 2723 return false; |
2714 | 2724 |
2715 #if !defined(OS_CHROMEOS) | 2725 #if !defined(OS_CHROMEOS) |
2716 if (ui::GetDisplayLayout() != ui::LAYOUT_TOUCH) | 2726 if (ui::GetDisplayLayout() != ui::LAYOUT_TOUCH) |
2717 return false; | 2727 return false; |
2718 #endif | 2728 #endif |
2719 | 2729 |
2720 return true; | 2730 return true; |
2721 } | 2731 } |
OLD | NEW |