Chromium Code Reviews| Index: ui/aura/root_window.cc |
| =================================================================== |
| --- ui/aura/root_window.cc (revision 102135) |
| +++ ui/aura/root_window.cc (working copy) |
| @@ -17,6 +17,7 @@ |
| RootWindow::RootWindow() |
| : Window(NULL), |
| mouse_pressed_handler_(NULL), |
| + mouse_moved_handler_(NULL), |
| ALLOW_THIS_IN_INITIALIZER_LIST(focus_manager_(new FocusManager(this))), |
| capture_window_(NULL) { |
| set_name(ASCIIToUTF16("RootWindow")); |
| @@ -34,6 +35,8 @@ |
| mouse_pressed_handler_ = target; |
| if (event.type() == ui::ET_MOUSE_RELEASED) |
| mouse_pressed_handler_ = NULL; |
| + if (event.type() == ui::ET_MOUSE_MOVED) |
| + HandleMouseMoved(event, target); |
| if (target && target->delegate()) { |
| MouseEvent translated_event(event, this, target); |
| return target->OnMouseEvent(&translated_event); |
| @@ -85,6 +88,8 @@ |
| // don't sent it release/capture lost events. |
| if (mouse_pressed_handler_ == window) |
| mouse_pressed_handler_ = NULL; |
| + if (mouse_moved_handler_ == window) |
| + mouse_moved_handler_ = NULL; |
| if (capture_window_ == window) |
| capture_window_ = NULL; |
| } |
| @@ -97,5 +102,24 @@ |
| return this; |
| } |
| +void RootWindow::HandleMouseMoved(const MouseEvent& event, Window* target) { |
| + if (target == mouse_moved_handler_) |
| + return; |
| + |
| + // Send an exited event. |
| + if (mouse_moved_handler_) { |
|
sky
2011/09/21 20:30:54
Do you need to make sure mouse_moved_handler_ has
|
| + MouseEvent translated_event(event, this, mouse_moved_handler_, |
| + ui::ET_MOUSE_EXITED); |
| + mouse_moved_handler_->OnMouseEvent(&translated_event); |
| + } |
| + mouse_moved_handler_ = target; |
| + // Send an entered event. |
| + if (mouse_moved_handler_) { |
| + MouseEvent translated_event(event, this, mouse_moved_handler_, |
| + ui::ET_MOUSE_ENTERED); |
| + mouse_moved_handler_->OnMouseEvent(&translated_event); |
| + } |
| +} |
| + |
| } // namespace internal |
| } // namespace aura |