Scenario 1: On Laptop, connect screen when running: =================================================== 5.4.0 ..... Widget::dump>#0 widget geom:QRect(640,276 640x480) QDesktopWidget *#0 QRect(0,0 1920x1080) QScreen *0 0x212de40 "\\.\DISPLAY1" QRect(0,0 1920x1080) Widget::dump< ### Note: New monitor is at 0,0 (!), old laptop screen is moved to 1920,0 Widget::screenAdded 0x28f38f0 "\\.\DISPLAY3" QRect(0,0 1920x1200) ### Note: Window is moved from y 276->303, logic in ### QWindowsWindow::handleGeometryChange detects new screen and updates ### accordingly: QWindowsWindow::handleGeometryChange QRect(640,276 640x480) QRect(640,303 640x480) "WidgetClassWindow" QMoveEvent(QPoint(640,303)) "" QMoveEvent(QPoint(640,303)) ScreenChangeInternal "" QEvent(ScreenChangeInternal, 0x2eb4f8, type = 216) Widget::screenChanged 0x28f38f0 "\\.\DISPLAY3" QRect(0,0 1920x1200) Widget::dump>#1 widget geom:QRect(640,303 640x480) QDesktopWidget #0 QRect(1920,0 1920x1080) *#1 QRect(0,0 1920x1200) QScreen 0 0x212de40 "\\.\DISPLAY1" QRect(1920,0 1920x1080) *1 0x28f38f0 "\\.\DISPLAY3" QRect(0,0 1920x1200) ### Note: ^^^ QScreen & QDesktopWidget in sync. Widget::dump< Scenario 2: On Laptop, hibernate, connect screen, resume: ======================================================== 5.4.0 Widget::dump>#0 widget geom:QRect(640,276 640x480) QDesktopWidget *#0 QRect(0,0 1920x1080) QScreen *0 0x221de40 "\\.\DISPLAY1" QRect(0,0 1920x1080) Widget::dump< ### Note: Move is received BEFORE screenAdded, so, ### QWindowsWindow::handleGeometryChange is unable to ### detect the screen change: "WidgetClassWindow" QMoveEvent(QPoint(640,303)) "" QMoveEvent(QPoint(640,303)) Widget::screenAdded 0x27135d0 "\\.\DISPLAY3" QRect(0,0 1920x1200) Widget::dump>#1 widget geom:QRect(640,303 640x480) QDesktopWidget #0 QRect(1920,0 1920x1080) *#1 QRect(0,0 1920x1200) QScreen *0 0x221de40 "\\.\DISPLAY1" QRect(1920,0 1920x1080) 1 0x27135d0 "\\.\DISPLAY3" QRect(0,0 1920x1200) Widget::dump< Widget::dump>#2 widget geom:QRect(640,303 640x480) QDesktopWidget #0 QRect(1920,0 1920x1080) *#1 QRect(0,0 1920x1200) QScreen *0 0x221de40 "\\.\DISPLAY1" QRect(1920,0 1920x1080) 1 0x27135d0 "\\.\DISPLAY3" QRect(0,0 1920x1200) ### Note: ^^^ QScreen & QDesktopWidget OUT OF SYNC. Widget::dump<