From 4aaa5aa1008af3c44f3b505ffefd56ee9a1c3972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sun, 26 Feb 2006 17:58:03 +0000 Subject: [PATCH] * added a way to retrieve the view under the mouse via token (coded by axeld) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16518 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/EventDispatcher.cpp | 18 ++++++++++++++++-- src/servers/app/EventDispatcher.h | 5 ++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/servers/app/EventDispatcher.cpp b/src/servers/app/EventDispatcher.cpp index 9022e8ca87..5087504046 100644 --- a/src/servers/app/EventDispatcher.cpp +++ b/src/servers/app/EventDispatcher.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2005, Haiku, Inc. All Rights Reserved. + * Copyright 2005-2006, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -216,6 +216,7 @@ EventDispatcher::EventDispatcher() fThread(-1), fCursorThread(-1), fPreviousMouseTarget(NULL), + fPreviousViewToken(B_NULL_TOKEN), fFocus(NULL), fSuspendFocus(false), fMouseFilter(NULL), @@ -503,12 +504,24 @@ EventDispatcher::SetHWInterface(HWInterface* interface) } +int32 +EventDispatcher::ViewUnderMouse(EventTarget& target) +{ + BAutolock _(this); + + if (&target == fPreviousMouseTarget) + return fPreviousViewToken; + + return B_NULL_TOKEN; +} + + void EventDispatcher::SetDragMessage(BMessage& message) { printf("EventDispatcher::SetDragMessage()\n"); - BAutolock _(*this); + BAutolock _(this); fDragMessage = message; @@ -744,6 +757,7 @@ EventDispatcher::_EventLoop() } current = fPreviousMouseTarget = mouseTarget; + fPreviousViewToken = viewToken; if (current != NULL) { int32 focusView = viewToken; diff --git a/src/servers/app/EventDispatcher.h b/src/servers/app/EventDispatcher.h index fad06667f7..fe1d17866d 100644 --- a/src/servers/app/EventDispatcher.h +++ b/src/servers/app/EventDispatcher.h @@ -1,5 +1,5 @@ /* - * Copyright 2005, Haiku, Inc. All Rights Reserved. + * Copyright 2005-2006, Haiku, Inc. All Rights Reserved. * Distributed under the terms of the MIT License. * * Authors: @@ -84,6 +84,8 @@ class EventDispatcher : public BLocker { bool HasCursorThread(); void SetHWInterface(HWInterface* interface); + int32 ViewUnderMouse(EventTarget& target); + void SetDragMessage(BMessage& message); // the message should be delivered on the next // "mouse up". @@ -123,6 +125,7 @@ class EventDispatcher : public BLocker { thread_id fCursorThread; EventTarget* fPreviousMouseTarget; + int32 fPreviousViewToken; EventTarget* fFocus; bool fSuspendFocus;