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:
@@ -1042,6 +1042,22 @@ FrameMoved(origin);
|
|||||||
case B_MOUSE_MOVED:
|
case B_MOUSE_MOVED:
|
||||||
{
|
{
|
||||||
if (BView *view = dynamic_cast<BView *>(target)) {
|
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;
|
BPoint where;
|
||||||
uint32 buttons;
|
uint32 buttons;
|
||||||
uint32 transit;
|
uint32 transit;
|
||||||
|
|||||||
Reference in New Issue
Block a user