forked from pool/libqt5-qtbase
Accepting request 339538 from KDE:Qt5
bugfix 5.5.1 update OBS-URL: https://build.opensuse.org/request/show/339538 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=48
This commit is contained in:
parent
3b1f949c32
commit
f8187c059a
@ -1,35 +0,0 @@
|
|||||||
From 4bc7ce49d92e7a0647b7e2f42c649d4cfee10d74 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
|
||||||
Date: Thu, 7 May 2015 17:10:12 +0300
|
|
||||||
Subject: [PATCH 1/1] xcb: Fix getting the window types from the property of
|
|
||||||
QWindow
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
wm_window_type_property_id is a dynamic property, so we should
|
|
||||||
check that it is set by using QObject::dynamicPropertyNames()
|
|
||||||
instead of QMetaObject::indexOfProperty().
|
|
||||||
|
|
||||||
Change-Id: Ic7f3408a0d028f349538e0538c40c4b58360f7df
|
|
||||||
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
|
||||||
---
|
|
||||||
src/plugins/platforms/xcb/qxcbwindow.cpp | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
|
||||||
index a6011aa654824c46f1e10c04dbc1b8d8c9c6658a..42a86ae8104641d24b0ce4dbd7418ad17bf8bd38 100644
|
|
||||||
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
|
|
||||||
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
|
||||||
@@ -762,7 +762,7 @@ void QXcbWindow::show()
|
|
||||||
updateNetWmStateBeforeMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (window()->metaObject()->indexOfProperty(wm_window_type_property_id) >= 0) {
|
|
||||||
+ if (window()->dynamicPropertyNames().contains(wm_window_type_property_id)) {
|
|
||||||
QXcbWindowFunctions::WmWindowTypes wmWindowTypes(window()->property(wm_window_type_property_id).value<int>());
|
|
||||||
setWmWindowType(wmWindowTypes);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.4.2
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
|||||||
From 2d0957d4b84ca3b07a62ce5c87e0f656dbe690de Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
|
||||||
Date: Tue, 10 Feb 2015 17:43:03 +0300
|
|
||||||
Subject: [PATCH 1/1] Fix centering dialogs
|
|
||||||
|
|
||||||
QDialog::setVisible() tries to adjusts the dialog position, but
|
|
||||||
it's not really possible if the dialog size is not defined yet.
|
|
||||||
Besides, if the dialog window is not created, QWidget::move()
|
|
||||||
will not really move it and will set WA_PendingMoveEvent flag.
|
|
||||||
And QWidget::setVisible() also will not change the position,
|
|
||||||
because we reset WA_Moved flag. Thus it may break adjusting
|
|
||||||
the position in QDialog::showEvent().
|
|
||||||
|
|
||||||
So adjust the position only in QDialog::showEvent().
|
|
||||||
|
|
||||||
Task-number: QTBUG-36185
|
|
||||||
Task-number: QTBUG-39259
|
|
||||||
Task-number: QTBUG-41844
|
|
||||||
Change-Id: I015a19f2e533f68178f4ee7519b17f5e9b5def7b
|
|
||||||
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
|
|
||||||
---
|
|
||||||
src/widgets/dialogs/qdialog.cpp | 7 -------
|
|
||||||
1 file changed, 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/widgets/dialogs/qdialog.cpp b/src/widgets/dialogs/qdialog.cpp
|
|
||||||
index 6de3ff8c157c7e97fa334c07d5adbd4c64d948a7..22025378afb75339c8ae298720089e40ce5682b8 100644
|
|
||||||
--- a/src/widgets/dialogs/qdialog.cpp
|
|
||||||
+++ b/src/widgets/dialogs/qdialog.cpp
|
|
||||||
@@ -717,13 +717,6 @@ void QDialog::setVisible(bool visible)
|
|
||||||
if (testAttribute(Qt::WA_WState_ExplicitShowHide) && !testAttribute(Qt::WA_WState_Hidden))
|
|
||||||
return;
|
|
||||||
|
|
||||||
- if (!testAttribute(Qt::WA_Moved)) {
|
|
||||||
- Qt::WindowStates state = windowState();
|
|
||||||
- adjustPosition(parentWidget());
|
|
||||||
- setAttribute(Qt::WA_Moved, false); // not really an explicit position
|
|
||||||
- if (state != windowState())
|
|
||||||
- setWindowState(state);
|
|
||||||
- }
|
|
||||||
QWidget::setVisible(visible);
|
|
||||||
showExtension(d->doShowExtension);
|
|
||||||
QWidget *fw = window()->focusWidget();
|
|
||||||
--
|
|
||||||
2.4.2
|
|
||||||
|
|
@ -1,227 +0,0 @@
|
|||||||
From 1d9a6d0859a7daca0385cbdfdf4c6b7caf32e6d8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
|
||||||
Date: Tue, 5 May 2015 23:04:26 +0300
|
|
||||||
Subject: xcb: Set _NET_WM_WINDOW_TYPE from a single place
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Merge QXcbWindow::setNetWmWindowFlags(), which was called from
|
|
||||||
QXcbWindow::setWindowFlags(), into QXcbWindow::setWmWindowType().
|
|
||||||
Now setWindowFlags() can't override window type set by
|
|
||||||
QXcbWindowFunctions::setWmWindowType().
|
|
||||||
|
|
||||||
Also reorder _NET_WM_WINDOW_TYPE atoms in QXcbWindow::setWmWindowType()
|
|
||||||
as it was in Qt 4.
|
|
||||||
|
|
||||||
Change-Id: Id1752d78f91caf04e9d16bb1ac40ed180597df7b
|
|
||||||
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
|
|
||||||
---
|
|
||||||
src/plugins/platforms/xcb/qxcbwindow.cpp | 117 ++++++++++++++++---------------
|
|
||||||
src/plugins/platforms/xcb/qxcbwindow.h | 3 +-
|
|
||||||
2 files changed, 63 insertions(+), 57 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
|
||||||
index cb5f410..6e021ce 100644
|
|
||||||
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
|
|
||||||
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
|
||||||
@@ -873,11 +873,6 @@ void QXcbWindow::show()
|
|
||||||
updateNetWmStateBeforeMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (window()->dynamicPropertyNames().contains(wm_window_type_property_id)) {
|
|
||||||
- QXcbWindowFunctions::WmWindowTypes wmWindowTypes(window()->property(wm_window_type_property_id).value<int>());
|
|
||||||
- setWmWindowType(wmWindowTypes);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
if (connection()->time() != XCB_TIME_CURRENT_TIME)
|
|
||||||
updateNetWmUserTime(connection()->time());
|
|
||||||
|
|
||||||
@@ -1140,7 +1135,13 @@ void QXcbWindow::setWindowFlags(Qt::WindowFlags flags)
|
|
||||||
|
|
||||||
xcb_change_window_attributes(xcb_connection(), xcb_window(), mask, values);
|
|
||||||
|
|
||||||
- setNetWmWindowFlags(flags);
|
|
||||||
+ QXcbWindowFunctions::WmWindowTypes wmWindowTypes = 0;
|
|
||||||
+ if (window()->dynamicPropertyNames().contains(wm_window_type_property_id)) {
|
|
||||||
+ wmWindowTypes = static_cast<QXcbWindowFunctions::WmWindowTypes>(
|
|
||||||
+ window()->property(wm_window_type_property_id).value<int>());
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ setWmWindowType(wmWindowTypes, flags);
|
|
||||||
setMotifWindowFlags(flags);
|
|
||||||
|
|
||||||
setTransparentForMouseEvents(flags & Qt::WindowTransparentForInput);
|
|
||||||
@@ -1291,42 +1292,6 @@ void QXcbWindow::setWindowState(Qt::WindowState state)
|
|
||||||
m_windowState = state;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void QXcbWindow::setNetWmWindowFlags(Qt::WindowFlags flags)
|
|
||||||
-{
|
|
||||||
- // in order of decreasing priority
|
|
||||||
- QVector<uint> windowTypes;
|
|
||||||
-
|
|
||||||
- Qt::WindowType type = static_cast<Qt::WindowType>(int(flags & Qt::WindowType_Mask));
|
|
||||||
-
|
|
||||||
- switch (type) {
|
|
||||||
- case Qt::Dialog:
|
|
||||||
- case Qt::Sheet:
|
|
||||||
- windowTypes.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_DIALOG));
|
|
||||||
- break;
|
|
||||||
- case Qt::Tool:
|
|
||||||
- case Qt::Drawer:
|
|
||||||
- windowTypes.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_UTILITY));
|
|
||||||
- break;
|
|
||||||
- case Qt::ToolTip:
|
|
||||||
- windowTypes.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_TOOLTIP));
|
|
||||||
- break;
|
|
||||||
- case Qt::SplashScreen:
|
|
||||||
- windowTypes.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_SPLASH));
|
|
||||||
- break;
|
|
||||||
- default:
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- if (flags & Qt::FramelessWindowHint)
|
|
||||||
- windowTypes.append(atom(QXcbAtom::_KDE_NET_WM_WINDOW_TYPE_OVERRIDE));
|
|
||||||
-
|
|
||||||
- windowTypes.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_NORMAL));
|
|
||||||
-
|
|
||||||
- Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window,
|
|
||||||
- atom(QXcbAtom::_NET_WM_WINDOW_TYPE), XCB_ATOM_ATOM, 32,
|
|
||||||
- windowTypes.count(), windowTypes.constData()));
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
void QXcbWindow::updateMotifWmHintsBeforeMap()
|
|
||||||
{
|
|
||||||
QtMotifWmHints mwmhints = getMotifWmHints(connection(), m_window);
|
|
||||||
@@ -1703,10 +1668,10 @@ QSurfaceFormat QXcbWindow::format() const
|
|
||||||
|
|
||||||
void QXcbWindow::setWmWindowTypeStatic(QWindow *window, QXcbWindowFunctions::WmWindowTypes windowTypes)
|
|
||||||
{
|
|
||||||
+ window->setProperty(wm_window_type_property_id, QVariant::fromValue(static_cast<int>(windowTypes)));
|
|
||||||
+
|
|
||||||
if (window->handle())
|
|
||||||
- static_cast<QXcbWindow *>(window->handle())->setWmWindowType(windowTypes);
|
|
||||||
- else
|
|
||||||
- window->setProperty(wm_window_type_property_id, QVariant::fromValue(static_cast<int>(windowTypes)));
|
|
||||||
+ static_cast<QXcbWindow *>(window->handle())->setWmWindowType(windowTypes, window->flags());
|
|
||||||
}
|
|
||||||
|
|
||||||
uint QXcbWindow::visualIdStatic(QWindow *window)
|
|
||||||
@@ -1787,40 +1752,82 @@ QXcbWindowFunctions::WmWindowTypes QXcbWindow::wmWindowTypes() const
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void QXcbWindow::setWmWindowType(QXcbWindowFunctions::WmWindowTypes types)
|
|
||||||
+void QXcbWindow::setWmWindowType(QXcbWindowFunctions::WmWindowTypes types, Qt::WindowFlags flags)
|
|
||||||
{
|
|
||||||
QVector<xcb_atom_t> atoms;
|
|
||||||
|
|
||||||
+ // manual selection 1 (these are never set by Qt and take precedence)
|
|
||||||
if (types & QXcbWindowFunctions::Normal)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_NORMAL));
|
|
||||||
if (types & QXcbWindowFunctions::Desktop)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_DESKTOP));
|
|
||||||
if (types & QXcbWindowFunctions::Dock)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_DOCK));
|
|
||||||
- if (types & QXcbWindowFunctions::Toolbar)
|
|
||||||
- atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_TOOLBAR));
|
|
||||||
- if (types & QXcbWindowFunctions::Menu)
|
|
||||||
- atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_MENU));
|
|
||||||
+ if (types & QXcbWindowFunctions::Notification)
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_NOTIFICATION));
|
|
||||||
+
|
|
||||||
+ // manual selection 2 (Qt uses these during auto selection);
|
|
||||||
if (types & QXcbWindowFunctions::Utility)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_UTILITY));
|
|
||||||
if (types & QXcbWindowFunctions::Splash)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_SPLASH));
|
|
||||||
if (types & QXcbWindowFunctions::Dialog)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_DIALOG));
|
|
||||||
+ if (types & QXcbWindowFunctions::Tooltip)
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_TOOLTIP));
|
|
||||||
+ if (types & QXcbWindowFunctions::KdeOverride)
|
|
||||||
+ atoms.append(atom(QXcbAtom::_KDE_NET_WM_WINDOW_TYPE_OVERRIDE));
|
|
||||||
+
|
|
||||||
+ // manual selection 3 (these can be set by Qt, but don't have a
|
|
||||||
+ // corresponding Qt::WindowType). note that order of the *MENU
|
|
||||||
+ // atoms is important
|
|
||||||
+ if (types & QXcbWindowFunctions::Menu)
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_MENU));
|
|
||||||
if (types & QXcbWindowFunctions::DropDownMenu)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_DROPDOWN_MENU));
|
|
||||||
if (types & QXcbWindowFunctions::PopupMenu)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_POPUP_MENU));
|
|
||||||
- if (types & QXcbWindowFunctions::Tooltip)
|
|
||||||
- atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_TOOLTIP));
|
|
||||||
- if (types & QXcbWindowFunctions::Notification)
|
|
||||||
- atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_NOTIFICATION));
|
|
||||||
+ if (types & QXcbWindowFunctions::Toolbar)
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_TOOLBAR));
|
|
||||||
if (types & QXcbWindowFunctions::Combo)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_COMBO));
|
|
||||||
if (types & QXcbWindowFunctions::Dnd)
|
|
||||||
atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_DND));
|
|
||||||
- if (types & QXcbWindowFunctions::KdeOverride)
|
|
||||||
+
|
|
||||||
+ // automatic selection
|
|
||||||
+ Qt::WindowType type = static_cast<Qt::WindowType>(int(flags & Qt::WindowType_Mask));
|
|
||||||
+ switch (type) {
|
|
||||||
+ case Qt::Dialog:
|
|
||||||
+ case Qt::Sheet:
|
|
||||||
+ if (!(types & QXcbWindowFunctions::Dialog))
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_DIALOG));
|
|
||||||
+ break;
|
|
||||||
+ case Qt::Tool:
|
|
||||||
+ case Qt::Drawer:
|
|
||||||
+ if (!(types & QXcbWindowFunctions::Utility))
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_UTILITY));
|
|
||||||
+ break;
|
|
||||||
+ case Qt::ToolTip:
|
|
||||||
+ if (!(types & QXcbWindowFunctions::Tooltip))
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_TOOLTIP));
|
|
||||||
+ break;
|
|
||||||
+ case Qt::SplashScreen:
|
|
||||||
+ if (!(types & QXcbWindowFunctions::Splash))
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_SPLASH));
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if ((flags & Qt::FramelessWindowHint) && !(type & QXcbWindowFunctions::KdeOverride)) {
|
|
||||||
+ // override netwm type - quick and easy for KDE noborder
|
|
||||||
atoms.append(atom(QXcbAtom::_KDE_NET_WM_WINDOW_TYPE_OVERRIDE));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (atoms.size() == 1 && atoms.first() == atom(QXcbAtom::_NET_WM_WINDOW_TYPE_NORMAL))
|
|
||||||
+ atoms.clear();
|
|
||||||
+ else
|
|
||||||
+ atoms.append(atom(QXcbAtom::_NET_WM_WINDOW_TYPE_NORMAL));
|
|
||||||
|
|
||||||
if (atoms.isEmpty()) {
|
|
||||||
Q_XCB_CALL(xcb_delete_property(xcb_connection(), m_window, atom(QXcbAtom::_NET_WM_WINDOW_TYPE)));
|
|
||||||
diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h
|
|
||||||
index e62bfcb..a379a6f 100644
|
|
||||||
--- a/src/plugins/platforms/xcb/qxcbwindow.h
|
|
||||||
+++ b/src/plugins/platforms/xcb/qxcbwindow.h
|
|
||||||
@@ -143,7 +143,7 @@ public:
|
|
||||||
static uint visualIdStatic(QWindow *window);
|
|
||||||
|
|
||||||
QXcbWindowFunctions::WmWindowTypes wmWindowTypes() const;
|
|
||||||
- void setWmWindowType(QXcbWindowFunctions::WmWindowTypes types);
|
|
||||||
+ void setWmWindowType(QXcbWindowFunctions::WmWindowTypes types, Qt::WindowFlags flags);
|
|
||||||
|
|
||||||
uint visualId() const;
|
|
||||||
|
|
||||||
@@ -179,7 +179,6 @@ protected:
|
|
||||||
NetWmStates netWmStates();
|
|
||||||
void setNetWmStates(NetWmStates);
|
|
||||||
|
|
||||||
- void setNetWmWindowFlags(Qt::WindowFlags flags);
|
|
||||||
void setMotifWindowFlags(Qt::WindowFlags flags);
|
|
||||||
|
|
||||||
void updateMotifWmHintsBeforeMap();
|
|
||||||
--
|
|
||||||
cgit v0.11.0
|
|
@ -1,4 +1,4 @@
|
|||||||
From 552cbc0d89dcdbf32dfe652ff7d3bbe45dafe595 Mon Sep 17 00:00:00 2001
|
From 5e5031527a3b443c93bf9e762c2f47e6786d7a31 Mon Sep 17 00:00:00 2001
|
||||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
||||||
Date: Thu, 7 May 2015 17:36:57 +0300
|
Date: Thu, 7 May 2015 17:36:57 +0300
|
||||||
Subject: [PATCH] Restore documented behavior for the WA_X11NetWmWindowType*
|
Subject: [PATCH] Restore documented behavior for the WA_X11NetWmWindowType*
|
||||||
@ -10,29 +10,15 @@ types to the window's _NET_WM_WINDOW_TYPE X11 window property.
|
|||||||
Change-Id: Ia2413ad7a69ab8d49b448de11dd07c77101a564c
|
Change-Id: Ia2413ad7a69ab8d49b448de11dd07c77101a564c
|
||||||
Task-number: QTBUG-39887
|
Task-number: QTBUG-39887
|
||||||
---
|
---
|
||||||
src/src.pro | 2 +-
|
src/widgets/kernel/qwidget.cpp | 44 ++++++++++++++++++++++++++++++++++++++----
|
||||||
src/widgets/kernel/qwidget.cpp | 45 ++++++++++++++++++++++++++++++++++++++----
|
|
||||||
src/widgets/kernel/qwidget_p.h | 3 ++-
|
src/widgets/kernel/qwidget_p.h | 3 ++-
|
||||||
3 files changed, 44 insertions(+), 6 deletions(-)
|
2 files changed, 42 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/src.pro b/src/src.pro
|
|
||||||
index b4d62aa..090ae68 100644
|
|
||||||
--- a/src/src.pro
|
|
||||||
+++ b/src/src.pro
|
|
||||||
@@ -110,7 +110,7 @@ src_platformsupport.depends = src_corelib src_gui src_platformheaders
|
|
||||||
|
|
||||||
src_widgets.subdir = $$PWD/widgets
|
|
||||||
src_widgets.target = sub-widgets
|
|
||||||
-src_widgets.depends = src_corelib src_gui src_tools_uic
|
|
||||||
+src_widgets.depends = src_corelib src_gui src_tools_uic src_platformheaders
|
|
||||||
|
|
||||||
src_opengl.subdir = $$PWD/opengl
|
|
||||||
src_opengl.target = sub-opengl
|
|
||||||
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
|
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
|
||||||
index b2ea83c..d918b1a 100644
|
index 2c9cc5c..0f05280 100644
|
||||||
--- a/src/widgets/kernel/qwidget.cpp
|
--- a/src/widgets/kernel/qwidget.cpp
|
||||||
+++ b/src/widgets/kernel/qwidget.cpp
|
+++ b/src/widgets/kernel/qwidget.cpp
|
||||||
@@ -1406,6 +1407,7 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
|
@@ -1414,6 +1414,7 @@ void QWidgetPrivate::create_sys(WId wind
|
||||||
win->setProperty("_q_showWithoutActivating", QVariant(true));
|
win->setProperty("_q_showWithoutActivating", QVariant(true));
|
||||||
if (q->testAttribute(Qt::WA_MacAlwaysShowToolWindow))
|
if (q->testAttribute(Qt::WA_MacAlwaysShowToolWindow))
|
||||||
win->setProperty("_q_macAlwaysShowToolWindow", QVariant::fromValue(QVariant(true)));
|
win->setProperty("_q_macAlwaysShowToolWindow", QVariant::fromValue(QVariant(true)));
|
||||||
@ -40,7 +26,7 @@ index b2ea83c..d918b1a 100644
|
|||||||
win->setFlags(data.window_flags);
|
win->setFlags(data.window_flags);
|
||||||
fixPosIncludesFrame();
|
fixPosIncludesFrame();
|
||||||
if (q->testAttribute(Qt::WA_Moved)
|
if (q->testAttribute(Qt::WA_Moved)
|
||||||
@@ -11135,7 +11137,6 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
|
@@ -11149,7 +11150,6 @@ void QWidget::setAttribute(Qt::WidgetAtt
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +34,7 @@ index b2ea83c..d918b1a 100644
|
|||||||
case Qt::WA_X11NetWmWindowTypeDesktop:
|
case Qt::WA_X11NetWmWindowTypeDesktop:
|
||||||
case Qt::WA_X11NetWmWindowTypeDock:
|
case Qt::WA_X11NetWmWindowTypeDock:
|
||||||
case Qt::WA_X11NetWmWindowTypeToolBar:
|
case Qt::WA_X11NetWmWindowTypeToolBar:
|
||||||
@@ -11149,10 +11150,8 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
|
@@ -11163,10 +11163,8 @@ void QWidget::setAttribute(Qt::WidgetAtt
|
||||||
case Qt::WA_X11NetWmWindowTypeNotification:
|
case Qt::WA_X11NetWmWindowTypeNotification:
|
||||||
case Qt::WA_X11NetWmWindowTypeCombo:
|
case Qt::WA_X11NetWmWindowTypeCombo:
|
||||||
case Qt::WA_X11NetWmWindowTypeDND:
|
case Qt::WA_X11NetWmWindowTypeDND:
|
||||||
@ -60,7 +46,7 @@ index b2ea83c..d918b1a 100644
|
|||||||
|
|
||||||
case Qt::WA_StaticContents:
|
case Qt::WA_StaticContents:
|
||||||
if (QWidgetBackingStore *bs = d->maybeBackingStore()) {
|
if (QWidgetBackingStore *bs = d->maybeBackingStore()) {
|
||||||
@@ -12796,6 +12795,44 @@ void QWidgetPrivate::setWidgetParentHelper(QObject *widgetAsObject, QObject *new
|
@@ -12823,6 +12821,44 @@ void QWidgetPrivate::setWidgetParentHelp
|
||||||
widget->setParent(static_cast<QWidget*>(newParent));
|
widget->setParent(static_cast<QWidget*>(newParent));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,9 +88,9 @@ index b2ea83c..d918b1a 100644
|
|||||||
+ QXcbWindowFunctions::setWmWindowType(q->windowHandle(), static_cast<QXcbWindowFunctions::WmWindowType>(wmWindowType));
|
+ QXcbWindowFunctions::setWmWindowType(q->windowHandle(), static_cast<QXcbWindowFunctions::WmWindowType>(wmWindowType));
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
QT_END_NAMESPACE
|
/*! \fn Qt::HANDLE QWidget::macCGHandle() const
|
||||||
|
\internal
|
||||||
|
|
||||||
#include "moc_qwidget.cpp"
|
|
||||||
diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h
|
diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h
|
||||||
index fe65cb1..dc1c580 100644
|
index fe65cb1..dc1c580 100644
|
||||||
--- a/src/widgets/kernel/qwidget_p.h
|
--- a/src/widgets/kernel/qwidget_p.h
|
||||||
|
@ -1,177 +0,0 @@
|
|||||||
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
|
||||||
index b8b6651..06fec12 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)
|
|
||||||
@@ -1358,6 +1359,58 @@ void *QXcbConnection::createVisualInfoForDefaultVisualId() const
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+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 --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h
|
|
||||||
index 2911936..891fa9f 100644
|
|
||||||
--- a/src/plugins/platforms/xcb/qxcbconnection.h
|
|
||||||
+++ b/src/plugins/platforms/xcb/qxcbconnection.h
|
|
||||||
@@ -402,6 +402,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; }
|
|
||||||
@@ -639,6 +640,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 edf68d4..6e39f59 100644
|
|
||||||
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
|
|
||||||
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
|
|
||||||
@@ -623,7 +623,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));
|
|
||||||
@@ -864,7 +864,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,
|
|
@ -29,7 +29,7 @@ Change-Id: I049a653beeb5454c9539ffff13e3fe6f050fdf31
|
|||||||
5 files changed, 26 insertions(+)
|
5 files changed, 26 insertions(+)
|
||||||
|
|
||||||
diff --git a/mkspecs/common/gcc-base-unix.conf b/mkspecs/common/gcc-base-unix.conf
|
diff --git a/mkspecs/common/gcc-base-unix.conf b/mkspecs/common/gcc-base-unix.conf
|
||||||
index 29e0521..3e0b3ba 100644
|
index f82c8a843062d6591713160d865b51264cc9cb5b..0178bda75a97398d6ca78b2bb8f04ca3fe8b9455 100644
|
||||||
--- a/mkspecs/common/gcc-base-unix.conf
|
--- a/mkspecs/common/gcc-base-unix.conf
|
||||||
+++ b/mkspecs/common/gcc-base-unix.conf
|
+++ b/mkspecs/common/gcc-base-unix.conf
|
||||||
@@ -22,3 +22,4 @@ QMAKE_LFLAGS_USE_GOLD = -fuse-ld=gold
|
@@ -22,3 +22,4 @@ QMAKE_LFLAGS_USE_GOLD = -fuse-ld=gold
|
||||||
@ -38,7 +38,7 @@ index 29e0521..3e0b3ba 100644
|
|||||||
QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
|
QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
|
||||||
+QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script,
|
+QMAKE_LFLAGS_VERSION_SCRIPT = -Wl,--version-script,
|
||||||
diff --git a/mkspecs/common/qcc-base-qnx.conf b/mkspecs/common/qcc-base-qnx.conf
|
diff --git a/mkspecs/common/qcc-base-qnx.conf b/mkspecs/common/qcc-base-qnx.conf
|
||||||
index a0a88b9..cebbe06 100644
|
index a0a88b9605412e9c316a2ab831f71740245fbf20..cebbe06661196834701938cff84127667f9ddb35 100644
|
||||||
--- a/mkspecs/common/qcc-base-qnx.conf
|
--- a/mkspecs/common/qcc-base-qnx.conf
|
||||||
+++ b/mkspecs/common/qcc-base-qnx.conf
|
+++ b/mkspecs/common/qcc-base-qnx.conf
|
||||||
@@ -19,6 +19,7 @@ QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link,
|
@@ -19,6 +19,7 @@ QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link,
|
||||||
@ -50,14 +50,14 @@ index a0a88b9..cebbe06 100644
|
|||||||
# Generic options for all BlackBerry/QNX qcc mkspecs
|
# Generic options for all BlackBerry/QNX qcc mkspecs
|
||||||
QMAKE_CFLAGS_THREAD = -D_REENTRANT
|
QMAKE_CFLAGS_THREAD = -D_REENTRANT
|
||||||
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
|
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
|
||||||
index 8919d41..3264740 100644
|
index c89b6d2793bcaef69102c51c4433b304bf6fb769..5206691a17949eab630632f05d0f91d0e56d27b6 100644
|
||||||
--- a/mkspecs/features/qt_module.prf
|
--- a/mkspecs/features/qt_module.prf
|
||||||
+++ b/mkspecs/features/qt_module.prf
|
+++ b/mkspecs/features/qt_module.prf
|
||||||
@@ -185,6 +185,28 @@ equals(QT_ARCH, i386):contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):compiler_support
|
@@ -185,6 +185,28 @@ equals(QT_ARCH, i386):contains(QT_CPU_FEATURES.$$QT_ARCH, sse2):compiler_support
|
||||||
QMAKE_CXXFLAGS += -mfpmath=sse
|
QMAKE_CXXFLAGS += -mfpmath=sse
|
||||||
}
|
}
|
||||||
|
|
||||||
+!isEmpty(QMAKE_LFLAGS_VERSION_SCRIPT):!static {
|
+unix:!isEmpty(QMAKE_LFLAGS_VERSION_SCRIPT):!no_linker_version_script:!static {
|
||||||
+ verscript = $$OUT_PWD/$${TARGET}.version
|
+ verscript = $$OUT_PWD/$${TARGET}.version
|
||||||
+ QMAKE_LFLAGS += $${QMAKE_LFLAGS_VERSION_SCRIPT}$$verscript
|
+ QMAKE_LFLAGS += $${QMAKE_LFLAGS_VERSION_SCRIPT}$$verscript
|
||||||
+
|
+
|
||||||
@ -83,7 +83,7 @@ index 8919d41..3264740 100644
|
|||||||
|
|
||||||
#install directives
|
#install directives
|
||||||
diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf
|
diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf
|
||||||
index 8119c8a..0cd55ee 100644
|
index 9190aa9f28cf6b38455a718afd6851d341ca57b5..4b10d42d44dd0cb8d788c6247099b42ba25c33a6 100644
|
||||||
--- a/mkspecs/linux-icc/qmake.conf
|
--- a/mkspecs/linux-icc/qmake.conf
|
||||||
+++ b/mkspecs/linux-icc/qmake.conf
|
+++ b/mkspecs/linux-icc/qmake.conf
|
||||||
@@ -97,6 +97,7 @@ QMAKE_CXXFLAGS_PRECOMPILE = -c -pch-create ${QMAKE_PCH_OUTPUT} -include ${QMAKE_
|
@@ -97,6 +97,7 @@ QMAKE_CXXFLAGS_PRECOMPILE = -c -pch-create ${QMAKE_PCH_OUTPUT} -include ${QMAKE_
|
||||||
@ -95,7 +95,7 @@ index 8119c8a..0cd55ee 100644
|
|||||||
# Symbol visibility control
|
# Symbol visibility control
|
||||||
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
|
QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
|
||||||
diff --git a/mkspecs/unsupported/linux-host-g++/qmake.conf b/mkspecs/unsupported/linux-host-g++/qmake.conf
|
diff --git a/mkspecs/unsupported/linux-host-g++/qmake.conf b/mkspecs/unsupported/linux-host-g++/qmake.conf
|
||||||
index 1523126..546ff21 100644
|
index 1523126eaaa4761708fe58e449f8b43f6c3b8c14..546ff213498c80649d5a40810f068aca1c598494 100644
|
||||||
--- a/mkspecs/unsupported/linux-host-g++/qmake.conf
|
--- a/mkspecs/unsupported/linux-host-g++/qmake.conf
|
||||||
+++ b/mkspecs/unsupported/linux-host-g++/qmake.conf
|
+++ b/mkspecs/unsupported/linux-host-g++/qmake.conf
|
||||||
@@ -71,6 +71,7 @@ QMAKE_PCH_OUTPUT_EXT = .gch
|
@@ -71,6 +71,7 @@ QMAKE_PCH_OUTPUT_EXT = .gch
|
||||||
@ -107,4 +107,4 @@ index 1523126..546ff21 100644
|
|||||||
#
|
#
|
||||||
# qmake configuration for common linux
|
# qmake configuration for common linux
|
||||||
--
|
--
|
||||||
2.3.5
|
2.6.0
|
||||||
|
@ -40,7 +40,7 @@ Change-Id: I049a653beeb5454c9539ffff13e3fec9aeb50197
|
|||||||
create mode 100644 src/corelib/global/qversiontagging.cpp
|
create mode 100644 src/corelib/global/qversiontagging.cpp
|
||||||
|
|
||||||
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
|
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
|
||||||
index bc11c77..fdbebca 100644
|
index 6a8104bee2c129778efb86368a71392132dd2e22..7ca0734f1face0d4517fdb1257dbb9812f04d0d2 100644
|
||||||
--- a/src/corelib/global/global.pri
|
--- a/src/corelib/global/global.pri
|
||||||
+++ b/src/corelib/global/global.pri
|
+++ b/src/corelib/global/global.pri
|
||||||
@@ -27,7 +27,8 @@ SOURCES += \
|
@@ -27,7 +27,8 @@ SOURCES += \
|
||||||
@ -55,7 +55,7 @@ index bc11c77..fdbebca 100644
|
|||||||
INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
|
INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
|
||||||
diff --git a/src/corelib/global/qversiontagging.cpp b/src/corelib/global/qversiontagging.cpp
|
diff --git a/src/corelib/global/qversiontagging.cpp b/src/corelib/global/qversiontagging.cpp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..e3d9efa
|
index 0000000000000000000000000000000000000000..e3d9efa16b7677a29963020660bc9c4b4a143356
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/corelib/global/qversiontagging.cpp
|
+++ b/src/corelib/global/qversiontagging.cpp
|
||||||
@@ -0,0 +1,62 @@
|
@@ -0,0 +1,62 @@
|
||||||
@ -122,4 +122,4 @@ index 0000000..e3d9efa
|
|||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
--
|
--
|
||||||
2.3.5
|
2.6.0
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 7a2d2a1c3b66308cf03a00757f8fd97f043ccde4 Mon Sep 17 00:00:00 2001
|
From bdb8ab0690eb927575de6f3e34d2b49a148e046f Mon Sep 17 00:00:00 2001
|
||||||
From: Thiago Macieira <thiago.macieira@intel.com>
|
From: Thiago Macieira <thiago.macieira@intel.com>
|
||||||
Date: Tue, 2 Jun 2015 11:30:57 -0700
|
Date: Tue, 2 Jun 2015 11:30:57 -0700
|
||||||
Subject: [PATCH] Add an automatic use of the ELF-versioned QtCore symbol
|
Subject: [PATCH] Add an automatic use of the ELF-versioned QtCore symbol
|
||||||
@ -10,27 +10,24 @@ QT_NO_VERSION_TAGGING is defined. The assembly expands to a COMDAT
|
|||||||
section, which is mergeable by the linker, so only one copy of the
|
section, which is mergeable by the linker, so only one copy of the
|
||||||
output is present in the ELF module.
|
output is present in the ELF module.
|
||||||
|
|
||||||
The next commit will add a configure-time option to set
|
|
||||||
QT_NO_VERSION_TAGGING to qconfig.h.
|
|
||||||
|
|
||||||
This is enabled only for Linux and x86 / x86-64 / x32 due to the
|
This is enabled only for Linux and x86 / x86-64 / x32 due to the
|
||||||
requirement of writing assembly and relocations, so it needs to be
|
requirement of writing assembly and relocations, so it needs to be
|
||||||
tested on each platform, which I have not done. It probably works on the
|
tested on each platform, which I have not done. It might work on
|
||||||
BSDs too and might work on Solaris/x86, but again it requires
|
Solaris/x86, but again it requires testing. Support for other
|
||||||
testing. Support for other architectures requires different assembly
|
architectures requires different assembly output and relocations and can
|
||||||
output and relocations and can be added as needed, but they are not as
|
be added as needed, but they are not as important since this trick is
|
||||||
important since this trick is has most value on desktop systems.
|
has most value on desktop systems.
|
||||||
|
|
||||||
Change-Id: I049a653beeb5454c9539ffff13e3ff5782a8cb86
|
Change-Id: I049a653beeb5454c9539ffff13e3ff5782a8cb86
|
||||||
---
|
---
|
||||||
src/corelib/global/global.pri | 3 +-
|
src/corelib/global/global.pri | 3 +-
|
||||||
src/corelib/global/qglobal.h | 1 +
|
src/corelib/global/qglobal.h | 1 +
|
||||||
src/corelib/global/qversiontagging.h | 80 ++++++++++++++++++++++++++++++++++++
|
src/corelib/global/qversiontagging.h | 86 ++++++++++++++++++++++++++++++++++++
|
||||||
3 files changed, 83 insertions(+), 1 deletion(-)
|
3 files changed, 89 insertions(+), 1 deletion(-)
|
||||||
create mode 100644 src/corelib/global/qversiontagging.h
|
create mode 100644 src/corelib/global/qversiontagging.h
|
||||||
|
|
||||||
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
|
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
|
||||||
index fdbebca..9f31fb9 100644
|
index 2165a6c22e86948655c0074d50f8669c8a192d40..e231a8f1fddf8fd705f665089c235bd11a55f0b4 100644
|
||||||
--- a/src/corelib/global/global.pri
|
--- a/src/corelib/global/global.pri
|
||||||
+++ b/src/corelib/global/global.pri
|
+++ b/src/corelib/global/global.pri
|
||||||
@@ -17,7 +17,8 @@ HEADERS += \
|
@@ -17,7 +17,8 @@ HEADERS += \
|
||||||
@ -44,10 +41,10 @@ index fdbebca..9f31fb9 100644
|
|||||||
SOURCES += \
|
SOURCES += \
|
||||||
global/archdetect.cpp \
|
global/archdetect.cpp \
|
||||||
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
|
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
|
||||||
index c4e2f76..e7995ac 100644
|
index 15d9b6536a9f1ee85371fea6dc9115438eec32d1..1a5afbe753ad08d088c9174c58fcce54ce327e0e 100644
|
||||||
--- a/src/corelib/global/qglobal.h
|
--- a/src/corelib/global/qglobal.h
|
||||||
+++ b/src/corelib/global/qglobal.h
|
+++ b/src/corelib/global/qglobal.h
|
||||||
@@ -1103,6 +1103,7 @@ QT_END_NAMESPACE
|
@@ -1104,6 +1104,7 @@ QT_END_NAMESPACE
|
||||||
#include <QtCore/qatomic.h>
|
#include <QtCore/qatomic.h>
|
||||||
#include <QtCore/qglobalstatic.h>
|
#include <QtCore/qglobalstatic.h>
|
||||||
#include <QtCore/qnumeric.h>
|
#include <QtCore/qnumeric.h>
|
||||||
@ -57,7 +54,7 @@ index c4e2f76..e7995ac 100644
|
|||||||
|
|
||||||
diff --git a/src/corelib/global/qversiontagging.h b/src/corelib/global/qversiontagging.h
|
diff --git a/src/corelib/global/qversiontagging.h b/src/corelib/global/qversiontagging.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..94246dd
|
index 0000000000000000000000000000000000000000..94246dd08b139fe3b9040a95824dcb3116a5b790
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/corelib/global/qversiontagging.h
|
+++ b/src/corelib/global/qversiontagging.h
|
||||||
@@ -0,0 +1,80 @@
|
@@ -0,0 +1,80 @@
|
||||||
@ -142,4 +139,4 @@ index 0000000..94246dd
|
|||||||
+
|
+
|
||||||
+#endif // QVERSIONTAGGING_H && !QT_NO_VERSION_TAGGING
|
+#endif // QVERSIONTAGGING_H && !QT_NO_VERSION_TAGGING
|
||||||
--
|
--
|
||||||
2.3.5
|
2.6.0
|
||||||
|
102
Fix-QtCore-compilation-with-clang.patch
Normal file
102
Fix-QtCore-compilation-with-clang.patch
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
From 4c738356ee4f20b6414e43a1cd73817f7eb28dd1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thiago Macieira <thiago.macieira@intel.com>
|
||||||
|
Date: Thu, 17 Sep 2015 11:35:36 -0700
|
||||||
|
Subject: [PATCH 3/5] Fix QtCore compilation with clang
|
||||||
|
|
||||||
|
The .altmacro is not supported with Clang's integrated assembly.
|
||||||
|
|
||||||
|
The worst part is that I had this fixed, but apparently I never pushed
|
||||||
|
the update to Gerrit and then we staged the old version. This commit
|
||||||
|
brings back the fixes.
|
||||||
|
|
||||||
|
Incidentally, it also makes things work with freebsd-clang.
|
||||||
|
|
||||||
|
Change-Id: Id2a5d90d07d7ee470fcb9ad9696a9a0f9ced7ea7
|
||||||
|
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
||||||
|
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
||||||
|
(cherry picked from commit 05d401104ee6b10699b7288ead044d6765b19c4d)
|
||||||
|
---
|
||||||
|
src/corelib/global/global.pri | 28 ++++++++++++++++++++++++++--
|
||||||
|
src/corelib/global/qversiontagging.cpp | 15 +++++++++++----
|
||||||
|
2 files changed, 37 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
|
||||||
|
index 7ca0734f1face0d4517fdb1257dbb9812f04d0d2..2165a6c22e86948655c0074d50f8669c8a192d40 100644
|
||||||
|
--- a/src/corelib/global/global.pri
|
||||||
|
+++ b/src/corelib/global/global.pri
|
||||||
|
@@ -27,8 +27,7 @@ SOURCES += \
|
||||||
|
global/qmalloc.cpp \
|
||||||
|
global/qnumeric.cpp \
|
||||||
|
global/qlogging.cpp \
|
||||||
|
- global/qhooks.cpp \
|
||||||
|
- global/qversiontagging.cpp
|
||||||
|
+ global/qhooks.cpp
|
||||||
|
|
||||||
|
# qlibraryinfo.cpp includes qconfig.cpp
|
||||||
|
INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
|
||||||
|
@@ -55,3 +54,28 @@ journald {
|
||||||
|
PKGCONFIG_PRIVATE += libsystemd-journal
|
||||||
|
DEFINES += QT_USE_JOURNALD
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+linux|freebsd {
|
||||||
|
+ VERSIONTAGGING_SOURCES = global/qversiontagging.cpp
|
||||||
|
+ ltcg|clang {
|
||||||
|
+ versiontagging_compiler.commands = $$QMAKE_CXX -c $(CXXFLAGS) $(INCPATH)
|
||||||
|
+
|
||||||
|
+ # Disable LTO, as the global inline assembly may not get processed
|
||||||
|
+ versiontagging_compiler.commands += -fno-lto
|
||||||
|
+
|
||||||
|
+ # Disable the integrated assembler for Clang, since it can't parse with
|
||||||
|
+ # the alternate macro syntax in use in qversiontagging.cpp
|
||||||
|
+ clang: versiontagging_compiler.commands += -no-integrated-as
|
||||||
|
+
|
||||||
|
+ versiontagging_compiler.commands += -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
|
||||||
|
+ versiontagging_compiler.dependency_type = TYPE_C
|
||||||
|
+ versiontagging_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
|
||||||
|
+ versiontagging_compiler.input = VERSIONTAGGING_SOURCES
|
||||||
|
+ versiontagging_compiler.variable_out = OBJECTS
|
||||||
|
+ versiontagging_compiler.name = compiling[versiontagging] ${QMAKE_FILE_IN}
|
||||||
|
+ silent: versiontagging_compiler.commands = @echo compiling[versiontagging] ${QMAKE_FILE_IN} && $$versiontagging_compiler.commands
|
||||||
|
+ QMAKE_EXTRA_COMPILERS += versiontagging_compiler
|
||||||
|
+ } else {
|
||||||
|
+ SOURCES += $$VERSIONTAGGING_SOURCES
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/corelib/global/qversiontagging.cpp b/src/corelib/global/qversiontagging.cpp
|
||||||
|
index e3d9efa16b7677a29963020660bc9c4b4a143356..66d3f8d00f7297d98c08cfa7aa359874e2e0aa8f 100644
|
||||||
|
--- a/src/corelib/global/qversiontagging.cpp
|
||||||
|
+++ b/src/corelib/global/qversiontagging.cpp
|
||||||
|
@@ -33,18 +33,25 @@
|
||||||
|
|
||||||
|
#include "qglobal.h"
|
||||||
|
|
||||||
|
-#if defined(Q_CC_GNU) && defined(Q_OS_LINUX) && defined(Q_PROCESSOR_X86) && !defined(QT_STATIC)
|
||||||
|
+#if defined(Q_CC_GNU) && (defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)) && defined(Q_PROCESSOR_X86) && !defined(QT_STATIC)
|
||||||
|
# define SYM QT_MANGLE_NAMESPACE(qt_version_tag)
|
||||||
|
# define SSYM QT_STRINGIFY(SYM)
|
||||||
|
|
||||||
|
asm(
|
||||||
|
+// ASM macro that makes one ELF versioned symbol
|
||||||
|
+".macro make_versioned_symbol plainsym versionedsym\n"
|
||||||
|
+".globl plainsym\n"
|
||||||
|
+".type plainsym, @object\n"
|
||||||
|
+".size plainsym, 1\n"
|
||||||
|
+".symver plainsym, versionedsym\n"
|
||||||
|
+"plainsym :\n"
|
||||||
|
+".endm\n"
|
||||||
|
+
|
||||||
|
// ASM macro that makes one ELF versioned symbol qt_version_tag{sep}Qt_{major}.{minor}
|
||||||
|
// that is an alias to qt_version_tag_{major}_{minor}.
|
||||||
|
// The {sep} parameter must be @ for all old versions and @@ for the current version.
|
||||||
|
".macro make_one_tag major minor sep\n"
|
||||||
|
-".globl " SSYM "_\\major\\()_\\minor\n" // make the symbol global
|
||||||
|
-SSYM "_\\major\\()_\\minor:\n" // declare it
|
||||||
|
-" .symver " SSYM "_\\major\\()_\\minor, " SSYM "\\sep\\()Qt_\\major\\().\\minor\n"
|
||||||
|
+" make_versioned_symbol " SSYM "_\\major\\()_\\minor, " SSYM "\\sep\\()Qt_\\major\\().\\minor\n"
|
||||||
|
".endm\n"
|
||||||
|
|
||||||
|
".altmacro\n"
|
||||||
|
--
|
||||||
|
2.6.0
|
||||||
|
|
@ -1,28 +0,0 @@
|
|||||||
From 02ab210ea9bc5ee53fa4f1db2f068ce24272a6cd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
|
|
||||||
Date: Fri, 3 Jul 2015 14:19:02 +0200
|
|
||||||
Subject: [PATCH] Fix compile error on big endian
|
|
||||||
|
|
||||||
DestFormat is not defined here but should be Format_RGBX8888
|
|
||||||
|
|
||||||
Change-Id: Ie33989a6fc31650434281a6b7b0f4806524268af
|
|
||||||
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
|
|
||||||
Reviewed-by: Timo Jyrinki <timo.jyrinki@canonical.com>
|
|
||||||
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
|
||||||
---
|
|
||||||
src/gui/image/qimage_conversions.cpp | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: qtbase-opensource-src-5.5.0/src/gui/image/qimage_conversions.cpp
|
|
||||||
===================================================================
|
|
||||||
--- qtbase-opensource-src-5.5.0.orig/src/gui/image/qimage_conversions.cpp
|
|
||||||
+++ qtbase-opensource-src-5.5.0/src/gui/image/qimage_conversions.cpp
|
|
||||||
@@ -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
|
|
||||||
}
|
|
@ -1,93 +0,0 @@
|
|||||||
From c137502c7fd7550c780c9531ec414098d8101757 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
|
||||||
Date: Thu, 18 Sep 2014 16:16:26 +0400
|
|
||||||
Subject: Fix shortcuts with keypad keys
|
|
||||||
|
|
||||||
The way of searching a shortcut match for a key without the keypad
|
|
||||||
modifier introduced in 547a1bea492954d828aa0798be93384669812489 is
|
|
||||||
not correct. QKeyEvent::setModifiers() doesn't change native scan code
|
|
||||||
so we get the incorrect QKeyEvent object which is eventually passed to
|
|
||||||
the implementation of QPlatformIntegration::possibleKeys().
|
|
||||||
And then QPlatformIntegration::possibleKeys() returns the same result
|
|
||||||
as for the original QKeyEvent object.
|
|
||||||
|
|
||||||
So to fix it we have to remove Qt::KeypadModifier from keys after
|
|
||||||
calling the implementation of QPlatformIntegration::possibleKeys(),
|
|
||||||
as it was before 547a1bea492954d828aa0798be93384669812489.
|
|
||||||
|
|
||||||
Task-number: QTBUG-33093
|
|
||||||
Task-number: QTBUG-20191
|
|
||||||
Change-Id: I5b33c9b6cf2c06b133166a31eba9aff9181c9483
|
|
||||||
---
|
|
||||||
src/gui/kernel/qshortcutmap.cpp | 12 +++++-------
|
|
||||||
src/gui/kernel/qshortcutmap_p.h | 4 ++--
|
|
||||||
2 files changed, 7 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp
|
|
||||||
index cad707a..83377af 100644
|
|
||||||
--- a/src/gui/kernel/qshortcutmap.cpp
|
|
||||||
+++ b/src/gui/kernel/qshortcutmap.cpp
|
|
||||||
@@ -380,9 +380,7 @@ QKeySequence::SequenceMatch QShortcutMap::nextState(QKeyEvent *e)
|
|
||||||
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::hasShortcutForKeySequence(const QKeySequence &seq) const
|
|
||||||
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<QKeySequence> &ksl)
|
|
||||||
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(QKeyEvent *e, QVector<QKeySequence> &ksl)
|
|
||||||
curKsl.setKey(0, 2);
|
|
||||||
curKsl.setKey(0, 3);
|
|
||||||
}
|
|
||||||
- curKsl.setKey(possibleKeys.at(pkNum), index);
|
|
||||||
+ curKsl.setKey(possibleKeys.at(pkNum) & ~ignoredModifiers, index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
diff --git a/src/gui/kernel/qshortcutmap_p.h b/src/gui/kernel/qshortcutmap_p.h
|
|
||||||
index b2e0945..d4a0021 100644
|
|
||||||
--- a/src/gui/kernel/qshortcutmap_p.h
|
|
||||||
+++ b/src/gui/kernel/qshortcutmap_p.h
|
|
||||||
@@ -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);
|
|
||||||
|
|
||||||
--
|
|
||||||
cgit v0.11.0
|
|
@ -1,47 +0,0 @@
|
|||||||
From eda79a467ee7e45f3de63973b633e2a790b613eb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Marc Mutz <marc.mutz@kdab.com>
|
|
||||||
Date: Thu, 25 Jun 2015 22:34:58 +0200
|
|
||||||
Subject: QDate/QTime: fix SiC introduced by adding new non-explicit ctors
|
|
||||||
|
|
||||||
The new constructors were added in c94d41d9 to help
|
|
||||||
constexpr'ify QDate and QTime. Even though private,
|
|
||||||
they participate in overload resolution and break
|
|
||||||
function pairs overloaded on QDate and int or
|
|
||||||
QTime and int.
|
|
||||||
|
|
||||||
Mark them explicit.
|
|
||||||
|
|
||||||
[ChangeLog][QtCore][QDate/QTime] Fixed a minor source-incompatibility
|
|
||||||
between Qt 5.4 and 5.5.0 involving sets of functions overloaded on
|
|
||||||
QTime and some integer or QDate and some integer.
|
|
||||||
|
|
||||||
Change-Id: I65a09aaca2b083cda90255c24cc72ef51119d3b1
|
|
||||||
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
|
|
||||||
---
|
|
||||||
src/corelib/tools/qdatetime.h | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h
|
|
||||||
index 78ec2b1..6651efd 100644
|
|
||||||
--- a/src/corelib/tools/qdatetime.h
|
|
||||||
+++ b/src/corelib/tools/qdatetime.h
|
|
||||||
@@ -59,7 +59,7 @@ public:
|
|
||||||
StandaloneFormat
|
|
||||||
};
|
|
||||||
private:
|
|
||||||
- Q_DECL_CONSTEXPR QDate(qint64 julianDay) : jd(julianDay) {}
|
|
||||||
+ explicit Q_DECL_CONSTEXPR QDate(qint64 julianDay) : jd(julianDay) {}
|
|
||||||
public:
|
|
||||||
Q_DECL_CONSTEXPR QDate() : jd(nullJd()) {}
|
|
||||||
QDate(int y, int m, int d);
|
|
||||||
@@ -138,7 +138,7 @@ Q_DECLARE_TYPEINFO(QDate, Q_MOVABLE_TYPE);
|
|
||||||
|
|
||||||
class Q_CORE_EXPORT QTime
|
|
||||||
{
|
|
||||||
- Q_DECL_CONSTEXPR QTime(int ms) : mds(ms)
|
|
||||||
+ explicit Q_DECL_CONSTEXPR QTime(int ms) : mds(ms)
|
|
||||||
#if defined(Q_OS_WINCE)
|
|
||||||
, startTick(NullTime)
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
cgit v0.11.0
|
|
@ -1,55 +0,0 @@
|
|||||||
From 849aebc0ce344dedc91035bf4bcc7ccb4c15ffe4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: David Faure <david.faure@kdab.com>
|
|
||||||
Date: Mon, 27 Jul 2015 00:22:11 +0200
|
|
||||||
Subject: [PATCH] QMimeDatabase: use QElapsedTimer instead of
|
|
||||||
QDateTime::currentDateTime()
|
|
||||||
|
|
||||||
This reduces the number of syscalls greatly, by avoiding the timezone
|
|
||||||
conversion every time.
|
|
||||||
|
|
||||||
Change-Id: I39a54def4b45f25c6e037ced6943b05ddc749c9d
|
|
||||||
---
|
|
||||||
src/corelib/mimetypes/qmimeprovider.cpp | 5 ++---
|
|
||||||
src/corelib/mimetypes/qmimeprovider_p.h | 3 ++-
|
|
||||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp
|
|
||||||
index 7342a5c..3914710 100644
|
|
||||||
--- a/src/corelib/mimetypes/qmimeprovider.cpp
|
|
||||||
+++ b/src/corelib/mimetypes/qmimeprovider.cpp
|
|
||||||
@@ -79,10 +79,9 @@ Q_CORE_EXPORT int qmime_secondsBetweenChecks = 5; // exported for the unit test
|
|
||||||
|
|
||||||
bool QMimeProviderBase::shouldCheck()
|
|
||||||
{
|
|
||||||
- const QDateTime now = QDateTime::currentDateTime();
|
|
||||||
- if (m_lastCheck.isValid() && m_lastCheck.secsTo(now) < qmime_secondsBetweenChecks)
|
|
||||||
+ if (m_lastCheck.isValid() && m_lastCheck.elapsed() < qmime_secondsBetweenChecks * 1000)
|
|
||||||
return false;
|
|
||||||
- m_lastCheck = now;
|
|
||||||
+ m_lastCheck.start();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h
|
|
||||||
index 5a89ac2..eaf9594 100644
|
|
||||||
--- a/src/corelib/mimetypes/qmimeprovider_p.h
|
|
||||||
+++ b/src/corelib/mimetypes/qmimeprovider_p.h
|
|
||||||
@@ -51,6 +51,7 @@
|
|
||||||
|
|
||||||
#include <QtCore/qdatetime.h>
|
|
||||||
#include <QtCore/qset.h>
|
|
||||||
+#include <QtCore/qelapsedtimer.h>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
@@ -77,7 +78,7 @@ public:
|
|
||||||
QMimeDatabasePrivate *m_db;
|
|
||||||
protected:
|
|
||||||
bool shouldCheck();
|
|
||||||
- QDateTime m_lastCheck;
|
|
||||||
+ QElapsedTimer m_lastCheck;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
--
|
|
||||||
2.3.5
|
|
@ -1,54 +0,0 @@
|
|||||||
From ae51e360f986698eaf41fdb38f8a878a50f69be1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
|
||||||
Date: Fri, 19 Jun 2015 13:34:11 +0300
|
|
||||||
Subject: xcb: Ignore disabling of outputs in the middle of the mode switch
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
X server may send RROutputChangeNotify event with null crtc and mode,
|
|
||||||
when it switches an output mode. Request RROutputInfo to distinguish
|
|
||||||
this case from the case when the output is explicitly disabled.
|
|
||||||
|
|
||||||
Change-Id: I4c2356ec71dbcc8013009ea8a6f46dd11f19d6bb
|
|
||||||
Task-number: QTBUG-44158
|
|
||||||
Task-number: QTBUG-46786
|
|
||||||
Task-number: QTBUG-46822
|
|
||||||
Reviewed-by: Daniel Vrátil <dvratil@redhat.com>
|
|
||||||
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
|
||||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
|
||||||
---
|
|
||||||
src/plugins/platforms/xcb/qxcbconnection.cpp | 18 +++++++++++++-----
|
|
||||||
1 file changed, 13 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
|
||||||
index 0867615..29e1fd1 100644
|
|
||||||
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
|
|
||||||
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
|
||||||
@@ -265,11 +265,19 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event)
|
|
||||||
} else if (screen) {
|
|
||||||
// Screen has been disabled -> remove
|
|
||||||
if (output.crtc == XCB_NONE && output.mode == XCB_NONE) {
|
|
||||||
- qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled";
|
|
||||||
- m_screens.removeOne(screen);
|
|
||||||
- foreach (QXcbScreen *otherScreen, m_screens)
|
|
||||||
- otherScreen->removeVirtualSibling((QPlatformScreen *) screen);
|
|
||||||
- QXcbIntegration::instance()->destroyScreen(screen);
|
|
||||||
+ xcb_randr_get_output_info_cookie_t outputInfoCookie =
|
|
||||||
+ xcb_randr_get_output_info(xcb_connection(), output.output, output.config_timestamp);
|
|
||||||
+ QScopedPointer<xcb_randr_get_output_info_reply_t, QScopedPointerPodDeleter> outputInfo(
|
|
||||||
+ xcb_randr_get_output_info_reply(xcb_connection(), outputInfoCookie, NULL));
|
|
||||||
+ if (outputInfo->crtc == XCB_NONE) {
|
|
||||||
+ qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled";
|
|
||||||
+ m_screens.removeOne(screen);
|
|
||||||
+ foreach (QXcbScreen *otherScreen, m_screens)
|
|
||||||
+ otherScreen->removeVirtualSibling((QPlatformScreen *) screen);
|
|
||||||
+ QXcbIntegration::instance()->destroyScreen(screen);
|
|
||||||
+ } else {
|
|
||||||
+ qCDebug(lcQpaScreen) << "output" << screen->name() << "has been temporarily disabled for the mode switch";
|
|
||||||
+ }
|
|
||||||
} else {
|
|
||||||
// Just update existing screen
|
|
||||||
screen->updateGeometry(output.config_timestamp);
|
|
||||||
--
|
|
||||||
cgit v0.11.0
|
|
@ -1,3 +1,25 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Oct 16 20:22:25 UTC 2015 - hrvoje.senjan@gmail.com
|
||||||
|
|
||||||
|
- Update to 5.5.1
|
||||||
|
* For more details please see:
|
||||||
|
http://blog.qt.io/blog/2015/10/15/qt-5-5-1-released/
|
||||||
|
- Drop patches merged upstream:
|
||||||
|
0002-xcb-Fix-getting-the-window-types-from-the-property-o.patch
|
||||||
|
0003-Fix-centering-dialogs.patch
|
||||||
|
0004-xcb-Set-_NET_WM_WINDOW_TYPE-from-a-single-place.patch
|
||||||
|
0006-xcb-set-SM_CLIENT_ID-property.patch
|
||||||
|
Fix-compile-error-on-big-endian.patch
|
||||||
|
Fix-shortcuts-with-keypad-keys.patch
|
||||||
|
QDate_QTime-fix-SiC-introduced-by-adding-new-non-explicit-ctors.patch
|
||||||
|
QMimeDatabase-use-QElapsedTimer.patch
|
||||||
|
ignore-disabling-of-outputs-in-the-middle-of-the-mode-switch.patch
|
||||||
|
when-a-screen-comes-back-online-the-windows-need-to-be-told-about-it.patch
|
||||||
|
- Added Fix-QtCore-compilation-with-clang.patch and
|
||||||
|
move-the-official-Qt-version-from-qglobal-to-qmake-conf.patch in
|
||||||
|
order to remove link-time warnings (warning: type and size of dynamic
|
||||||
|
symbol `qt_version_tag@@Qt_5.5' are not defined)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Oct 12 17:53:42 UTC 2015 - hrvoje.senjan@gmail.com
|
Mon Oct 12 17:53:42 UTC 2015 - hrvoje.senjan@gmail.com
|
||||||
|
|
||||||
|
@ -26,15 +26,15 @@
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: libqt5-qtbase
|
Name: libqt5-qtbase
|
||||||
Version: 5.5.0
|
Version: 5.5.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: C++ Program Library, Core Components
|
Summary: C++ Program Library, Core Components
|
||||||
License: GPL-3.0 or SUSE-LGPL-2.1-with-digia-exception-1.1
|
License: GPL-3.0 or SUSE-LGPL-2.1-with-digia-exception-1.1
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
Url: http://qt.digia.com
|
Url: http://qt.digia.com
|
||||||
%define base_name libqt5
|
%define base_name libqt5
|
||||||
%define real_version 5.5.0
|
%define real_version 5.5.1
|
||||||
%define so_version 5.5.0
|
%define so_version 5.5.1
|
||||||
%define tar_version qtbase-opensource-src-%{real_version}
|
%define tar_version qtbase-opensource-src-%{real_version}
|
||||||
Source: %{tar_version}.tar.xz
|
Source: %{tar_version}.tar.xz
|
||||||
# to get mtime of file:
|
# to get mtime of file:
|
||||||
@ -51,26 +51,17 @@ Patch3: libqt5-Fix-Gujarati-font.patch
|
|||||||
Patch4: protect-geometry-QTBUG-40584.patch
|
Patch4: protect-geometry-QTBUG-40584.patch
|
||||||
# Patch-FIX-SUSE libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch -- bnc#888858
|
# Patch-FIX-SUSE libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch -- bnc#888858
|
||||||
Patch5: libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch
|
Patch5: libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch
|
||||||
# PATCH-FIX-OPENSUSE Fix-shortcuts-with-keypad-keys.patch -- https://codereview.qt-project.org/#/c/95219/
|
|
||||||
Patch8: Fix-shortcuts-with-keypad-keys.patch
|
|
||||||
# patches 1000-2000 and above from upstream 5.3 branch #
|
# patches 1000-2000 and above from upstream 5.3 branch #
|
||||||
# patches 2000-3000 and above from upstream 5.5 branch #
|
# patches 2000-3000 and above from upstream 5.5 branch #
|
||||||
Patch2000: ignore-disabling-of-outputs-in-the-middle-of-the-mode-switch.patch
|
|
||||||
Patch2001: when-a-screen-comes-back-online-the-windows-need-to-be-told-about-it.patch
|
|
||||||
Patch2010: 0001-Fix-QWidget-setWindowRole.patch
|
Patch2010: 0001-Fix-QWidget-setWindowRole.patch
|
||||||
Patch2011: 0002-xcb-Fix-getting-the-window-types-from-the-property-o.patch
|
|
||||||
Patch2012: 0003-Fix-centering-dialogs.patch
|
|
||||||
Patch2013: 0004-xcb-Set-_NET_WM_WINDOW_TYPE-from-a-single-place.patch
|
|
||||||
Patch2014: 0005-Restore-documented-behavior-for-the-WA_X11NetWmWindo.patch
|
Patch2014: 0005-Restore-documented-behavior-for-the-WA_X11NetWmWindo.patch
|
||||||
Patch2015: 0006-xcb-set-SM_CLIENT_ID-property.patch
|
|
||||||
Patch2016: QMimeDatabase-use-QElapsedTimer.patch
|
|
||||||
Patch2017: QDate_QTime-fix-SiC-introduced-by-adding-new-non-explicit-ctors.patch
|
|
||||||
Patch3000: Add-a-linker-version-script-to-Qt-libraries.patch
|
Patch3000: Add-a-linker-version-script-to-Qt-libraries.patch
|
||||||
Patch3001: Add-a-qt_version_tag-symbol-to-QtCore-that-uses-ELF-versions.patch
|
Patch3001: Add-a-qt_version_tag-symbol-to-QtCore-that-uses-ELF-versions.patch
|
||||||
Patch3002: Add-an-automatic-use-of-the-ELF-versioned-QtCore-symbol.patch
|
Patch3002: Fix-QtCore-compilation-with-clang.patch
|
||||||
Patch3003: Fix-compile-error-on-big-endian.patch
|
Patch3003: move-the-official-Qt-version-from-qglobal-to-qmake-conf.patch
|
||||||
Patch3004: xcb-fix-yet-another-crash-when-screens-are-disconnected.patch
|
Patch3004: Add-an-automatic-use-of-the-ELF-versioned-QtCore-symbol.patch
|
||||||
Patch3005: xcb-dont-crash-in-mapToNativemapFromNative-if-the-screen-is-null.patch
|
Patch3005: xcb-fix-yet-another-crash-when-screens-are-disconnected.patch
|
||||||
|
Patch3006: xcb-dont-crash-in-mapToNativemapFromNative-if-the-screen-is-null.patch
|
||||||
BuildRequires: alsa-devel
|
BuildRequires: alsa-devel
|
||||||
BuildRequires: cups-devel
|
BuildRequires: cups-devel
|
||||||
BuildRequires: gcc-c++
|
BuildRequires: gcc-c++
|
||||||
@ -153,23 +144,15 @@ handling.
|
|||||||
%patch3 -p1
|
%patch3 -p1
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
%patch8 -p1
|
|
||||||
%patch2000 -p1
|
|
||||||
%patch2001 -p1
|
|
||||||
%patch2011 -p1
|
|
||||||
%patch2012 -p1
|
|
||||||
%patch2013 -p1
|
|
||||||
%patch2010 -p1
|
%patch2010 -p1
|
||||||
%patch2014 -p1
|
%patch2014 -p1
|
||||||
%patch2015 -p1
|
|
||||||
%patch2016 -p1
|
|
||||||
%patch2017 -p1
|
|
||||||
%patch3000 -p1
|
%patch3000 -p1
|
||||||
%patch3001 -p1
|
%patch3001 -p1
|
||||||
%patch3002 -p1
|
%patch3002 -p1
|
||||||
%patch3003 -p1
|
%patch3003 -p1
|
||||||
%patch3004 -p1
|
%patch3004 -p1
|
||||||
%patch3005 -p1
|
%patch3005 -p1
|
||||||
|
%patch3006 -p1
|
||||||
|
|
||||||
# be sure not to use them
|
# be sure not to use them
|
||||||
rm -r src/3rdparty/{libjpeg,freetype,libpng,zlib}
|
rm -r src/3rdparty/{libjpeg,freetype,libpng,zlib}
|
||||||
|
332
move-the-official-Qt-version-from-qglobal-to-qmake-conf.patch
Normal file
332
move-the-official-Qt-version-from-qglobal-to-qmake-conf.patch
Normal file
@ -0,0 +1,332 @@
|
|||||||
|
From 2d2cb6434f1d6e00f421c98b20467ff3f4388319 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thiago Macieira <thiago.macieira@intel.com>
|
||||||
|
Date: Thu, 17 Sep 2015 18:17:40 -0700
|
||||||
|
Subject: Move the official Qt version from qglobal.h to .qmake.conf
|
||||||
|
|
||||||
|
It's easier to parse than qglobal.h. The objective is actually to have
|
||||||
|
macros with parts of the version number, so the major or minor numbers
|
||||||
|
could be used in other preprocessor macros.
|
||||||
|
|
||||||
|
Change-Id: I42e7ef1a481840699a8dffff1404eda1dd5c308d
|
||||||
|
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
|
||||||
|
---
|
||||||
|
.qmake.conf | 3 +--
|
||||||
|
bin/syncqt.pl | 8 +-------
|
||||||
|
configure | 37 +++++++++++++++++++++----------------
|
||||||
|
configure.bat | 20 ++++++++++++++++++--
|
||||||
|
qmake/Makefile.unix | 1 +
|
||||||
|
qmake/Makefile.win32 | 1 +
|
||||||
|
src/corelib/global/qglobal.h | 4 ++--
|
||||||
|
tools/configure/Makefile.mingw | 2 +-
|
||||||
|
tools/configure/Makefile.win32 | 2 +-
|
||||||
|
tools/configure/configureapp.cpp | 37 ++++++++++++++++++++++---------------
|
||||||
|
10 files changed, 69 insertions(+), 46 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/.qmake.conf b/.qmake.conf
|
||||||
|
index 481544b253daa7a41485c5eeddd6d2ef694a4b70..732b5da2621f2fc821404e7aef3ab7ed576dfc0c 100644
|
||||||
|
--- a/.qmake.conf
|
||||||
|
+++ b/.qmake.conf
|
||||||
|
@@ -5,5 +5,4 @@ CONFIG += warning_clean
|
||||||
|
QT_SOURCE_TREE = $$PWD
|
||||||
|
QT_BUILD_TREE = $$shadowed($$PWD)
|
||||||
|
|
||||||
|
-# In qtbase, all modules follow qglobal.h
|
||||||
|
-MODULE_VERSION = $$QT_VERSION
|
||||||
|
+MODULE_VERSION = 5.5.1
|
||||||
|
diff --git a/bin/syncqt.pl b/bin/syncqt.pl
|
||||||
|
index 3b3e127e86e664185a6b94829ac968673bf75651..c75390c561debf6558a4b7ae4b237b44a7c8f16b 100755
|
||||||
|
--- a/bin/syncqt.pl
|
||||||
|
+++ b/bin/syncqt.pl
|
||||||
|
@@ -786,6 +786,7 @@ while ( @ARGV ) {
|
||||||
|
|
||||||
|
# if we have no $basedir we cannot be sure which sources you want, so die
|
||||||
|
die "Could not find any sync.profile for your module!\nPass <module directory> to syncqt to sync your header files.\nsyncqt failed" if (!$basedir);
|
||||||
|
+die "The -version argument is mandatory" if (!$module_version);
|
||||||
|
|
||||||
|
our @ignore_headers = ();
|
||||||
|
our @ignore_for_master_contents = ();
|
||||||
|
@@ -803,13 +804,6 @@ my %allmoduleheadersprivate = map { $_ => 1 } @allmoduleheadersprivate;
|
||||||
|
|
||||||
|
$isunix = checkUnix; #cache checkUnix
|
||||||
|
|
||||||
|
-if (!$module_version) {
|
||||||
|
- my $filco = fileContents($basedir."/src/corelib/global/qglobal.h");
|
||||||
|
- if ($filco !~ m,.*^#[ \t]*define[ \t]+QT_VERSION_STR[ \t]+"([^"]+)".*,sm) {
|
||||||
|
- die "Cannot determine Qt/Module version. Use -version.\n";
|
||||||
|
- }
|
||||||
|
- $module_version = $1;
|
||||||
|
-}
|
||||||
|
foreach my $lib (@modules_to_sync) {
|
||||||
|
die "No such module: $lib" unless(defined $modules{$lib});
|
||||||
|
|
||||||
|
diff --git a/configure b/configure
|
||||||
|
index cea62fbc0c46ae54938df282fffbbfde5bf794d6..45c74a61dc04b3cb80452eec22fda6189fc29795 100755
|
||||||
|
--- a/configure
|
||||||
|
+++ b/configure
|
||||||
|
@@ -539,23 +539,16 @@ fi
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Qt version detection
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
-QT_VERSION=`grep '^# *define *QT_VERSION_STR' "$relpath"/src/corelib/global/qglobal.h`
|
||||||
|
+QT_VERSION=
|
||||||
|
QT_MAJOR_VERSION=
|
||||||
|
QT_MINOR_VERSION=0
|
||||||
|
QT_PATCH_VERSION=0
|
||||||
|
-if [ -n "$QT_VERSION" ]; then
|
||||||
|
- QT_VERSION=`echo $QT_VERSION | sed 's,^# *define *QT_VERSION_STR *"*\([^ ]*\)"$,\1,'`
|
||||||
|
- MAJOR=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\1,'`
|
||||||
|
- if [ -n "$MAJOR" ]; then
|
||||||
|
- MINOR=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\2,'`
|
||||||
|
- PATCH=`echo $QT_VERSION | sed 's,^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*,\3,'`
|
||||||
|
- QT_MAJOR_VERSION="$MAJOR"
|
||||||
|
- [ -z "$MINOR" ] || QT_MINOR_VERSION="$MINOR"
|
||||||
|
- [ -z "$PATCH" ] || QT_PATCH_VERSION="$PATCH"
|
||||||
|
- fi
|
||||||
|
-fi
|
||||||
|
+eval `sed -n -e 's/^MODULE_VERSION = \(\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*\)$/QT_VERSION=\1\
|
||||||
|
+ QT_MAJOR_VERSION=\2\
|
||||||
|
+ QT_MINOR_VERSION=\3\
|
||||||
|
+ QT_PATCH_VERSION=\4/p' < "$relpath"/.qmake.conf`
|
||||||
|
if [ -z "$QT_MAJOR_VERSION" ]; then
|
||||||
|
- echo "Cannot process version from qglobal.h: $QT_VERSION"
|
||||||
|
+ echo "Cannot process version from .qmake.conf"
|
||||||
|
echo "Cannot proceed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
@@ -3896,7 +3889,7 @@ if [ -e "$relpath/.git" ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- "$relpath/bin/syncqt.pl" -minimal -module QtCore "$relpath" || exit 1
|
||||||
|
+ "$relpath/bin/syncqt.pl" -version $QT_VERSION -minimal -module QtCore "$relpath" || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# $1: input variable name (awk regexp)
|
||||||
|
@@ -4038,6 +4031,9 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
|
||||||
|
fi
|
||||||
|
echo "QMAKESPEC = $adjqmakespec" >> "$mkfile"
|
||||||
|
echo "QT_VERSION = $QT_VERSION" >> "$mkfile"
|
||||||
|
+ echo "QT_MAJOR_VERSION = $QT_MAJOR_VERSION" >> "$mkfile"
|
||||||
|
+ echo "QT_MINOR_VERSION = $QT_MINOR_VERSION" >> "$mkfile"
|
||||||
|
+ echo "QT_PATCH_VERSION = $QT_PATCH_VERSION" >> "$mkfile"
|
||||||
|
echo "EXTRA_CFLAGS = $EXTRA_CFLAGS" >> "$mkfile"
|
||||||
|
echo "EXTRA_CXXFLAGS = $EXTRA_CXXFLAGS" >> "$mkfile"
|
||||||
|
echo "QTOBJS =" $EXTRA_OBJS >> "$mkfile"
|
||||||
|
@@ -6514,13 +6510,22 @@ esac
|
||||||
|
# part of configuration information goes into qconfig.h
|
||||||
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
+# start with Qt's version number
|
||||||
|
+cat > "$outpath/src/corelib/global/qconfig.h.new" <<EOF
|
||||||
|
+#define QT_VERSION_MAJOR $QT_MAJOR_VERSION
|
||||||
|
+#define QT_VERSION_MINOR $QT_MINOR_VERSION
|
||||||
|
+#define QT_VERSION_PATCH $QT_PATCH_VERSION
|
||||||
|
+#define QT_VERSION_STR "$QT_VERSION"
|
||||||
|
+
|
||||||
|
+EOF
|
||||||
|
+
|
||||||
|
case "$CFG_QCONFIG" in
|
||||||
|
full)
|
||||||
|
- echo "/* Everything */" >"$outpath/src/corelib/global/qconfig.h.new"
|
||||||
|
+ echo "/* Everything */" >>"$outpath/src/corelib/global/qconfig.h.new"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
tmpconfig="$outpath/src/corelib/global/qconfig.h.new"
|
||||||
|
- echo "#ifndef QT_BOOTSTRAPPED" >"$tmpconfig"
|
||||||
|
+ echo "#ifndef QT_BOOTSTRAPPED" >>"$tmpconfig"
|
||||||
|
cat "$CFG_QCONFIG_PATH" >>"$tmpconfig"
|
||||||
|
echo "#endif" >>"$tmpconfig"
|
||||||
|
;;
|
||||||
|
diff --git a/configure.bat b/configure.bat
|
||||||
|
index 1220bfedc2de5ad78edbd636f4af7e39dbfde27b..47acf26d6278d43e70d3d6369a4f1cf06b3a57f7 100644
|
||||||
|
--- a/configure.bat
|
||||||
|
+++ b/configure.bat
|
||||||
|
@@ -34,6 +34,7 @@
|
||||||
|
@echo off
|
||||||
|
set QTSRC=%~dp0
|
||||||
|
set QTDIR=%CD%
|
||||||
|
+
|
||||||
|
if not exist %QTSRC%.gitignore goto sconf
|
||||||
|
echo Please wait while bootstrapping configure ...
|
||||||
|
|
||||||
|
@@ -47,7 +48,18 @@ if not exist mkspecs (
|
||||||
|
md mkspecs
|
||||||
|
if errorlevel 1 goto exit
|
||||||
|
)
|
||||||
|
-perl %QTSRC%bin\syncqt.pl -minimal -module QtCore -outdir "%QTDIR%" %QTSRC%
|
||||||
|
+
|
||||||
|
+rem Extract Qt's version from .qmake.conf
|
||||||
|
+for /f "eol=# tokens=1,2,3,4 delims=.= " %%i in (%QTSRC%.qmake.conf) do (
|
||||||
|
+ if %%i == MODULE_VERSION (
|
||||||
|
+ set QTVERMAJ=%%j
|
||||||
|
+ set QTVERMIN=%%k
|
||||||
|
+ set QTVERPAT=%%l
|
||||||
|
+ )
|
||||||
|
+)
|
||||||
|
+set QTVERSION=%QTVERMAJ%.%QTVERMIN%.%QTVERPAT%
|
||||||
|
+
|
||||||
|
+perl %QTSRC%bin\syncqt.pl -minimal -version %QTVERSION% -module QtCore -outdir "%QTDIR%" %QTSRC%
|
||||||
|
if errorlevel 1 goto exit
|
||||||
|
|
||||||
|
if not exist tools\configure (
|
||||||
|
@@ -62,7 +74,11 @@ if not "%jom.exe%" == "" set make=jom
|
||||||
|
|
||||||
|
echo #### Generated by configure.bat - DO NOT EDIT! ####> Makefile
|
||||||
|
echo/>> Makefile
|
||||||
|
-for /f "tokens=3 usebackq" %%V in (`findstr QT_VERSION_STR %QTSRC%src\corelib\global\qglobal.h`) do @echo QTVERSION = %%~V>> Makefile
|
||||||
|
+echo QTVERSION = %QTVERSION%>> Makefile
|
||||||
|
+rem These must have trailing spaces to avoid misinterpretation as 5>>, etc.
|
||||||
|
+echo QT_VERSION_MAJOR = %QTVERMAJ% >> Makefile
|
||||||
|
+echo QT_VERSION_MINOR = %QTVERMIN% >> Makefile
|
||||||
|
+echo QT_VERSION_PATCH = %QTVERPAT% >> Makefile
|
||||||
|
if not "%icl.exe%" == "" (
|
||||||
|
echo CXX = icl>>Makefile
|
||||||
|
echo EXTRA_CXXFLAGS = /Zc:forScope>>Makefile
|
||||||
|
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
|
||||||
|
index 86f884fe209195d814e8037fd8e9352e3e585ad0..d2d7bf7e6327fa57576c5dfe803c335ef4b965ca 100644
|
||||||
|
--- a/qmake/Makefile.unix
|
||||||
|
+++ b/qmake/Makefile.unix
|
||||||
|
@@ -101,6 +101,7 @@ CPPFLAGS = -g $(EXTRA_CPPFLAGS) \
|
||||||
|
-I$(BUILD_PATH)/src/corelib/global -DHAVE_QCONFIG_CPP \
|
||||||
|
-I$(QMAKESPEC) \
|
||||||
|
-I$(SOURCE_PATH)/tools/shared \
|
||||||
|
+ -DQT_VERSION_STR=\"$(QT_VERSION)\" -DQT_VERSION_MAJOR=$(QT_MAJOR_VERSION) -DQT_VERSION_MINOR=$(QT_MINOR_VERSION) -DQT_VERSION_PATCH=$(QT_PATCH_VERSION) \
|
||||||
|
-DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL \
|
||||||
|
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \
|
||||||
|
-DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
|
||||||
|
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
|
||||||
|
index 9dda6ca1e7b7399e6179732b677824d624e745d0..fdbb9c8499a78a980cf3e0a7900567320aae9676 100644
|
||||||
|
--- a/qmake/Makefile.win32
|
||||||
|
+++ b/qmake/Makefile.win32
|
||||||
|
@@ -36,6 +36,7 @@ CFLAGS_BARE = -c -Fo./ -Fdqmake.pdb \
|
||||||
|
-I$(BUILD_PATH)\src\corelib\global -DHAVE_QCONFIG_CPP \
|
||||||
|
-I$(SOURCE_PATH)\mkspecs\$(QMAKESPEC) \
|
||||||
|
-I$(SOURCE_PATH)\tools\shared \
|
||||||
|
+ -DQT_VERSION_STR=\"$(QT_VERSION)\" -DQT_VERSION_MAJOR=$(QT_MAJOR_VERSION) -DQT_VERSION_MINOR=$(QT_MINOR_VERSION) -DQT_VERSION_PATCH=$(QT_PATCH_VERSION) \
|
||||||
|
-DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL \
|
||||||
|
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \
|
||||||
|
-DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
|
||||||
|
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
|
||||||
|
index 97c5f37cab02c35bfdb75ec8ab58b97dc0a6b1de..15d9b6536a9f1ee85371fea6dc9115438eec32d1 100644
|
||||||
|
--- a/src/corelib/global/qglobal.h
|
||||||
|
+++ b/src/corelib/global/qglobal.h
|
||||||
|
@@ -41,11 +41,10 @@
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
-#define QT_VERSION_STR "5.5.1"
|
||||||
|
/*
|
||||||
|
QT_VERSION is (major << 16) + (minor << 8) + patch.
|
||||||
|
*/
|
||||||
|
-#define QT_VERSION 0x050501
|
||||||
|
+#define QT_VERSION QT_VERSION_CHECK(QT_VERSION_MAJOR, QT_VERSION_MINOR, QT_VERSION_PATCH)
|
||||||
|
/*
|
||||||
|
can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0))
|
||||||
|
*/
|
||||||
|
@@ -55,6 +54,7 @@
|
||||||
|
#include <QtCore/qconfig.h>
|
||||||
|
#include <QtCore/qfeatures.h>
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
# define QT_SUPPORTS(FEATURE) (!defined QT_NO_##FEATURE)
|
||||||
|
#else
|
||||||
|
diff --git a/tools/configure/Makefile.mingw b/tools/configure/Makefile.mingw
|
||||||
|
index 9ac99fd678f46445771147d80542e9bba3b37acf..6ec77c8ab511c4375711964fbb41e9a817decf2e 100644
|
||||||
|
--- a/tools/configure/Makefile.mingw
|
||||||
|
+++ b/tools/configure/Makefile.mingw
|
||||||
|
@@ -4,7 +4,7 @@ CONFSRC = $(TOOLSRC)/configure
|
||||||
|
|
||||||
|
RAW_PCH = configure_pch.h
|
||||||
|
PCH = $(RAW_PCH).gch/c++
|
||||||
|
-DEFINES = -DUNICODE -DQT_NO_DATASTREAM -DQT_NO_CODECS -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DQT_BUILD_CONFIGURE
|
||||||
|
+DEFINES = -DUNICODE -DQT_NO_DATASTREAM -DQT_NO_CODECS -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DQT_BUILD_CONFIGURE -DQT_VERSION_STR=\"$(QTVERSION)\" -DQT_VERSION_MAJOR=$(QT_VERSION_MAJOR) -DQT_VERSION_MINOR=$(QT_VERSION_MINOR) -DQT_VERSION_PATCH=$(QT_VERSION_PATCH)
|
||||||
|
INCPATH = -I"../../include" -I"../../include/QtCore" -I"../../include/QtCore/$(QTVERSION)" -I"../../include/QtCore/$(QTVERSION)/QtCore" -I"$(TOOLSRC)/shared" -I"$(QTSRC)mkspecs/win32-g++"
|
||||||
|
CXXFLAGS_BARE = -fno-rtti -fno-exceptions -mthreads -Wall -Wextra $(DEFINES) $(INCPATH)
|
||||||
|
CXXFLAGS = -include $(RAW_PCH) $(CXXFLAGS_BARE)
|
||||||
|
diff --git a/tools/configure/Makefile.win32 b/tools/configure/Makefile.win32
|
||||||
|
index 8c6d213e4243b444357712cf6c0d8d4dcfa3ff36..456e441c6f548bc3e3c0ac0a8847bf965aeb5902 100644
|
||||||
|
--- a/tools/configure/Makefile.win32
|
||||||
|
+++ b/tools/configure/Makefile.win32
|
||||||
|
@@ -3,7 +3,7 @@ TOOLSRC = $(QTSRC)tools
|
||||||
|
CONFSRC = $(TOOLSRC)\configure
|
||||||
|
|
||||||
|
PCH = configure_pch.pch
|
||||||
|
-DEFINES = -DUNICODE -DQT_NO_CODECS -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DQT_BUILD_CONFIGURE
|
||||||
|
+DEFINES = -DUNICODE -DQT_NO_CODECS -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_COMPRESS -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DQT_BUILD_CONFIGURE -DQT_VERSION_STR=\"$(QTVERSION)\" -DQT_VERSION_MAJOR=$(QT_VERSION_MAJOR) -DQT_VERSION_MINOR=$(QT_VERSION_MINOR) -DQT_VERSION_PATCH=$(QT_VERSION_PATCH)
|
||||||
|
INCPATH = -I"..\..\include" -I"..\..\include\QtCore" -I"..\..\include\QtCore\$(QTVERSION)" -I"..\..\include\QtCore\$(QTVERSION)\QtCore" -I"$(TOOLSRC)\shared" -I"$(QTSRC)mkspecs\win32-msvc2008"
|
||||||
|
CXXFLAGS_BARE = -nologo -Zc:wchar_t -W3 -GR -EHsc -w34100 -w34189 $(CFLAGS_CRT) $(EXTRA_CXXFLAGS) $(DEFINES) $(INCPATH)
|
||||||
|
CXXFLAGS = -FIconfigure_pch.h -Yuconfigure_pch.h -Fp$(PCH) -MP $(CXXFLAGS_BARE)
|
||||||
|
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
|
||||||
|
index 3bf0546ac1628e8ab51979526bb102d1e8db8de8..36cc8b03cd24ddb5d01d85fc57254059e76a49da 100644
|
||||||
|
--- a/tools/configure/configureapp.cpp
|
||||||
|
+++ b/tools/configure/configureapp.cpp
|
||||||
|
@@ -197,20 +197,18 @@ Configure::Configure(int& argc, char** argv)
|
||||||
|
dictionary[ "QT_INSTALL_SETTINGS" ] = "/etc/xdg";
|
||||||
|
|
||||||
|
QString version;
|
||||||
|
- QFile qglobal_h(sourcePath + "/src/corelib/global/qglobal.h");
|
||||||
|
- if (qglobal_h.open(QFile::ReadOnly)) {
|
||||||
|
- QTextStream read(&qglobal_h);
|
||||||
|
- QRegExp version_regexp("^# *define *QT_VERSION_STR *\"([^\"]*)\"");
|
||||||
|
- QString line;
|
||||||
|
- while (!read.atEnd()) {
|
||||||
|
- line = read.readLine();
|
||||||
|
- if (version_regexp.exactMatch(line)) {
|
||||||
|
- version = version_regexp.cap(1).trimmed();
|
||||||
|
- if (!version.isEmpty())
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
+ QFile qmake_conf(sourcePath + "/.qmake.conf");
|
||||||
|
+ if (qmake_conf.open(QFile::ReadOnly)) {
|
||||||
|
+ while (!qmake_conf.atEnd()) {
|
||||||
|
+ static const char beginning[] = "MODULE_VERSION = ";
|
||||||
|
+ QByteArray line = qmake_conf.readLine();
|
||||||
|
+ if (!line.startsWith(beginning))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ version = qMove(line).mid(int(strlen(beginning))).trimmed();
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
- qglobal_h.close();
|
||||||
|
+ qmake_conf.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (version.isEmpty())
|
||||||
|
@@ -3540,6 +3538,12 @@ void Configure::generateConfigfiles()
|
||||||
|
{
|
||||||
|
FileWriter tmpStream(buildPath + "/src/corelib/global/qconfig.h");
|
||||||
|
|
||||||
|
+ tmpStream << "#define QT_VERSION_MAJOR " << dictionary["VERSION_MAJOR"] << endl
|
||||||
|
+ << "#define QT_VERSION_MINOR " << dictionary["VERSION_MINOR"] << endl
|
||||||
|
+ << "#define QT_VERSION_PATCH " << dictionary["VERSION_PATCH"] << endl
|
||||||
|
+ << "#define QT_VERSION_STR \"" << dictionary["VERSION"] << "\"\n"
|
||||||
|
+ << endl;
|
||||||
|
+
|
||||||
|
if (dictionary[ "QCONFIG" ] == "full") {
|
||||||
|
tmpStream << "/* Everything */" << endl;
|
||||||
|
} else {
|
||||||
|
@@ -3939,7 +3943,7 @@ void Configure::generateHeaders()
|
||||||
|
QStringList args;
|
||||||
|
args << "perl" << "-w";
|
||||||
|
args += sourcePath + "/bin/syncqt.pl";
|
||||||
|
- args << "-minimal" << "-module" << "QtCore";
|
||||||
|
+ args << "-version" << dictionary["VERSION"] << "-minimal" << "-module" << "QtCore";
|
||||||
|
args += sourcePath;
|
||||||
|
int retc = Environment::execute(args, QStringList(), QStringList());
|
||||||
|
if (retc) {
|
||||||
|
@@ -4202,7 +4206,10 @@ void Configure::buildQmake()
|
||||||
|
<< "INC_PATH = " << QDir::toNativeSeparators(
|
||||||
|
(QFile::exists(sourcePath + "/.git") ? ".." : sourcePath)
|
||||||
|
+ "/include") << endl;
|
||||||
|
- stream << "QT_VERSION = " << dictionary["VERSION"] << endl;
|
||||||
|
+ stream << "QT_VERSION = " << dictionary["VERSION"] << endl
|
||||||
|
+ << "QT_MAJOR_VERSION = " << dictionary["VERSION_MAJOR"] << endl
|
||||||
|
+ << "QT_MINOR_VERSION = " << dictionary["VERSION_MINOR"] << endl
|
||||||
|
+ << "QT_PATCH_VERSION = " << dictionary["VERSION_PATCH"] << endl;
|
||||||
|
if (dictionary[ "QMAKESPEC" ] == QString("win32-g++")) {
|
||||||
|
stream << "QMAKESPEC = $(SOURCE_PATH)\\mkspecs\\win32-g++" << endl
|
||||||
|
<< "EXTRA_CFLAGS = -DUNICODE -ffunction-sections" << endl
|
||||||
|
--
|
||||||
|
2.6.0
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:893f0691739c00d13ff85bf8d3fd14e1c7a62fbbbcffa44b0491da4d5e570965
|
|
||||||
size 46245180
|
|
3
qtbase-opensource-src-5.5.1.tar.xz
Normal file
3
qtbase-opensource-src-5.5.1.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:dfa4e8a4d7e4c6b69285e7e8833eeecd819987e1bdbe5baa6b6facd4420de916
|
||||||
|
size 46389212
|
@ -1,43 +0,0 @@
|
|||||||
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: 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) {
|
|
||||||
--
|
|
||||||
cgit v0.11.0
|
|
Loading…
Reference in New Issue
Block a user