summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro2
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java18
-rw-r--r--src/corelib/io/qsettings.cpp2
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp4
-rw-r--r--src/corelib/plugin/quuid.cpp4
-rw-r--r--src/platformsupport/clipboard/qmacmime.mm133
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp3
-rw-r--r--src/plugins/platforms/android/qandroidplatformfontdatabase.cpp2
-rw-r--r--src/plugins/platforms/cocoa/qcocoamimetypes.mm129
-rw-r--r--src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp10
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.cpp3
-rw-r--r--src/tools/qdoc/htmlgenerator.cpp4
-rw-r--r--src/widgets/kernel/qopenglwidget.cpp6
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp9
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp14
-rw-r--r--tests/auto/gui/text/qrawfont/tst_qrawfont.cpp11
-rw-r--r--tests/auto/other/qaccessibility/tst_qaccessibility.cpp2
-rw-r--r--tests/auto/testlib/selftests/tst_selftests.cpp6
18 files changed, 237 insertions, 125 deletions
diff --git a/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro b/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
index bd0475fc05..246c763fd6 100644
--- a/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
+++ b/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
@@ -3,7 +3,7 @@ TARGET = qtharfbuzzng
CONFIG += \
static \
hide_symbols \
- exceptions_off rtti_off
+ exceptions_off rtti_off warn_off
load(qt_helper_lib)
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
index b396dfdfa1..554c54d4a0 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -170,6 +170,13 @@ public class QtActivityDelegate
m_layout.requestLayout();
}
+ public void updateFullScreen()
+ {
+ if (m_fullScreen) {
+ m_fullScreen = false;
+ setFullScreen(true);
+ }
+ }
// input method hints - must be kept in sync with QTDIR/src/corelib/global/qnamespace.h
private final int ImhHiddenText = 0x1;
@@ -213,6 +220,10 @@ public class QtActivityDelegate
return false;
m_keyboardIsVisible = visibility;
QtNative.keyboardVisibilityChanged(m_keyboardIsVisible);
+
+ if (visibility == false)
+ updateFullScreen(); // Hiding the keyboard clears the immersive mode, so we need to set it again.
+
return true;
}
public void resetSoftwareKeyboard()
@@ -721,12 +732,7 @@ public class QtActivityDelegate
QtNative.updateApplicationState(ApplicationActive);
QtNative.clearLostActions();
QtNative.updateWindow();
-
- if (m_fullScreen) {
- // Suspending the app clears the immersive mode, so we need to set it again.
- m_fullScreen = false; // Force the setFullScreen() call below to actually do something
- setFullScreen(true);
- }
+ updateFullScreen(); // Suspending the app clears the immersive mode, so we need to set it again.
}
}
}
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 321525ca18..63a0266948 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -1752,7 +1752,7 @@ bool QConfFileSettingsPrivate::readIniLine(const QByteArray &data, int &dataPos,
if (i == lineStart + 1) {
char ch;
- while (i < dataLen && ((ch = data.at(i) != '\n') && ch != '\r'))
+ while (i < dataLen && (((ch = data.at(i)) != '\n') && ch != '\r'))
++i;
lineStart = i;
} else if (!inQuotes) {
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 7debf0d774..64ad2ff0d3 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -435,10 +435,10 @@ static inline UINT inputTimerMask()
UINT result = QS_TIMER | QS_INPUT | QS_RAWINPUT;
// QTBUG 28513, QTBUG-29097, QTBUG-29435: QS_TOUCH, QS_POINTER became part of
// QS_INPUT in Windows Kit 8. They should not be used when running on pre-Windows 8.
-#if WINVER > 0x0602
+#if WINVER > 0x0601
if (QSysInfo::WindowsVersion < QSysInfo::WV_WINDOWS8)
result &= ~(QS_TOUCH | QS_POINTER);
-#endif // WINVER > 0x0602
+#endif // WINVER > 0x0601
return result;
}
diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp
index 183a16a7ad..ac66bd00ce 100644
--- a/src/corelib/plugin/quuid.cpp
+++ b/src/corelib/plugin/quuid.cpp
@@ -50,11 +50,11 @@
#endif
QT_BEGIN_NAMESPACE
+static const char digits[] = "0123456789abcdef";
+
template <class Char, class Integral>
void _q_toHex(Char *&dst, Integral value)
{
- static const char digits[] = "0123456789abcdef";
-
value = qToBigEndian(value);
const char* p = reinterpret_cast<const char*>(&value);
diff --git a/src/platformsupport/clipboard/qmacmime.mm b/src/platformsupport/clipboard/qmacmime.mm
index 93d897503b..27a490335b 100644
--- a/src/platformsupport/clipboard/qmacmime.mm
+++ b/src/platformsupport/clipboard/qmacmime.mm
@@ -39,6 +39,13 @@
**
****************************************************************************/
+#include <QtCore/qsystemdetection.h>
+#if defined(Q_OS_IOS)
+#import <UIKit/UIKit.h>
+#elif defined(Q_OS_OSX)
+#import <Cocoa/Cocoa.h>
+#endif
+
#include "qmacmime_p.h"
#include "qguiapplication.h"
@@ -115,6 +122,7 @@ const QStringList& qt_mac_enabledDraggedTypes()
\list
\i public.utf8-plain-text - converts to "text/plain"
\i public.utf16-plain-text - converts to "text/plain"
+ \i public.text - converts to "text/plain"
\i public.html - converts to "text/html"
\i public.url - converts to "text/uri-list"
\i public.file-url - converts to "text/uri-list"
@@ -282,9 +290,9 @@ QList<QByteArray> QMacPasteboardMimeTypeName::convertFromMime(const QString &, Q
return ret;
}
-class QMacPasteboardMimePlainText : public QMacInternalPasteboardMime {
+class QMacPasteboardMimePlainTextFallback : public QMacInternalPasteboardMime {
public:
- QMacPasteboardMimePlainText() : QMacInternalPasteboardMime(MIME_ALL) { }
+ QMacPasteboardMimePlainTextFallback() : QMacInternalPasteboardMime(MIME_ALL) { }
QString convertorName();
QString flavorFor(const QString &mime);
@@ -294,52 +302,54 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
-QString QMacPasteboardMimePlainText::convertorName()
+QString QMacPasteboardMimePlainTextFallback::convertorName()
{
- return QLatin1String("PlainText");
+ return QLatin1String("PlainText (public.text)");
}
-QString QMacPasteboardMimePlainText::flavorFor(const QString &mime)
+QString QMacPasteboardMimePlainTextFallback::flavorFor(const QString &mime)
{
if (mime == QLatin1String("text/plain"))
- return QLatin1String("com.apple.traditional-mac-plain-text");
+ return QLatin1String("public.text");
return QString();
}
-QString QMacPasteboardMimePlainText::mimeFor(QString flav)
+QString QMacPasteboardMimePlainTextFallback::mimeFor(QString flav)
{
- if (flav == QLatin1String("com.apple.traditional-mac-plain-text"))
+ if (flav == QLatin1String("public.text"))
return QLatin1String("text/plain");
return QString();
}
-bool QMacPasteboardMimePlainText::canConvert(const QString &mime, QString flav)
+bool QMacPasteboardMimePlainTextFallback::canConvert(const QString &mime, QString flav)
{
- return flavorFor(mime) == flav;
+ return mime == mimeFor(flav);
}
-QVariant QMacPasteboardMimePlainText::convertToMime(const QString &mimetype, QList<QByteArray> data, QString flavor)
+QVariant QMacPasteboardMimePlainTextFallback::convertToMime(const QString &mimetype, QList<QByteArray> data, QString flavor)
{
if (data.count() > 1)
- qWarning("QMacPasteboardMimePlainText: Cannot handle multiple member data");
- const QByteArray &firstData = data.first();
- QVariant ret;
- if (flavor == QLatin1String("com.apple.traditional-mac-plain-text")) {
+ qWarning("QMacPasteboardMimePlainTextFallback: Cannot handle multiple member data");
+
+ if (flavor == QLatin1String("public.text")) {
+ // Note that public.text is documented by Apple to have an undefined encoding. From
+ // testing it seems that utf8 is normally used, at least by Safari on iOS.
+ const QByteArray &firstData = data.first();
return QString::fromCFString(CFStringCreateWithBytes(kCFAllocatorDefault,
reinterpret_cast<const UInt8 *>(firstData.constData()),
- firstData.size(), CFStringGetSystemEncoding(), false));
+ firstData.size(), kCFStringEncodingUTF8, false));
} else {
qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
}
- return ret;
+ return QVariant();
}
-QList<QByteArray> QMacPasteboardMimePlainText::convertFromMime(const QString &, QVariant data, QString flavor)
+QList<QByteArray> QMacPasteboardMimePlainTextFallback::convertFromMime(const QString &, QVariant data, QString flavor)
{
QList<QByteArray> ret;
QString string = data.toString();
- if (flavor == QLatin1String("com.apple.traditional-mac-plain-text"))
- ret.append(string.toLatin1());
+ if (flavor == QLatin1String("public.text"))
+ ret.append(string.toUtf8());
return ret;
}
@@ -477,6 +487,86 @@ QList<QByteArray> QMacPasteboardMimeHTMLText::convertFromMime(const QString &mim
return ret;
}
+class QMacPasteboardMimeRtfText : public QMacInternalPasteboardMime {
+public:
+ QMacPasteboardMimeRtfText() : QMacInternalPasteboardMime(MIME_ALL) { }
+ QString convertorName();
+
+ QString flavorFor(const QString &mime);
+ QString mimeFor(QString flav);
+ bool canConvert(const QString &mime, QString flav);
+ QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
+ QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
+};
+
+QString QMacPasteboardMimeRtfText::convertorName()
+{
+ return QLatin1String("Rtf");
+}
+
+QString QMacPasteboardMimeRtfText::flavorFor(const QString &mime)
+{
+ if (mime == QLatin1String("text/html"))
+ return QLatin1String("public.rtf");
+ return QString();
+}
+
+QString QMacPasteboardMimeRtfText::mimeFor(QString flav)
+{
+ if (flav == QLatin1String("public.rtf"))
+ return QLatin1String("text/html");
+ return QString();
+}
+
+bool QMacPasteboardMimeRtfText::canConvert(const QString &mime, QString flav)
+{
+#if defined(Q_OS_IOS)
+ if (QSysInfo::MacintoshVersion < QSysInfo::MV_IOS_7_0)
+ return false;
+#endif
+
+ return mime == mimeFor(flav);
+}
+
+QVariant QMacPasteboardMimeRtfText::convertToMime(const QString &mimeType, QList<QByteArray> data, QString flavor)
+{
+ if (!canConvert(mimeType, flavor))
+ return QVariant();
+ if (data.count() > 1)
+ qWarning("QMacPasteboardMimeHTMLText: Cannot handle multiple member data");
+
+ // Read RTF into to NSAttributedString, then convert the string to HTML
+ NSAttributedString *string = [[NSAttributedString alloc] initWithData:data.at(0).toNSData()
+ options:[NSDictionary dictionaryWithObject:NSRTFTextDocumentType forKey:NSDocumentTypeDocumentAttribute]
+ documentAttributes:nil
+ error:nil];
+
+ NSError *error;
+ NSRange range = NSMakeRange(0, [string length]);
+ NSDictionary *dict = [NSDictionary dictionaryWithObject:NSHTMLTextDocumentType forKey:NSDocumentTypeDocumentAttribute];
+ NSData *htmlData = [string dataFromRange:range documentAttributes:dict error:&error];
+ return QByteArray::fromNSData(htmlData);
+}
+
+QList<QByteArray> QMacPasteboardMimeRtfText::convertFromMime(const QString &mime, QVariant data, QString flavor)
+{
+ QList<QByteArray> ret;
+ if (!canConvert(mime, flavor))
+ return ret;
+
+ NSAttributedString *string = [[NSAttributedString alloc] initWithData:data.toByteArray().toNSData()
+ options:[NSDictionary dictionaryWithObject:NSHTMLTextDocumentType forKey:NSDocumentTypeDocumentAttribute]
+ documentAttributes:nil
+ error:nil];
+
+ NSError *error;
+ NSRange range = NSMakeRange(0, [string length]);
+ NSDictionary *dict = [NSDictionary dictionaryWithObject:NSRTFTextDocumentType forKey:NSDocumentTypeDocumentAttribute];
+ NSData *rtfData = [string dataFromRange:range documentAttributes:dict error:&error];
+ ret << QByteArray::fromNSData(rtfData);
+ return ret;
+}
+
class QMacPasteboardMimeFileUri : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeFileUri() : QMacInternalPasteboardMime(MIME_ALL) { }
@@ -696,8 +786,9 @@ void QMacInternalPasteboardMime::initializeMimeTypes()
new QMacPasteboardMimeAny;
//standard types that we wrap
+ new QMacPasteboardMimePlainTextFallback;
new QMacPasteboardMimeUnicodeText;
- new QMacPasteboardMimePlainText;
+ new QMacPasteboardMimeRtfText;
new QMacPasteboardMimeHTMLText;
new QMacPasteboardMimeFileUri;
new QMacPasteboardMimeUrl;
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index 17717dd53c..b8da9726d5 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -660,6 +660,9 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, void *usrPtr)
QFontEngine *QFontconfigDatabase::fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference)
{
QFontEngineFT *engine = static_cast<QFontEngineFT*>(QBasicFontDatabase::fontEngine(fontData, pixelSize, hintingPreference));
+ if (engine == 0)
+ return 0;
+
QFontDef fontDef = engine->fontDef;
QFontEngineFT::GlyphFormat format;
diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
index 7423e6c55a..935caed467 100644
--- a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
+++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
@@ -82,7 +82,7 @@ QStringList QAndroidPlatformFontDatabase::fallbacksForFamily(const QString &fami
Q_UNUSED(family);
Q_UNUSED(style);
- if (styleHint == QFont::Monospace)
+ if (styleHint == QFont::Monospace || styleHint == QFont::Courier)
return QString(qgetenv("QT_ANDROID_FONTS_MONOSPACE")).split(";") + m_fallbacks[script];
return QString(qgetenv("QT_ANDROID_FONTS")).split(";") + m_fallbacks[script];
diff --git a/src/plugins/platforms/cocoa/qcocoamimetypes.mm b/src/plugins/platforms/cocoa/qcocoamimetypes.mm
index 8151d31449..421d934fa7 100644
--- a/src/plugins/platforms/cocoa/qcocoamimetypes.mm
+++ b/src/plugins/platforms/cocoa/qcocoamimetypes.mm
@@ -45,6 +45,67 @@
QT_BEGIN_NAMESPACE
+class QMacPasteboardMimeTraditionalMacPlainText : public QMacInternalPasteboardMime {
+public:
+ QMacPasteboardMimeTraditionalMacPlainText() : QMacInternalPasteboardMime(MIME_ALL) { }
+ QString convertorName();
+
+ QString flavorFor(const QString &mime);
+ QString mimeFor(QString flav);
+ bool canConvert(const QString &mime, QString flav);
+ QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
+ QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
+};
+
+QString QMacPasteboardMimeTraditionalMacPlainText::convertorName()
+{
+ return QLatin1String("PlainText (traditional-mac-plain-text)");
+}
+
+QString QMacPasteboardMimeTraditionalMacPlainText::flavorFor(const QString &mime)
+{
+ if (mime == QLatin1String("text/plain"))
+ return QLatin1String("com.apple.traditional-mac-plain-text");
+ return QString();
+}
+
+QString QMacPasteboardMimeTraditionalMacPlainText::mimeFor(QString flav)
+{
+ if (flav == QLatin1String("com.apple.traditional-mac-plain-text"))
+ return QLatin1String("text/plain");
+ return QString();
+}
+
+bool QMacPasteboardMimeTraditionalMacPlainText::canConvert(const QString &mime, QString flav)
+{
+ return flavorFor(mime) == flav;
+}
+
+QVariant QMacPasteboardMimeTraditionalMacPlainText::convertToMime(const QString &mimetype, QList<QByteArray> data, QString flavor)
+{
+ if (data.count() > 1)
+ qWarning("QMacPasteboardMimeTraditionalMacPlainText: Cannot handle multiple member data");
+ const QByteArray &firstData = data.first();
+ QVariant ret;
+ if (flavor == QLatin1String("com.apple.traditional-mac-plain-text")) {
+ return QString::fromCFString(CFStringCreateWithBytes(kCFAllocatorDefault,
+ reinterpret_cast<const UInt8 *>(firstData.constData()),
+ firstData.size(), CFStringGetSystemEncoding(), false));
+ } else {
+ qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
+ }
+ return ret;
+}
+
+QList<QByteArray> QMacPasteboardMimeTraditionalMacPlainText::convertFromMime(const QString &, QVariant data, QString flavor)
+{
+ QList<QByteArray> ret;
+ QString string = data.toString();
+ if (flavor == QLatin1String("com.apple.traditional-mac-plain-text"))
+ ret.append(string.toLatin1());
+ return ret;
+}
+
class QMacPasteboardMimeTiff : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeTiff() : QMacInternalPasteboardMime(MIME_ALL) { }
@@ -136,76 +197,10 @@ QList<QByteArray> QMacPasteboardMimeTiff::convertFromMime(const QString &mime, Q
return ret;
}
-// This handler is special: It supports converting public.rtf top text/html,
-// but not the other way around.
-class QMacPasteboardMimeRtfText : public QMacInternalPasteboardMime {
-public:
- QMacPasteboardMimeRtfText() : QMacInternalPasteboardMime(MIME_ALL) { }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeRtfText::convertorName()
-{
- return QLatin1String("Rtf");
-}
-
-QString QMacPasteboardMimeRtfText::flavorFor(const QString &mime)
-{
- if (mime == QLatin1String("text/html"))
- return QLatin1String("public.rtf");
- return QString();
-}
-
-QString QMacPasteboardMimeRtfText::mimeFor(QString flav)
-{
- if (flav == QLatin1String("public.rtf"))
- return QLatin1String("text/html");
- return QString();
-}
-
-bool QMacPasteboardMimeRtfText::canConvert(const QString &mime, QString flav)
-{
- return flavorFor(mime) == flav;
-}
-
-QVariant QMacPasteboardMimeRtfText::convertToMime(const QString &mimeType, QList<QByteArray> data, QString flavor)
-{
- if (!canConvert(mimeType, flavor))
- return QVariant();
- if (data.count() > 1)
- qWarning("QMacPasteboardMimeHTMLText: Cannot handle multiple member data");
-
- // Convert Rtf to Html.
- NSAttributedString *string = [[NSAttributedString alloc] initWithRTF:data.at(0).toNSData() documentAttributes:NULL];
- NSError *error;
- NSRange range = NSMakeRange(0,[string length]);
- NSDictionary *dict = [NSDictionary dictionaryWithObject:NSHTMLTextDocumentType forKey:NSDocumentTypeDocumentAttribute];
- NSData *htmldata = [string dataFromRange:range documentAttributes:dict error:&error];
- [string release];
- return QByteArray::fromNSData(htmldata);
-}
-
-QList<QByteArray> QMacPasteboardMimeRtfText::convertFromMime(const QString &mime, QVariant data, QString flavor)
-{
- Q_UNUSED(mime);
- Q_UNUSED(data);
- Q_UNUSED(flavor);
-
- qWarning("QMacPasteboardMimeRtfText: Conversion from Html to Rtf is not supported");
- QList<QByteArray> ret;
- return ret;
-}
-
void QCocoaMimeTypes::initializeMimeTypes()
{
+ new QMacPasteboardMimeTraditionalMacPlainText;
new QMacPasteboardMimeTiff;
- new QMacPasteboardMimeRtfText;
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp b/src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp
index ca2dcf908d..5a4157565e 100644
--- a/src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp
+++ b/src/plugins/platforms/direct2d/qwindowsdirect2dpaintengine.cpp
@@ -592,9 +592,13 @@ public:
props.miterLimit = newPen.miterLimit() * qreal(2.0); // D2D and Qt miter specs differ
props.dashOffset = newPen.dashOffset();
- props.transformType = qIsNull(newPen.widthF()) ? D2D1_STROKE_TRANSFORM_TYPE_HAIRLINE
- : newPen.isCosmetic() ? D2D1_STROKE_TRANSFORM_TYPE_FIXED
- : D2D1_STROKE_TRANSFORM_TYPE_NORMAL;
+
+ if (newPen.widthF() == 0)
+ props.transformType = D2D1_STROKE_TRANSFORM_TYPE_HAIRLINE;
+ else if (qt_pen_is_cosmetic(newPen, q->state()->renderHints))
+ props.transformType = D2D1_STROKE_TRANSFORM_TYPE_FIXED;
+ else
+ props.transformType = D2D1_STROKE_TRANSFORM_TYPE_NORMAL;
switch (newPen.style()) {
case Qt::SolidLine:
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
index 940d75614c..6d9f01da4e 100644
--- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
@@ -165,6 +165,9 @@ namespace {
Q_ASSERT(tagName.size() == 4);
quint32 tagId = *(reinterpret_cast<const quint32 *>(tagName.constData()));
+ if (m_fontData.size() < sizeof(OffsetSubTable) + sizeof(TableDirectory))
+ return 0;
+
OffsetSubTable *offsetSubTable = reinterpret_cast<OffsetSubTable *>(m_fontData.data());
TableDirectory *tableDirectory = reinterpret_cast<TableDirectory *>(offsetSubTable + 1);
diff --git a/src/tools/qdoc/htmlgenerator.cpp b/src/tools/qdoc/htmlgenerator.cpp
index 641e59f018..06097e85d5 100644
--- a/src/tools/qdoc/htmlgenerator.cpp
+++ b/src/tools/qdoc/htmlgenerator.cpp
@@ -1446,6 +1446,10 @@ void HtmlGenerator::generateDocNode(DocNode* dn, CodeMarker* marker)
// Replace the marker with a QML code marker.
marker = CodeMarker::markerForLanguage(QLatin1String("QML"));
}
+ else if (dn->subType() == Node::QmlClass) {
+ fullTitle = fullTitle + " QML Type";
+ htmlTitle = fullTitle;
+ }
generateHeader(htmlTitle, dn, marker);
/*
diff --git a/src/widgets/kernel/qopenglwidget.cpp b/src/widgets/kernel/qopenglwidget.cpp
index cbefb8a6bf..307d0bb909 100644
--- a/src/widgets/kernel/qopenglwidget.cpp
+++ b/src/widgets/kernel/qopenglwidget.cpp
@@ -170,12 +170,6 @@ void QOpenGLWidget::resizeEvent(QResizeEvent *)
d->fbo = new QOpenGLFramebufferObject(size() * devicePixelRatio(), QOpenGLFramebufferObject::CombinedDepthStencil);
d->fbo->bind();
QOpenGLFunctions *funcs = d->context.functions();
- funcs->glBindTexture(GL_TEXTURE_2D, d->fbo->texture());
- funcs->glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- funcs->glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- funcs->glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- funcs->glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
resizeGL(width(), height());
paintGL();
funcs->glFlush();
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
index 6c147d68c8..8174cd942f 100644
--- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -1073,10 +1073,8 @@ void tst_QFileInfo::fileTimes()
#endif
#if defined(Q_OS_WINCE)
QEXPECT_FAIL("simple", "WinCE only stores date of access data, not the time", Continue);
-#elif defined(Q_OS_BLACKBERRY)
- QEXPECT_FAIL("simple", "Blackberry OS uses the noatime filesystem option", Continue);
- QEXPECT_FAIL("longfile", "Blackberry OS uses the noatime filesystem option", Continue);
- QEXPECT_FAIL("longfile absolutepath", "Blackberry OS uses the noatime filesystem option", Continue);
+#elif defined(Q_OS_QNX)
+ QEXPECT_FAIL("", "QNX uses the noatime filesystem option", Continue);
#endif
QVERIFY(fileInfo.lastRead() > beforeRead);
QVERIFY(fileInfo.lastModified() > beforeWrite);
@@ -1511,8 +1509,7 @@ void tst_QFileInfo::isWritable()
QVERIFY(fi.exists());
QVERIFY(!fi.isWritable());
#endif
-#if defined (Q_OS_BLACKBERRY)
- // The Blackberry filesystem is read-only
+#if defined (Q_OS_QNX) // On QNX /etc is usually on a read-only filesystem
QVERIFY(!QFileInfo("/etc/passwd").isWritable());
#elif defined (Q_OS_UNIX) && !defined(Q_OS_VXWORKS) // VxWorks does not have users/groups
if (::getuid() == 0)
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index 8f9376f8b6..8559b8ab96 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -2549,7 +2549,7 @@ void tst_QDateTime::daylightTransitions() const
QVERIFY(msecBefore.isValid());
QCOMPARE(msecBefore.date(), QDate(2012, 10, 28));
QCOMPARE(msecBefore.time(), QTime(2, 59, 59, 999));
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
+#if defined(Q_OS_MAC) || defined(Q_OS_WIN) || defined(Q_OS_QNX)
// Win and Mac uses SecondOccurrence here
QEXPECT_FAIL("", "QDateTime doesn't properly support Daylight Transitions", Continue);
#endif // Q_OS_MAC
@@ -2571,7 +2571,7 @@ void tst_QDateTime::daylightTransitions() const
QVERIFY(afterTran.isValid());
QCOMPARE(afterTran.date(), QDate(2012, 10, 28));
QCOMPARE(afterTran.time(), QTime(2, 59, 59, 999));
-#if defined (Q_OS_UNIX) && !defined(Q_OS_MAC)
+#if defined (Q_OS_UNIX) && !defined(Q_OS_MAC) && !defined(Q_OS_QNX)
// Linux mktime bug uses last calculation
QEXPECT_FAIL("", "QDateTime doesn't properly support Daylight Transitions", Continue);
#endif // Q_OS_UNIX
@@ -2629,7 +2629,7 @@ void tst_QDateTime::daylightTransitions() const
QVERIFY(test.isValid());
QCOMPARE(test.date(), QDate(2012, 10, 28));
QCOMPARE(test.time(), QTime(2, 0, 0));
-#ifndef Q_OS_MAC
+#if !defined(Q_OS_MAC) && !defined(Q_OS_QNX)
// Linux mktime bug uses last calculation
QEXPECT_FAIL("", "QDateTime doesn't properly support Daylight Transitions", Continue);
#endif // Q_OS_MAC
@@ -2671,7 +2671,7 @@ void tst_QDateTime::daylightTransitions() const
QVERIFY(test.isValid());
QCOMPARE(test.date(), QDate(2012, 10, 28));
QCOMPARE(test.time(), QTime(2, 0, 0));
-#ifndef Q_OS_MAC
+#if !defined(Q_OS_MAC) && !defined(Q_OS_QNX)
// Linux mktime bug uses last calculation
QEXPECT_FAIL("", "QDateTime doesn't properly support Daylight Transitions", Continue);
#endif // Q_OS_MAC
@@ -2713,7 +2713,7 @@ void tst_QDateTime::daylightTransitions() const
QVERIFY(test.isValid());
QCOMPARE(test.date(), QDate(2012, 10, 28));
QCOMPARE(test.time(), QTime(2, 0, 0));
-#ifndef Q_OS_MAC
+#if !defined(Q_OS_MAC) && !defined(Q_OS_QNX)
// Linux mktime bug uses last calculation
QEXPECT_FAIL("", "QDateTime doesn't properly support Daylight Transitions", Continue);
#endif // Q_OS_MAC
@@ -2778,12 +2778,12 @@ void tst_QDateTime::daylightTransitions() const
test = test.addMSecs(msecsOneHour);
QVERIFY(test.isValid());
QCOMPARE(test.date(), QDate(2012, 10, 28));
-#ifdef Q_OS_MAC
+#if defined(Q_OS_MAC) || defined(Q_OS_QNX)
// Mac uses FirstOccurrence, Windows uses SecondOccurrence, Linux uses last calculation
QEXPECT_FAIL("", "QDateTime doesn't properly support Daylight Transitions", Continue);
#endif // Q_OS_WIN
QCOMPARE(test.time(), QTime(3, 0, 0));
-#ifdef Q_OS_MAC
+#if defined(Q_OS_MAC) || defined(Q_OS_QNX)
// Mac uses FirstOccurrence, Windows uses SecondOccurrence, Linux uses last calculation
QEXPECT_FAIL("", "QDateTime doesn't properly support Daylight Transitions", Continue);
#endif // Q_OS_WIN
diff --git a/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp b/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp
index ae6e450301..20bfaf99dd 100644
--- a/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp
+++ b/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp
@@ -99,6 +99,8 @@ private slots:
void rawFontSetPixelSize();
void multipleRawFontsFromData();
+
+ void rawFontFromInvalidData();
private:
QString testFont;
QString testFontBoldItalic;
@@ -939,6 +941,15 @@ void tst_QRawFont::multipleRawFontsFromData()
|| testFont.style() != (testFontBoldItalic.style()));
}
+void tst_QRawFont::rawFontFromInvalidData()
+{
+ QByteArray invalidData("foobar");
+ QRawFont font;
+ font.loadFromData(invalidData, 10, QFont::PreferDefaultHinting);
+
+ QVERIFY(!font.isValid());
+}
+
#endif // QT_NO_RAWFONT
QTEST_MAIN(tst_QRawFont)
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
index 54c56eb18b..8b033efa4a 100644
--- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
@@ -315,6 +315,8 @@ void tst_QAccessibility::initTestCase()
{
QTestAccessibility::initialize();
QPlatformIntegration *pfIntegration = QGuiApplicationPrivate::platformIntegration();
+ if (!pfIntegration->accessibility())
+ QSKIP("This platform does not support accessibility");
pfIntegration->accessibility()->setActive(true);
}
diff --git a/tests/auto/testlib/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp
index 8167a96eaa..9082561dc9 100644
--- a/tests/auto/testlib/selftests/tst_selftests.cpp
+++ b/tests/auto/testlib/selftests/tst_selftests.cpp
@@ -526,9 +526,11 @@ static QProcessEnvironment processEnvironment()
const QProcessEnvironment systemEnvironment = QProcessEnvironment::systemEnvironment();
foreach (const QString &key, systemEnvironment.keys()) {
const bool useVariable = key == QLatin1String("PATH") || key == QLatin1String("QT_QPA_PLATFORM")
-#ifdef Q_OS_UNIX
+#if defined(Q_OS_QNX)
+ || key == QLatin1String("GRAPHICS_ROOT") || key == QLatin1String("TZ")
+#elif defined(Q_OS_UNIX)
|| key == QLatin1String("HOME") || key == QLatin1String("USER") // Required for X11 on openSUSE
-# ifndef Q_OS_MAC
+# if !defined(Q_OS_MAC)
|| key == QLatin1String("DISPLAY") || key == QLatin1String("XAUTHLOCALHOSTNAME")
|| key.startsWith(QLatin1String("XDG_"))
# endif // !Q_OS_MAC