diff options
Diffstat (limited to 'src/plugins/platforms/windows')
4 files changed, 23 insertions, 6 deletions
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp index b6ff3dc3ce..f70b5b4e2b 100644 --- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp +++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp @@ -1195,7 +1195,7 @@ static QList<FilterSpec> filterSpecs(const QStringList &filters, const QRegExp filterSeparatorRE(QStringLiteral("[;\\s]+")); const QString separator = QStringLiteral(";"); Q_ASSERT(filterSeparatorRE.isValid()); - // Split filter specification as 'Texts (*.txt[;] *.doc)' + // Split filter specification as 'Texts (*.txt[;] *.doc)', '*.txt[;] *.doc' // into description and filters specification as '*.txt;*.doc' foreach (const QString &filterString, filters) { const int openingParenPos = filterString.lastIndexOf(QLatin1Char('(')); @@ -1203,8 +1203,10 @@ static QList<FilterSpec> filterSpecs(const QStringList &filters, filterString.indexOf(QLatin1Char(')'), openingParenPos + 1) : -1; FilterSpec filterSpec; filterSpec.filter = closingParenPos == -1 ? - QString(QLatin1Char('*')) : + filterString : filterString.mid(openingParenPos + 1, closingParenPos - openingParenPos - 1).trimmed(); + if (filterSpec.filter.isEmpty()) + filterSpec.filter += QLatin1Char('*'); filterSpec.filter.replace(filterSeparatorRE, separator); filterSpec.description = filterString; if (hideFilterDetails && openingParenPos != -1) { // Do not show pattern in description @@ -1559,7 +1561,7 @@ public: QWindowsFileDialogHelper() {} virtual bool supportsNonModalDialog(const QWindow * /* parent */ = 0) const { return false; } virtual bool defaultNameFilterDisables() const - { return true; } + { return false; } virtual void setDirectory(const QUrl &directory) Q_DECL_OVERRIDE; virtual QUrl directory() const Q_DECL_OVERRIDE; virtual void selectFile(const QUrl &filename) Q_DECL_OVERRIDE; diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp index c45c34ae4d..e7e4028079 100644 --- a/src/plugins/platforms/windows/qwindowsglcontext.cpp +++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp @@ -387,7 +387,12 @@ static int choosePixelFormat(HDC hdc, iAttributes[i++] = WGL_DRAW_TO_WINDOW_ARB; iAttributes[i++] = TRUE; iAttributes[i++] = WGL_COLOR_BITS_ARB; - iAttributes[i++] = 24; + + iAttributes[i++] = (format.redBufferSize() > 0) + && (format.greenBufferSize() > 0) + && (format.blueBufferSize() > 0) ? + format.redBufferSize() + format.greenBufferSize() + format.blueBufferSize() : + 24; switch (format.swapBehavior()) { case QSurfaceFormat::SingleBuffer: iAttributes[i++] = WGL_DOUBLE_BUFFER_ARB; diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index e0e8753e14..de34663286 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -83,6 +83,7 @@ # include "qwindowssessionmanager.h" #endif #include <QtGui/private/qguiapplication_p.h> +#include <QtGui/qpa/qplatforminputcontextfactory_p.h> #include <QtCore/private/qeventdispatcher_win_p.h> #include <QtCore/QDebug> @@ -158,7 +159,7 @@ struct QWindowsIntegrationPrivate #if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2) QOpenGLStaticContextPtr m_staticOpenGLContext; #endif - QWindowsInputContext m_inputContext; + QScopedPointer<QPlatformInputContext> m_inputContext; #ifndef QT_NO_ACCESSIBILITY QWindowsAccessibility m_accessibility; #endif @@ -224,6 +225,14 @@ QWindowsIntegration::~QWindowsIntegration() { } +void QWindowsIntegration::initialize() +{ + if (QPlatformInputContext *pluginContext = QPlatformInputContextFactory::create()) + d->m_inputContext.reset(pluginContext); + else + d->m_inputContext.reset(new QWindowsInputContext); +} + bool QWindowsIntegration::hasCapability(QPlatformIntegration::Capability cap) const { switch (cap) { @@ -441,7 +450,7 @@ QPlatformDrag *QWindowsIntegration::drag() const QPlatformInputContext * QWindowsIntegration::inputContext() const { - return &d->m_inputContext; + return d->m_inputContext.data(); } #ifndef QT_NO_ACCESSIBILITY diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h index 2202ebd39e..0f417c8239 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.h +++ b/src/plugins/platforms/windows/qwindowsintegration.h @@ -76,6 +76,7 @@ public: virtual QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const; #endif virtual QAbstractEventDispatcher *createEventDispatcher() const; + void initialize() Q_DECL_OVERRIDE; #ifndef QT_NO_CLIPBOARD virtual QPlatformClipboard *clipboard() const; # ifndef QT_NO_DRAGANDDROP |