- Prepare to 5.5.1 release with Qt 5.5.1 RC
This commit is contained in:
parent
eed09bb685
commit
67f6debfaa
|
@ -1,2 +1,3 @@
|
|||
/qtbase-opensource-src-5.4.2.tar.xz
|
||||
/qtbase-opensource-src-5.5.0.tar.xz
|
||||
/qtbase-opensource-src-5.5.1-rc1.tar.xz
|
||||
|
|
|
@ -1,55 +0,0 @@
|
|||
From a8621a3f85e64f1252a80ae81a6e22554f7b3f44 Mon Sep 17 00:00:00 2001
|
||||
From: Sune Vuorela <sune@vuorela.dk>
|
||||
Date: Mon, 15 Jun 2015 21:16:24 +0200
|
||||
Subject: [PATCH 055/299] Respect manual set icon themes.
|
||||
|
||||
Currently all icon resolving is passed thru to the platform icon engine,
|
||||
even in the case where the application developer has set their own
|
||||
requested icon theme. In that case, the application developer
|
||||
specifically does not want to follow the icon theme of the system, so
|
||||
don't ask the platform, but rely on Qt code instead.
|
||||
|
||||
It leads to bugs reported to platform icon theme providers like this:
|
||||
MMC: https://github.com/MultiMC/MultiMC5/issues/796
|
||||
KDE: https://bugs.kde.org/show_bug.cgi?id=344469
|
||||
|
||||
Thanks to the multimc people (Jan Dalheimer and Peterix) for the
|
||||
reports and testcases.
|
||||
|
||||
Change-Id: I52cda6f688b2ef9e44e060c8ae67831cb02b26c8
|
||||
Reviewed-by: Eike Hein <hein@kde.org>
|
||||
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
|
||||
---
|
||||
src/gui/image/qicon.cpp | 3 ++-
|
||||
src/gui/image/qiconloader_p.h | 1 +
|
||||
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
|
||||
index 40ba84b..cafc966 100644
|
||||
--- a/src/gui/image/qicon.cpp
|
||||
+++ b/src/gui/image/qicon.cpp
|
||||
@@ -1170,7 +1170,8 @@ QIcon QIcon::fromTheme(const QString &name, const QIcon &fallback)
|
||||
icon = *qtIconCache()->object(name);
|
||||
} else {
|
||||
QPlatformTheme * const platformTheme = QGuiApplicationPrivate::platformTheme();
|
||||
- QIconEngine * const engine = platformTheme ? platformTheme->createIconEngine(name)
|
||||
+ bool hasUserTheme = QIconLoader::instance()->hasUserTheme();
|
||||
+ QIconEngine * const engine = (platformTheme && !hasUserTheme) ? platformTheme->createIconEngine(name)
|
||||
: new QIconLoaderEngine(name);
|
||||
QIcon *cachedIcon = new QIcon(engine);
|
||||
icon = *cachedIcon;
|
||||
diff --git a/src/gui/image/qiconloader_p.h b/src/gui/image/qiconloader_p.h
|
||||
index 38cf9c1..5b0362e 100644
|
||||
--- a/src/gui/image/qiconloader_p.h
|
||||
+++ b/src/gui/image/qiconloader_p.h
|
||||
@@ -173,6 +173,7 @@ public:
|
||||
void updateSystemTheme();
|
||||
void invalidateKey() { m_themeKey++; }
|
||||
void ensureInitialized();
|
||||
+ bool hasUserTheme() const { return !m_userTheme.isEmpty(); }
|
||||
|
||||
private:
|
||||
QThemeIconInfo findIconHelper(const QString &themeName,
|
||||
--
|
||||
2.4.3
|
||||
|
|
@ -1,203 +0,0 @@
|
|||
From 61a0656eb4149fe793854d703521bf2df48f8f7a Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Becker <chemobejk@gmail.com>
|
||||
Date: Mon, 25 May 2015 17:46:49 +0300
|
||||
Subject: [PATCH 123/255] xcb: set SM_CLIENT_ID property
|
||||
|
||||
SM_CLIENT_ID is required by kwin for proper session management.
|
||||
|
||||
- move client leader initialization from screen to connection
|
||||
- add SM_CLIENT_ID property to client leader
|
||||
|
||||
Change-Id: I19fb0d098811c865f6f13d5bc3e59a173c596a65
|
||||
Task-number: QTBUG-46310
|
||||
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
|
||||
Reviewed-by: Uli Schlachter <psychon@znc.in>
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbconnection.cpp | 53 ++++++++++++++++++++++++++++
|
||||
src/plugins/platforms/xcb/qxcbconnection.h | 2 ++
|
||||
src/plugins/platforms/xcb/qxcbscreen.cpp | 32 -----------------
|
||||
src/plugins/platforms/xcb/qxcbscreen.h | 3 --
|
||||
src/plugins/platforms/xcb/qxcbwindow.cpp | 4 +--
|
||||
5 files changed, 57 insertions(+), 37 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||
index 4e558f9..74f48b0 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||
@@ -454,6 +454,7 @@ QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, bool canGra
|
||||
, has_xkb(false)
|
||||
, m_buttons(0)
|
||||
, m_focusWindow(0)
|
||||
+ , m_clientLeader(0)
|
||||
, m_systemTrayTracker(0)
|
||||
, m_glIntegration(Q_NULLPTR)
|
||||
, m_xiGrab(false)
|
||||
@@ -1336,6 +1337,58 @@ xcb_window_t QXcbConnection::rootWindow()
|
||||
return s ? s->root() : 0;
|
||||
}
|
||||
|
||||
+xcb_window_t QXcbConnection::clientLeader()
|
||||
+{
|
||||
+ if (m_clientLeader == 0) {
|
||||
+ m_clientLeader = xcb_generate_id(xcb_connection());
|
||||
+ QXcbScreen *screen = primaryScreen();
|
||||
+ Q_XCB_CALL(xcb_create_window(xcb_connection(),
|
||||
+ XCB_COPY_FROM_PARENT,
|
||||
+ m_clientLeader,
|
||||
+ screen->root(),
|
||||
+ 0, 0, 1, 1,
|
||||
+ 0,
|
||||
+ XCB_WINDOW_CLASS_INPUT_OUTPUT,
|
||||
+ screen->screen()->root_visual,
|
||||
+ 0, 0));
|
||||
+#ifndef QT_NO_DEBUG
|
||||
+ QByteArray ba("Qt client leader window");
|
||||
+ Q_XCB_CALL(xcb_change_property(xcb_connection(),
|
||||
+ XCB_PROP_MODE_REPLACE,
|
||||
+ m_clientLeader,
|
||||
+ atom(QXcbAtom::_NET_WM_NAME),
|
||||
+ atom(QXcbAtom::UTF8_STRING),
|
||||
+ 8,
|
||||
+ ba.length(),
|
||||
+ ba.constData()));
|
||||
+#endif
|
||||
+ Q_XCB_CALL(xcb_change_property(xcb_connection(),
|
||||
+ XCB_PROP_MODE_REPLACE,
|
||||
+ m_clientLeader,
|
||||
+ atom(QXcbAtom::WM_CLIENT_LEADER),
|
||||
+ XCB_ATOM_WINDOW,
|
||||
+ 32,
|
||||
+ 1,
|
||||
+ &m_clientLeader));
|
||||
+
|
||||
+#if !defined(QT_NO_SESSIONMANAGER) && defined(XCB_USE_SM)
|
||||
+ // If we are session managed, inform the window manager about it
|
||||
+ QByteArray session = qGuiApp->sessionId().toLatin1();
|
||||
+ if (!session.isEmpty()) {
|
||||
+ Q_XCB_CALL(xcb_change_property(xcb_connection(),
|
||||
+ XCB_PROP_MODE_REPLACE,
|
||||
+ m_clientLeader,
|
||||
+ atom(QXcbAtom::SM_CLIENT_ID),
|
||||
+ XCB_ATOM_STRING,
|
||||
+ 8,
|
||||
+ session.length(),
|
||||
+ session.constData()));
|
||||
+ }
|
||||
+#endif
|
||||
+ }
|
||||
+ return m_clientLeader;
|
||||
+}
|
||||
+
|
||||
#ifdef XCB_USE_XLIB
|
||||
void *QXcbConnection::xlib_display() const
|
||||
{
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h
|
||||
index 348af5f..ee5ed89 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbconnection.h
|
||||
+++ b/src/plugins/platforms/xcb/qxcbconnection.h
|
||||
@@ -403,6 +403,7 @@ public:
|
||||
|
||||
QXcbWMSupport *wmSupport() const { return m_wmSupport.data(); }
|
||||
xcb_window_t rootWindow();
|
||||
+ xcb_window_t clientLeader();
|
||||
|
||||
bool hasDefaultVisualId() const { return m_defaultVisualId != UINT_MAX; }
|
||||
xcb_visualid_t defaultVisualId() const { return m_defaultVisualId; }
|
||||
@@ -640,6 +641,7 @@ private:
|
||||
|
||||
QXcbWindow *m_focusWindow;
|
||||
|
||||
+ xcb_window_t m_clientLeader;
|
||||
QByteArray m_startupId;
|
||||
QXcbSystemTrayTracker *m_systemTrayTracker;
|
||||
QXcbGlIntegration *m_glIntegration;
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp
|
||||
index 040cea1..c7f8114 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
|
||||
@@ -170,38 +170,6 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, QXcbVirtualDesktop *virtualDe
|
||||
else
|
||||
m_syncRequestSupported = true;
|
||||
|
||||
- m_clientLeader = xcb_generate_id(xcb_connection());
|
||||
- Q_XCB_CALL2(xcb_create_window(xcb_connection(),
|
||||
- XCB_COPY_FROM_PARENT,
|
||||
- m_clientLeader,
|
||||
- screen()->root,
|
||||
- 0, 0, 1, 1,
|
||||
- 0,
|
||||
- XCB_WINDOW_CLASS_INPUT_OUTPUT,
|
||||
- screen()->root_visual,
|
||||
- 0, 0), connection);
|
||||
-#ifndef QT_NO_DEBUG
|
||||
- QByteArray ba("Qt client leader window for screen ");
|
||||
- ba += m_outputName.toUtf8();
|
||||
- Q_XCB_CALL2(xcb_change_property(xcb_connection(),
|
||||
- XCB_PROP_MODE_REPLACE,
|
||||
- m_clientLeader,
|
||||
- atom(QXcbAtom::_NET_WM_NAME),
|
||||
- atom(QXcbAtom::UTF8_STRING),
|
||||
- 8,
|
||||
- ba.length(),
|
||||
- ba.constData()), connection);
|
||||
-#endif
|
||||
-
|
||||
- Q_XCB_CALL2(xcb_change_property(xcb_connection(),
|
||||
- XCB_PROP_MODE_REPLACE,
|
||||
- m_clientLeader,
|
||||
- atom(QXcbAtom::WM_CLIENT_LEADER),
|
||||
- XCB_ATOM_WINDOW,
|
||||
- 32,
|
||||
- 1,
|
||||
- &m_clientLeader), connection);
|
||||
-
|
||||
xcb_depth_iterator_t depth_iterator =
|
||||
xcb_screen_allowed_depths_iterator(screen());
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbscreen.h b/src/plugins/platforms/xcb/qxcbscreen.h
|
||||
index 4451947..ccc30c0 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbscreen.h
|
||||
+++ b/src/plugins/platforms/xcb/qxcbscreen.h
|
||||
@@ -116,8 +116,6 @@ public:
|
||||
xcb_randr_crtc_t crtc() const { return m_crtc; }
|
||||
xcb_randr_mode_t mode() const { return m_mode; }
|
||||
|
||||
- xcb_window_t clientLeader() const { return m_clientLeader; }
|
||||
-
|
||||
void windowShown(QXcbWindow *window);
|
||||
QString windowManagerName() const { return m_windowManagerName; }
|
||||
bool syncRequestSupported() const { return m_syncRequestSupported; }
|
||||
@@ -173,7 +171,6 @@ private:
|
||||
Qt::ScreenOrientation m_orientation;
|
||||
QString m_windowManagerName;
|
||||
bool m_syncRequestSupported;
|
||||
- xcb_window_t m_clientLeader;
|
||||
QMap<xcb_visualid_t, xcb_visualtype_t> m_visuals;
|
||||
QMap<xcb_visualid_t, quint8> m_visualDepths;
|
||||
QXcbCursor *m_cursor;
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
index 9c5609b..af4a88b 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
@@ -622,7 +622,7 @@ void QXcbWindow::create()
|
||||
|
||||
xcb_set_wm_hints(xcb_connection(), m_window, &hints);
|
||||
|
||||
- xcb_window_t leader = platformScreen->clientLeader();
|
||||
+ xcb_window_t leader = connection()->clientLeader();
|
||||
Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window,
|
||||
atom(QXcbAtom::WM_CLIENT_LEADER), XCB_ATOM_WINDOW, 32,
|
||||
1, &leader));
|
||||
@@ -874,7 +874,7 @@ void QXcbWindow::show()
|
||||
// Default to client leader if there is no transient parent, else modal dialogs can
|
||||
// be hidden by their parents.
|
||||
if (!transientXcbParent)
|
||||
- transientXcbParent = xcbScreen()->clientLeader();
|
||||
+ transientXcbParent = connection()->clientLeader();
|
||||
if (transientXcbParent) { // ICCCM 4.1.2.6
|
||||
Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window,
|
||||
XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 32,
|
||||
--
|
||||
2.4.3
|
||||
|
|
@ -39,12 +39,12 @@
|
|||
|
||||
%define examples 1
|
||||
|
||||
#define prerelease rc
|
||||
%define prerelease rc1
|
||||
|
||||
Summary: Qt5 - QtBase components
|
||||
Name: qt5-qtbase
|
||||
Version: 5.5.0
|
||||
Release: 17%{?dist}
|
||||
Version: 5.5.1
|
||||
Release: 1%{?dist}
|
||||
|
||||
# See LGPL_EXCEPTIONS.txt, for exception details
|
||||
License: LGPLv2 with exceptions or GPLv3 with exceptions
|
||||
|
@ -80,9 +80,6 @@ Patch12: qtbase-opensource-src-5.2.0-enable_ft_lcdfilter.patch
|
|||
# (often in kde apps), keep an eye on https://git.reviewboard.kde.org/r/103699/
|
||||
Patch25: qtbase-opensource-src-5.5.1-qdbusconnection_no_debug.patch
|
||||
|
||||
# fix issue on big endian platform
|
||||
Patch13: qtbase-opensource-src-5.5.x-big-endian.patch
|
||||
|
||||
# upstreamable patches
|
||||
# support poll
|
||||
# https://bugreports.qt-project.org/browse/QTBUG-27195
|
||||
|
@ -93,28 +90,11 @@ Patch50: qt5-poll.patch
|
|||
# https://bugzilla.redhat.com/show_bug.cgi?id=1083664
|
||||
Patch51: qtbase-opensource-src-5.5-disconnect_displays.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1219173
|
||||
# https://bugreports.qt.io/browse/QTBUG-33093
|
||||
# https://codereview.qt-project.org/#/c/95219/
|
||||
Patch52: qtbase-opensource-src-5.4.1-QTBUG-33093.patch
|
||||
|
||||
# https://bugreports.qt.io/browse/QTBUG-45484
|
||||
# QWidget::setWindowRole does nothing
|
||||
# adapted to apply on top of patch51
|
||||
Patch53: qtbase-opensource-src-5.4.1-QTBUG-45484.patch
|
||||
|
||||
## upstream patches
|
||||
# workaround https://bugreports.qt-project.org/browse/QTBUG-43057
|
||||
# 'make docs' crash on el6, use qSort instead of std::sort
|
||||
Patch100: qtbase-opensource-src-5.4.0-QTBUG-43057.patch
|
||||
|
||||
# https://bugreports.qt.io/browse/QTBUG-46310
|
||||
#SM_CLIENT_ID property is not set
|
||||
Patch223: 0123-xcb-set-SM_CLIENT_ID-property.patch
|
||||
|
||||
# https://bugs.kde.org/show_bug.cgi?id=344469
|
||||
Patch155: 0055-Respect-manual-set-icon-themes.patch
|
||||
|
||||
# macros, be mindful to keep sync'd with macros.qt5
|
||||
Source1: macros.qt5
|
||||
%define _qt5 %{name}
|
||||
|
@ -123,7 +103,6 @@ Source1: macros.qt5
|
|||
# -devel bindir items (still) conflict with qt4
|
||||
# at least until this is all implemented,
|
||||
# http://lists.qt-project.org/pipermail/development/2012-November/007990.html
|
||||
#define _qt5_bindir %{_bindir}
|
||||
%define _qt5_bindir %{_qt5_prefix}/bin
|
||||
%define _qt5_datadir %{_datadir}/qt5
|
||||
%define _qt5_docdir %{_docdir}/qt5
|
||||
|
@ -375,18 +354,13 @@ rm -fv mkspecs/linux-g++*/qmake.conf.multilib-optflags
|
|||
%patch4 -p1 -b .QTBUG-35459
|
||||
%patch12 -p1 -b .enable_ft_lcdfilter
|
||||
%patch25 -p1 -b .qdbusconnection_no_debug
|
||||
%patch13 -p1 -b .big-endian
|
||||
|
||||
#patch50 -p1 -b .poll
|
||||
%patch51 -p1 -b .disconnect_displays
|
||||
%patch52 -p1 -b .QTBUG-33093
|
||||
%patch53 -p1 -b .QTBUG-45484
|
||||
|
||||
%if 0%{?rhel} == 6
|
||||
%patch100 -p1 -b .QTBUG-43057
|
||||
%endif
|
||||
%patch155 -p1 -b .0055
|
||||
%patch223 -p1 -b .QTBUG-46310
|
||||
|
||||
# drop -fexceptions from $RPM_OPT_FLAGS
|
||||
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
|
||||
|
@ -524,7 +498,7 @@ translationdir=%{_qt5_translationdir}
|
|||
|
||||
Name: Qt5
|
||||
Description: Qt5 Configuration
|
||||
Version: %{version}
|
||||
Version: 5.5.1
|
||||
EOF
|
||||
|
||||
# rpm macros
|
||||
|
@ -943,6 +917,10 @@ fi
|
|||
|
||||
|
||||
%changelog
|
||||
* Tue Sep 29 2015 Helio Chissini de Castro <helio@kde.org> - 5.5.1-1
|
||||
- Update to Qt 5.5.1 RC1
|
||||
- Patchs 13, 52, 53, 155, 223 removed due to inclusion upstream
|
||||
|
||||
* Wed Aug 19 2015 Rex Dieter <rdieter@fedoraproject.org> 5.5.0-17
|
||||
- unconditionally undo valgrind hack when done (#1255054)
|
||||
|
||||
|
|
|
@ -1,64 +0,0 @@
|
|||
diff -up qtbase-opensource-src-5.4.1/src/gui/kernel/qshortcutmap.cpp.QTBUG-33093 qtbase-opensource-src-5.4.1/src/gui/kernel/qshortcutmap.cpp
|
||||
--- qtbase-opensource-src-5.4.1/src/gui/kernel/qshortcutmap.cpp.QTBUG-33093 2015-02-16 22:56:48.000000000 -0600
|
||||
+++ qtbase-opensource-src-5.4.1/src/gui/kernel/qshortcutmap.cpp 2015-05-06 14:29:44.991086570 -0500
|
||||
@@ -380,9 +380,7 @@ QKeySequence::SequenceMatch QShortcutMap
|
||||
result = find(e);
|
||||
if (result == QKeySequence::NoMatch && (e->modifiers() & Qt::KeypadModifier)) {
|
||||
// Try to find a match without keypad modifier
|
||||
- QKeyEvent event = *e;
|
||||
- event.setModifiers(e->modifiers() & ~Qt::KeypadModifier);
|
||||
- result = find(&event);
|
||||
+ result = find(e, Qt::KeypadModifier);
|
||||
}
|
||||
if (result == QKeySequence::NoMatch && e->modifiers() & Qt::ShiftModifier) {
|
||||
// If Shift + Key_Backtab, also try Shift + Qt::Key_Tab
|
||||
@@ -435,13 +433,13 @@ bool QShortcutMap::hasShortcutForKeySequ
|
||||
which can be access through matches().
|
||||
\sa matches
|
||||
*/
|
||||
-QKeySequence::SequenceMatch QShortcutMap::find(QKeyEvent *e)
|
||||
+QKeySequence::SequenceMatch QShortcutMap::find(QKeyEvent *e, int ignoredModifiers)
|
||||
{
|
||||
Q_D(QShortcutMap);
|
||||
if (!d->sequences.count())
|
||||
return QKeySequence::NoMatch;
|
||||
|
||||
- createNewSequences(e, d->newEntries);
|
||||
+ createNewSequences(e, d->newEntries, ignoredModifiers);
|
||||
#if defined(DEBUG_QSHORTCUTMAP)
|
||||
qDebug() << "Possible shortcut key sequences:" << d->newEntries;
|
||||
#endif
|
||||
@@ -543,7 +541,7 @@ void QShortcutMap::clearSequence(QVector
|
||||
Alters \a seq to the new sequence state, based on the
|
||||
current sequence state, and the new key event \a e.
|
||||
*/
|
||||
-void QShortcutMap::createNewSequences(QKeyEvent *e, QVector<QKeySequence> &ksl)
|
||||
+void QShortcutMap::createNewSequences(QKeyEvent *e, QVector<QKeySequence> &ksl, int ignoredModifiers)
|
||||
{
|
||||
Q_D(QShortcutMap);
|
||||
QList<int> possibleKeys = QKeyMapper::possibleKeys(e);
|
||||
@@ -573,7 +571,7 @@ void QShortcutMap::createNewSequences(QK
|
||||
curKsl.setKey(0, 2);
|
||||
curKsl.setKey(0, 3);
|
||||
}
|
||||
- curKsl.setKey(possibleKeys.at(pkNum), index);
|
||||
+ curKsl.setKey(possibleKeys.at(pkNum) & ~ignoredModifiers, index);
|
||||
}
|
||||
}
|
||||
}
|
||||
diff -up qtbase-opensource-src-5.4.1/src/gui/kernel/qshortcutmap_p.h.QTBUG-33093 qtbase-opensource-src-5.4.1/src/gui/kernel/qshortcutmap_p.h
|
||||
--- qtbase-opensource-src-5.4.1/src/gui/kernel/qshortcutmap_p.h.QTBUG-33093 2015-02-16 22:56:48.000000000 -0600
|
||||
+++ qtbase-opensource-src-5.4.1/src/gui/kernel/qshortcutmap_p.h 2015-05-06 14:27:40.637978022 -0500
|
||||
@@ -88,10 +88,10 @@ private:
|
||||
QKeySequence::SequenceMatch state();
|
||||
void dispatchEvent(QKeyEvent *e);
|
||||
|
||||
- QKeySequence::SequenceMatch find(QKeyEvent *e);
|
||||
+ QKeySequence::SequenceMatch find(QKeyEvent *e, int ignoredModifiers = 0);
|
||||
QKeySequence::SequenceMatch matches(const QKeySequence &seq1, const QKeySequence &seq2) const;
|
||||
QVector<const QShortcutEntry *> matches() const;
|
||||
- void createNewSequences(QKeyEvent *e, QVector<QKeySequence> &ksl);
|
||||
+ void createNewSequences(QKeyEvent *e, QVector<QKeySequence> &ksl, int ignoredModifiers);
|
||||
void clearSequence(QVector<QKeySequence> &ksl);
|
||||
int translateModifiers(Qt::KeyboardModifiers modifiers);
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
From 7187a71d80d5bd14171dae1215df454c64f8c8b8 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
||||
Date: Mon, 8 Jun 2015 14:35:22 +0300
|
||||
Subject: [PATCH 1/2] Fix QWidget::setWindowRole()
|
||||
|
||||
Introduce QXcbWindowFunctions::setWmWindowRole() and call it either from
|
||||
the implementation of QWidget::setWindowRole() or after the creation of
|
||||
the corresponding QWidgetWindow.
|
||||
|
||||
Change-Id: I143450f4673dd707bb491c1d0f0e8b61d564283d
|
||||
Task-number: QTBUG-45484
|
||||
---
|
||||
.../xcbfunctions/qxcbwindowfunctions.h | 10 ++++++++++
|
||||
src/plugins/platforms/xcb/qxcbnativeinterface.cpp | 3 +++
|
||||
src/plugins/platforms/xcb/qxcbwindow.cpp | 21 +++++++++++++++++++++
|
||||
src/plugins/platforms/xcb/qxcbwindow.h | 2 ++
|
||||
src/widgets/kernel/qwidget.cpp | 12 +++++++-----
|
||||
5 files changed, 43 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h
|
||||
index ae05cf5..0f83a99 100644
|
||||
--- a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h
|
||||
+++ b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h
|
||||
@@ -83,6 +83,16 @@ public:
|
||||
return func(window);
|
||||
return UINT_MAX;
|
||||
}
|
||||
+
|
||||
+ typedef void (*SetWmWindowRole)(QWindow *window, const QByteArray &role);
|
||||
+ static const QByteArray setWmWindowRoleIdentifier() { return QByteArrayLiteral("XcbSetWmWindowRole"); }
|
||||
+
|
||||
+ static void setWmWindowRole(QWindow *window, const QByteArray &role)
|
||||
+ {
|
||||
+ SetWmWindowRole func = reinterpret_cast<SetWmWindowRole>(QGuiApplication::platformFunction(setWmWindowRoleIdentifier()));
|
||||
+ if (func)
|
||||
+ func(window, role);
|
||||
+ }
|
||||
};
|
||||
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
|
||||
index 8bf9003..3928da3 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
|
||||
@@ -395,6 +395,9 @@ QFunctionPointer QXcbNativeInterface::platformFunction(const QByteArray &functio
|
||||
if (function == QXcbWindowFunctions::visualIdIdentifier()) {
|
||||
return QFunctionPointer(QXcbWindowFunctions::VisualId(QXcbWindow::visualIdStatic));
|
||||
}
|
||||
+ if (function == QXcbWindowFunctions::setWmWindowRoleIdentifier()) {
|
||||
+ return QFunctionPointer(QXcbWindow::setWmWindowRoleStatic);
|
||||
+ }
|
||||
return Q_NULLPTR;
|
||||
}
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
index d1b6888..7c043fb 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
||||
@@ -322,6 +322,7 @@ static inline XTextProperty* qstringToXTP(Display *dpy, const QString& s)
|
||||
#endif // XCB_USE_XLIB
|
||||
|
||||
static const char *wm_window_type_property_id = "_q_xcb_wm_window_type";
|
||||
+static const char *wm_window_role_property_id = "_q_xcb_wm_window_role";
|
||||
|
||||
QXcbWindow::QXcbWindow(QWindow *window)
|
||||
: QPlatformWindow(window)
|
||||
@@ -660,6 +661,11 @@ void QXcbWindow::create()
|
||||
setOpacity(opacity);
|
||||
if (window()->isTopLevel())
|
||||
setWindowIcon(window()->icon());
|
||||
+
|
||||
+ if (window()->dynamicPropertyNames().contains(wm_window_type_property_id)) {
|
||||
+ QByteArray wmWindowRole = window()->property(wm_window_type_property_id).toByteArray();
|
||||
+ setWmWindowRole(wmWindowRole);
|
||||
+ }
|
||||
}
|
||||
|
||||
QXcbWindow::~QXcbWindow()
|
||||
@@ -1716,6 +1722,14 @@ uint QXcbWindow::visualIdStatic(QWindow *window)
|
||||
return UINT_MAX;
|
||||
}
|
||||
|
||||
+void QXcbWindow::setWmWindowRoleStatic(QWindow *window, const QByteArray &role)
|
||||
+{
|
||||
+ if (window->handle())
|
||||
+ static_cast<QXcbWindow *>(window->handle())->setWmWindowRole(role);
|
||||
+ else
|
||||
+ window->setProperty(wm_window_role_property_id, role);
|
||||
+}
|
||||
+
|
||||
QXcbWindowFunctions::WmWindowTypes QXcbWindow::wmWindowTypes() const
|
||||
{
|
||||
QXcbWindowFunctions::WmWindowTypes result(0);
|
||||
@@ -1832,6 +1846,13 @@ void QXcbWindow::setWmWindowType(QXcbWindowFunctions::WmWindowTypes types)
|
||||
xcb_flush(xcb_connection());
|
||||
}
|
||||
|
||||
+void QXcbWindow::setWmWindowRole(const QByteArray &role)
|
||||
+{
|
||||
+ Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window,
|
||||
+ atom(QXcbAtom::WM_WINDOW_ROLE), XCB_ATOM_STRING, 8,
|
||||
+ role.size(), role.constData()));
|
||||
+}
|
||||
+
|
||||
class ExposeCompressor
|
||||
{
|
||||
public:
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h
|
||||
index e62bfcb..352db2e 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbwindow.h
|
||||
+++ b/src/plugins/platforms/xcb/qxcbwindow.h
|
||||
@@ -140,10 +140,12 @@ public:
|
||||
void updateNetWmUserTime(xcb_timestamp_t timestamp);
|
||||
|
||||
static void setWmWindowTypeStatic(QWindow *window, QXcbWindowFunctions::WmWindowTypes windowTypes);
|
||||
+ static void setWmWindowRoleStatic(QWindow *window, const QByteArray &role);
|
||||
static uint visualIdStatic(QWindow *window);
|
||||
|
||||
QXcbWindowFunctions::WmWindowTypes wmWindowTypes() const;
|
||||
void setWmWindowType(QXcbWindowFunctions::WmWindowTypes types);
|
||||
+ void setWmWindowRole(const QByteArray &role);
|
||||
|
||||
uint visualId() const;
|
||||
|
||||
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
|
||||
index e701eb0..4e06a2f 100644
|
||||
--- a/src/widgets/kernel/qwidget.cpp
|
||||
+++ b/src/widgets/kernel/qwidget.cpp
|
||||
@@ -100,6 +100,7 @@
|
||||
|
||||
#include "qwindowcontainer_p.h"
|
||||
|
||||
+#include "QtPlatformHeaders/qxcbwindowfunctions.h"
|
||||
|
||||
// widget/widget data creation count
|
||||
//#define QWIDGET_EXTRA_DEBUG
|
||||
@@ -1451,6 +1452,9 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
|
||||
|
||||
data.window_flags = win->flags();
|
||||
|
||||
+ if (!topData()->role.isNull())
|
||||
+ QXcbWindowFunctions::setWmWindowRole(win, topData()->role.toLatin1());
|
||||
+
|
||||
QBackingStore *store = q->backingStore();
|
||||
|
||||
if (!store) {
|
||||
@@ -6254,13 +6258,12 @@ QString QWidget::windowRole() const
|
||||
*/
|
||||
void QWidget::setWindowRole(const QString &role)
|
||||
{
|
||||
-#if defined(Q_DEAD_CODE_FROM_QT4_X11)
|
||||
Q_D(QWidget);
|
||||
+ d->createTLExtra();
|
||||
d->topData()->role = role;
|
||||
- d->setWindowRole();
|
||||
-#else
|
||||
- Q_UNUSED(role)
|
||||
-#endif
|
||||
+
|
||||
+ if (windowHandle())
|
||||
+ QXcbWindowFunctions::setWmWindowRole(windowHandle(), role.toLatin1());
|
||||
}
|
||||
|
||||
/*!
|
|
@ -1,12 +0,0 @@
|
|||
diff -up qtbase-opensource-src-5.5.0/src/gui/image/qimage_conversions.cpp.than qtbase-opensource-src-5.5.0/src/gui/image/qimage_conversions.cpp
|
||||
--- qtbase-opensource-src-5.5.0/src/gui/image/qimage_conversions.cpp.than 2015-07-09 17:01:29.605707305 +0200
|
||||
+++ qtbase-opensource-src-5.5.0/src/gui/image/qimage_conversions.cpp 2015-07-10 12:39:04.022599044 +0200
|
||||
@@ -1103,7 +1103,7 @@ static bool mask_alpha_converter_rgbx_in
|
||||
}
|
||||
rgb_data += pad;
|
||||
}
|
||||
- data->format = DestFormat;
|
||||
+ data->format = QImage::Format_RGBX8888;
|
||||
return true;
|
||||
#endif
|
||||
}
|
Loading…
Reference in New Issue