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

Side by Side Diff: ui/aura/root_window.cc

Issue 10221028: Move DIP translation from ui/aura to ui/compositor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove dip from gyp Created 8 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 | Annotate | Revision Log
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 "ui/aura/root_window.h" 5 #include "ui/aura/root_window.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/debug/trace_event.h" 11 #include "base/debug/trace_event.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/message_loop.h" 13 #include "base/message_loop.h"
14 #include "ui/aura/aura_switches.h" 14 #include "ui/aura/aura_switches.h"
15 #include "ui/aura/client/activation_client.h" 15 #include "ui/aura/client/activation_client.h"
16 #include "ui/aura/client/event_client.h" 16 #include "ui/aura/client/event_client.h"
17 #include "ui/aura/env.h" 17 #include "ui/aura/env.h"
18 #include "ui/aura/event.h" 18 #include "ui/aura/event.h"
19 #include "ui/aura/event_filter.h" 19 #include "ui/aura/event_filter.h"
20 #include "ui/aura/focus_manager.h" 20 #include "ui/aura/focus_manager.h"
21 #include "ui/aura/monitor_manager.h"
21 #include "ui/aura/root_window_host.h" 22 #include "ui/aura/root_window_host.h"
22 #include "ui/aura/root_window_observer.h" 23 #include "ui/aura/root_window_observer.h"
23 #include "ui/aura/window.h" 24 #include "ui/aura/window.h"
24 #include "ui/aura/window_delegate.h" 25 #include "ui/aura/window_delegate.h"
25 #include "ui/base/gestures/gesture_recognizer.h" 26 #include "ui/base/gestures/gesture_recognizer.h"
26 #include "ui/base/gestures/gesture_types.h" 27 #include "ui/base/gestures/gesture_types.h"
27 #include "ui/base/hit_test.h" 28 #include "ui/base/hit_test.h"
28 #include "ui/gfx/compositor/compositor.h" 29 #include "ui/gfx/compositor/compositor.h"
30 #include "ui/gfx/compositor/dip_util.h"
29 #include "ui/gfx/compositor/layer.h" 31 #include "ui/gfx/compositor/layer.h"
30 #include "ui/gfx/compositor/layer_animator.h" 32 #include "ui/gfx/compositor/layer_animator.h"
33 #include "ui/gfx/monitor.h"
34 #include "ui/gfx/screen.h"
31 35
32 using std::vector; 36 using std::vector;
33 37
34 namespace aura { 38 namespace aura {
35 39
36 namespace { 40 namespace {
37 41
38 // Returns true if |target| has a non-client (frame) component at |location|, 42 // Returns true if |target| has a non-client (frame) component at |location|,
39 // in window coordinates. 43 // in window coordinates.
40 bool IsNonClientLocation(Window* target, const gfx::Point& location) { 44 bool IsNonClientLocation(Window* target, const gfx::Point& location) {
41 if (!target->delegate()) 45 if (!target->delegate())
42 return false; 46 return false;
43 int hit_test_code = target->delegate()->GetNonClientComponent(location); 47 int hit_test_code = target->delegate()->GetNonClientComponent(location);
44 return hit_test_code != HTCLIENT && hit_test_code != HTNOWHERE; 48 return hit_test_code != HTCLIENT && hit_test_code != HTNOWHERE;
45 } 49 }
46 50
47 typedef std::vector<EventFilter*> EventFilters; 51 typedef std::vector<EventFilter*> EventFilters;
48 52
49 void GetEventFiltersToNotify(Window* target, EventFilters* filters) { 53 void GetEventFiltersToNotify(Window* target, EventFilters* filters) {
50 while (target) { 54 while (target) {
51 if (target->event_filter()) 55 if (target->event_filter())
52 filters->push_back(target->event_filter()); 56 filters->push_back(target->event_filter());
53 target = target->parent(); 57 target = target->parent();
54 } 58 }
55 } 59 }
56 60
61 float GetDeviceScaleFactorFromMonitor(const aura::Window* window) {
62 MonitorManager* monitor_manager = Env::GetInstance()->monitor_manager();
63 return monitor_manager->GetMonitorNearestWindow(window).device_scale_factor();
64 }
65
57 const int kCompositorLockTimeoutMs = 67; 66 const int kCompositorLockTimeoutMs = 67;
58 67
59 } // namespace 68 } // namespace
60 69
61 CompositorLock::CompositorLock(RootWindow* root_window) 70 CompositorLock::CompositorLock(RootWindow* root_window)
62 : root_window_(root_window) { 71 : root_window_(root_window) {
63 MessageLoop::current()->PostDelayedTask( 72 MessageLoop::current()->PostDelayedTask(
64 FROM_HERE, 73 FROM_HERE,
65 base::Bind(&CompositorLock::CancelLock, AsWeakPtr()), 74 base::Bind(&CompositorLock::CancelLock, AsWeakPtr()),
66 kCompositorLockTimeoutMs); 75 kCompositorLockTimeoutMs);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 defer_draw_scheduling_(false), 112 defer_draw_scheduling_(false),
104 mouse_move_hold_count_(0), 113 mouse_move_hold_count_(0),
105 should_hold_mouse_moves_(false), 114 should_hold_mouse_moves_(false),
106 compositor_lock_(NULL), 115 compositor_lock_(NULL),
107 draw_on_compositor_unlock_(false), 116 draw_on_compositor_unlock_(false),
108 draw_trace_count_(0) { 117 draw_trace_count_(0) {
109 SetName("RootWindow"); 118 SetName("RootWindow");
110 should_hold_mouse_moves_ = !CommandLine::ForCurrentProcess()->HasSwitch( 119 should_hold_mouse_moves_ = !CommandLine::ForCurrentProcess()->HasSwitch(
111 switches::kAuraDisableHoldMouseMoves); 120 switches::kAuraDisableHoldMouseMoves);
112 121
113 compositor_.reset(new ui::Compositor(this, host_->GetAcceleratedWidget(), 122 compositor_.reset(new ui::Compositor(this, host_->GetAcceleratedWidget()));
114 host_->GetBounds().size()));
115 DCHECK(compositor_.get()); 123 DCHECK(compositor_.get());
116 compositor_->AddObserver(this); 124 compositor_->AddObserver(this);
117 } 125 }
118 126
119 RootWindow::~RootWindow() { 127 RootWindow::~RootWindow() {
120 if (compositor_lock_) { 128 if (compositor_lock_) {
121 // No need to schedule a draw, we're going away. 129 // No need to schedule a draw, we're going away.
122 draw_on_compositor_unlock_ = false; 130 draw_on_compositor_unlock_ = false;
123 compositor_lock_->CancelLock(); 131 compositor_lock_->CancelLock();
124 DCHECK(!compositor_lock_); 132 DCHECK(!compositor_lock_);
125 } 133 }
126 compositor_->RemoveObserver(this); 134 compositor_->RemoveObserver(this);
127 // Make sure to destroy the compositor before terminating so that state is 135 // Make sure to destroy the compositor before terminating so that state is
128 // cleared and we don't hit asserts. 136 // cleared and we don't hit asserts.
129 compositor_.reset(); 137 compositor_.reset();
130 138
131 // Tear down in reverse. Frees any references held by the host. 139 // Tear down in reverse. Frees any references held by the host.
132 host_.reset(NULL); 140 host_.reset(NULL);
133 141
134 // An observer may have been added by an animation on the RootWindow. 142 // An observer may have been added by an animation on the RootWindow.
135 layer()->GetAnimator()->RemoveObserver(this); 143 layer()->GetAnimator()->RemoveObserver(this);
136 } 144 }
137 145
138 void RootWindow::Init() { 146 void RootWindow::Init() {
147 compositor()->WidgetScaleOrSizeChanged(
148 GetDeviceScaleFactorFromMonitor(this), host_->GetBounds().size());
139 Window::Init(ui::LAYER_NOT_DRAWN); 149 Window::Init(ui::LAYER_NOT_DRAWN);
140 last_mouse_location_ = ConvertPointToDIP(this, host_->QueryMouseLocation()); 150 last_mouse_location_ =
141 SetBounds(ConvertRectToDIP(this, gfx::Rect(host_->GetBounds().size()))); 151 ui::ConvertPointToDIP(layer(), host_->QueryMouseLocation());
152 SetBounds(
153 ui::ConvertRectToDIP(layer(), gfx::Rect(host_->GetBounds().size())));
142 Show(); 154 Show();
143 compositor()->SetRootLayer(layer()); 155 compositor()->SetRootLayer(layer());
144 host_->SetRootWindow(this); 156 host_->SetRootWindow(this);
145 } 157 }
146 158
147 void RootWindow::ShowRootWindow() { 159 void RootWindow::ShowRootWindow() {
148 host_->Show(); 160 host_->Show();
149 } 161 }
150 162
151 void RootWindow::SetHostSize(const gfx::Size& size) { 163 void RootWindow::SetHostSize(const gfx::Size& size_in_pixel) {
152 DispatchHeldMouseMove(); 164 DispatchHeldMouseMove();
153 gfx::Rect bounds = host_->GetBounds(); 165 gfx::Rect bounds = host_->GetBounds();
154 bounds.set_size(size); 166 bounds.set_size(size_in_pixel);
155 host_->SetBounds(bounds); 167 host_->SetBounds(bounds);
156 // Requery the location to constrain it within the new root window size. 168 // Requery the location to constrain it within the new root window size.
157 last_mouse_location_ = ConvertPointToDIP(this, host_->QueryMouseLocation()); 169 last_mouse_location_ =
170 ui::ConvertPointToDIP(layer(), host_->QueryMouseLocation());
158 synthesize_mouse_move_ = false; 171 synthesize_mouse_move_ = false;
159 } 172 }
160 173
161 gfx::Size RootWindow::GetHostSize() const { 174 gfx::Size RootWindow::GetHostSize() const {
162 return host_->GetBounds().size(); 175 return host_->GetBounds().size();
163 } 176 }
164 177
165 void RootWindow::SetHostBounds(const gfx::Rect& bounds) { 178 void RootWindow::SetHostBounds(const gfx::Rect& bounds_in_pixel) {
166 DispatchHeldMouseMove(); 179 DispatchHeldMouseMove();
167 host_->SetBounds(bounds); 180 host_->SetBounds(bounds_in_pixel);
168 // Requery the location to constrain it within the new root window size. 181 // Requery the location to constrain it within the new root window size.
169 last_mouse_location_ = ConvertPointToDIP(this, host_->QueryMouseLocation()); 182 last_mouse_location_ =
183 ui::ConvertPointToDIP(layer(), host_->QueryMouseLocation());
170 synthesize_mouse_move_ = false; 184 synthesize_mouse_move_ = false;
171 } 185 }
172 186
173 gfx::Point RootWindow::GetHostOrigin() const { 187 gfx::Point RootWindow::GetHostOrigin() const {
174 return host_->GetBounds().origin(); 188 return host_->GetBounds().origin();
175 } 189 }
176 190
177 void RootWindow::SetCursor(gfx::NativeCursor cursor) { 191 void RootWindow::SetCursor(gfx::NativeCursor cursor) {
178 last_cursor_ = cursor; 192 last_cursor_ = cursor;
179 // A lot of code seems to depend on NULL cursors actually showing an arrow, 193 // A lot of code seems to depend on NULL cursors actually showing an arrow,
180 // so just pass everything along to the host. 194 // so just pass everything along to the host.
181 host_->SetCursor(cursor); 195 host_->SetCursor(cursor);
182 } 196 }
183 197
184 void RootWindow::ShowCursor(bool show) { 198 void RootWindow::ShowCursor(bool show) {
185 cursor_shown_ = show; 199 cursor_shown_ = show;
186 host_->ShowCursor(show); 200 host_->ShowCursor(show);
187 } 201 }
188 202
189 void RootWindow::MoveCursorTo(const gfx::Point& location_in_dip) { 203 void RootWindow::MoveCursorTo(const gfx::Point& location_in_dip) {
190 host_->MoveCursorTo(ConvertPointToPixel(this, location_in_dip)); 204 host_->MoveCursorTo(ui::ConvertPointToPixel(layer(), location_in_dip));
191 } 205 }
192 206
193 bool RootWindow::ConfineCursorToWindow() { 207 bool RootWindow::ConfineCursorToWindow() {
194 // We would like to be able to confine the cursor to that window. However, 208 // We would like to be able to confine the cursor to that window. However,
195 // currently, we do not have such functionality in X. So we just confine 209 // currently, we do not have such functionality in X. So we just confine
196 // to the root window. This is ok because this option is currently only 210 // to the root window. This is ok because this option is currently only
197 // being used in fullscreen mode, so root_window bounds = window bounds. 211 // being used in fullscreen mode, so root_window bounds = window bounds.
198 return host_->ConfineCursorToRootWindow(); 212 return host_->ConfineCursorToRootWindow();
199 } 213 }
200 214
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 client::EventClient* client = client::GetEventClient(GetRootWindow()); 256 client::EventClient* client = client::GetEventClient(GetRootWindow());
243 if (client && !client->CanProcessEventsWithinSubtree(focused_window_)) { 257 if (client && !client->CanProcessEventsWithinSubtree(focused_window_)) {
244 SetFocusedWindow(NULL, NULL); 258 SetFocusedWindow(NULL, NULL);
245 return false; 259 return false;
246 } 260 }
247 return ProcessKeyEvent(focused_window_, &translated_event); 261 return ProcessKeyEvent(focused_window_, &translated_event);
248 } 262 }
249 263
250 bool RootWindow::DispatchScrollEvent(ScrollEvent* event) { 264 bool RootWindow::DispatchScrollEvent(ScrollEvent* event) {
251 DispatchHeldMouseMove(); 265 DispatchHeldMouseMove();
252 #if defined(ENABLE_DIP) 266 if (ui::IsDIPEnabled()) {
253 float scale = GetMonitorScaleFactor(this); 267 float scale = ui::GetDeviceScaleFactor(layer());
254 ui::Transform transform; 268 ui::Transform transform = layer()->transform();
255 transform.SetScale(scale, scale); 269 transform.ConcatScale(scale, scale);
256 transform.ConcatTransform(layer()->transform()); 270 event->UpdateForRootTransform(transform);
257 event->UpdateForRootTransform(transform); 271 } else {
258 #else 272 event->UpdateForRootTransform(layer()->transform());
259 event->UpdateForRootTransform(layer()->transform()); 273 }
260 #endif
261 274
262 last_mouse_location_ = event->location(); 275 last_mouse_location_ = event->location();
263 synthesize_mouse_move_ = false; 276 synthesize_mouse_move_ = false;
264 277
265 Window* target = 278 Window* target =
266 mouse_pressed_handler_ ? mouse_pressed_handler_ : capture_window_; 279 mouse_pressed_handler_ ? mouse_pressed_handler_ : capture_window_;
267 if (!target) 280 if (!target)
268 target = GetEventHandlerForPoint(event->location()); 281 target = GetEventHandlerForPoint(event->location());
269 282
270 if (target && target->delegate()) { 283 if (target && target->delegate()) {
271 int flags = event->flags(); 284 int flags = event->flags();
272 gfx::Point location_in_window = event->location(); 285 gfx::Point location_in_window = event->location();
273 Window::ConvertPointToWindow(this, target, &location_in_window); 286 Window::ConvertPointToWindow(this, target, &location_in_window);
274 if (IsNonClientLocation(target, location_in_window)) 287 if (IsNonClientLocation(target, location_in_window))
275 flags |= ui::EF_IS_NON_CLIENT; 288 flags |= ui::EF_IS_NON_CLIENT;
276 ScrollEvent translated_event(*event, this, target, event->type(), flags); 289 ScrollEvent translated_event(*event, this, target, event->type(), flags);
277 return ProcessMouseEvent(target, &translated_event); 290 return ProcessMouseEvent(target, &translated_event);
278 } 291 }
279 return false; 292 return false;
280 } 293 }
281 294
282 bool RootWindow::DispatchTouchEvent(TouchEvent* event) { 295 bool RootWindow::DispatchTouchEvent(TouchEvent* event) {
283 DispatchHeldMouseMove(); 296 DispatchHeldMouseMove();
284 #if defined(ENABLE_DIP) 297 if (ui::IsDIPEnabled()) {
285 float scale = GetMonitorScaleFactor(this); 298 float scale = ui::GetDeviceScaleFactor(layer());
286 ui::Transform transform; 299 ui::Transform transform = layer()->transform();
287 transform.SetScale(scale, scale); 300 transform.ConcatScale(scale, scale);
288 transform.ConcatTransform(layer()->transform()); 301 event->UpdateForRootTransform(transform);
289 event->UpdateForRootTransform(transform); 302 } else {
290 #else 303 event->UpdateForRootTransform(layer()->transform());
291 event->UpdateForRootTransform(layer()->transform()); 304 }
292 #endif
293 bool handled = false; 305 bool handled = false;
294 306
295 GestureConsumer* consumer = gesture_recognizer_->GetTouchLockedTarget(event); 307 GestureConsumer* consumer = gesture_recognizer_->GetTouchLockedTarget(event);
296 ui::TouchStatus status = ui::TOUCH_STATUS_UNKNOWN; 308 ui::TouchStatus status = ui::TOUCH_STATUS_UNKNOWN;
297 309
298 if (!consumer || !consumer->ignores_events()) { 310 if (!consumer || !consumer->ignores_events()) {
299 Window* target = static_cast<Window*>(consumer); 311 Window* target = static_cast<Window*>(consumer);
300 312
301 if (!target && HasCapture(capture_window_, ui::CW_LOCK_TOUCH)) 313 if (!target && HasCapture(capture_window_, ui::CW_LOCK_TOUCH))
302 target = capture_window_; 314 target = capture_window_;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 365
354 if (target) { 366 if (target) {
355 GestureEvent translated_event(*event, this, target); 367 GestureEvent translated_event(*event, this, target);
356 ui::GestureStatus status = ProcessGestureEvent(target, &translated_event); 368 ui::GestureStatus status = ProcessGestureEvent(target, &translated_event);
357 return status != ui::GESTURE_STATUS_UNKNOWN; 369 return status != ui::GESTURE_STATUS_UNKNOWN;
358 } 370 }
359 371
360 return false; 372 return false;
361 } 373 }
362 374
363 void RootWindow::OnHostResized(const gfx::Size& size) { 375 void RootWindow::OnHostResized(const gfx::Size& size_in_pixel) {
364 DispatchHeldMouseMove(); 376 DispatchHeldMouseMove();
365 // The compositor should have the same size as the native root window host. 377 // The compositor should have the same size as the native root window host.
366 compositor_->WidgetSizeChanged(size); 378 // Get the latest scale from monitor because it might have been changed.
367 gfx::Size old(ConvertSizeToDIP(this, bounds().size())); 379 compositor_->WidgetScaleOrSizeChanged(
380 GetDeviceScaleFactorFromMonitor(this), size_in_pixel);
381 gfx::Size old(bounds().size());
368 // The layer, and all the observers should be notified of the 382 // The layer, and all the observers should be notified of the
369 // transformed size of the root window. 383 // transformed size of the root window.
370 gfx::Rect bounds(ConvertSizeToDIP(this, size)); 384 gfx::Rect bounds(ui::ConvertSizeToDIP(layer(), size_in_pixel));
371 layer()->transform().TransformRect(&bounds); 385 layer()->transform().TransformRect(&bounds);
372 SetBounds(gfx::Rect(bounds.size())); 386 SetBounds(bounds);
373 FOR_EACH_OBSERVER(RootWindowObserver, observers_, 387 FOR_EACH_OBSERVER(RootWindowObserver, observers_,
374 OnRootWindowResized(this, old)); 388 OnRootWindowResized(this, old));
375 } 389 }
376 390
377 void RootWindow::OnWindowDestroying(Window* window) { 391 void RootWindow::OnWindowDestroying(Window* window) {
378 OnWindowHidden(window, true); 392 OnWindowHidden(window, true);
379 393
380 if (window->IsVisible() && 394 if (window->IsVisible() &&
381 window->ContainsPointInRoot(last_mouse_location_)) { 395 window->ContainsPointInRoot(last_mouse_location_)) {
382 PostMouseMoveEventAfterWindowChange(); 396 PostMouseMoveEventAfterWindowChange();
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 901
888 bool RootWindow::IsFocusedWindow(const Window* window) const { 902 bool RootWindow::IsFocusedWindow(const Window* window) const {
889 return focused_window_ == window; 903 return focused_window_ == window;
890 } 904 }
891 905
892 bool RootWindow::DispatchMouseEventImpl(MouseEvent* event) { 906 bool RootWindow::DispatchMouseEventImpl(MouseEvent* event) {
893 static const int kMouseButtonFlagMask = 907 static const int kMouseButtonFlagMask =
894 ui::EF_LEFT_MOUSE_BUTTON | 908 ui::EF_LEFT_MOUSE_BUTTON |
895 ui::EF_MIDDLE_MOUSE_BUTTON | 909 ui::EF_MIDDLE_MOUSE_BUTTON |
896 ui::EF_RIGHT_MOUSE_BUTTON; 910 ui::EF_RIGHT_MOUSE_BUTTON;
897 #if defined(ENABLE_DIP) 911 if (ui::IsDIPEnabled()) {
898 float scale = GetMonitorScaleFactor(this); 912 float scale = ui::GetDeviceScaleFactor(layer());
899 ui::Transform transform; 913 ui::Transform transform = layer()->transform();
900 transform.SetScale(scale, scale); 914 transform.ConcatScale(scale, scale);
901 transform.ConcatTransform(layer()->transform()); 915 event->UpdateForRootTransform(transform);
902 event->UpdateForRootTransform(transform); 916 } else {
903 #else 917 event->UpdateForRootTransform(layer()->transform());
904 event->UpdateForRootTransform(layer()->transform()); 918 }
905 #endif
906 919
907 last_mouse_location_ = event->location(); 920 last_mouse_location_ = event->location();
908 synthesize_mouse_move_ = false; 921 synthesize_mouse_move_ = false;
909 922
910 Window* target = mouse_pressed_handler_; 923 Window* target = mouse_pressed_handler_;
911 if (!target && HasCapture(capture_window_, ui::CW_LOCK_MOUSE)) 924 if (!target && HasCapture(capture_window_, ui::CW_LOCK_MOUSE))
912 target = capture_window_; 925 target = capture_window_;
913 if (!target) 926 if (!target)
914 target = GetEventHandlerForPoint(event->location()); 927 target = GetEventHandlerForPoint(event->location());
915 switch (event->type()) { 928 switch (event->type()) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 event_factory_.GetWeakPtr())); 975 event_factory_.GetWeakPtr()));
963 } 976 }
964 977
965 void RootWindow::SynthesizeMouseMoveEvent() { 978 void RootWindow::SynthesizeMouseMoveEvent() {
966 if (!synthesize_mouse_move_) 979 if (!synthesize_mouse_move_)
967 return; 980 return;
968 synthesize_mouse_move_ = false; 981 synthesize_mouse_move_ = false;
969 #if !defined(OS_WIN) 982 #if !defined(OS_WIN)
970 // Temporarily disabled for windows. See crbug.com/112222. 983 // Temporarily disabled for windows. See crbug.com/112222.
971 gfx::Point orig_mouse_location = last_mouse_location_; 984 gfx::Point orig_mouse_location = last_mouse_location_;
972 orig_mouse_location = ConvertPointToPixel(this, orig_mouse_location);
973 layer()->transform().TransformPoint(orig_mouse_location); 985 layer()->transform().TransformPoint(orig_mouse_location);
974 orig_mouse_location = ConvertPointToDIP(this,orig_mouse_location);
975 986
976 // TODO(derat|oshima): Don't use mouse_button_flags_ as it's 987 // TODO(derat|oshima): Don't use mouse_button_flags_ as it's
977 // currently broken. See/ crbug.com/107931. 988 // currently broken. See/ crbug.com/107931.
978 MouseEvent event(ui::ET_MOUSE_MOVED, 989 MouseEvent event(ui::ET_MOUSE_MOVED,
979 orig_mouse_location, 990 orig_mouse_location,
980 orig_mouse_location, 991 orig_mouse_location,
981 ui::EF_IS_SYNTHESIZED); 992 ui::EF_IS_SYNTHESIZED);
982 DispatchMouseEvent(&event); 993 DispatchMouseEvent(&event);
983 #endif 994 #endif
984 } 995 }
985 996
986 void RootWindow::UnlockCompositor() { 997 void RootWindow::UnlockCompositor() {
987 DCHECK(compositor_lock_); 998 DCHECK(compositor_lock_);
988 compositor_lock_ = NULL; 999 compositor_lock_ = NULL;
989 if (draw_on_compositor_unlock_) { 1000 if (draw_on_compositor_unlock_) {
990 draw_on_compositor_unlock_ = false; 1001 draw_on_compositor_unlock_ = false;
991 ScheduleDraw(); 1002 ScheduleDraw();
992 } 1003 }
993 } 1004 }
994 1005
995 } // namespace aura 1006 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/root_window.h ('k') | ui/aura/window.h » ('j') | ui/gfx/compositor/compositor.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698