diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-04-05 10:02:08 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-04-05 10:02:09 +0200 |
commit | bfe5e510b90684d016fb0c68114f85708f7cffda (patch) | |
tree | 0ae25857ca1f50bd04ea1b405afcf863b082b012 /src | |
parent | 6ada4155aff6a106d918ec1b93923bed9617ab27 (diff) | |
parent | 4b4870a12cd920cd45c534deae7ca90716398a19 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Change-Id: I954bd6418bc862a04691240c0f1766f6ce033640
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 21 | ||||
-rw-r--r-- | src/network/socket/socket.pri | 2 | ||||
-rw-r--r-- | src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp | 6 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoabackingstore.mm | 8 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qlabel.cpp | 2 |
6 files changed, 35 insertions, 6 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 12390928f0..caa8aaca4b 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -591,6 +591,12 @@ static QWindowGeometrySpecification windowGeometrySpecification = Q_WINDOW_GEOME applications. \endlist + The following parameter is available for \c {-platform cocoa} (on macOS): + + \list + \li \c {fontengine=freetype}, uses the FreeType font engine. + \endlist + For more information about the platform-specific arguments available for embedded Linux platforms, see \l{Qt for Embedded Linux}. @@ -1285,6 +1291,21 @@ void QGuiApplicationPrivate::createPlatformIntegration() #ifdef QT_QPA_DEFAULT_PLATFORM_NAME platformName = QT_QPA_DEFAULT_PLATFORM_NAME; #endif +#if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) + QByteArray sessionType = qgetenv("XDG_SESSION_TYPE"); + if (!sessionType.isEmpty()) { + if (sessionType == QByteArrayLiteral("x11") && !platformName.contains(QByteArrayLiteral("xcb"))) + platformName = QByteArrayLiteral("xcb"); + else if (sessionType == QByteArrayLiteral("wayland") && !platformName.contains(QByteArrayLiteral("wayland"))) + platformName = QByteArrayLiteral("wayland"); + } +#ifdef QT_QPA_DEFAULT_PLATFORM_NAME + // Add it as fallback in case XDG_SESSION_TYPE is something wrong + if (!platformName.contains(QT_QPA_DEFAULT_PLATFORM_NAME)) + platformName += QByteArrayLiteral(";" QT_QPA_DEFAULT_PLATFORM_NAME); +#endif +#endif + QByteArray platformNameEnv = qgetenv("QT_QPA_PLATFORM"); if (!platformNameEnv.isEmpty()) { platformName = platformNameEnv; diff --git a/src/network/socket/socket.pri b/src/network/socket/socket.pri index a8a37492b7..44ff5b7b39 100644 --- a/src/network/socket/socket.pri +++ b/src/network/socket/socket.pri @@ -73,7 +73,7 @@ qtConfig(localserver) { SOURCES += socket/qlocalsocket.cpp \ socket/qlocalserver.cpp - intergrity|winrt { + integrity|winrt { SOURCES += socket/qlocalsocket_tcp.cpp \ socket/qlocalserver_tcp.cpp DEFINES += QT_LOCALSOCKET_TCP diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp index 02f92bbb18..f339938f86 100644 --- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp +++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp @@ -254,6 +254,12 @@ void QIBusPlatformInputContext::setFocusObject(QObject *object) if (!d->busConnected) return; + // It would seem natural here to call FocusOut() on the input method if we + // transition from an IME accepted focus object to one that does not accept it. + // Mysteriously however that is not sufficient to fix bug QTBUG-63066. + if (!inputMethodAccepted()) + return; + if (debug) qDebug() << "setFocusObject" << object; if (object) diff --git a/src/plugins/platforms/cocoa/qcocoabackingstore.mm b/src/plugins/platforms/cocoa/qcocoabackingstore.mm index 3621e5102f..5eb45be04a 100644 --- a/src/plugins/platforms/cocoa/qcocoabackingstore.mm +++ b/src/plugins/platforms/cocoa/qcocoabackingstore.mm @@ -163,9 +163,11 @@ void QCocoaBackingStore::flush(QWindow *window, const QRegion ®ion, const QPo const qreal devicePixelRatio = m_image.devicePixelRatio(); // If the flushed window is a content view, and not in unified toolbar mode, - // we can get away with copying the backingstore instead of blending. - const NSCompositingOperation compositingOperation = static_cast<QCocoaWindow *>( - window->handle())->isContentView() && !windowHasUnifiedToolbar() ? + // and is fully opaque, we can get away with copying the backingstore instead + // of blending. + QCocoaWindow *cocoaWindow = static_cast<QCocoaWindow *>(window->handle()); + const NSCompositingOperation compositingOperation = cocoaWindow->isContentView() + && cocoaWindow->isOpaque() && !windowHasUnifiedToolbar() ? NSCompositingOperationCopy : NSCompositingOperationSourceOver; #ifdef QT_DEBUG diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index c947acd765..8e3263ad92 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -11124,7 +11124,7 @@ void QWidgetPrivate::macUpdateSizeAttribute() for (int i = 0; i < children.size(); ++i) { QWidget *w = qobject_cast<QWidget *>(children.at(i)); if (w && (!w->isWindow() || w->testAttribute(Qt::WA_WindowPropagation)) - && !q->testAttribute(Qt::WA_MacMiniSize) // no attribute set? inherit from parent + && !w->testAttribute(Qt::WA_MacMiniSize) // no attribute set? inherit from parent && !w->testAttribute(Qt::WA_MacSmallSize) && !w->testAttribute(Qt::WA_MacNormalSize)) w->d_func()->macUpdateSizeAttribute(); diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp index a6ae61545b..c624187190 100644 --- a/src/widgets/widgets/qlabel.cpp +++ b/src/widgets/widgets/qlabel.cpp @@ -1008,7 +1008,7 @@ void QLabel::paintEvent(QPaintEvent *) : layoutDirection(), QFlag(d->align)); #if QT_CONFIG(movie) - if (d->movie) { + if (d->movie && !d->movie->currentPixmap().isNull()) { if (d->scaledcontents) style->drawItemPixmap(&painter, cr, align, d->movie->currentPixmap().scaled(cr.size())); else |