From cf9414ff69f8823303ad5ac019f8336a73b94a93 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Mon, 16 Dec 2013 23:26:57 -0500 Subject: [PATCH] Convert coords of B_MOUSE_IDLE in _SanitizeMessage() When BWindow receives a message in screen coordinates and the message has a target view, as it does when the message comes from App Server, convert the coordinates to view coordinates before passing the message along. Revert the portion of hrev46532 where BView converts screen coordinates and converts them since that happens in BWindow::_SanatizeMessage() now. --- src/kits/interface/View.cpp | 8 ++------ src/kits/interface/Window.cpp | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/kits/interface/View.cpp b/src/kits/interface/View.cpp index dd7ea8c66f..16200bd7cc 100644 --- a/src/kits/interface/View.cpp +++ b/src/kits/interface/View.cpp @@ -4324,12 +4324,8 @@ BView::MessageReceived(BMessage* message) case B_MOUSE_IDLE: { BPoint where; - if (message->FindPoint("be:view_where", &where) != B_OK) { - if (message->FindPoint("screen_where", &where) != B_OK) - break; - else - ConvertFromScreen(&where); - } + if (message->FindPoint("be:view_where", &where) != B_OK) + break; BToolTip* tip; if (GetToolTipAt(where, &tip)) diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index 01b79120a1..5e3de7918d 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -3521,6 +3521,23 @@ BWindow::_SanitizeMessage(BMessage* message, BHandler* target, bool usePreferred break; } + case B_MOUSE_IDLE: + { + // App Server sends screen coordinates, convert the point to + // local view coordinates, then add the point in be:view_where + BPoint where; + if (message->FindPoint("screen_where", &where) != B_OK) + break; + + BView* view = dynamic_cast(target); + if (view != NULL) { + // add local view coordinates + message->AddPoint("be:view_where", + view->ConvertFromScreen(where)); + } + break; + } + case _MESSAGE_DROPPED_: { uint32 originalWhat;