--- c:\Users\tkarpati\Documents\Workspace\perforce\depot\3am\products\irv\3rdparty\qt-5.2.1\qtbase\src\plugins\platforms\windows\qwindowswindow.cpp 2014-07-16 15:38:06.115504300 +0200 +++ c:\Users\tkarpati\Documents\qt\qwindowswindow.cpp 2014-07-16 14:31:35.175097800 +0200 @@ -1549,10 +1549,27 @@ if (!w->isTopLevel()) center = w->mapToGlobal(center); const QScreen *screen = w->screen(); + if (!screen->geometry().contains(center)) - foreach (const QScreen *sibling, screen->virtualSiblings()) - if (sibling->geometry().contains(center)) - return sibling; + { + int maxArea = 0; + const QScreen* screenByOccupiedArea = nullptr; + + foreach(const QScreen *sibling, screen->virtualSiblings()) + { + QRect geom = sibling->geometry(); + QRect intersected = geom.intersected(w->geometry()); + int area = intersected.width() * intersected.height(); + if (area > maxArea) + { + maxArea = area; + screenByOccupiedArea = sibling; + } + } + + return screenByOccupiedArea; + } + return screen; }