summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-12-27 01:00:05 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-12-27 09:29:30 +0100
commit4054c0d6ed8bafe7ca68d981daf1be51a55fe6f1 (patch)
treeb4e000e7db3ef633983fab4dc1957721fd904657 /src/gui
parent3ea7caed6f949953706aaa6ce00d79aa8ca15a60 (diff)
parent25101f0984e86aa30f34773eb5b2025f58086b71 (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
Conflicts: .qmake.conf src/plugins/platforms/xcb/qxcbscreen.cpp src/widgets/accessible/qaccessiblewidget.cpp Change-Id: Ib3138e61ba7981610940509a7ff02ba2dd281bf0
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qcursor.cpp2
-rw-r--r--src/gui/kernel/qguiapplication.cpp28
-rw-r--r--src/gui/kernel/qwindowsysteminterface.cpp4
-rw-r--r--src/gui/kernel/qwindowsysteminterface.h1
-rw-r--r--src/gui/painting/qcosmeticstroker.cpp1
-rw-r--r--src/gui/text/qtextdocument.h2
6 files changed, 25 insertions, 13 deletions
diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp
index 4ae5412367..f5a794b642 100644
--- a/src/gui/kernel/qcursor.cpp
+++ b/src/gui/kernel/qcursor.cpp
@@ -175,6 +175,8 @@ QT_BEGIN_NAMESPACE
\fn void QCursor::swap(QCursor &other)
Swaps this cursor with the \a other cursor.
+
+ \since 5.7
*/
/*!
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 6a0b01b6c3..29ed2af7a5 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -148,7 +148,13 @@ QString QGuiApplicationPrivate::styleOverride;
Qt::ApplicationState QGuiApplicationPrivate::applicationState = Qt::ApplicationInactive;
Qt::HighDpiScaleFactorRoundingPolicy QGuiApplicationPrivate::highDpiScaleFactorRoundingPolicy =
+#ifdef Q_OS_ANDROID
+ // On Android, Qt has newer rounded the scale factor. Preserve
+ // that behavior by disabling rounding by default.
+ Qt::HighDpiScaleFactorRoundingPolicy::PassThrough;
+#else
Qt::HighDpiScaleFactorRoundingPolicy::RoundPreferFloor;
+#endif
bool QGuiApplicationPrivate::highDpiScalingUpdated = false;
QPointer<QWindow> QGuiApplicationPrivate::currentDragWindow;
@@ -166,7 +172,6 @@ bool QGuiApplicationPrivate::is_fallback_session_management_enabled = true;
enum ApplicationResourceFlags
{
- ApplicationPaletteExplicitlySet = 0x1,
ApplicationFontExplicitlySet = 0x2
};
@@ -690,8 +695,6 @@ QGuiApplication::~QGuiApplication()
QGuiApplicationPrivate::lastCursorPosition = {qInf(), qInf()};
QGuiApplicationPrivate::currentMousePressWindow = QGuiApplicationPrivate::currentMouseWindow = nullptr;
QGuiApplicationPrivate::applicationState = Qt::ApplicationInactive;
- QGuiApplicationPrivate::highDpiScaleFactorRoundingPolicy =
- Qt::HighDpiScaleFactorRoundingPolicy::RoundPreferFloor;
QGuiApplicationPrivate::highDpiScalingUpdated = false;
QGuiApplicationPrivate::currentDragWindow = nullptr;
QGuiApplicationPrivate::tabletDevicePoints.clear();
@@ -3293,11 +3296,10 @@ void QGuiApplication::setPalette(const QPalette &pal)
else
*QGuiApplicationPrivate::app_pal = pal;
- applicationResourceFlags |= ApplicationPaletteExplicitlySet;
QCoreApplication::setAttribute(Qt::AA_SetPalette);
if (qGuiApp)
- emit qGuiApp->paletteChanged(*QGuiApplicationPrivate::app_pal);
+ qGuiApp->d_func()->sendApplicationPaletteChange();
}
void QGuiApplicationPrivate::applyWindowGeometrySpecificationTo(QWindow *window)
@@ -3549,6 +3551,8 @@ Qt::ApplicationState QGuiApplication::applicationState()
accessor will reflect the environment, if set.
The default value is Qt::HighDpiScaleFactorRoundingPolicy::RoundPreferFloor.
+ On Qt for Android the default is Qt::HighDpiScaleFactorRoundingPolicy::PassThough,
+ which preserves historical behavior from earlier Qt versions.
*/
void QGuiApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy policy)
{
@@ -4096,13 +4100,10 @@ QPixmap QGuiApplicationPrivate::getPixmapCursor(Qt::CursorShape cshape)
void QGuiApplicationPrivate::notifyThemeChanged()
{
- if (!(applicationResourceFlags & ApplicationPaletteExplicitlySet) &&
- !QCoreApplication::testAttribute(Qt::AA_SetPalette)) {
+ if (!testAttribute(Qt::AA_SetPalette)) {
clearPalette();
initPalette();
- emit qGuiApp->paletteChanged(*app_pal);
- if (is_app_running && !is_app_closing)
- sendApplicationPaletteChange();
+ sendApplicationPaletteChange();
}
if (!(applicationResourceFlags & ApplicationFontExplicitlySet)) {
const auto locker = qt_scoped_lock(applicationFontMutex);
@@ -4115,7 +4116,12 @@ void QGuiApplicationPrivate::notifyThemeChanged()
void QGuiApplicationPrivate::sendApplicationPaletteChange(bool toAllWidgets, const char *className)
{
Q_UNUSED(toAllWidgets)
- Q_UNUSED(className)
+
+ if (!className)
+ emit qGuiApp->paletteChanged(*QGuiApplicationPrivate::app_pal);
+
+ if (!is_app_running || is_app_closing)
+ return;
QEvent event(QEvent::ApplicationPaletteChange);
QGuiApplication::sendEvent(QGuiApplication::instance(), &event);
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp
index 31765cf54c..3e7d592016 100644
--- a/src/gui/kernel/qwindowsysteminterface.cpp
+++ b/src/gui/kernel/qwindowsysteminterface.cpp
@@ -882,10 +882,10 @@ void QWindowSystemInterface::handleScreenRefreshRateChange(QScreen *screen, qrea
QWindowSystemInterfacePrivate::handleWindowSystemEvent(e);
}
-void QWindowSystemInterface::handleThemeChange(QWindow *window)
+QT_DEFINE_QPA_EVENT_HANDLER(void, handleThemeChange, QWindow *window)
{
QWindowSystemInterfacePrivate::ThemeChangeEvent *e = new QWindowSystemInterfacePrivate::ThemeChangeEvent(window);
- QWindowSystemInterfacePrivate::handleWindowSystemEvent(e);
+ QWindowSystemInterfacePrivate::handleWindowSystemEvent<Delivery>(e);
}
#if QT_CONFIG(draganddrop)
diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h
index d5a4ad30d8..95e20f0f8b 100644
--- a/src/gui/kernel/qwindowsysteminterface.h
+++ b/src/gui/kernel/qwindowsysteminterface.h
@@ -249,6 +249,7 @@ public:
static void handleScreenLogicalDotsPerInchChange(QScreen *screen, qreal newDpiX, qreal newDpiY);
static void handleScreenRefreshRateChange(QScreen *screen, qreal newRefreshRate);
+ template<typename Delivery = QWindowSystemInterface::DefaultDelivery>
static void handleThemeChange(QWindow *window);
static void handleFileOpenEvent(const QString& fileName);
diff --git a/src/gui/painting/qcosmeticstroker.cpp b/src/gui/painting/qcosmeticstroker.cpp
index bece814a6f..9012119516 100644
--- a/src/gui/painting/qcosmeticstroker.cpp
+++ b/src/gui/painting/qcosmeticstroker.cpp
@@ -375,6 +375,7 @@ void QCosmeticStroker::drawLine(const QPointF &p1, const QPointF &p2)
patternOffset = state->lastPen.dashOffset()*64;
lastPixel.x = INT_MIN;
+ lastPixel.y = INT_MIN;
stroke(this, start.x(), start.y(), end.x(), end.y(), drawCaps ? CapBegin|CapEnd : 0);
diff --git a/src/gui/text/qtextdocument.h b/src/gui/text/qtextdocument.h
index 7d46238257..2459c78768 100644
--- a/src/gui/text/qtextdocument.h
+++ b/src/gui/text/qtextdocument.h
@@ -221,7 +221,9 @@ public:
bool isModified() const;
+#ifndef QT_NO_PRINTER
void print(QPagedPaintDevice *printer) const;
+#endif
enum ResourceType {
UnknownResource = 0,