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;