From e46b225479d104af04eb3b0153cc8b08503f9484 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 20 Aug 2007 22:51:46 +0000 Subject: [PATCH] The server is too fast sending the messages; we now filter out old mouse events client side in case B_NO_POINTER_HISTORY is set. This fixes bug #1415. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22021 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/Window.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index 4d3a05def7..ed50817fc2 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -1042,6 +1042,22 @@ FrameMoved(origin); case B_MOUSE_MOVED: { if (BView *view = dynamic_cast(target)) { + if (view->fEventOptions & B_NO_POINTER_HISTORY) { + // filter out older mouse moved messages in the queue + _DequeueAll(); + BMessageQueue *queue = MessageQueue(); + queue->Lock(); + + BMessage *moved; + for (int32 i = 0; (moved = queue->FindMessage(i)) != NULL; i++) { + if (moved != msg && moved->what == B_MOUSE_MOVED) { + queue->Unlock(); + return; + } + } + queue->Unlock(); + } + BPoint where; uint32 buttons; uint32 transit;