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

Side by Side Diff: views/widget/root_view.cc

Issue 6591120: Update MouseEvent (initial pass). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments. Created 9 years, 9 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 | « views/events/event_x.cc ('k') | views/widget/widget_gtk.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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "views/widget/root_view.h" 5 #include "views/widget/root_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 gfx::NativeView native_view) { 78 gfx::NativeView native_view) {
79 PropagateNativeViewHierarchyChanged(attached, native_view, this); 79 PropagateNativeViewHierarchyChanged(attached, native_view, this);
80 } 80 }
81 81
82 // Input ----------------------------------------------------------------------- 82 // Input -----------------------------------------------------------------------
83 83
84 void RootView::ProcessMouseDragCanceled() { 84 void RootView::ProcessMouseDragCanceled() {
85 if (mouse_pressed_handler_) { 85 if (mouse_pressed_handler_) {
86 // Synthesize a release event. 86 // Synthesize a release event.
87 MouseEvent release_event(ui::ET_MOUSE_RELEASED, last_mouse_event_x_, 87 MouseEvent release_event(ui::ET_MOUSE_RELEASED, last_mouse_event_x_,
88 last_mouse_event_y_, last_mouse_event_flags_); 88 last_mouse_event_y_, last_mouse_event_flags_);
89 OnMouseReleased(release_event, true); 89 OnMouseReleased(release_event, true);
90 } 90 }
91 } 91 }
92 92
93 void RootView::ProcessOnMouseExited() { 93 void RootView::ProcessOnMouseExited() {
94 if (mouse_move_handler_ != NULL) { 94 if (mouse_move_handler_ != NULL) {
95 MouseEvent exited_event(ui::ET_MOUSE_EXITED, 0, 0, 0); 95 MouseEvent exited_event(ui::ET_MOUSE_EXITED, 0, 0, 0);
96 mouse_move_handler_->OnMouseExited(exited_event); 96 mouse_move_handler_->OnMouseExited(exited_event);
97 mouse_move_handler_ = NULL; 97 mouse_move_handler_ = NULL;
98 } 98 }
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 return widget_; 166 return widget_;
167 } 167 }
168 168
169 Widget* RootView::GetWidget() { 169 Widget* RootView::GetWidget() {
170 return const_cast<Widget*>(const_cast<const RootView*>(this)->GetWidget()); 170 return const_cast<Widget*>(const_cast<const RootView*>(this)->GetWidget());
171 } 171 }
172 172
173 bool RootView::OnMousePressed(const MouseEvent& event) { 173 bool RootView::OnMousePressed(const MouseEvent& event) {
174 MouseEvent e(event, this); 174 MouseEvent e(event, this);
175 175
176 // This function does not normally handle non-client messages except for
177 // non-client double-clicks. Actually, all double-clicks are special as the
178 // are formed from a single-click followed by a double-click event. When the
179 // double-click event lands on a different view than its single-click part,
180 // we transform it into a single-click which prevents odd things.
181 if ((e.flags() & ui::EF_IS_NON_CLIENT) &&
182 !(e.flags() & ui::EF_IS_DOUBLE_CLICK)) {
183 last_click_handler_ = NULL;
184 return false;
185 }
186
187 UpdateCursor(e); 176 UpdateCursor(e);
188 SetMouseLocationAndFlags(e); 177 SetMouseLocationAndFlags(e);
189 178
190 // If mouse_pressed_handler_ is non null, we are currently processing 179 // If mouse_pressed_handler_ is non null, we are currently processing
191 // a pressed -> drag -> released session. In that case we send the 180 // a pressed -> drag -> released session. In that case we send the
192 // event to mouse_pressed_handler_ 181 // event to mouse_pressed_handler_
193 if (mouse_pressed_handler_) { 182 if (mouse_pressed_handler_) {
194 MouseEvent mouse_pressed_event(e, this, mouse_pressed_handler_); 183 MouseEvent mouse_pressed_event(e, this, mouse_pressed_handler_);
195 drag_info.Reset(); 184 drag_info.Reset();
196 mouse_pressed_handler_->ProcessMousePressed(mouse_pressed_event, 185 mouse_pressed_handler_->ProcessMousePressed(mouse_pressed_event,
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 widget_->SetCursor(cursor); 475 widget_->SetCursor(cursor);
487 } 476 }
488 477
489 void RootView::SetMouseLocationAndFlags(const MouseEvent& e) { 478 void RootView::SetMouseLocationAndFlags(const MouseEvent& e) {
490 last_mouse_event_flags_ = e.flags(); 479 last_mouse_event_flags_ = e.flags();
491 last_mouse_event_x_ = e.x(); 480 last_mouse_event_x_ = e.x();
492 last_mouse_event_y_ = e.y(); 481 last_mouse_event_y_ = e.y();
493 } 482 }
494 483
495 } // namespace views 484 } // namespace views
OLDNEW
« no previous file with comments | « views/events/event_x.cc ('k') | views/widget/widget_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698