| 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_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 11 matching lines...) Expand all Loading... |
| 22 #include "chrome/browser/ui/views/tabs/tab.h" | 22 #include "chrome/browser/ui/views/tabs/tab.h" |
| 23 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 23 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
| 24 #include "chrome/browser/ui/views/tabs/window_finder.h" | 24 #include "chrome/browser/ui/views/tabs/window_finder.h" |
| 25 #include "content/public/browser/notification_details.h" | 25 #include "content/public/browser/notification_details.h" |
| 26 #include "content/public/browser/notification_service.h" | 26 #include "content/public/browser/notification_service.h" |
| 27 #include "content/public/browser/notification_source.h" | 27 #include "content/public/browser/notification_source.h" |
| 28 #include "content/public/browser/notification_types.h" | 28 #include "content/public/browser/notification_types.h" |
| 29 #include "content/public/browser/user_metrics.h" | 29 #include "content/public/browser/user_metrics.h" |
| 30 #include "content/public/browser/web_contents.h" | 30 #include "content/public/browser/web_contents.h" |
| 31 #include "extensions/browser/extension_function_dispatcher.h" | 31 #include "extensions/browser/extension_function_dispatcher.h" |
| 32 #include "ui/aura/env.h" | |
| 33 #include "ui/aura/window.h" | |
| 34 #include "ui/events/event_constants.h" | 32 #include "ui/events/event_constants.h" |
| 35 #include "ui/events/gestures/gesture_recognizer.h" | 33 #include "ui/events/gestures/gesture_recognizer.h" |
| 36 #include "ui/gfx/geometry/point_conversions.h" | 34 #include "ui/gfx/geometry/point_conversions.h" |
| 37 #include "ui/gfx/screen.h" | 35 #include "ui/gfx/screen.h" |
| 38 #include "ui/views/focus/view_storage.h" | 36 #include "ui/views/focus/view_storage.h" |
| 39 #include "ui/views/widget/root_view.h" | 37 #include "ui/views/widget/root_view.h" |
| 40 #include "ui/views/widget/widget.h" | 38 #include "ui/views/widget/widget.h" |
| 41 | 39 |
| 42 #if defined(USE_ASH) | 40 #if defined(USE_ASH) |
| 43 #include "ash/accelerators/accelerator_commands.h" | 41 #include "ash/accelerators/accelerator_commands.h" |
| 44 #include "ash/shell.h" | 42 #include "ash/shell.h" |
| 45 #include "ash/wm/maximize_mode/maximize_mode_controller.h" | 43 #include "ash/wm/maximize_mode/maximize_mode_controller.h" |
| 46 #include "ash/wm/window_state.h" | 44 #include "ash/wm/window_state.h" |
| 47 #include "ui/wm/core/coordinate_conversion.h" | 45 #include "ui/wm/core/coordinate_conversion.h" |
| 48 #endif | 46 #endif |
| 49 | 47 |
| 50 #if defined(USE_AURA) | 48 #if defined(USE_AURA) |
| 49 #include "ui/aura/window.h" |
| 51 #include "ui/wm/core/window_modality_controller.h" | 50 #include "ui/wm/core/window_modality_controller.h" |
| 52 #endif | 51 #endif |
| 53 | 52 |
| 54 using base::UserMetricsAction; | 53 using base::UserMetricsAction; |
| 55 using content::OpenURLParams; | 54 using content::OpenURLParams; |
| 56 using content::WebContents; | 55 using content::WebContents; |
| 57 | 56 |
| 58 // If non-null there is a drag underway. | 57 // If non-null there is a drag underway. |
| 59 static TabDragController* instance_ = NULL; | 58 static TabDragController* instance_ = NULL; |
| 60 | 59 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 134 // position managed' property during a show and we need the property set to | 133 // position managed' property during a show and we need the property set to |
| 135 // false before WorkspaceLayoutManager sees the visibility change. | 134 // false before WorkspaceLayoutManager sees the visibility change. |
| 136 class WindowPositionManagedUpdater : public views::WidgetObserver { | 135 class WindowPositionManagedUpdater : public views::WidgetObserver { |
| 137 public: | 136 public: |
| 138 virtual void OnWidgetVisibilityChanged(views::Widget* widget, | 137 virtual void OnWidgetVisibilityChanged(views::Widget* widget, |
| 139 bool visible) override { | 138 bool visible) override { |
| 140 SetWindowPositionManaged(widget->GetNativeWindow(), false); | 139 SetWindowPositionManaged(widget->GetNativeWindow(), false); |
| 141 } | 140 } |
| 142 }; | 141 }; |
| 143 | 142 |
| 144 // EscapeTracker installs itself as a pre-target handler on aura::Env and runs a | 143 // EscapeTracker installs an event monitor and runs a callback when it receives |
| 145 // callback when it receives the escape key. | 144 // the escape key. |
| 146 class EscapeTracker : public ui::EventHandler { | 145 class EscapeTracker : public ui::EventHandler { |
| 147 public: | 146 public: |
| 148 explicit EscapeTracker(const base::Closure& callback) | 147 explicit EscapeTracker(const base::Closure& callback) |
| 149 : escape_callback_(callback) { | 148 : escape_callback_(callback), |
| 150 aura::Env::GetInstance()->AddPreTargetHandler(this); | 149 event_monitor_(views::EventMonitor::Create(this)) { |
| 151 } | |
| 152 | |
| 153 virtual ~EscapeTracker() { | |
| 154 aura::Env::GetInstance()->RemovePreTargetHandler(this); | |
| 155 } | 150 } |
| 156 | 151 |
| 157 private: | 152 private: |
| 158 // ui::EventHandler: | 153 // ui::EventHandler: |
| 159 virtual void OnKeyEvent(ui::KeyEvent* key) override { | 154 virtual void OnKeyEvent(ui::KeyEvent* key) override { |
| 160 if (key->type() == ui::ET_KEY_PRESSED && | 155 if (key->type() == ui::ET_KEY_PRESSED && |
| 161 key->key_code() == ui::VKEY_ESCAPE) { | 156 key->key_code() == ui::VKEY_ESCAPE) { |
| 162 escape_callback_.Run(); | 157 escape_callback_.Run(); |
| 163 } | 158 } |
| 164 } | 159 } |
| 165 | 160 |
| 166 base::Closure escape_callback_; | 161 base::Closure escape_callback_; |
| 162 scoped_ptr<views::EventMonitor> event_monitor_; |
| 167 | 163 |
| 168 DISALLOW_COPY_AND_ASSIGN(EscapeTracker); | 164 DISALLOW_COPY_AND_ASSIGN(EscapeTracker); |
| 169 }; | 165 }; |
| 170 | 166 |
| 171 } // namespace | 167 } // namespace |
| 172 | 168 |
| 173 TabDragController::TabDragData::TabDragData() | 169 TabDragController::TabDragData::TabDragData() |
| 174 : contents(NULL), | 170 : contents(NULL), |
| 175 source_model_index(-1), | 171 source_model_index(-1), |
| 176 attached_tab(NULL), | 172 attached_tab(NULL), |
| (...skipping 1629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1806 it != browser_list->end(); ++it) { | 1802 it != browser_list->end(); ++it) { |
| 1807 if ((*it)->tab_strip_model()->empty()) | 1803 if ((*it)->tab_strip_model()->empty()) |
| 1808 exclude.insert((*it)->window()->GetNativeWindow()); | 1804 exclude.insert((*it)->window()->GetNativeWindow()); |
| 1809 } | 1805 } |
| 1810 #endif | 1806 #endif |
| 1811 return GetLocalProcessWindowAtPoint(host_desktop_type_, | 1807 return GetLocalProcessWindowAtPoint(host_desktop_type_, |
| 1812 screen_point, | 1808 screen_point, |
| 1813 exclude); | 1809 exclude); |
| 1814 | 1810 |
| 1815 } | 1811 } |
| OLD | NEW |