diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-02-03 18:00:27 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-06 09:45:00 +0100 |
commit | 57fe9bd2c6a361cf979d17d962abed5db17a1457 (patch) | |
tree | 44185089835aaae0591c4e8bd3b234943bb14843 /src | |
parent | fe3637a70f8d22462a0498b31168a339987d4b9b (diff) |
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 <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/platforms/xcb/qxcbwindow.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
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<QXcbScreen*>(screen); + QWindowSystemInterface::handleWindowScreenChanged(window(), m_screen->QPlatformScreen::screen()); + break; + } + } + } + m_configureNotifyPending = false; if (m_deferredExpose) { |