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
This commit is contained in:
Axel Dörfler 2007-08-20 22:51:46 +00:00
parent ffdeb47b94
commit e46b225479

View File

@ -1042,6 +1042,22 @@ FrameMoved(origin);
case B_MOUSE_MOVED:
{
if (BView *view = dynamic_cast<BView *>(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;