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

Side by Side Diff: ash/wm/toplevel_window_event_handler.cc

Issue 1918883002: Makes Panel related classes use ash/wm/common types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@phantom_window_controller
Patch Set: feedback Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « ash/wm/panels/panel_window_resizer.cc ('k') | ash/wm/window_resizer.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 "ash/wm/toplevel_window_event_handler.h" 5 #include "ash/wm/toplevel_window_event_handler.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/wm/aura/wm_window_aura.h" 8 #include "ash/wm/aura/wm_window_aura.h"
9 #include "ash/wm/common/wm_event.h" 9 #include "ash/wm/common/wm_event.h"
10 #include "ash/wm/common/wm_window_observer.h"
10 #include "ash/wm/resize_shadow_controller.h" 11 #include "ash/wm/resize_shadow_controller.h"
11 #include "ash/wm/window_resizer.h" 12 #include "ash/wm/window_resizer.h"
12 #include "ash/wm/window_state.h" 13 #include "ash/wm/window_state.h"
13 #include "ash/wm/window_state_aura.h" 14 #include "ash/wm/window_state_aura.h"
14 #include "ash/wm/window_state_observer.h" 15 #include "ash/wm/window_state_observer.h"
15 #include "ash/wm/window_util.h" 16 #include "ash/wm/window_util.h"
16 #include "base/message_loop/message_loop.h" 17 #include "base/message_loop/message_loop.h"
17 #include "base/run_loop.h" 18 #include "base/run_loop.h"
18 #include "ui/aura/client/cursor_client.h" 19 #include "ui/aura/client/cursor_client.h"
19 #include "ui/aura/env.h" 20 #include "ui/aura/env.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 } 83 }
83 84
84 } // namespace 85 } // namespace
85 86
86 // ScopedWindowResizer --------------------------------------------------------- 87 // ScopedWindowResizer ---------------------------------------------------------
87 88
88 // Wraps a WindowResizer and installs an observer on its target window. When 89 // Wraps a WindowResizer and installs an observer on its target window. When
89 // the window is destroyed ResizerWindowDestroyed() is invoked back on the 90 // the window is destroyed ResizerWindowDestroyed() is invoked back on the
90 // ToplevelWindowEventHandler to clean up. 91 // ToplevelWindowEventHandler to clean up.
91 class ToplevelWindowEventHandler::ScopedWindowResizer 92 class ToplevelWindowEventHandler::ScopedWindowResizer
92 : public aura::WindowObserver, 93 : public wm::WmWindowObserver,
93 public wm::WindowStateObserver { 94 public wm::WindowStateObserver {
94 public: 95 public:
95 ScopedWindowResizer(ToplevelWindowEventHandler* handler, 96 ScopedWindowResizer(ToplevelWindowEventHandler* handler,
96 WindowResizer* resizer); 97 WindowResizer* resizer);
97 ~ScopedWindowResizer() override; 98 ~ScopedWindowResizer() override;
98 99
99 // Returns true if the drag moves the window and does not resize. 100 // Returns true if the drag moves the window and does not resize.
100 bool IsMove() const; 101 bool IsMove() const;
101 102
102 WindowResizer* resizer() { return resizer_.get(); } 103 WindowResizer* resizer() { return resizer_.get(); }
103 104
104 // WindowObserver overrides: 105 // WindowObserver overrides:
105 void OnWindowDestroying(aura::Window* window) override; 106 void OnWindowDestroying(wm::WmWindow* window) override;
106 107
107 // WindowStateObserver overrides: 108 // WindowStateObserver overrides:
108 void OnPreWindowStateTypeChange(wm::WindowState* window_state, 109 void OnPreWindowStateTypeChange(wm::WindowState* window_state,
109 wm::WindowStateType type) override; 110 wm::WindowStateType type) override;
110 111
111 private: 112 private:
112 ToplevelWindowEventHandler* handler_; 113 ToplevelWindowEventHandler* handler_;
113 std::unique_ptr<WindowResizer> resizer_; 114 std::unique_ptr<WindowResizer> resizer_;
114 115
115 // Whether ScopedWindowResizer grabbed capture. 116 // Whether ScopedWindowResizer grabbed capture.
116 bool grabbed_capture_; 117 bool grabbed_capture_;
117 118
118 DISALLOW_COPY_AND_ASSIGN(ScopedWindowResizer); 119 DISALLOW_COPY_AND_ASSIGN(ScopedWindowResizer);
119 }; 120 };
120 121
121 ToplevelWindowEventHandler::ScopedWindowResizer::ScopedWindowResizer( 122 ToplevelWindowEventHandler::ScopedWindowResizer::ScopedWindowResizer(
122 ToplevelWindowEventHandler* handler, 123 ToplevelWindowEventHandler* handler,
123 WindowResizer* resizer) 124 WindowResizer* resizer)
124 : handler_(handler), 125 : handler_(handler),
125 resizer_(resizer), 126 resizer_(resizer),
126 grabbed_capture_(false) { 127 grabbed_capture_(false) {
127 aura::Window* target = resizer_->GetAuraTarget(); 128 wm::WmWindow* target = resizer_->GetTarget();
128 target->AddObserver(this); 129 target->AddObserver(this);
129 wm::GetWindowState(target)->AddObserver(this); 130 target->GetWindowState()->AddObserver(this);
130 131
131 if (!target->HasCapture()) { 132 if (!target->HasCapture()) {
132 grabbed_capture_ = true; 133 grabbed_capture_ = true;
133 target->SetCapture(); 134 target->SetCapture();
134 } 135 }
135 } 136 }
136 137
137 ToplevelWindowEventHandler::ScopedWindowResizer::~ScopedWindowResizer() { 138 ToplevelWindowEventHandler::ScopedWindowResizer::~ScopedWindowResizer() {
138 aura::Window* target = resizer_->GetAuraTarget(); 139 wm::WmWindow* target = resizer_->GetTarget();
139 target->RemoveObserver(this); 140 target->RemoveObserver(this);
140 wm::GetWindowState(target)->RemoveObserver(this); 141 target->GetWindowState()->RemoveObserver(this);
141 if (grabbed_capture_) 142 if (grabbed_capture_)
142 target->ReleaseCapture(); 143 target->ReleaseCapture();
143 } 144 }
144 145
145 bool ToplevelWindowEventHandler::ScopedWindowResizer::IsMove() const { 146 bool ToplevelWindowEventHandler::ScopedWindowResizer::IsMove() const {
146 return resizer_->details().bounds_change == 147 return resizer_->details().bounds_change ==
147 WindowResizer::kBoundsChange_Repositions; 148 WindowResizer::kBoundsChange_Repositions;
148 } 149 }
149 150
150 void 151 void
151 ToplevelWindowEventHandler::ScopedWindowResizer::OnPreWindowStateTypeChange( 152 ToplevelWindowEventHandler::ScopedWindowResizer::OnPreWindowStateTypeChange(
152 wm::WindowState* window_state, 153 wm::WindowState* window_state,
153 wm::WindowStateType old) { 154 wm::WindowStateType old) {
154 handler_->CompleteDrag(DRAG_COMPLETE); 155 handler_->CompleteDrag(DRAG_COMPLETE);
155 } 156 }
156 157
157 void ToplevelWindowEventHandler::ScopedWindowResizer::OnWindowDestroying( 158 void ToplevelWindowEventHandler::ScopedWindowResizer::OnWindowDestroying(
158 aura::Window* window) { 159 wm::WmWindow* window) {
159 DCHECK_EQ(resizer_->GetAuraTarget(), window); 160 DCHECK_EQ(resizer_->GetTarget(), window);
160 handler_->ResizerWindowDestroyed(); 161 handler_->ResizerWindowDestroyed();
161 } 162 }
162 163
163 // ToplevelWindowEventHandler -------------------------------------------------- 164 // ToplevelWindowEventHandler --------------------------------------------------
164 165
165 ToplevelWindowEventHandler::ToplevelWindowEventHandler() 166 ToplevelWindowEventHandler::ToplevelWindowEventHandler()
166 : first_finger_hittest_(HTNOWHERE), 167 : first_finger_hittest_(HTNOWHERE),
167 in_move_loop_(false), 168 in_move_loop_(false),
168 in_gesture_drag_(false), 169 in_gesture_drag_(false),
169 drag_reverted_(false), 170 drag_reverted_(false),
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 if (event->handled()) 229 if (event->handled())
229 return; 230 return;
230 aura::Window* target = static_cast<aura::Window*>(event->target()); 231 aura::Window* target = static_cast<aura::Window*>(event->target());
231 if (!target->delegate()) 232 if (!target->delegate())
232 return; 233 return;
233 234
234 if (window_resizer_.get() && !in_gesture_drag_) 235 if (window_resizer_.get() && !in_gesture_drag_)
235 return; 236 return;
236 237
237 if (window_resizer_.get() && 238 if (window_resizer_.get() &&
238 window_resizer_->resizer()->GetAuraTarget() != target) { 239 wm::WmWindowAura::GetAuraWindow(
240 window_resizer_->resizer()->GetTarget()) != target) {
239 return; 241 return;
240 } 242 }
241 243
242 if (event->details().touch_points() > 2) { 244 if (event->details().touch_points() > 2) {
243 if (CompleteDrag(DRAG_COMPLETE)) 245 if (CompleteDrag(DRAG_COMPLETE))
244 event->StopPropagation(); 246 event->StopPropagation();
245 return; 247 return;
246 } 248 }
247 249
248 switch (event->type()) { 250 switch (event->type()) {
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 default: 634 default:
633 NOTREACHED(); 635 NOTREACHED();
634 } 636 }
635 } 637 }
636 638
637 void ToplevelWindowEventHandler::ResizerWindowDestroyed() { 639 void ToplevelWindowEventHandler::ResizerWindowDestroyed() {
638 CompleteDrag(DRAG_RESIZER_WINDOW_DESTROYED); 640 CompleteDrag(DRAG_RESIZER_WINDOW_DESTROYED);
639 } 641 }
640 642
641 } // namespace ash 643 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/panels/panel_window_resizer.cc ('k') | ash/wm/window_resizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698