diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index 5cb96e38a8..be3af1e702 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -3050,8 +3050,7 @@ BWindow::_UnpackMessage(unpack_cookie& cookie, BMessage** _message, BHandler** _ } -/*! - Some messages don't get to the window in a shape an application should see. +/*! Some messages don't get to the window in a shape an application should see. This method is supposed to give a message the last grinding before it's acceptable for the receiving application. */ @@ -3070,13 +3069,12 @@ BWindow::_SanitizeMessage(BMessage* message, BHandler* target, bool usePreferred if (message->FindPoint("screen_where", &where) != B_OK) break; - // add local window coordinates - message->AddPoint("where", ConvertFromScreen(where)); - BView* view = dynamic_cast(target); if (view != NULL) { // add local view coordinates - message->AddPoint("be:view_where", view->ConvertFromScreen(where)); + message->AddPoint("be:view_where", + view->ConvertFromScreen(where)); + message->AddPoint("where", view->ConvertFromScreen(where)); if (message->what == B_MOUSE_MOVED) { // is there a token of the view that is currently under the mouse? @@ -3106,6 +3104,9 @@ BWindow::_SanitizeMessage(BMessage* message, BHandler* target, bool usePreferred if (usePreferred || viewUnderMouse == NULL) fLastMouseMovedView = viewUnderMouse; } + } else { + // add local window coordinates + message->AddPoint("where", ConvertFromScreen(where)); } break; }