Merge "Merge remote-tracking branch 'origin/release' into stable" into refs/staging/stable
This commit is contained in:
commit
0b250dd628
12
INSTALL
12
INSTALL
@ -1,10 +1,10 @@
|
|||||||
INSTALLING Qt Source Package Version %VERSION%.
|
INSTALLING Qt Source Package Version %VERSION%.
|
||||||
|
|
||||||
For full installation instructions for each supported platform, please
|
For instructions on building and installing Qt for each supported platform,
|
||||||
see http://qt-project.org/doc/qt-%SHORTVERSION%/qtdoc/installation.html,
|
please see http://qt-project.org/doc/qt-%SHORTVERSION%/build-sources.html,
|
||||||
or follow one of these links:
|
or follow one of these links:
|
||||||
|
|
||||||
Mac OS X: http://qt-project.org/doc/qt-%SHORTVERSION%/qtdoc/install-mac.html
|
Mac OS X: http://qt-project.org/doc/qt-%SHORTVERSION%/macosx-building.html
|
||||||
Windows: http://qt-project.org/doc/qt-%SHORTVERSION%/qtdoc/install-win.html
|
Windows: http://qt-project.org/doc/qt-%SHORTVERSION%/windows-building.html
|
||||||
Windows CE: http://qt-project.org/doc/qt-%SHORTVERSION%/qtdoc/install-wince.html
|
X11 Platforms: http://qt-project.org/doc/qt-%SHORTVERSION%/linux-building.html
|
||||||
X11 Platforms: http://qt-project.org/doc/qt-%SHORTVERSION%/qtdoc/install-x11.html
|
Windows CE: http://qt-project.org/doc/qt-%SHORTVERSION%/install-wince.html
|
||||||
|
2
src/3rdparty/angle/src/libEGL/Display.cpp
vendored
2
src/3rdparty/angle/src/libEGL/Display.cpp
vendored
@ -523,7 +523,7 @@ void Display::initVendorString()
|
|||||||
if (mRenderer && mRenderer->getLUID(&adapterLuid))
|
if (mRenderer && mRenderer->getLUID(&adapterLuid))
|
||||||
{
|
{
|
||||||
char adapterLuidString[64];
|
char adapterLuidString[64];
|
||||||
sprintf_s(adapterLuidString, sizeof(adapterLuidString), " (adapter LUID: %08x%08x)", adapterLuid.HighPart, adapterLuid.LowPart);
|
snprintf(adapterLuidString, sizeof(adapterLuidString), " (adapter LUID: %08l%08l)", adapterLuid.HighPart, adapterLuid.LowPart);
|
||||||
|
|
||||||
mVendorString += adapterLuidString;
|
mVendorString += adapterLuidString;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
From 58a797397378aff3aa039a8b2a2d7011fe788737 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kai Koehne <kai.koehne@digia.com>
|
||||||
|
Date: Tue, 21 Jan 2014 10:23:38 +0100
|
||||||
|
Subject: [PATCH] Fix compilation of ANGLE with mingw-tdm64 gcc 4.8.1
|
||||||
|
|
||||||
|
Do not rely on sprintf_s being declared/defined. This also fixes
|
||||||
|
deployment to Windows XP.
|
||||||
|
|
||||||
|
See https://chromium-review.googlesource.com/#/c/182975/ for a similar
|
||||||
|
commit proposed upstream.
|
||||||
|
|
||||||
|
Task-number: QTBUG-36242
|
||||||
|
Change-Id: I520e2f61aeab34963e7a57baafd413c7db93f110
|
||||||
|
---
|
||||||
|
src/3rdparty/angle/src/libEGL/Display.cpp | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/3rdparty/angle/src/libEGL/Display.cpp b/src/3rdparty/angle/src/libEGL/Display.cpp
|
||||||
|
index a382c3b..82b48ce 100644
|
||||||
|
--- a/src/3rdparty/angle/src/libEGL/Display.cpp
|
||||||
|
+++ b/src/3rdparty/angle/src/libEGL/Display.cpp
|
||||||
|
@@ -523,7 +523,7 @@ void Display::initVendorString()
|
||||||
|
if (mRenderer && mRenderer->getLUID(&adapterLuid))
|
||||||
|
{
|
||||||
|
char adapterLuidString[64];
|
||||||
|
- sprintf_s(adapterLuidString, sizeof(adapterLuidString), " (adapter LUID: %08x%08x)", adapterLuid.HighPart, adapterLuid.LowPart);
|
||||||
|
+ snprintf(adapterLuidString, sizeof(adapterLuidString), " (adapter LUID: %08l%08l)", adapterLuid.HighPart, adapterLuid.LowPart);
|
||||||
|
|
||||||
|
mVendorString += adapterLuidString;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.8.5.2.msysgit.0
|
||||||
|
|
@ -1029,13 +1029,13 @@ inline QT_ASCII_CAST_WARN bool operator==(const char *s1, const QString &s2)
|
|||||||
inline QT_ASCII_CAST_WARN bool operator!=(const char *s1, const QString &s2)
|
inline QT_ASCII_CAST_WARN bool operator!=(const char *s1, const QString &s2)
|
||||||
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) != 0; }
|
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) != 0; }
|
||||||
inline QT_ASCII_CAST_WARN bool operator<(const char *s1, const QString &s2)
|
inline QT_ASCII_CAST_WARN bool operator<(const char *s1, const QString &s2)
|
||||||
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) < 0; }
|
|
||||||
inline QT_ASCII_CAST_WARN bool operator>(const char *s1, const QString &s2)
|
|
||||||
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) > 0; }
|
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) > 0; }
|
||||||
|
inline QT_ASCII_CAST_WARN bool operator>(const char *s1, const QString &s2)
|
||||||
|
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) < 0; }
|
||||||
inline QT_ASCII_CAST_WARN bool operator<=(const char *s1, const QString &s2)
|
inline QT_ASCII_CAST_WARN bool operator<=(const char *s1, const QString &s2)
|
||||||
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) <= 0; }
|
|
||||||
inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QString &s2)
|
|
||||||
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) >= 0; }
|
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) >= 0; }
|
||||||
|
inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QString &s2)
|
||||||
|
{ return QString::compare_helper(s2.constData(), s2.size(), s1, -1) <= 0; }
|
||||||
|
|
||||||
inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
|
inline QT_ASCII_CAST_WARN bool operator==(const char *s1, QLatin1String s2)
|
||||||
{ return QString::fromUtf8(s1) == s2; }
|
{ return QString::fromUtf8(s1) == s2; }
|
||||||
|
@ -171,7 +171,8 @@ static const HB_FontClass hb_fontClass = {
|
|||||||
static HB_Error hb_getSFntTable(void *font, HB_Tag tableTag, HB_Byte *buffer, HB_UInt *length)
|
static HB_Error hb_getSFntTable(void *font, HB_Tag tableTag, HB_Byte *buffer, HB_UInt *length)
|
||||||
{
|
{
|
||||||
QFontEngine *fe = (QFontEngine *)font;
|
QFontEngine *fe = (QFontEngine *)font;
|
||||||
if (!fe->getSfntTableData(tableTag, buffer, length))
|
Q_ASSERT(fe->faceData.get_font_table);
|
||||||
|
if (!fe->faceData.get_font_table(fe->faceData.user_data, tableTag, buffer, length))
|
||||||
return HB_Err_Invalid_Argument;
|
return HB_Err_Invalid_Argument;
|
||||||
return HB_Err_Ok;
|
return HB_Err_Ok;
|
||||||
}
|
}
|
||||||
@ -182,6 +183,13 @@ static void hb_freeFace(void *face)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static bool qt_get_font_table_default(void *user_data, uint tag, uchar *buffer, uint *length)
|
||||||
|
{
|
||||||
|
QFontEngine *fe = (QFontEngine *)user_data;
|
||||||
|
return fe->getSfntTableData(tag, buffer, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef QT_BUILD_INTERNAL
|
#ifdef QT_BUILD_INTERNAL
|
||||||
// for testing purpose only, not thread-safe!
|
// for testing purpose only, not thread-safe!
|
||||||
static QList<QFontEngine *> *enginesCollector = 0;
|
static QList<QFontEngine *> *enginesCollector = 0;
|
||||||
@ -210,6 +218,9 @@ QFontEngine::QFontEngine()
|
|||||||
font_(0), font_destroy_func(0),
|
font_(0), font_destroy_func(0),
|
||||||
face_(0), face_destroy_func(0)
|
face_(0), face_destroy_func(0)
|
||||||
{
|
{
|
||||||
|
faceData.user_data = this;
|
||||||
|
faceData.get_font_table = qt_get_font_table_default;
|
||||||
|
|
||||||
cache_cost = 0;
|
cache_cost = 0;
|
||||||
fsType = 0;
|
fsType = 0;
|
||||||
symbol = false;
|
symbol = false;
|
||||||
|
@ -116,6 +116,21 @@ QT_BEGIN_NAMESPACE
|
|||||||
#define TRUNC(x) ((x) >> 6)
|
#define TRUNC(x) ((x) >> 6)
|
||||||
#define ROUND(x) (((x)+32) & -64)
|
#define ROUND(x) (((x)+32) & -64)
|
||||||
|
|
||||||
|
static bool ft_getSfntTable(void *user_data, uint tag, uchar *buffer, uint *length)
|
||||||
|
{
|
||||||
|
FT_Face face = (FT_Face)user_data;
|
||||||
|
|
||||||
|
bool result = false;
|
||||||
|
if (FT_IS_SFNT(face)) {
|
||||||
|
FT_ULong len = *length;
|
||||||
|
result = FT_Load_Sfnt_Table(face, tag, 0, buffer, &len) == FT_Err_Ok;
|
||||||
|
*length = len;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// -------------------------- Freetype support ------------------------------
|
// -------------------------- Freetype support ------------------------------
|
||||||
|
|
||||||
class QtFreetypeData
|
class QtFreetypeData
|
||||||
@ -408,15 +423,7 @@ QFontEngine::Properties QFreetypeFace::properties() const
|
|||||||
|
|
||||||
bool QFreetypeFace::getSfntTable(uint tag, uchar *buffer, uint *length) const
|
bool QFreetypeFace::getSfntTable(uint tag, uchar *buffer, uint *length) const
|
||||||
{
|
{
|
||||||
bool result = false;
|
return ft_getSfntTable(face, tag, buffer, length);
|
||||||
#if (FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) > 20103
|
|
||||||
if (FT_IS_SFNT(face)) {
|
|
||||||
FT_ULong len = *length;
|
|
||||||
result = FT_Load_Sfnt_Table(face, tag, 0, buffer, &len) == FT_Err_Ok;
|
|
||||||
*length = len;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Some fonts (such as MingLiu rely on hinting to scale different
|
/* Some fonts (such as MingLiu rely on hinting to scale different
|
||||||
@ -761,6 +768,8 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format,
|
|||||||
fontDef.styleName = QString::fromUtf8(face->style_name);
|
fontDef.styleName = QString::fromUtf8(face->style_name);
|
||||||
|
|
||||||
if (!freetype->hbFace) {
|
if (!freetype->hbFace) {
|
||||||
|
faceData.user_data = face;
|
||||||
|
faceData.get_font_table = ft_getSfntTable;
|
||||||
freetype->hbFace = harfbuzzFace();
|
freetype->hbFace = harfbuzzFace();
|
||||||
freetype->hbFace_destroy_func = face_destroy_func;
|
freetype->hbFace_destroy_func = face_destroy_func;
|
||||||
} else {
|
} else {
|
||||||
@ -1179,7 +1188,7 @@ QFixed QFontEngineFT::emSquareSize() const
|
|||||||
|
|
||||||
bool QFontEngineFT::getSfntTableData(uint tag, uchar *buffer, uint *length) const
|
bool QFontEngineFT::getSfntTableData(uint tag, uchar *buffer, uint *length) const
|
||||||
{
|
{
|
||||||
return freetype->getSfntTable(tag, buffer, length);
|
return ft_getSfntTable(freetype->face, tag, buffer, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
int QFontEngineFT::synthesized() const
|
int QFontEngineFT::synthesized() const
|
||||||
|
@ -85,6 +85,7 @@ enum HB_Compat_Error {
|
|||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*qt_destroy_func_t) (void *user_data);
|
typedef void (*qt_destroy_func_t) (void *user_data);
|
||||||
|
typedef bool (*qt_get_font_table_func_t) (void *user_data, uint tag, uchar *buffer, uint *length);
|
||||||
|
|
||||||
class Q_GUI_EXPORT QFontEngine
|
class Q_GUI_EXPORT QFontEngine
|
||||||
{
|
{
|
||||||
@ -280,6 +281,10 @@ public:
|
|||||||
mutable qt_destroy_func_t font_destroy_func;
|
mutable qt_destroy_func_t font_destroy_func;
|
||||||
mutable void *face_;
|
mutable void *face_;
|
||||||
mutable qt_destroy_func_t face_destroy_func;
|
mutable qt_destroy_func_t face_destroy_func;
|
||||||
|
struct FaceData {
|
||||||
|
void *user_data;
|
||||||
|
qt_get_font_table_func_t get_font_table;
|
||||||
|
} faceData;
|
||||||
|
|
||||||
uint cache_cost; // amount of mem used in kb by the font
|
uint cache_cost; // amount of mem used in kb by the font
|
||||||
uint fsType : 16;
|
uint fsType : 16;
|
||||||
|
@ -623,19 +623,22 @@ hb_font_funcs_t *hb_qt_get_font_funcs()
|
|||||||
|
|
||||||
|
|
||||||
static hb_blob_t *
|
static hb_blob_t *
|
||||||
_hb_qt_get_font_table(hb_face_t * /*face*/, hb_tag_t tag, void *user_data)
|
_hb_qt_reference_table(hb_face_t * /*face*/, hb_tag_t tag, void *user_data)
|
||||||
{
|
{
|
||||||
QFontEngine *fe = (QFontEngine *)user_data;
|
QFontEngine::FaceData *data = (QFontEngine::FaceData *)user_data;
|
||||||
Q_ASSERT(fe);
|
Q_ASSERT(data);
|
||||||
|
|
||||||
|
qt_get_font_table_func_t get_font_table = data->get_font_table;
|
||||||
|
Q_ASSERT(get_font_table);
|
||||||
|
|
||||||
uint length = 0;
|
uint length = 0;
|
||||||
if (Q_UNLIKELY(!fe->getSfntTableData(tag, 0, &length) || length == 0))
|
if (Q_UNLIKELY(!get_font_table(data->user_data, tag, 0, &length) || length == 0))
|
||||||
return hb_blob_get_empty();
|
return hb_blob_get_empty();
|
||||||
|
|
||||||
char *buffer = (char *)malloc(length);
|
char *buffer = (char *)malloc(length);
|
||||||
Q_CHECK_PTR(buffer);
|
Q_CHECK_PTR(buffer);
|
||||||
|
|
||||||
if (Q_UNLIKELY(!fe->getSfntTableData(tag, reinterpret_cast<uchar *>(buffer), &length)))
|
if (Q_UNLIKELY(!get_font_table(data->user_data, tag, reinterpret_cast<uchar *>(buffer), &length)))
|
||||||
length = 0;
|
length = 0;
|
||||||
|
|
||||||
return hb_blob_create(const_cast<const char *>(buffer), length,
|
return hb_blob_create(const_cast<const char *>(buffer), length,
|
||||||
@ -646,9 +649,14 @@ _hb_qt_get_font_table(hb_face_t * /*face*/, hb_tag_t tag, void *user_data)
|
|||||||
static inline hb_face_t *
|
static inline hb_face_t *
|
||||||
_hb_qt_face_create(QFontEngine *fe)
|
_hb_qt_face_create(QFontEngine *fe)
|
||||||
{
|
{
|
||||||
hb_face_t *face;
|
Q_ASSERT(fe);
|
||||||
|
|
||||||
face = hb_face_create_for_tables(_hb_qt_get_font_table, (void *)fe, NULL);
|
QFontEngine::FaceData *data = (QFontEngine::FaceData *)malloc(sizeof(QFontEngine::FaceData));
|
||||||
|
Q_CHECK_PTR(data);
|
||||||
|
data->user_data = fe->faceData.user_data;
|
||||||
|
data->get_font_table = fe->faceData.get_font_table;
|
||||||
|
|
||||||
|
hb_face_t *face = hb_face_create_for_tables(_hb_qt_reference_table, (void *)data, free);
|
||||||
if (Q_UNLIKELY(hb_face_is_immutable(face))) {
|
if (Q_UNLIKELY(hb_face_is_immutable(face))) {
|
||||||
hb_face_destroy(face);
|
hb_face_destroy(face);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -418,7 +418,15 @@ namespace QtAndroid
|
|||||||
{
|
{
|
||||||
return m_qtTag;
|
return m_qtTag;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
QString deviceName()
|
||||||
|
{
|
||||||
|
QString manufacturer = QJNIObjectPrivate::getStaticObjectField("android/os/Build", "MANUFACTURER", "Ljava/lang/String;").toString();
|
||||||
|
QString model = QJNIObjectPrivate::getStaticObjectField("android/os/Build", "MODEL", "Ljava/lang/String;").toString();
|
||||||
|
|
||||||
|
return manufacturer + QStringLiteral(" ") + model;
|
||||||
|
}
|
||||||
|
} // namespace QtAndroid
|
||||||
|
|
||||||
static jboolean startQtAndroidPlugin(JNIEnv* /*env*/, jobject /*object*//*, jobject applicationAssetManager*/)
|
static jboolean startQtAndroidPlugin(JNIEnv* /*env*/, jobject /*object*//*, jobject applicationAssetManager*/)
|
||||||
{
|
{
|
||||||
|
@ -120,5 +120,6 @@ namespace QtAndroid
|
|||||||
const char *methodErrorMsgFmt();
|
const char *methodErrorMsgFmt();
|
||||||
const char *qtTagText();
|
const char *qtTagText();
|
||||||
|
|
||||||
|
QString deviceName();
|
||||||
}
|
}
|
||||||
#endif // ANDROID_APP_H
|
#endif // ANDROID_APP_H
|
||||||
|
@ -82,12 +82,14 @@ void QAndroidOpenGLContext::swapBuffers(QPlatformSurface *surface)
|
|||||||
bool QAndroidOpenGLContext::makeCurrent(QPlatformSurface *surface)
|
bool QAndroidOpenGLContext::makeCurrent(QPlatformSurface *surface)
|
||||||
{
|
{
|
||||||
bool ret = QEglFSContext::makeCurrent(surface);
|
bool ret = QEglFSContext::makeCurrent(surface);
|
||||||
|
QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(context());
|
||||||
|
|
||||||
const char *rendererString = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
|
const char *rendererString = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
|
||||||
if (rendererString != 0 && qstrncmp(rendererString, "Android Emulator", 16) == 0) {
|
if (rendererString != 0 && qstrncmp(rendererString, "Android Emulator", 16) == 0)
|
||||||
QOpenGLContextPrivate *ctx_d = QOpenGLContextPrivate::get(context());
|
|
||||||
ctx_d->workaround_missingPrecisionQualifiers = true;
|
ctx_d->workaround_missingPrecisionQualifiers = true;
|
||||||
}
|
|
||||||
|
if (!ctx_d->workaround_brokenFBOReadBack && QAndroidPlatformIntegration::needsWorkaround())
|
||||||
|
ctx_d->workaround_brokenFBOReadBack = true;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -89,6 +89,10 @@ void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteA
|
|||||||
return &m_palettes;
|
return &m_palettes;
|
||||||
if (resource == "AndroidStyleFonts")
|
if (resource == "AndroidStyleFonts")
|
||||||
return &m_fonts;
|
return &m_fonts;
|
||||||
|
if (resource == "AndroidDeviceName") {
|
||||||
|
static QString deviceName = QtAndroid::deviceName();
|
||||||
|
return &deviceName;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,12 +123,26 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList ¶
|
|||||||
m_androidSystemLocale = new QAndroidSystemLocale;
|
m_androidSystemLocale = new QAndroidSystemLocale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QAndroidPlatformIntegration::needsWorkaround()
|
||||||
|
{
|
||||||
|
static bool needsWorkaround =
|
||||||
|
QtAndroid::deviceName().compare(QStringLiteral("samsung SM-T211"), Qt::CaseInsensitive) == 0
|
||||||
|
|| QtAndroid::deviceName().compare(QStringLiteral("samsung SM-T210"), Qt::CaseInsensitive) == 0
|
||||||
|
|| QtAndroid::deviceName().compare(QStringLiteral("samsung SM-T215"), Qt::CaseInsensitive) == 0;
|
||||||
|
return needsWorkaround;
|
||||||
|
}
|
||||||
|
|
||||||
bool QAndroidPlatformIntegration::hasCapability(Capability cap) const
|
bool QAndroidPlatformIntegration::hasCapability(Capability cap) const
|
||||||
{
|
{
|
||||||
switch (cap) {
|
switch (cap) {
|
||||||
case ThreadedPixmaps: return true;
|
case ThreadedPixmaps: return true;
|
||||||
case ApplicationState: return true;
|
case ApplicationState: return true;
|
||||||
case NativeWidgets: return false;
|
case NativeWidgets: return false;
|
||||||
|
|
||||||
|
case ThreadedOpenGL:
|
||||||
|
if (needsWorkaround())
|
||||||
|
return false;
|
||||||
|
// fall through
|
||||||
default:
|
default:
|
||||||
#ifndef ANDROID_PLUGIN_OPENGL
|
#ifndef ANDROID_PLUGIN_OPENGL
|
||||||
return QPlatformIntegration::hasCapability(cap);
|
return QPlatformIntegration::hasCapability(cap);
|
||||||
|
@ -145,8 +145,9 @@ public:
|
|||||||
QEglFSScreen *createScreen() const;
|
QEglFSScreen *createScreen() const;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
static bool needsWorkaround();
|
||||||
|
|
||||||
|
private:
|
||||||
friend class QEglFSAndroidHooks;
|
friend class QEglFSAndroidHooks;
|
||||||
|
|
||||||
QTouchDevice *m_touchDevice;
|
QTouchDevice *m_touchDevice;
|
||||||
|
@ -211,7 +211,6 @@ public: // for QNSView
|
|||||||
QRect m_exposedGeometry;
|
QRect m_exposedGeometry;
|
||||||
int m_registerTouchCount;
|
int m_registerTouchCount;
|
||||||
bool m_resizableTransientParent;
|
bool m_resizableTransientParent;
|
||||||
bool m_overrideBecomeKey;
|
|
||||||
|
|
||||||
static const int NoAlertRequest;
|
static const int NoAlertRequest;
|
||||||
NSInteger m_alertRequest;
|
NSInteger m_alertRequest;
|
||||||
|
@ -160,9 +160,7 @@ static bool isMouseEvent(NSEvent *ev)
|
|||||||
|
|
||||||
// Only tool or dialog windows should become key:
|
// Only tool or dialog windows should become key:
|
||||||
if (m_cocoaPlatformWindow
|
if (m_cocoaPlatformWindow
|
||||||
&& (m_cocoaPlatformWindow->m_overrideBecomeKey ||
|
&& (m_cocoaPlatformWindow->window()->type() == Qt::Tool || m_cocoaPlatformWindow->window()->type() == Qt::Dialog))
|
||||||
m_cocoaPlatformWindow->window()->type() == Qt::Tool ||
|
|
||||||
m_cocoaPlatformWindow->window()->type() == Qt::Dialog))
|
|
||||||
return YES;
|
return YES;
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
@ -217,7 +215,6 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw)
|
|||||||
, m_isExposed(false)
|
, m_isExposed(false)
|
||||||
, m_registerTouchCount(0)
|
, m_registerTouchCount(0)
|
||||||
, m_resizableTransientParent(false)
|
, m_resizableTransientParent(false)
|
||||||
, m_overrideBecomeKey(false)
|
|
||||||
, m_alertRequest(NoAlertRequest)
|
, m_alertRequest(NoAlertRequest)
|
||||||
, monitor(nil)
|
, monitor(nil)
|
||||||
, m_drawContentBorderGradient(false)
|
, m_drawContentBorderGradient(false)
|
||||||
@ -267,6 +264,7 @@ QCocoaWindow::~QCocoaWindow()
|
|||||||
[m_contentView release];
|
[m_contentView release];
|
||||||
[m_nsWindow release];
|
[m_nsWindow release];
|
||||||
[m_nsWindowDelegate release];
|
[m_nsWindowDelegate release];
|
||||||
|
[m_windowCursor release];
|
||||||
}
|
}
|
||||||
|
|
||||||
QSurfaceFormat QCocoaWindow::format() const
|
QSurfaceFormat QCocoaWindow::format() const
|
||||||
@ -705,8 +703,6 @@ bool QCocoaWindow::setKeyboardGrabEnabled(bool grab)
|
|||||||
if (!m_nsWindow)
|
if (!m_nsWindow)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_overrideBecomeKey = grab;
|
|
||||||
|
|
||||||
if (grab && ![m_nsWindow isKeyWindow])
|
if (grab && ![m_nsWindow isKeyWindow])
|
||||||
[m_nsWindow makeKeyWindow];
|
[m_nsWindow makeKeyWindow];
|
||||||
else if (!grab && [m_nsWindow isKeyWindow])
|
else if (!grab && [m_nsWindow isKeyWindow])
|
||||||
@ -719,8 +715,6 @@ bool QCocoaWindow::setMouseGrabEnabled(bool grab)
|
|||||||
if (!m_nsWindow)
|
if (!m_nsWindow)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
m_overrideBecomeKey = grab;
|
|
||||||
|
|
||||||
if (grab && ![m_nsWindow isKeyWindow])
|
if (grab && ![m_nsWindow isKeyWindow])
|
||||||
[m_nsWindow makeKeyWindow];
|
[m_nsWindow makeKeyWindow];
|
||||||
else if (!grab && [m_nsWindow isKeyWindow])
|
else if (!grab && [m_nsWindow isKeyWindow])
|
||||||
@ -1066,7 +1060,10 @@ void QCocoaWindow::setWindowCursor(NSCursor *cursor)
|
|||||||
[cursor set];
|
[cursor set];
|
||||||
// or we can set the cursor on mouse enter/leave using tracking
|
// or we can set the cursor on mouse enter/leave using tracking
|
||||||
// areas. This is done in QNSView, save the cursor:
|
// areas. This is done in QNSView, save the cursor:
|
||||||
m_windowCursor = cursor;
|
if (m_windowCursor != cursor) {
|
||||||
|
[m_windowCursor release];
|
||||||
|
m_windowCursor = [cursor retain];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QCocoaWindow::registerTouch(bool enable)
|
void QCocoaWindow::registerTouch(bool enable)
|
||||||
|
@ -1346,6 +1346,11 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
|
|||||||
{
|
{
|
||||||
Q_UNUSED(replacementRange)
|
Q_UNUSED(replacementRange)
|
||||||
|
|
||||||
|
if (m_sendKeyEvent && m_composingText.isEmpty()) {
|
||||||
|
// don't send input method events for simple text input (let handleKeyEvent send key events instead)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
QString commitString;
|
QString commitString;
|
||||||
if ([aString length]) {
|
if ([aString length]) {
|
||||||
if ([aString isKindOfClass:[NSAttributedString class]]) {
|
if ([aString isKindOfClass:[NSAttributedString class]]) {
|
||||||
|
@ -63,6 +63,13 @@ QQnxEglWindow::QQnxEglWindow(QWindow *window, screen_context_t context, bool nee
|
|||||||
m_eglSurface(EGL_NO_SURFACE)
|
m_eglSurface(EGL_NO_SURFACE)
|
||||||
{
|
{
|
||||||
initWindow();
|
initWindow();
|
||||||
|
|
||||||
|
// Set window usage
|
||||||
|
const int val = SCREEN_USAGE_OPENGL_ES2;
|
||||||
|
const int result = screen_set_window_property_iv(nativeHandle(), SCREEN_PROPERTY_USAGE, &val);
|
||||||
|
if (result != 0)
|
||||||
|
qFatal("QQnxEglWindow: failed to set window alpha usage, errno=%d", errno);
|
||||||
|
|
||||||
m_requestedBufferSize = screen()->rootWindow() == this ?
|
m_requestedBufferSize = screen()->rootWindow() == this ?
|
||||||
screen()->geometry().size() : window->geometry().size();
|
screen()->geometry().size() : window->geometry().size();
|
||||||
}
|
}
|
||||||
|
@ -60,6 +60,12 @@ QQnxRasterWindow::QQnxRasterWindow(QWindow *window, screen_context_t context, bo
|
|||||||
m_previousBufferIndex(-1)
|
m_previousBufferIndex(-1)
|
||||||
{
|
{
|
||||||
initWindow();
|
initWindow();
|
||||||
|
|
||||||
|
// Set window usage
|
||||||
|
const int val = SCREEN_USAGE_NATIVE | SCREEN_USAGE_READ | SCREEN_USAGE_WRITE;
|
||||||
|
const int result = screen_set_window_property_iv(nativeHandle(), SCREEN_PROPERTY_USAGE, &val);
|
||||||
|
if (result != 0)
|
||||||
|
qFatal("QQnxEglWindow: failed to set window alpha usage, errno=%d", errno);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QQnxRasterWindow::post(const QRegion &dirty)
|
void QQnxRasterWindow::post(const QRegion &dirty)
|
||||||
|
@ -743,10 +743,10 @@ bool QWindowsKeyMapper::translateKeyEvent(QWindow *widget, HWND hwnd,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// WM_CHAR messages already contain the character in question so there is
|
// WM_(IME_)CHAR messages already contain the character in question so there is
|
||||||
// no need to fiddle with our key map. In any other case add this key to the
|
// no need to fiddle with our key map. In any other case add this key to the
|
||||||
// keymap if it is not present yet.
|
// keymap if it is not present yet.
|
||||||
if (msg.message != WM_CHAR)
|
if (msg.message != WM_CHAR && msg.message != WM_IME_CHAR)
|
||||||
updateKeyMap(msg);
|
updateKeyMap(msg);
|
||||||
|
|
||||||
MSG peekedMsg;
|
MSG peekedMsg;
|
||||||
|
@ -1842,18 +1842,18 @@ void QCommonListViewBase::paintDragDrop(QPainter *painter)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void QCommonListViewBase::updateHorizontalScrollBar(const QSize & /*step*/)
|
void QCommonListViewBase::updateHorizontalScrollBar(const QSize &step)
|
||||||
{
|
{
|
||||||
|
horizontalScrollBar()->setSingleStep(step.width() + spacing());
|
||||||
horizontalScrollBar()->setPageStep(viewport()->width());
|
horizontalScrollBar()->setPageStep(viewport()->width());
|
||||||
horizontalScrollBar()->setRange(0, contentsSize.width() - viewport()->width());
|
horizontalScrollBar()->setRange(0, contentsSize.width() - viewport()->width());
|
||||||
// we do not want to overwrite (a possible user set) single step
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QCommonListViewBase::updateVerticalScrollBar(const QSize & /*step*/)
|
void QCommonListViewBase::updateVerticalScrollBar(const QSize &step)
|
||||||
{
|
{
|
||||||
|
verticalScrollBar()->setSingleStep(step.height() + spacing());
|
||||||
verticalScrollBar()->setPageStep(viewport()->height());
|
verticalScrollBar()->setPageStep(viewport()->height());
|
||||||
verticalScrollBar()->setRange(0, contentsSize.height() - viewport()->height());
|
verticalScrollBar()->setRange(0, contentsSize.height() - viewport()->height());
|
||||||
// we do not want to overwrite (a possible user set) single step
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QCommonListViewBase::scrollContentsBy(int dx, int dy, bool /*scrollElasticBand*/)
|
void QCommonListViewBase::scrollContentsBy(int dx, int dy, bool /*scrollElasticBand*/)
|
||||||
|
@ -2170,7 +2170,7 @@ void QTableView::updateGeometries()
|
|||||||
} else { // ScrollPerPixel
|
} else { // ScrollPerPixel
|
||||||
horizontalScrollBar()->setPageStep(vsize.width());
|
horizontalScrollBar()->setPageStep(vsize.width());
|
||||||
horizontalScrollBar()->setRange(0, horizontalLength - vsize.width());
|
horizontalScrollBar()->setRange(0, horizontalLength - vsize.width());
|
||||||
// here we do not want to overwrite (a possible user set) single step
|
horizontalScrollBar()->setSingleStep(qMax(vsize.width() / (columnsInViewport + 1), 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
// vertical scroll bar
|
// vertical scroll bar
|
||||||
@ -2198,7 +2198,7 @@ void QTableView::updateGeometries()
|
|||||||
} else { // ScrollPerPixel
|
} else { // ScrollPerPixel
|
||||||
verticalScrollBar()->setPageStep(vsize.height());
|
verticalScrollBar()->setPageStep(vsize.height());
|
||||||
verticalScrollBar()->setRange(0, verticalLength - vsize.height());
|
verticalScrollBar()->setRange(0, verticalLength - vsize.height());
|
||||||
// here we do not want to overwrite (a possible user set) single step
|
verticalScrollBar()->setSingleStep(qMax(vsize.height() / (rowsInViewport + 1), 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
d->geometryRecursionBlock = false;
|
d->geometryRecursionBlock = false;
|
||||||
|
@ -3685,7 +3685,7 @@ void QTreeViewPrivate::updateScrollBars()
|
|||||||
}
|
}
|
||||||
vbar->setRange(0, contentsHeight - viewportSize.height());
|
vbar->setRange(0, contentsHeight - viewportSize.height());
|
||||||
vbar->setPageStep(viewportSize.height());
|
vbar->setPageStep(viewportSize.height());
|
||||||
// here we do not want to overwrite (a possible user set) single step
|
vbar->setSingleStep(qMax(viewportSize.height() / (itemsInViewport + 1), 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
const int columnCount = header->count();
|
const int columnCount = header->count();
|
||||||
@ -3711,7 +3711,7 @@ void QTreeViewPrivate::updateScrollBars()
|
|||||||
viewportSize = maxSize;
|
viewportSize = maxSize;
|
||||||
hbar->setPageStep(viewportSize.width());
|
hbar->setPageStep(viewportSize.width());
|
||||||
hbar->setRange(0, qMax(horizontalLength - viewportSize.width(), 0));
|
hbar->setRange(0, qMax(horizontalLength - viewportSize.width(), 0));
|
||||||
// here we do not want to overwrite (a possible user set) single step
|
hbar->setSingleStep(qMax(viewportSize.width() / (columnsInViewport + 1), 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,6 +60,9 @@
|
|||||||
#include <private/qwidget_p.h>
|
#include <private/qwidget_p.h>
|
||||||
#include "qtoolbar_p.h"
|
#include "qtoolbar_p.h"
|
||||||
#include "qwidgetanimator_p.h"
|
#include "qwidgetanimator_p.h"
|
||||||
|
#ifdef Q_OS_OSX
|
||||||
|
#include <qpa/qplatformnativeinterface.h>
|
||||||
|
#endif
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
#include <private/qt_mac_p.h>
|
#include <private/qt_mac_p.h>
|
||||||
#include <private/qt_cocoa_helpers_mac_p.h>
|
#include <private/qt_cocoa_helpers_mac_p.h>
|
||||||
@ -76,6 +79,9 @@ class QMainWindowPrivate : public QWidgetPrivate
|
|||||||
public:
|
public:
|
||||||
inline QMainWindowPrivate()
|
inline QMainWindowPrivate()
|
||||||
: layout(0), explicitIconSize(false), toolButtonStyle(Qt::ToolButtonIconOnly)
|
: layout(0), explicitIconSize(false), toolButtonStyle(Qt::ToolButtonIconOnly)
|
||||||
|
#ifdef Q_OS_OSX
|
||||||
|
, useUnifiedToolBar(false)
|
||||||
|
#endif
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
, useHIToolBar(false)
|
, useHIToolBar(false)
|
||||||
, activateUnifiedToolbarAfterFullScreen(false)
|
, activateUnifiedToolbarAfterFullScreen(false)
|
||||||
@ -88,6 +94,9 @@ public:
|
|||||||
QSize iconSize;
|
QSize iconSize;
|
||||||
bool explicitIconSize;
|
bool explicitIconSize;
|
||||||
Qt::ToolButtonStyle toolButtonStyle;
|
Qt::ToolButtonStyle toolButtonStyle;
|
||||||
|
#ifdef Q_OS_OSX
|
||||||
|
bool useUnifiedToolBar;
|
||||||
|
#endif
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
bool useHIToolBar;
|
bool useHIToolBar;
|
||||||
bool activateUnifiedToolbarAfterFullScreen;
|
bool activateUnifiedToolbarAfterFullScreen;
|
||||||
@ -1492,16 +1501,29 @@ bool QMainWindow::event(QEvent *event)
|
|||||||
/*!
|
/*!
|
||||||
\property QMainWindow::unifiedTitleAndToolBarOnMac
|
\property QMainWindow::unifiedTitleAndToolBarOnMac
|
||||||
\brief whether the window uses the unified title and toolbar look on Mac OS X
|
\brief whether the window uses the unified title and toolbar look on Mac OS X
|
||||||
\since 4.3
|
\since 5.2
|
||||||
\obsolete
|
|
||||||
|
|
||||||
This property is not implemented in Qt 5. Setting it has no effect.
|
|
||||||
|
|
||||||
A replacement API (QtMacUnifiedToolBar) is available in QtMacExtras at
|
|
||||||
http://qt.gitorious.org/qtplayground/qtmacextras
|
|
||||||
*/
|
*/
|
||||||
void QMainWindow::setUnifiedTitleAndToolBarOnMac(bool set)
|
void QMainWindow::setUnifiedTitleAndToolBarOnMac(bool set)
|
||||||
{
|
{
|
||||||
|
#ifdef Q_OS_OSX
|
||||||
|
Q_D(QMainWindow);
|
||||||
|
if (isWindow()) {
|
||||||
|
QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
|
||||||
|
QPlatformNativeInterface::NativeResourceForIntegrationFunction function =
|
||||||
|
nativeInterface->nativeResourceFunctionForIntegration("setContentBorderThickness");
|
||||||
|
if (!function)
|
||||||
|
return; // Not Cocoa platform plugin.
|
||||||
|
|
||||||
|
createWinId();
|
||||||
|
|
||||||
|
d->useUnifiedToolBar = set;
|
||||||
|
|
||||||
|
const int toolBarHeight = 50;
|
||||||
|
typedef void (*SetContentBorderThicknessFunction)(QWindow *window, int topThickness, int bottomThickness);
|
||||||
|
(reinterpret_cast<SetContentBorderThicknessFunction>(function))(window()->windowHandle(), toolBarHeight, 0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
Q_D(QMainWindow);
|
Q_D(QMainWindow);
|
||||||
if (!isWindow() || d->useHIToolBar == set || QSysInfo::MacintoshVersion < QSysInfo::MV_10_3)
|
if (!isWindow() || d->useHIToolBar == set || QSysInfo::MacintoshVersion < QSysInfo::MV_10_3)
|
||||||
@ -1534,6 +1556,9 @@ void QMainWindow::setUnifiedTitleAndToolBarOnMac(bool set)
|
|||||||
|
|
||||||
bool QMainWindow::unifiedTitleAndToolBarOnMac() const
|
bool QMainWindow::unifiedTitleAndToolBarOnMac() const
|
||||||
{
|
{
|
||||||
|
#ifdef Q_OS_OSX
|
||||||
|
return d_func()->useUnifiedToolBar;
|
||||||
|
#endif
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
return d_func()->useHIToolBar && !testAttribute(Qt::WA_MacBrushedMetal) && !(windowFlags() & Qt::FramelessWindowHint);
|
return d_func()->useHIToolBar && !testAttribute(Qt::WA_MacBrushedMetal) && !(windowFlags() & Qt::FramelessWindowHint);
|
||||||
#endif
|
#endif
|
||||||
@ -1655,9 +1680,7 @@ QMenu *QMainWindow::createPopupMenu()
|
|||||||
for (int i = 0; i < toolbars.size(); ++i) {
|
for (int i = 0; i < toolbars.size(); ++i) {
|
||||||
QToolBar *toolBar = toolbars.at(i);
|
QToolBar *toolBar = toolbars.at(i);
|
||||||
if (toolBar->parentWidget() == this
|
if (toolBar->parentWidget() == this
|
||||||
&& (!d->layout->layoutState.toolBarAreaLayout.indexOf(toolBar).isEmpty()
|
&& (!d->layout->layoutState.toolBarAreaLayout.indexOf(toolBar).isEmpty())) {
|
||||||
|| (unifiedTitleAndToolBarOnMac()
|
|
||||||
&& toolBarArea(toolBar) == Qt::TopToolBarArea))) {
|
|
||||||
menu->addAction(toolbars.at(i)->toggleViewAction());
|
menu->addAction(toolbars.at(i)->toggleViewAction());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -655,9 +655,7 @@ QRect QToolBarAreaLayout::fitLayout()
|
|||||||
docks[QInternal::BottomDock].rect = QRect(rect.left(), center.bottom() + 1,
|
docks[QInternal::BottomDock].rect = QRect(rect.left(), center.bottom() + 1,
|
||||||
rect.width(), bottom_hint.height());
|
rect.width(), bottom_hint.height());
|
||||||
|
|
||||||
if (!mainWindow->unifiedTitleAndToolBarOnMac()) {
|
docks[QInternal::TopDock].fitLayout();
|
||||||
docks[QInternal::TopDock].fitLayout();
|
|
||||||
}
|
|
||||||
docks[QInternal::LeftDock].fitLayout();
|
docks[QInternal::LeftDock].fitLayout();
|
||||||
docks[QInternal::RightDock].fitLayout();
|
docks[QInternal::RightDock].fitLayout();
|
||||||
docks[QInternal::BottomDock].fitLayout();
|
docks[QInternal::BottomDock].fitLayout();
|
||||||
@ -1307,8 +1305,6 @@ bool QToolBarAreaLayout::restoreState(QDataStream &stream, const QList<QToolBar*
|
|||||||
QList<QToolBar*> toolBars = _toolBars;
|
QList<QToolBar*> toolBars = _toolBars;
|
||||||
int lines;
|
int lines;
|
||||||
stream >> lines;
|
stream >> lines;
|
||||||
if (!testing)
|
|
||||||
testing = mainWindow->unifiedTitleAndToolBarOnMac();
|
|
||||||
|
|
||||||
for (int j = 0; j < lines; ++j) {
|
for (int j = 0; j < lines; ++j) {
|
||||||
int pos;
|
int pos;
|
||||||
@ -1319,7 +1315,7 @@ bool QToolBarAreaLayout::restoreState(QDataStream &stream, const QList<QToolBar*
|
|||||||
stream >> cnt;
|
stream >> cnt;
|
||||||
|
|
||||||
QToolBarAreaLayoutInfo &dock = docks[pos];
|
QToolBarAreaLayoutInfo &dock = docks[pos];
|
||||||
const bool applyingLayout = !testing && !(pos == QInternal::TopDock && mainWindow->unifiedTitleAndToolBarOnMac());
|
const bool applyingLayout = !testing;
|
||||||
QToolBarAreaLayoutLine line(dock.o);
|
QToolBarAreaLayoutLine line(dock.o);
|
||||||
|
|
||||||
for (int k = 0; k < cnt; ++k) {
|
for (int k = 0; k < cnt; ++k) {
|
||||||
|
@ -4419,6 +4419,62 @@ void tst_QString::operator_smaller()
|
|||||||
// operator< is not locale-aware (or shouldn't be)
|
// operator< is not locale-aware (or shouldn't be)
|
||||||
QVERIFY( foo < QString("\xc3\xa9") );
|
QVERIFY( foo < QString("\xc3\xa9") );
|
||||||
QVERIFY( foo < "\xc3\xa9" );
|
QVERIFY( foo < "\xc3\xa9" );
|
||||||
|
|
||||||
|
QVERIFY(QString("a") < QString("b"));
|
||||||
|
QVERIFY(QString("a") <= QString("b"));
|
||||||
|
QVERIFY(QString("a") <= QString("a"));
|
||||||
|
QVERIFY(QString("a") == QString("a"));
|
||||||
|
QVERIFY(QString("a") >= QString("a"));
|
||||||
|
QVERIFY(QString("b") >= QString("a"));
|
||||||
|
QVERIFY(QString("b") > QString("a"));
|
||||||
|
|
||||||
|
QVERIFY("a" < QString("b"));
|
||||||
|
QVERIFY("a" <= QString("b"));
|
||||||
|
QVERIFY("a" <= QString("a"));
|
||||||
|
QVERIFY("a" == QString("a"));
|
||||||
|
QVERIFY("a" >= QString("a"));
|
||||||
|
QVERIFY("b" >= QString("a"));
|
||||||
|
QVERIFY("b" > QString("a"));
|
||||||
|
|
||||||
|
QVERIFY(QString("a") < "b");
|
||||||
|
QVERIFY(QString("a") <= "b");
|
||||||
|
QVERIFY(QString("a") <= "a");
|
||||||
|
QVERIFY(QString("a") == "a");
|
||||||
|
QVERIFY(QString("a") >= "a");
|
||||||
|
QVERIFY(QString("b") >= "a");
|
||||||
|
QVERIFY(QString("b") > "a");
|
||||||
|
|
||||||
|
QVERIFY(QLatin1String("a") < QString("b"));
|
||||||
|
QVERIFY(QLatin1String("a") <= QString("b"));
|
||||||
|
QVERIFY(QLatin1String("a") <= QString("a"));
|
||||||
|
QVERIFY(QLatin1String("a") == QString("a"));
|
||||||
|
QVERIFY(QLatin1String("a") >= QString("a"));
|
||||||
|
QVERIFY(QLatin1String("b") >= QString("a"));
|
||||||
|
QVERIFY(QLatin1String("b") > QString("a"));
|
||||||
|
|
||||||
|
QVERIFY(QString("a") < QLatin1String("b"));
|
||||||
|
QVERIFY(QString("a") <= QLatin1String("b"));
|
||||||
|
QVERIFY(QString("a") <= QLatin1String("a"));
|
||||||
|
QVERIFY(QString("a") == QLatin1String("a"));
|
||||||
|
QVERIFY(QString("a") >= QLatin1String("a"));
|
||||||
|
QVERIFY(QString("b") >= QLatin1String("a"));
|
||||||
|
QVERIFY(QString("b") > QLatin1String("a"));
|
||||||
|
|
||||||
|
QVERIFY("a" < QLatin1String("b"));
|
||||||
|
QVERIFY("a" <= QLatin1String("b"));
|
||||||
|
QVERIFY("a" <= QLatin1String("a"));
|
||||||
|
QVERIFY("a" == QLatin1String("a"));
|
||||||
|
QVERIFY("a" >= QLatin1String("a"));
|
||||||
|
QVERIFY("b" >= QLatin1String("a"));
|
||||||
|
QVERIFY("b" > QLatin1String("a"));
|
||||||
|
|
||||||
|
QVERIFY(QLatin1String("a") < "b");
|
||||||
|
QVERIFY(QLatin1String("a") <= "b");
|
||||||
|
QVERIFY(QLatin1String("a") <= "a");
|
||||||
|
QVERIFY(QLatin1String("a") == "a");
|
||||||
|
QVERIFY(QLatin1String("a") >= "a");
|
||||||
|
QVERIFY(QLatin1String("b") >= "a");
|
||||||
|
QVERIFY(QLatin1String("b") > "a");
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QString::integer_conversion_data()
|
void tst_QString::integer_conversion_data()
|
||||||
|
@ -1286,6 +1286,7 @@ void tst_QAbstractItemView::task200665_itemEntered()
|
|||||||
QVERIFY(QTest::qWaitForWindowExposed(&view));
|
QVERIFY(QTest::qWaitForWindowExposed(&view));
|
||||||
QRect rect = view.visualRect(model.index(0,0));
|
QRect rect = view.visualRect(model.index(0,0));
|
||||||
QCursor::setPos( view.viewport()->mapToGlobal(rect.center()) );
|
QCursor::setPos( view.viewport()->mapToGlobal(rect.center()) );
|
||||||
|
QCoreApplication::processEvents();
|
||||||
QSignalSpy spy(&view, SIGNAL(entered(QModelIndex)));
|
QSignalSpy spy(&view, SIGNAL(entered(QModelIndex)));
|
||||||
view.verticalScrollBar()->setValue(view.verticalScrollBar()->maximum());
|
view.verticalScrollBar()->setValue(view.verticalScrollBar()->maximum());
|
||||||
|
|
||||||
|
@ -3702,7 +3702,7 @@ void tst_QTableView::mouseWheel_data()
|
|||||||
<< 10 + qApp->wheelScrollLines() << 10 + qApp->wheelScrollLines();
|
<< 10 + qApp->wheelScrollLines() << 10 + qApp->wheelScrollLines();
|
||||||
QTest::newRow("scroll down per pixel")
|
QTest::newRow("scroll down per pixel")
|
||||||
<< int(QAbstractItemView::ScrollPerPixel) << -120
|
<< int(QAbstractItemView::ScrollPerPixel) << -120
|
||||||
<< 10 + qApp->wheelScrollLines() << 10 + qApp->wheelScrollLines();
|
<< 10 + qApp->wheelScrollLines() * 89 << 10 + qApp->wheelScrollLines() * 28;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QTableView::mouseWheel()
|
void tst_QTableView::mouseWheel()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user