From 57fe9bd2c6a361cf979d17d962abed5db17a1457 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 3 Feb 2014 18:00:27 +0100 Subject: Emit ScreenChanged events on X11 We do not currently emit screenchanged events when a window is moved to another screen on X11. This patch emits the event when a window no longer intersects with its current screen, and switches to the first intersecting screen. Change-Id: Ie40d6eb67b85bd961eeb348bc43e4f308ee22dba Reviewed-by: Shawn Rutledge Reviewed-by: Laszlo Agocs Reviewed-by: Uli Schlachter --- src/plugins/platforms/xcb/qxcbwindow.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index 63894373b8..433d6d5948 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -1584,6 +1584,16 @@ void QXcbWindow::handleConfigureNotifyEvent(const xcb_configure_notify_event_t * QPlatformWindow::setGeometry(rect); QWindowSystemInterface::handleGeometryChange(window(), rect); + if (!m_screen->availableGeometry().intersects(rect)) { + Q_FOREACH (QPlatformScreen* screen, m_screen->virtualSiblings()) { + if (screen->availableGeometry().intersects(rect)) { + m_screen = static_cast(screen); + QWindowSystemInterface::handleWindowScreenChanged(window(), m_screen->QPlatformScreen::screen()); + break; + } + } + } + m_configureNotifyPending = false; if (m_deferredExpose) { -- cgit v1.2.3