When a screen comes back online, the windows need to be told about it (QTBUG-47041)
This commit is contained in:
parent
eed09bb685
commit
19c78c8b79
45
qt5-qtbase-QTBUG-47041.patch
Normal file
45
qt5-qtbase-QTBUG-47041.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
From b0b08cc0e4e38504d6b833702f7477aee4e2a192 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ralf Jung <post@ralfj.de>
|
||||||
|
Date: Sun, 5 Jul 2015 12:15:29 +0200
|
||||||
|
Subject: [PATCH] When a screen comes back online, the windows need to be told
|
||||||
|
about it
|
||||||
|
|
||||||
|
On my system, this fixes the misbehavior of Qt applications when the (only) active screen is
|
||||||
|
switched, e.g. from an external screen to the laptop.
|
||||||
|
This behavior is caused by the screen() of widgets to be set to NULL when their screen goes away.
|
||||||
|
When a new screen comes online, the widgets *should* be told about it, but they are not. The only
|
||||||
|
place that "maybeSetScreen" is called is when an existing screen changes its geometry, but not
|
||||||
|
when a screen gets enabled without its geometry being affected in any way (e.g. because it was
|
||||||
|
just disabled via xrandr, but has been connected all along). This makes sure that "maybeSetScreen"
|
||||||
|
is also called when a screen gets enabled.
|
||||||
|
|
||||||
|
Task-number: QTBUG-47041
|
||||||
|
Change-Id: Ic72d6beaa544bf9a4efdbea0830b1bc0d6ce5362
|
||||||
|
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
|
||||||
|
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
||||||
|
---
|
||||||
|
src/plugins/platforms/xcb/qxcbconnection.cpp | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||||
|
index 74f48b0..0867615 100644
|
||||||
|
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||||
|
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||||
|
@@ -252,6 +252,14 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event)
|
||||||
|
otherScreen->addVirtualSibling(screen);
|
||||||
|
m_screens << screen;
|
||||||
|
QXcbIntegration::instance()->screenAdded(screen, screen->isPrimary());
|
||||||
|
+
|
||||||
|
+ // Windows which had null screens have already had expose events by now.
|
||||||
|
+ // They need to be told the screen is back, it's OK to render.
|
||||||
|
+ foreach (QWindow *window, QGuiApplication::topLevelWindows()) {
|
||||||
|
+ QXcbWindow *xcbWin = static_cast<QXcbWindow*>(window->handle());
|
||||||
|
+ if (xcbWin)
|
||||||
|
+ xcbWin->maybeSetScreen(screen);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
// else ignore disabled screens
|
||||||
|
} else if (screen) {
|
||||||
|
--
|
||||||
|
2.3.5
|
||||||
|
|
@ -44,7 +44,7 @@
|
|||||||
Summary: Qt5 - QtBase components
|
Summary: Qt5 - QtBase components
|
||||||
Name: qt5-qtbase
|
Name: qt5-qtbase
|
||||||
Version: 5.5.0
|
Version: 5.5.0
|
||||||
Release: 17%{?dist}
|
Release: 18%{?dist}
|
||||||
|
|
||||||
# See LGPL_EXCEPTIONS.txt, for exception details
|
# See LGPL_EXCEPTIONS.txt, for exception details
|
||||||
License: LGPLv2 with exceptions or GPLv3 with exceptions
|
License: LGPLv2 with exceptions or GPLv3 with exceptions
|
||||||
@ -108,6 +108,10 @@ Patch53: qtbase-opensource-src-5.4.1-QTBUG-45484.patch
|
|||||||
# 'make docs' crash on el6, use qSort instead of std::sort
|
# 'make docs' crash on el6, use qSort instead of std::sort
|
||||||
Patch100: qtbase-opensource-src-5.4.0-QTBUG-43057.patch
|
Patch100: qtbase-opensource-src-5.4.0-QTBUG-43057.patch
|
||||||
|
|
||||||
|
# https://codereview.qt-project.org/#/c/120700/
|
||||||
|
# http://bugreports.qt.io/browse/QTBUG-47041
|
||||||
|
Patch101: qt5-qtbase-QTBUG-47041.patch
|
||||||
|
|
||||||
# https://bugreports.qt.io/browse/QTBUG-46310
|
# https://bugreports.qt.io/browse/QTBUG-46310
|
||||||
#SM_CLIENT_ID property is not set
|
#SM_CLIENT_ID property is not set
|
||||||
Patch223: 0123-xcb-set-SM_CLIENT_ID-property.patch
|
Patch223: 0123-xcb-set-SM_CLIENT_ID-property.patch
|
||||||
@ -385,6 +389,7 @@ rm -fv mkspecs/linux-g++*/qmake.conf.multilib-optflags
|
|||||||
%if 0%{?rhel} == 6
|
%if 0%{?rhel} == 6
|
||||||
%patch100 -p1 -b .QTBUG-43057
|
%patch100 -p1 -b .QTBUG-43057
|
||||||
%endif
|
%endif
|
||||||
|
%patch101 -p1 -b .QTBUG-47041
|
||||||
%patch155 -p1 -b .0055
|
%patch155 -p1 -b .0055
|
||||||
%patch223 -p1 -b .QTBUG-46310
|
%patch223 -p1 -b .QTBUG-46310
|
||||||
|
|
||||||
@ -943,6 +948,9 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Oct 05 2015 Rex Dieter <rdieter@fedoraproject.org> 5.5.0-18
|
||||||
|
- When a screen comes back online, the windows need to be told about it (QTBUG-47041)
|
||||||
|
|
||||||
* Wed Aug 19 2015 Rex Dieter <rdieter@fedoraproject.org> 5.5.0-17
|
* Wed Aug 19 2015 Rex Dieter <rdieter@fedoraproject.org> 5.5.0-17
|
||||||
- unconditionally undo valgrind hack when done (#1255054)
|
- unconditionally undo valgrind hack when done (#1255054)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user