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

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

Issue 13947045: Magnifier: Move the cursor directly to the root window host. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 8 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
« no previous file with comments | « ui/aura/root_window.h ('k') | no next file » | 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 "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/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 } 281 }
282 282
283 void RootWindow::OnMouseEventsEnableStateChanged(bool enabled) { 283 void RootWindow::OnMouseEventsEnableStateChanged(bool enabled) {
284 // Send entered / exited so that visual state can be updated to match 284 // Send entered / exited so that visual state can be updated to match
285 // mouse events state. 285 // mouse events state.
286 PostMouseMoveEventAfterWindowChange(); 286 PostMouseMoveEventAfterWindowChange();
287 // TODO(mazda): Add code to disable mouse events when |enabled| == false. 287 // TODO(mazda): Add code to disable mouse events when |enabled| == false.
288 } 288 }
289 289
290 void RootWindow::MoveCursorTo(const gfx::Point& location_in_dip) { 290 void RootWindow::MoveCursorTo(const gfx::Point& location_in_dip) {
291 gfx::Point location(location_in_dip); 291 gfx::Point host_location(location_in_dip);
292 ConvertPointToHost(&location); 292 ConvertPointToHost(&host_location);
293 host_->MoveCursorTo(location); 293 MoveCursorToInternal(location_in_dip, host_location);
294 SetLastMouseLocation(this, location_in_dip);
295 client::CursorClient* cursor_client = client::GetCursorClient(this);
296 if (cursor_client) {
297 const gfx::Display& display =
298 gfx::Screen::GetScreenFor(this)->GetDisplayNearestWindow(this);
299 cursor_client->SetDisplay(display);
300 }
301 } 294 }
302 295
303 void RootWindow::MoveCursorToHostLoation(const gfx::Point& host_location) { 296 void RootWindow::MoveCursorToHostLocation(const gfx::Point& host_location) {
304 host_->MoveCursorTo(host_location);
305 gfx::Point root_location(host_location); 297 gfx::Point root_location(host_location);
306 ConvertPointFromHost(&root_location); 298 ConvertPointFromHost(&root_location);
307 SetLastMouseLocation(this, root_location); 299 MoveCursorToInternal(root_location, host_location);
308 client::CursorClient* cursor_client = client::GetCursorClient(this);
309 if (cursor_client) {
310 const gfx::Display& display =
311 gfx::Screen::GetScreenFor(this)->GetDisplayNearestWindow(this);
312 cursor_client->SetDisplay(display);
313 }
314
315 synthesize_mouse_move_ = false;
316 } 300 }
317 301
318 bool RootWindow::ConfineCursorToWindow() { 302 bool RootWindow::ConfineCursorToWindow() {
319 // We would like to be able to confine the cursor to that window. However, 303 // We would like to be able to confine the cursor to that window. However,
320 // currently, we do not have such functionality in X. So we just confine 304 // currently, we do not have such functionality in X. So we just confine
321 // to the root window. This is ok because this option is currently only 305 // to the root window. This is ok because this option is currently only
322 // being used in fullscreen mode, so root_window bounds = window bounds. 306 // being used in fullscreen mode, so root_window bounds = window bounds.
323 return host_->ConfineCursorToRootWindow(); 307 return host_->ConfineCursorToRootWindow();
324 } 308 }
325 309
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 } 689 }
706 690
707 //////////////////////////////////////////////////////////////////////////////// 691 ////////////////////////////////////////////////////////////////////////////////
708 // RootWindow, private: 692 // RootWindow, private:
709 693
710 void RootWindow::TransformEventForDeviceScaleFactor(bool keep_inside_root, 694 void RootWindow::TransformEventForDeviceScaleFactor(bool keep_inside_root,
711 ui::LocatedEvent* event) { 695 ui::LocatedEvent* event) {
712 event->UpdateForRootTransform(GetInverseRootTransform()); 696 event->UpdateForRootTransform(GetInverseRootTransform());
713 } 697 }
714 698
699 void RootWindow::MoveCursorToInternal(const gfx::Point& root_location,
700 const gfx::Point& host_location) {
701 host_->MoveCursorTo(host_location);
702 SetLastMouseLocation(this, root_location);
703 client::CursorClient* cursor_client = client::GetCursorClient(this);
704 if (cursor_client) {
705 const gfx::Display& display =
706 gfx::Screen::GetScreenFor(this)->GetDisplayNearestWindow(this);
707 cursor_client->SetDisplay(display);
708 }
709 synthesize_mouse_move_ = false;
710 }
711
715 void RootWindow::HandleMouseMoved(const ui::MouseEvent& event, Window* target) { 712 void RootWindow::HandleMouseMoved(const ui::MouseEvent& event, Window* target) {
716 if (target == mouse_moved_handler_) 713 if (target == mouse_moved_handler_)
717 return; 714 return;
718 715
719 DispatchMouseEnterOrExit(event, ui::ET_MOUSE_EXITED); 716 DispatchMouseEnterOrExit(event, ui::ET_MOUSE_EXITED);
720 717
721 if (mouse_event_dispatch_target_ != target) { 718 if (mouse_event_dispatch_target_ != target) {
722 mouse_moved_handler_ = NULL; 719 mouse_moved_handler_ = NULL;
723 return; 720 return;
724 } 721 }
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1179 } 1176 }
1180 1177
1181 gfx::Transform RootWindow::GetInverseRootTransform() const { 1178 gfx::Transform RootWindow::GetInverseRootTransform() const {
1182 float scale = ui::GetDeviceScaleFactor(layer()); 1179 float scale = ui::GetDeviceScaleFactor(layer());
1183 gfx::Transform transform; 1180 gfx::Transform transform;
1184 transform.Scale(1.0f / scale, 1.0f / scale); 1181 transform.Scale(1.0f / scale, 1.0f / scale);
1185 return transformer_->GetInverseTransform() * transform; 1182 return transformer_->GetInverseTransform() * transform;
1186 } 1183 }
1187 1184
1188 } // namespace aura 1185 } // namespace aura
OLDNEW
« no previous file with comments | « ui/aura/root_window.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698