| Index: ui/views/mouse_watcher.cc
|
| ===================================================================
|
| --- ui/views/mouse_watcher.cc (revision 244775)
|
| +++ ui/views/mouse_watcher.cc (working copy)
|
| @@ -26,90 +26,6 @@
|
| // the listener is notified.
|
| const int kNotifyListenerTimeMs = 300;
|
|
|
| -#if defined(OS_WIN) && !defined(USE_AURA)
|
| -class MouseWatcher::Observer : public base::MessageLoopForUI::Observer {
|
| - public:
|
| - explicit Observer(MouseWatcher* mouse_watcher)
|
| - : mouse_watcher_(mouse_watcher),
|
| - notify_listener_factory_(this) {
|
| - base::MessageLoopForUI::current()->AddObserver(this);
|
| - }
|
| -
|
| - virtual ~Observer() {
|
| - base::MessageLoopForUI::current()->RemoveObserver(this);
|
| - }
|
| -
|
| - // MessageLoop::Observer implementation:
|
| - virtual base::EventStatus WillProcessEvent(
|
| - const base::NativeEvent& event) OVERRIDE {
|
| - return base::EVENT_CONTINUE;
|
| - }
|
| -
|
| - virtual void DidProcessEvent(const base::NativeEvent& event) OVERRIDE {
|
| - // We spy on three different Windows messages here to see if the mouse has
|
| - // moved out of the bounds of the current view. The messages are:
|
| - //
|
| - // WM_MOUSEMOVE:
|
| - // For when the mouse moves from the view into the rest of the browser UI,
|
| - // i.e. within the bounds of the same windows HWND.
|
| - // WM_MOUSELEAVE:
|
| - // For when the mouse moves out of the bounds of the view's HWND.
|
| - // WM_NCMOUSELEAVE:
|
| - // For notification when the mouse leaves the _non-client_ area.
|
| - //
|
| - switch (event.message) {
|
| - case WM_MOUSEMOVE:
|
| - HandleGlobalMouseMoveEvent(MouseWatcherHost::MOUSE_MOVE);
|
| - break;
|
| - case WM_MOUSELEAVE:
|
| - case WM_NCMOUSELEAVE:
|
| - HandleGlobalMouseMoveEvent(MouseWatcherHost::MOUSE_EXIT);
|
| - break;
|
| - }
|
| - }
|
| -
|
| - private:
|
| - MouseWatcherHost* host() const { return mouse_watcher_->host_.get(); }
|
| -
|
| - // Called from the message loop observer when a mouse movement has occurred.
|
| - void HandleGlobalMouseMoveEvent(MouseWatcherHost::MouseEventType event_type) {
|
| - bool contained = host()->Contains(
|
| - // TODO(scottmg): Native is wrong http://crbug.com/133312
|
| - gfx::Screen::GetNativeScreen()->GetCursorScreenPoint(),
|
| - event_type);
|
| - if (!contained) {
|
| - // Mouse moved outside the host's zone, start a timer to notify the
|
| - // listener.
|
| - if (!notify_listener_factory_.HasWeakPtrs()) {
|
| - base::MessageLoop::current()->PostDelayedTask(
|
| - FROM_HERE,
|
| - base::Bind(&Observer::NotifyListener,
|
| - notify_listener_factory_.GetWeakPtr()),
|
| - event_type == MouseWatcherHost::MOUSE_MOVE
|
| - ? base::TimeDelta::FromMilliseconds(kNotifyListenerTimeMs)
|
| - : mouse_watcher_->notify_on_exit_time_);
|
| - }
|
| - } else {
|
| - // Mouse moved quickly out of the host and then into it again, so cancel
|
| - // the timer.
|
| - notify_listener_factory_.InvalidateWeakPtrs();
|
| - }
|
| - }
|
| -
|
| - void NotifyListener() {
|
| - mouse_watcher_->NotifyListener();
|
| - // WARNING: we've been deleted.
|
| - }
|
| -
|
| - private:
|
| - MouseWatcher* mouse_watcher_;
|
| -
|
| - // A factory that is used to construct a delayed callback to the listener.
|
| - base::WeakPtrFactory<Observer> notify_listener_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Observer);
|
| -};
|
| -#else
|
| class MouseWatcher::Observer : public ui::EventHandler {
|
| public:
|
| explicit Observer(MouseWatcher* mouse_watcher)
|
| @@ -177,7 +93,6 @@
|
|
|
| DISALLOW_COPY_AND_ASSIGN(Observer);
|
| };
|
| -#endif
|
|
|
| MouseWatcherListener::~MouseWatcherListener() {
|
| }
|
|
|