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

Side by Side Diff: chrome/browser/ui/views/tabs/tab_drag_controller.cc

Issue 669243002: MacViews: Get c/b/ui/views/tabs to build on Mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/ui/views/tabs/window_finder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_drag_controller.h" 5 #include "chrome/browser/ui/views/tabs/tab_drag_controller.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <set> 8 #include <set>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 20 matching lines...) Expand all
31 #include "extensions/browser/extension_function_dispatcher.h" 31 #include "extensions/browser/extension_function_dispatcher.h"
32 #include "ui/aura/env.h" 32 #include "ui/aura/env.h"
33 #include "ui/aura/window.h" 33 #include "ui/aura/window.h"
34 #include "ui/events/event_constants.h" 34 #include "ui/events/event_constants.h"
35 #include "ui/events/gestures/gesture_recognizer.h" 35 #include "ui/events/gestures/gesture_recognizer.h"
36 #include "ui/gfx/geometry/point_conversions.h" 36 #include "ui/gfx/geometry/point_conversions.h"
37 #include "ui/gfx/screen.h" 37 #include "ui/gfx/screen.h"
38 #include "ui/views/focus/view_storage.h" 38 #include "ui/views/focus/view_storage.h"
39 #include "ui/views/widget/root_view.h" 39 #include "ui/views/widget/root_view.h"
40 #include "ui/views/widget/widget.h" 40 #include "ui/views/widget/widget.h"
41 #include "ui/wm/core/coordinate_conversion.h"
42 #include "ui/wm/core/window_modality_controller.h"
43 41
44 #if defined(USE_ASH) 42 #if defined(USE_ASH)
45 #include "ash/accelerators/accelerator_commands.h" 43 #include "ash/accelerators/accelerator_commands.h"
46 #include "ash/shell.h" 44 #include "ash/shell.h"
47 #include "ash/wm/maximize_mode/maximize_mode_controller.h" 45 #include "ash/wm/maximize_mode/maximize_mode_controller.h"
48 #include "ash/wm/window_state.h" 46 #include "ash/wm/window_state.h"
47 #include "ui/wm/core/coordinate_conversion.h"
48 #endif
49
50 #if defined(USE_AURA)
51 #include "ui/wm/core/window_modality_controller.h"
49 #endif 52 #endif
50 53
51 using base::UserMetricsAction; 54 using base::UserMetricsAction;
52 using content::OpenURLParams; 55 using content::OpenURLParams;
53 using content::WebContents; 56 using content::WebContents;
54 57
55 // If non-null there is a drag underway. 58 // If non-null there is a drag underway.
56 static TabDragController* instance_ = NULL; 59 static TabDragController* instance_ = NULL;
57 60
58 namespace { 61 namespace {
(...skipping 28 matching lines...) Expand all
87 } 90 }
88 #else 91 #else
89 void SetWindowPositionManaged(gfx::NativeWindow window, bool value) { 92 void SetWindowPositionManaged(gfx::NativeWindow window, bool value) {
90 } 93 }
91 94
92 bool IsDockedOrSnapped(const TabStrip* tab_strip) { 95 bool IsDockedOrSnapped(const TabStrip* tab_strip) {
93 return false; 96 return false;
94 } 97 }
95 #endif 98 #endif
96 99
100 #if defined(USE_AURA)
101 gfx::NativeWindow GetModalTransient(gfx::NativeWindow window) {
102 return wm::GetModalTransient(window);
103 }
104 #else
105 gfx::NativeWindow GetModalTransient(gfx::NativeWindow window) {
106 NOTIMPLEMENTED();
107 return NULL;
108 }
109 #endif
110
97 // Returns true if |bounds| contains the y-coordinate |y|. The y-coordinate 111 // Returns true if |bounds| contains the y-coordinate |y|. The y-coordinate
98 // of |bounds| is adjusted by |vertical_adjustment|. 112 // of |bounds| is adjusted by |vertical_adjustment|.
99 bool DoesRectContainVerticalPointExpanded( 113 bool DoesRectContainVerticalPointExpanded(
100 const gfx::Rect& bounds, 114 const gfx::Rect& bounds,
101 int vertical_adjustment, 115 int vertical_adjustment,
102 int y) { 116 int y) {
103 int upper_threshold = bounds.bottom() + vertical_adjustment; 117 int upper_threshold = bounds.bottom() + vertical_adjustment;
104 int lower_threshold = bounds.y() - vertical_adjustment; 118 int lower_threshold = bounds.y() - vertical_adjustment;
105 return y >= lower_threshold && y <= upper_threshold; 119 return y >= lower_threshold && y <= upper_threshold;
106 } 120 }
107 121
108 // Adds |x_offset| to all the rectangles in |rects|. 122 // Adds |x_offset| to all the rectangles in |rects|.
109 void OffsetX(int x_offset, std::vector<gfx::Rect>* rects) { 123 void OffsetX(int x_offset, std::vector<gfx::Rect>* rects) {
110 if (x_offset == 0) 124 if (x_offset == 0)
111 return; 125 return;
112 126
113 for (size_t i = 0; i < rects->size(); ++i) 127 for (size_t i = 0; i < rects->size(); ++i)
114 (*rects)[i].set_x((*rects)[i].x() + x_offset); 128 (*rects)[i].set_x((*rects)[i].x() + x_offset);
115 } 129 }
116 130
117 // WidgetObserver implementation that resets the window position managed 131 // WidgetObserver implementation that resets the window position managed
118 // property on Show. 132 // property on Show.
119 // We're forced to do this here since BrowserFrameAsh resets the 'window 133 // We're forced to do this here since BrowserFrameAsh resets the 'window
120 // position managed' property during a show and we need the property set to 134 // position managed' property during a show and we need the property set to
121 // false before WorkspaceLayoutManager sees the visibility change. 135 // false before WorkspaceLayoutManager sees the visibility change.
122 class WindowPositionManagedUpdater : public views::WidgetObserver { 136 class WindowPositionManagedUpdater : public views::WidgetObserver {
123 public: 137 public:
124 virtual void OnWidgetVisibilityChanged(views::Widget* widget, 138 virtual void OnWidgetVisibilityChanged(views::Widget* widget,
125 bool visible) override { 139 bool visible) override {
126 SetWindowPositionManaged(widget->GetNativeView(), false); 140 SetWindowPositionManaged(widget->GetNativeWindow(), false);
127 } 141 }
128 }; 142 };
129 143
130 // EscapeTracker installs itself as a pre-target handler on aura::Env and runs a 144 // EscapeTracker installs itself as a pre-target handler on aura::Env and runs a
131 // callback when it receives the escape key. 145 // callback when it receives the escape key.
132 class EscapeTracker : public ui::EventHandler { 146 class EscapeTracker : public ui::EventHandler {
133 public: 147 public:
134 explicit EscapeTracker(const base::Closure& callback) 148 explicit EscapeTracker(const base::Closure& callback)
135 : escape_callback_(callback) { 149 : escape_callback_(callback) {
136 aura::Env::GetInstance()->AddPreTargetHandler(this); 150 aura::Env::GetInstance()->AddPreTargetHandler(this);
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 } 224 }
211 225
212 TabDragController::~TabDragController() { 226 TabDragController::~TabDragController() {
213 views::ViewStorage::GetInstance()->RemoveView(old_focused_view_id_); 227 views::ViewStorage::GetInstance()->RemoveView(old_focused_view_id_);
214 228
215 if (instance_ == this) 229 if (instance_ == this)
216 instance_ = NULL; 230 instance_ = NULL;
217 231
218 if (move_loop_widget_) { 232 if (move_loop_widget_) {
219 move_loop_widget_->RemoveObserver(this); 233 move_loop_widget_->RemoveObserver(this);
220 SetWindowPositionManaged(move_loop_widget_->GetNativeView(), true); 234 SetWindowPositionManaged(move_loop_widget_->GetNativeWindow(), true);
221 } 235 }
222 236
223 if (source_tabstrip_) 237 if (source_tabstrip_)
224 GetModel(source_tabstrip_)->RemoveObserver(this); 238 GetModel(source_tabstrip_)->RemoveObserver(this);
225 239
226 if (event_source_ == EVENT_SOURCE_TOUCH) { 240 if (event_source_ == EVENT_SOURCE_TOUCH) {
227 TabStrip* capture_tabstrip = attached_tabstrip_ ? 241 TabStrip* capture_tabstrip = attached_tabstrip_ ?
228 attached_tabstrip_ : source_tabstrip_; 242 attached_tabstrip_ : source_tabstrip_;
229 capture_tabstrip->GetWidget()->ReleaseCapture(); 243 capture_tabstrip->GetWidget()->ReleaseCapture();
230 } 244 }
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 // should really be done somewhere in capture change code and or inside the 615 // should really be done somewhere in capture change code and or inside the
602 // GR. But we currently do not have a consistent way for doing it that would 616 // GR. But we currently do not have a consistent way for doing it that would
603 // work in all cases. Hence this hack. 617 // work in all cases. Hence this hack.
604 ui::GestureRecognizer::Get()->TransferEventsTo( 618 ui::GestureRecognizer::Get()->TransferEventsTo(
605 browser_widget->GetNativeView(), 619 browser_widget->GetNativeView(),
606 target_tabstrip->GetWidget()->GetNativeView()); 620 target_tabstrip->GetWidget()->GetNativeView());
607 #endif 621 #endif
608 622
609 // The window is going away. Since the drag is still on going we don't want 623 // The window is going away. Since the drag is still on going we don't want
610 // that to effect the position of any windows. 624 // that to effect the position of any windows.
611 SetWindowPositionManaged(browser_widget->GetNativeView(), false); 625 SetWindowPositionManaged(browser_widget->GetNativeWindow(), false);
612 626
613 #if !defined(OS_LINUX) || defined(OS_CHROMEOS) 627 #if !defined(OS_LINUX) || defined(OS_CHROMEOS)
614 // EndMoveLoop is going to snap the window back to its original location. 628 // EndMoveLoop is going to snap the window back to its original location.
615 // Hide it so users don't see this. Hiding a window in Linux aura causes 629 // Hide it so users don't see this. Hiding a window in Linux aura causes
616 // it to lose capture so skip it. 630 // it to lose capture so skip it.
617 browser_widget->Hide(); 631 browser_widget->Hide();
618 #endif 632 #endif
619 browser_widget->EndMoveLoop(); 633 browser_widget->EndMoveLoop();
620 634
621 // Ideally we would always swap the tabs now, but on non-ash Windows, it 635 // Ideally we would always swap the tabs now, but on non-ash Windows, it
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 gfx::Rect tabstrip_bounds = GetViewScreenBounds(attached_tabstrip_); 833 gfx::Rect tabstrip_bounds = GetViewScreenBounds(attached_tabstrip_);
820 if (DoesRectContainVerticalPointExpanded(tabstrip_bounds, 834 if (DoesRectContainVerticalPointExpanded(tabstrip_bounds,
821 kTouchVerticalDetachMagnetism, 835 kTouchVerticalDetachMagnetism,
822 point_in_screen.y())) 836 point_in_screen.y()))
823 return attached_tabstrip_; 837 return attached_tabstrip_;
824 } 838 }
825 gfx::NativeWindow local_window = 839 gfx::NativeWindow local_window =
826 GetLocalProcessWindow(point_in_screen, is_dragging_window_); 840 GetLocalProcessWindow(point_in_screen, is_dragging_window_);
827 // Do not allow dragging into a window with a modal dialog, it causes a weird 841 // Do not allow dragging into a window with a modal dialog, it causes a weird
828 // behavior. See crbug.com/336691 842 // behavior. See crbug.com/336691
829 if (!wm::GetModalTransient(local_window)) { 843 if (!GetModalTransient(local_window)) {
830 TabStrip* tab_strip = GetTabStripForWindow(local_window); 844 TabStrip* tab_strip = GetTabStripForWindow(local_window);
831 if (tab_strip && DoesTabStripContain(tab_strip, point_in_screen)) 845 if (tab_strip && DoesTabStripContain(tab_strip, point_in_screen))
832 return tab_strip; 846 return tab_strip;
833 } 847 }
834 848
835 return is_dragging_window_ ? attached_tabstrip_ : NULL; 849 return is_dragging_window_ ? attached_tabstrip_ : NULL;
836 } 850 }
837 851
838 TabStrip* TabDragController::GetTabStripForWindow(gfx::NativeWindow window) { 852 TabStrip* TabDragController::GetTabStripForWindow(gfx::NativeWindow window) {
839 if (!window) 853 if (!window)
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
1330 DCHECK(active_); 1344 DCHECK(active_);
1331 active_ = false; 1345 active_ = false;
1332 1346
1333 bring_to_front_timer_.Stop(); 1347 bring_to_front_timer_.Stop();
1334 move_stacked_timer_.Stop(); 1348 move_stacked_timer_.Stop();
1335 1349
1336 if (is_dragging_window_) { 1350 if (is_dragging_window_) {
1337 waiting_for_run_loop_to_exit_ = true; 1351 waiting_for_run_loop_to_exit_ = true;
1338 1352
1339 if (type == NORMAL || (type == TAB_DESTROYED && drag_data_.size() > 1)) { 1353 if (type == NORMAL || (type == TAB_DESTROYED && drag_data_.size() > 1)) {
1340 SetWindowPositionManaged(GetAttachedBrowserWidget()->GetNativeView(), 1354 SetWindowPositionManaged(GetAttachedBrowserWidget()->GetNativeWindow(),
1341 true); 1355 true);
1342 } 1356 }
1343 1357
1344 // End the nested drag loop. 1358 // End the nested drag loop.
1345 GetAttachedBrowserWidget()->EndMoveLoop(); 1359 GetAttachedBrowserWidget()->EndMoveLoop();
1346 } 1360 }
1347 1361
1348 if (type != TAB_DESTROYED) { 1362 if (type != TAB_DESTROYED) {
1349 // We only finish up the drag if we were actually dragging. If start_drag_ 1363 // We only finish up the drag if we were actually dragging. If start_drag_
1350 // is false, the user just clicked and released and didn't move the mouse 1364 // is false, the user just clicked and released and didn't move the mouse
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1546 views::View* view) const { 1560 views::View* view) const {
1547 gfx::Point view_topleft; 1561 gfx::Point view_topleft;
1548 views::View::ConvertPointToScreen(view, &view_topleft); 1562 views::View::ConvertPointToScreen(view, &view_topleft);
1549 gfx::Rect view_screen_bounds = view->GetLocalBounds(); 1563 gfx::Rect view_screen_bounds = view->GetLocalBounds();
1550 view_screen_bounds.Offset(view_topleft.x(), view_topleft.y()); 1564 view_screen_bounds.Offset(view_topleft.x(), view_topleft.y());
1551 return view_screen_bounds; 1565 return view_screen_bounds;
1552 } 1566 }
1553 1567
1554 void TabDragController::BringWindowUnderPointToFront( 1568 void TabDragController::BringWindowUnderPointToFront(
1555 const gfx::Point& point_in_screen) { 1569 const gfx::Point& point_in_screen) {
1556 aura::Window* window = GetLocalProcessWindow(point_in_screen, true); 1570 gfx::NativeWindow window = GetLocalProcessWindow(point_in_screen, true);
1557 1571
1558 // Only bring browser windows to front - only windows with a TabStrip can 1572 // Only bring browser windows to front - only windows with a TabStrip can
1559 // be tab drag targets. 1573 // be tab drag targets.
1560 if (!GetTabStripForWindow(window)) 1574 if (!GetTabStripForWindow(window))
1561 return; 1575 return;
1562 1576
1563 if (window) { 1577 if (window) {
1564 views::Widget* widget_window = views::Widget::GetWidgetForNativeView( 1578 views::Widget* widget_window = views::Widget::GetWidgetForNativeWindow(
1565 window); 1579 window);
1566 if (!widget_window) 1580 if (!widget_window)
1567 return; 1581 return;
1568 1582
1583 #if defined(USE_ASH)
1569 if (host_desktop_type_ == chrome::HOST_DESKTOP_TYPE_ASH) { 1584 if (host_desktop_type_ == chrome::HOST_DESKTOP_TYPE_ASH) {
1570 // TODO(varkha): The code below ensures that the phantom drag widget 1585 // TODO(varkha): The code below ensures that the phantom drag widget
1571 // is shown on top of browser windows. The code should be moved to ash/ 1586 // is shown on top of browser windows. The code should be moved to ash/
1572 // and the phantom should be able to assert its top-most state on its own. 1587 // and the phantom should be able to assert its top-most state on its own.
1573 // One strategy would be for DragWindowController to 1588 // One strategy would be for DragWindowController to
1574 // be able to observe stacking changes to the phantom drag widget's 1589 // be able to observe stacking changes to the phantom drag widget's
1575 // siblings in order to keep it on top. One way is to implement a 1590 // siblings in order to keep it on top. One way is to implement a
1576 // notification that is sent to a window parent's observers when a 1591 // notification that is sent to a window parent's observers when a
1577 // stacking order is changed among the children of that same parent. 1592 // stacking order is changed among the children of that same parent.
1578 // Note that OnWindowStackingChanged is sent only to the child that is the 1593 // Note that OnWindowStackingChanged is sent only to the child that is the
(...skipping 11 matching lines...) Expand all
1590 if (*it == browser_window) 1605 if (*it == browser_window)
1591 return; 1606 return;
1592 if ((*it)->type() != ui::wm::WINDOW_TYPE_POPUP) { 1607 if ((*it)->type() != ui::wm::WINDOW_TYPE_POPUP) {
1593 widget_window->StackAbove(*it); 1608 widget_window->StackAbove(*it);
1594 break; 1609 break;
1595 } 1610 }
1596 } 1611 }
1597 } else { 1612 } else {
1598 widget_window->StackAtTop(); 1613 widget_window->StackAtTop();
1599 } 1614 }
1615 #else
1616 widget_window->StackAtTop();
1617 #endif
1600 1618
1601 // The previous call made the window appear on top of the dragged window, 1619 // The previous call made the window appear on top of the dragged window,
1602 // move the dragged window to the front. 1620 // move the dragged window to the front.
1603 if (is_dragging_window_) 1621 if (is_dragging_window_)
1604 attached_tabstrip_->GetWidget()->StackAtTop(); 1622 attached_tabstrip_->GetWidget()->StackAtTop();
1605 } 1623 }
1606 } 1624 }
1607 1625
1608 TabStripModel* TabDragController::GetModel( 1626 TabStripModel* TabDragController::GetModel(
1609 TabStrip* tabstrip) const { 1627 TabStrip* tabstrip) const {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1726 is_dragging_new_browser_ = true; 1744 is_dragging_new_browser_ = true;
1727 SetWindowPositionManaged(browser->window()->GetNativeWindow(), false); 1745 SetWindowPositionManaged(browser->window()->GetNativeWindow(), false);
1728 // If the window is created maximized then the bounds we supplied are ignored. 1746 // If the window is created maximized then the bounds we supplied are ignored.
1729 // We need to reset them again so they are honored. 1747 // We need to reset them again so they are honored.
1730 browser->window()->SetBounds(new_bounds); 1748 browser->window()->SetBounds(new_bounds);
1731 1749
1732 return browser; 1750 return browser;
1733 } 1751 }
1734 1752
1735 gfx::Point TabDragController::GetCursorScreenPoint() { 1753 gfx::Point TabDragController::GetCursorScreenPoint() {
1754 #if defined(USE_ASH)
1736 if (host_desktop_type_ == chrome::HOST_DESKTOP_TYPE_ASH && 1755 if (host_desktop_type_ == chrome::HOST_DESKTOP_TYPE_ASH &&
1737 event_source_ == EVENT_SOURCE_TOUCH && 1756 event_source_ == EVENT_SOURCE_TOUCH &&
1738 aura::Env::GetInstance()->is_touch_down()) { 1757 aura::Env::GetInstance()->is_touch_down()) {
1739 views::Widget* widget = GetAttachedBrowserWidget(); 1758 views::Widget* widget = GetAttachedBrowserWidget();
1740 DCHECK(widget); 1759 DCHECK(widget);
1741 aura::Window* widget_window = widget->GetNativeWindow(); 1760 aura::Window* widget_window = widget->GetNativeWindow();
1742 DCHECK(widget_window->GetRootWindow()); 1761 DCHECK(widget_window->GetRootWindow());
1743 gfx::PointF touch_point_f; 1762 gfx::PointF touch_point_f;
1744 bool got_touch_point = ui::GestureRecognizer::Get()-> 1763 bool got_touch_point = ui::GestureRecognizer::Get()->
1745 GetLastTouchPointForTarget(widget_window, &touch_point_f); 1764 GetLastTouchPointForTarget(widget_window, &touch_point_f);
1746 // TODO(tdresser): Switch to using gfx::PointF. See crbug.com/337824. 1765 // TODO(tdresser): Switch to using gfx::PointF. See crbug.com/337824.
1747 gfx::Point touch_point = gfx::ToFlooredPoint(touch_point_f); 1766 gfx::Point touch_point = gfx::ToFlooredPoint(touch_point_f);
1748 DCHECK(got_touch_point); 1767 DCHECK(got_touch_point);
1749 wm::ConvertPointToScreen(widget_window->GetRootWindow(), &touch_point); 1768 wm::ConvertPointToScreen(widget_window->GetRootWindow(), &touch_point);
1750 return touch_point; 1769 return touch_point;
1751 } 1770 }
1771 #endif
1752 1772
1753 return screen_->GetCursorScreenPoint(); 1773 return screen_->GetCursorScreenPoint();
1754 } 1774 }
1755 1775
1756 gfx::Vector2d TabDragController::GetWindowOffset( 1776 gfx::Vector2d TabDragController::GetWindowOffset(
1757 const gfx::Point& point_in_screen) { 1777 const gfx::Point& point_in_screen) {
1758 TabStrip* owning_tabstrip = attached_tabstrip_ ? 1778 TabStrip* owning_tabstrip = attached_tabstrip_ ?
1759 attached_tabstrip_ : source_tabstrip_; 1779 attached_tabstrip_ : source_tabstrip_;
1760 views::View* toplevel_view = owning_tabstrip->GetWidget()->GetContentsView(); 1780 views::View* toplevel_view = owning_tabstrip->GetWidget()->GetContentsView();
1761 1781
1762 gfx::Point point = point_in_screen; 1782 gfx::Point point = point_in_screen;
1763 views::View::ConvertPointFromScreen(toplevel_view, &point); 1783 views::View::ConvertPointFromScreen(toplevel_view, &point);
1764 return point.OffsetFromOrigin(); 1784 return point.OffsetFromOrigin();
1765 } 1785 }
1766 1786
1767 gfx::NativeWindow TabDragController::GetLocalProcessWindow( 1787 gfx::NativeWindow TabDragController::GetLocalProcessWindow(
1768 const gfx::Point& screen_point, 1788 const gfx::Point& screen_point,
1769 bool exclude_dragged_view) { 1789 bool exclude_dragged_view) {
1770 std::set<aura::Window*> exclude; 1790 std::set<gfx::NativeWindow> exclude;
1771 if (exclude_dragged_view) { 1791 if (exclude_dragged_view) {
1772 aura::Window* dragged_window = 1792 gfx::NativeWindow dragged_window =
1773 attached_tabstrip_->GetWidget()->GetNativeView(); 1793 attached_tabstrip_->GetWidget()->GetNativeWindow();
1774 if (dragged_window) 1794 if (dragged_window)
1775 exclude.insert(dragged_window); 1795 exclude.insert(dragged_window);
1776 } 1796 }
1777 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 1797 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
1778 // Exclude windows which are pending deletion via Browser::TabStripEmpty(). 1798 // Exclude windows which are pending deletion via Browser::TabStripEmpty().
1779 // These windows can be returned in the Linux Aura port because the browser 1799 // These windows can be returned in the Linux Aura port because the browser
1780 // window which was used for dragging is not hidden once all of its tabs are 1800 // window which was used for dragging is not hidden once all of its tabs are
1781 // attached to another browser window in DragBrowserToNewTabStrip(). 1801 // attached to another browser window in DragBrowserToNewTabStrip().
1782 // TODO(pkotwicz): Fix this properly (crbug.com/358482) 1802 // TODO(pkotwicz): Fix this properly (crbug.com/358482)
1783 BrowserList* browser_list = BrowserList::GetInstance( 1803 BrowserList* browser_list = BrowserList::GetInstance(
1784 chrome::HOST_DESKTOP_TYPE_NATIVE); 1804 chrome::HOST_DESKTOP_TYPE_NATIVE);
1785 for (BrowserList::const_iterator it = browser_list->begin(); 1805 for (BrowserList::const_iterator it = browser_list->begin();
1786 it != browser_list->end(); ++it) { 1806 it != browser_list->end(); ++it) {
1787 if ((*it)->tab_strip_model()->empty()) 1807 if ((*it)->tab_strip_model()->empty())
1788 exclude.insert((*it)->window()->GetNativeWindow()); 1808 exclude.insert((*it)->window()->GetNativeWindow());
1789 } 1809 }
1790 #endif 1810 #endif
1791 return GetLocalProcessWindowAtPoint(host_desktop_type_, 1811 return GetLocalProcessWindowAtPoint(host_desktop_type_,
1792 screen_point, 1812 screen_point,
1793 exclude); 1813 exclude);
1794 1814
1795 } 1815 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/views/tabs/window_finder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698