rdieter pushed to qt5-qtbase (el6). "rebase to latest SM patches (QTBUG-45484, QTBUG-46310)"
notifications at fedoraproject.org
notifications at fedoraproject.org
Mon Jun 8 20:51:55 UTC 2015
From 05d8ec8529fe92463996725bd08317fdbfc4e5d2 Mon Sep 17 00:00:00 2001
From: Rex Dieter <rdieter at math.unl.edu>
Date: Mon, 8 Jun 2015 11:51:18 -0500
Subject: rebase to latest SM patches (QTBUG-45484, QTBUG-46310)
diff --git a/0002-xcb-set-SM_CLIENT_ID-property.patch b/0002-xcb-set-SM_CLIENT_ID-property.patch
deleted file mode 100644
index 6fb1114..0000000
--- a/0002-xcb-set-SM_CLIENT_ID-property.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 72de0df09c2fb5b0d61b019753aa4522964113a5 Mon Sep 17 00:00:00 2001
-From: Stefan Becker <chemobejk at gmail.com>
-Date: Mon, 25 May 2015 17:46:49 +0300
-Subject: [PATCH 2/2] xcb: set SM_CLIENT_ID property
-
-SM_CLIENT_ID is required by kwin for proper session management.
-
-Copy the code from the QT4 implementation to the appropriate place in
-QT5.
-
-Task-number: QTBUG-46310
----
- 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 f8c2ff8..513f556 100644
---- a/src/plugins/platforms/xcb/qxcbwindow.cpp
-+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
-@@ -530,6 +530,16 @@ void QXcbWindow::create()
- atom(QXcbAtom::WM_CLIENT_LEADER), XCB_ATOM_WINDOW, 32,
- 1, &leader));
-
-+#ifndef QT_NO_SESSIONMANAGER
-+ // If we are session managed, inform the window manager about it
-+ QByteArray session = qApp->sessionId().toLatin1();
-+ if (!session.isEmpty()) {
-+ Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, leader,
-+ atom(QXcbAtom::SM_CLIENT_ID), XCB_ATOM_STRING, 8,
-+ session.length(), session.constData()));
-+ }
-+#endif
-+
- /* Add XEMBED info; this operation doesn't initiate the embedding. */
- quint32 data[] = { XEMBED_VERSION, XEMBED_MAPPED };
- Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window,
---
-2.4.0
-
diff --git a/qt5-qtbase.spec b/qt5-qtbase.spec
index 8204f6b..eb18ab9 100644
--- a/qt5-qtbase.spec
+++ b/qt5-qtbase.spec
@@ -42,7 +42,7 @@
Summary: Qt5 - QtBase components
Name: qt5-qtbase
Version: 5.4.2
-Release: 1%{?dist}
+Release: 2%{?dist}
# See LGPL_EXCEPTIONS.txt, for exception details
License: LGPLv2 with exceptions or GPLv3 with exceptions
@@ -107,7 +107,7 @@ Patch53: qtbase-opensource-src-5.4.1-QTBUG-45484.patch
# https://bugreports.qt.io/browse/QTBUG-46310
#SM_CLIENT_ID property is not set
-Patch54: https://bugreports.qt.io/secure/attachment/48820/0002-xcb-set-SM_CLIENT_ID-property.patch
+Patch54: qtbase-opensource-src-5.4.1-QTBUG-46310.patch
## upstream patches
# workaround https://bugreports.qt-project.org/browse/QTBUG-43057
@@ -911,6 +911,9 @@ fi
%changelog
+* Mon Jun 08 2015 Rex Dieter <rdieter at fedoraproject.org> 5.4.2-2
+- rebase to latest SM patches (QTBUG-45484, QTBUG-46310)
+
* Tue Jun 02 2015 Jan Grulich <jgrulich at redhat.com> 5.4.2-1
- Update to 5.4.2
diff --git a/qtbase-opensource-src-5.4.1-QTBUG-45484.patch b/qtbase-opensource-src-5.4.1-QTBUG-45484.patch
index 39557fc..3cd8b7b 100644
--- a/qtbase-opensource-src-5.4.1-QTBUG-45484.patch
+++ b/qtbase-opensource-src-5.4.1-QTBUG-45484.patch
@@ -1,127 +1,165 @@
-diff -up qtbase-opensource-src-5.4.1/src/gui/kernel/qplatformwindow.cpp.QTBUG-45484 qtbase-opensource-src-5.4.1/src/gui/kernel/qplatformwindow.cpp
---- qtbase-opensource-src-5.4.1/src/gui/kernel/qplatformwindow.cpp.QTBUG-45484 2015-02-16 22:56:48.000000000 -0600
-+++ qtbase-opensource-src-5.4.1/src/gui/kernel/qplatformwindow.cpp 2015-05-25 08:45:55.305771441 -0500
-@@ -286,6 +286,16 @@ void QPlatformWindow::setWindowFilePath(
- void QPlatformWindow::setWindowIcon(const QIcon &icon) { Q_UNUSED(icon); }
-
- /*!
-+ Reimplement to set the window role to \a role
-+*/
-+void QPlatformWindow::setWindowRole(const QString &role) { Q_UNUSED(role); }
-+
-+/*!
-+ Reimplement to get the window role
-+*/
-+QString QPlatformWindow::windowRole() const { return QString(); }
+From 7187a71d80d5bd14171dae1215df454c64f8c8b8 Mon Sep 17 00:00:00 2001
+From: Alexander Volkov <a.volkov at 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 5227732..d166c9f 100644
+--- a/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h
++++ b/src/platformheaders/xcbfunctions/qxcbwindowfunctions.h
+@@ -72,6 +72,16 @@ public:
+ if (func)
+ func(window, type);
+ }
+
-+/*!
- Reimplement to be able to let Qt raise windows to the top of the desktop
- */
- void QPlatformWindow::raise() { qWarning("This plugin does not support raise()"); }
-diff -up qtbase-opensource-src-5.4.1/src/gui/kernel/qplatformwindow.h.QTBUG-45484 qtbase-opensource-src-5.4.1/src/gui/kernel/qplatformwindow.h
---- qtbase-opensource-src-5.4.1/src/gui/kernel/qplatformwindow.h.QTBUG-45484 2015-02-16 22:56:48.000000000 -0600
-+++ qtbase-opensource-src-5.4.1/src/gui/kernel/qplatformwindow.h 2015-05-25 08:45:55.305771441 -0500
-@@ -90,9 +90,12 @@ public:
- virtual void setWindowTitle(const QString &title);
- virtual void setWindowFilePath(const QString &title);
- virtual void setWindowIcon(const QIcon &icon);
-+ virtual void setWindowRole(const QString &role);
- virtual void raise();
- virtual void lower();
-
-+ virtual QString windowRole() const;
++ typedef void (*SetWmWindowRole)(QWindow *window, const QByteArray &role);
++ static const QByteArray setWmWindowRoleIdentifier() { return QByteArrayLiteral("XcbSetWmWindowRole"); }
+
- virtual bool isExposed() const;
- virtual bool isActive() const;
- virtual bool isEmbedded(const QPlatformWindow *parentWindow) const;
-diff -up qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.cpp.QTBUG-45484 qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.cpp
---- qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.cpp.QTBUG-45484 2015-05-25 08:45:55.258771302 -0500
-+++ qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.cpp 2015-05-25 09:07:12.608572492 -0500
-@@ -256,6 +256,7 @@ QXcbWindow::QXcbWindow(QWindow *window)
- , m_lastWindowStateEvent(-1)
- , m_syncState(NoSyncNeeded)
- , m_pendingSyncRequest(0)
-+ , m_windowRole()
- {
- setConnection(xcbscreen()->connection());
++ static void setWmWindowRole(QWindow *window, const QByteArray &role)
++ {
++ SetWmWindowRole func = reinterpret_cast<SetWmWindowRole>(QGuiApplication::platformFunction(setWmWindowRoleIdentifier()));
++ if (func)
++ func(window, role);
++ }
+ };
+
-@@ -1455,6 +1456,20 @@ void QXcbWindow::setWindowIcon(const QIc
+diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
+index 31dedd4..0bd49b8 100644
+--- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
++++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
+@@ -339,6 +339,9 @@ QFunctionPointer QXcbNativeInterface::platformFunction(const QByteArray &functio
+ if (function == QXcbWindowFunctions::setWmWindowTypeIdentifier()) {
+ return QFunctionPointer(QXcbWindow::setWmWindowTypeStatic);
}
++ 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 0094278..14e186a 100644
+--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
+@@ -236,6 +236,7 @@ static inline bool positionIncludesFrame(QWindow *w)
+ }
+
+ 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)
+@@ -562,6 +563,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()
+@@ -1596,6 +1602,14 @@ void QXcbWindow::setWmWindowTypeStatic(QWindow *window, QXcbWindowFunctions::WmW
+ window->setProperty(wm_window_type_property_id, QVariant::fromValue(static_cast<int>(windowTypes)));
}
-+void QXcbWindow::setWindowRole(const QString &role)
++void QXcbWindow::setWmWindowRoleStatic(QWindow *window, const QByteArray &role)
+{
-+ const QByteArray ba = role.toLatin1();
-+ Q_XCB_CALL(xcb_change_property(xcb_connection(),
-+ XCB_PROP_MODE_REPLACE,
-+ m_window,
-+ atom(QXcbAtom::WM_WINDOW_ROLE),
-+ XCB_ATOM_STRING,
-+ 8,
-+ ba.length(),
-+ ba.constData()));
-+ m_windowRole = role;
++ if (window->handle())
++ static_cast<QXcbWindow *>(window->handle())->setWmWindowRole(role);
++ else
++ window->setProperty(wm_window_role_property_id, role);
+}
+
- void QXcbWindow::raise()
+ QXcbWindowFunctions::WmWindowTypes QXcbWindow::wmWindowTypes() const
{
- const quint32 mask = XCB_CONFIG_WINDOW_STACK_MODE;
-diff -up qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.h.QTBUG-45484 qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.h
---- qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.h.QTBUG-45484 2015-05-25 08:45:55.258771302 -0500
-+++ qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.h 2015-05-25 08:45:55.306771444 -0500
-@@ -88,8 +88,12 @@ public:
-
- void setWindowTitle(const QString &title);
- void setWindowIcon(const QIcon &icon);
-+ void setWindowRole(const QString &role);
- void raise();
- void lower();
-+
-+ QString windowRole() const Q_DECL_OVERRIDE { return m_windowRole; }
+ QXcbWindowFunctions::WmWindowTypes result(0);
+@@ -1712,6 +1726,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()));
++}
+
- void propagateSizeHints();
+ class ExposeCompressor
+ {
+ public:
+diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h
+index 254421e..2c9964c 100644
+--- a/src/plugins/platforms/xcb/qxcbwindow.h
++++ b/src/plugins/platforms/xcb/qxcbwindow.h
+@@ -143,9 +143,11 @@ public:
+ #endif
- void requestActivateWindow();
-@@ -234,6 +238,8 @@ private:
- SyncState m_syncState;
+ static void setWmWindowTypeStatic(QWindow *window, QXcbWindowFunctions::WmWindowTypes windowTypes);
++ static void setWmWindowRoleStatic(QWindow *window, const QByteArray &role);
- QXcbSyncWindowRequest *m_pendingSyncRequest;
-+
-+ QString m_windowRole;
- };
+ QXcbWindowFunctions::WmWindowTypes wmWindowTypes() const;
+ void setWmWindowType(QXcbWindowFunctions::WmWindowTypes types);
++ void setWmWindowRole(const QByteArray &role);
- QT_END_NAMESPACE
-diff -up qtbase-opensource-src-5.4.1/src/widgets/kernel/qwidget.cpp.QTBUG-45484 qtbase-opensource-src-5.4.1/src/widgets/kernel/qwidget.cpp
---- qtbase-opensource-src-5.4.1/src/widgets/kernel/qwidget.cpp.QTBUG-45484 2015-02-16 22:56:40.000000000 -0600
-+++ qtbase-opensource-src-5.4.1/src/widgets/kernel/qwidget.cpp 2015-05-25 08:45:55.309771453 -0500
-@@ -6226,8 +6226,11 @@ void QWidgetPrivate::setWindowFilePath_s
+ bool needsSync() const;
- QString QWidget::windowRole() const
- {
-- Q_D(const QWidget);
-- return (d->extra && d->extra->topextra) ? d->extra->topextra->role : QString();
-+ if (const QWindow *window = windowHandle())
-+ if (QPlatformWindow *platformWindow = window->handle())
-+ return platformWindow->windowRole();
+diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
+index c99e15b..bc4750e 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
+@@ -1445,6 +1446,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());
+
-+ return QString();
- }
+ QBackingStore *store = q->backingStore();
- /*!
-@@ -6236,13 +6239,9 @@ QString QWidget::windowRole() const
+ if (!store) {
+@@ -6236,13 +6240,11 @@ QString QWidget::windowRole() const
*/
void QWidget::setWindowRole(const QString &role)
{
-#if defined(Q_WS_X11)
-- Q_D(QWidget);
-- d->topData()->role = role;
+ Q_D(QWidget);
++ d->createTLExtra();
+ d->topData()->role = role;
- d->setWindowRole();
-#else
- Q_UNUSED(role)
-#endif
-+ if (const QWindow *window = windowHandle())
-+ if (QPlatformWindow *platformWindow = window->handle())
-+ return platformWindow->setWindowRole(role);
++ if (windowHandle())
++ QXcbWindowFunctions::setWmWindowRole(windowHandle(), role.toLatin1());
}
/*!
+--
+2.4.2
+
diff --git a/qtbase-opensource-src-5.4.1-QTBUG-46310.patch b/qtbase-opensource-src-5.4.1-QTBUG-46310.patch
new file mode 100644
index 0000000..82849d4
--- /dev/null
+++ b/qtbase-opensource-src-5.4.1-QTBUG-46310.patch
@@ -0,0 +1,173 @@
+diff -up qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbconnection.cpp.QTBUG-46310 qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbconnection.cpp
+--- qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbconnection.cpp.QTBUG-46310 2015-06-08 18:55:19.427037122 +0300
++++ qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbconnection.cpp 2015-06-08 18:55:19.436036915 +0300
+@@ -330,6 +330,7 @@ QXcbConnection::QXcbConnection(QXcbNativ
+ , has_xkb(false)
+ , m_buttons(0)
+ , m_focusWindow(0)
++ , m_clientLeader(0)
+ , m_systemTrayTracker(0)
+ {
+ #ifdef XCB_USE_EGL
+@@ -1241,6 +1242,58 @@ xcb_window_t QXcbConnection::rootWindow(
+ return primaryScreen()->root();
+ }
+
++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;
++}
++
+ void QXcbConnection::processXcbEvents()
+ {
+ int connection_error = xcb_connection_has_error(xcb_connection());
+diff -up qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbconnection.h.QTBUG-46310 qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbconnection.h
+--- qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbconnection.h.QTBUG-46310 2015-02-17 06:56:51.000000000 +0200
++++ qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbconnection.h 2015-06-08 18:55:19.436036915 +0300
+@@ -394,6 +394,8 @@ public:
+
+ QXcbWMSupport *wmSupport() const { return m_wmSupport.data(); }
+ xcb_window_t rootWindow();
++ xcb_window_t clientLeader();
++
+ #ifdef XCB_USE_XLIB
+ void *xlib_display() const { return m_xlib_display; }
+ #endif
+@@ -617,6 +619,7 @@ private:
+
+ QXcbWindow *m_focusWindow;
+
++ xcb_window_t m_clientLeader;
+ QByteArray m_startupId;
+ QXcbSystemTrayTracker *m_systemTrayTracker;
+
+diff -up qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbscreen.cpp.QTBUG-46310 qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbscreen.cpp
+--- qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbscreen.cpp.QTBUG-46310 2015-02-17 06:56:51.000000000 +0200
++++ qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbscreen.cpp 2015-06-08 18:55:19.436036915 +0300
+@@ -163,38 +163,6 @@ QXcbScreen::QXcbScreen(QXcbConnection *c
+ 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 -up qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbscreen.h.QTBUG-46310 qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbscreen.h
+--- qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbscreen.h.QTBUG-46310 2015-02-17 06:56:51.000000000 +0200
++++ qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbscreen.h 2015-06-08 18:55:19.437036892 +0300
+@@ -80,8 +80,6 @@ public:
+ xcb_screen_t *screen() const { return m_screen; }
+ xcb_window_t root() const { return m_screen->root; }
+
+- xcb_window_t clientLeader() const { return m_clientLeader; }
+-
+ void windowShown(QXcbWindow *window);
+ QString windowManagerName() const { return m_windowManagerName; }
+ bool syncRequestSupported() const { return m_syncRequestSupported; }
+@@ -125,7 +123,6 @@ private:
+ int m_number;
+ 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 -up qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.cpp.QTBUG-46310 qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.cpp
+--- qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.cpp.QTBUG-46310 2015-06-08 18:55:19.437036892 +0300
++++ qtbase-opensource-src-5.4.1/src/plugins/platforms/xcb/qxcbwindow.cpp 2015-06-08 18:56:40.773169979 +0300
+@@ -525,7 +525,7 @@ void QXcbWindow::create()
+
+ xcb_set_wm_hints(xcb_connection(), m_window, &hints);
+
+- xcb_window_t leader = screen->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));
+@@ -750,7 +750,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 = static_cast<QXcbScreen *>(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,
--
cgit v0.10.2
http://pkgs.fedoraproject.org/cgit/qt5-qtbase.git/commit/?h=el6&id=05d8ec8529fe92463996725bd08317fdbfc4e5d2
More information about the scm-commits
mailing list