diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-07-15 10:36:58 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-07-15 10:36:59 +0200 |
commit | 1190863fc0855ef25e7239e35da3978f317638bd (patch) | |
tree | 92c408f7c53f194639d2a10b82f5c90a85704776 /src | |
parent | 02afd94ef4c1913735bd650ca93279cfb00dc534 (diff) | |
parent | e4484bb15b29b01dba07cbc31c150153f537606a (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Change-Id: I0218a1f08b89f2d56757ab35eec06799d2a1492f
Diffstat (limited to 'src')
-rw-r--r-- | src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp | 19 | ||||
-rw-r--r-- | src/angle/patches/0011-Fix-compilation-of-libGLESv2-with-older-MinGW-w64-he.patch | 52 | ||||
-rw-r--r-- | src/corelib/kernel/qcoreapplication.cpp | 6 | ||||
-rw-r--r-- | src/dbus/qdbusintegrator.cpp | 6 | ||||
-rw-r--r-- | src/gui/text/qfontdatabase_qpa.cpp | 11 | ||||
-rw-r--r-- | src/gui/text/qplatformfontdatabase.cpp | 4 | ||||
-rw-r--r-- | src/network/socket/qhttpsocketengine.cpp | 3 | ||||
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 5 | ||||
-rw-r--r-- | src/plugins/platforms/directfb/qdirectfbconvenience.cpp | 4 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsfontdatabase.cpp | 9 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/qxcbconnection.cpp | 2 | ||||
-rw-r--r-- | src/widgets/styles/qmacstyle_mac.mm | 22 | ||||
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle.cpp | 5 | ||||
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 13 | ||||
-rw-r--r-- | src/widgets/widgets/qmdisubwindow.cpp | 2 |
15 files changed, 138 insertions, 25 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp index 41cdb8b278..218356c59b 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp @@ -22,6 +22,25 @@ #define ANGLE_COMPILE_OPTIMIZATION_LEVEL D3DCOMPILE_OPTIMIZATION_LEVEL3 #endif +#ifdef __MINGW32__ + +#ifndef D3DCOMPILER_DLL + +//Add define + typedefs for older MinGW-w64 headers (pre 5783) + +#define D3DCOMPILER_DLL L"d3dcompiler_43.dll" + +HRESULT WINAPI D3DCompile(const void *data, SIZE_T data_size, const char *filename, + const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, + const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **error_messages); +typedef HRESULT (WINAPI *pD3DCompile)(const void *data, SIZE_T data_size, const char *filename, + const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, + const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **error_messages); + +#endif // D3DCOMPILER_DLL + +#endif // __MINGW32__ + namespace rx { diff --git a/src/angle/patches/0011-Fix-compilation-of-libGLESv2-with-older-MinGW-w64-he.patch b/src/angle/patches/0011-Fix-compilation-of-libGLESv2-with-older-MinGW-w64-he.patch new file mode 100644 index 0000000000..f104a273cc --- /dev/null +++ b/src/angle/patches/0011-Fix-compilation-of-libGLESv2-with-older-MinGW-w64-he.patch @@ -0,0 +1,52 @@ +From 82fd5de3ae5e242730fdaf8044f17227337d881c Mon Sep 17 00:00:00 2001 +From: Kai Koehne <kai.koehne@digia.com> +Date: Wed, 10 Jul 2013 14:00:13 +0200 +Subject: [PATCH] Fix compilation of libGLESv2 with older MinGW-w64 headers + +Fix compilation of libGLESv2 for mingw-headers predating MinGW-w64 +svn commit 5567 (like MinGW-builds gcc 4.7.2-rev8, the toolchain +we officially support). + +Commit 5567 added the D3DCOMPILER_DLL define to d3dcompiler.h, but with +a trailing semicolon that has then fixed in commit 5783. Any toolchain +that ships MinGW-w64 headers from a version in between (like +MinGW-builds gcc 4.7.2-rev11) will unfortunately remain broken. + +Change-Id: I31272a1a991c4fc0f1611f8fb7510be51d6bb925 +--- + .../angle/src/libGLESv2/renderer/Renderer.cpp | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp +index 41cdb8b..218356c 100644 +--- a/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp ++++ b/src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp +@@ -22,6 +22,25 @@ + #define ANGLE_COMPILE_OPTIMIZATION_LEVEL D3DCOMPILE_OPTIMIZATION_LEVEL3 + #endif + ++#ifdef __MINGW32__ ++ ++#ifndef D3DCOMPILER_DLL ++ ++//Add define + typedefs for older MinGW-w64 headers (pre 5783) ++ ++#define D3DCOMPILER_DLL L"d3dcompiler_43.dll" ++ ++HRESULT WINAPI D3DCompile(const void *data, SIZE_T data_size, const char *filename, ++ const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, ++ const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **error_messages); ++typedef HRESULT (WINAPI *pD3DCompile)(const void *data, SIZE_T data_size, const char *filename, ++ const D3D_SHADER_MACRO *defines, ID3DInclude *include, const char *entrypoint, ++ const char *target, UINT sflags, UINT eflags, ID3DBlob **shader, ID3DBlob **error_messages); ++ ++#endif // D3DCOMPILER_DLL ++ ++#endif // __MINGW32__ ++ + namespace rx + { + +-- +1.8.3.msysgit.0 + diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 386ee9cbda..4a46bb32f5 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -394,7 +394,7 @@ QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv, uint static const char *const empty = ""; if (argc == 0 || argv == 0) { argc = 0; - argv = (char **)∅ // ouch! careful with QCoreApplication::argv()! + argv = (char **)∅ } #ifdef Q_OS_WIN qCopy(argv, argv + argc, origArgv); @@ -589,10 +589,6 @@ void QCoreApplicationPrivate::initLocale() Note that some arguments supplied by the user may have been processed and removed by QCoreApplication. - In cases where command line arguments need to be obtained using the - argv() function, you must convert them from the local string encoding - using QString::fromLocal8Bit(). - \section1 Locale Settings On Unix/Linux Qt is configured to use the system locale settings by diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index e0aec2cad9..010c076b7f 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -1683,13 +1683,13 @@ static dbus_int32_t server_slot = -1; void QDBusConnectionPrivate::setServer(DBusServer *s, const QDBusErrorInternal &error) { + mode = ServerMode; if (!s) { handleError(error); return; } server = s; - mode = ServerMode; dbus_bool_t data_allocated = q_dbus_server_allocate_data_slot(&server_slot); if (data_allocated && server_slot < 0) @@ -1720,13 +1720,13 @@ void QDBusConnectionPrivate::setServer(DBusServer *s, const QDBusErrorInternal & void QDBusConnectionPrivate::setPeer(DBusConnection *c, const QDBusErrorInternal &error) { + mode = PeerMode; if (!c) { handleError(error); return; } connection = c; - mode = PeerMode; q_dbus_connection_set_exit_on_disconnect(connection, false); q_dbus_connection_set_watch_functions(connection, @@ -1773,13 +1773,13 @@ static QDBusConnection::ConnectionCapabilities connectionCapabilies(DBusConnecti void QDBusConnectionPrivate::setConnection(DBusConnection *dbc, const QDBusErrorInternal &error) { + mode = ClientMode; if (!dbc) { handleError(error); return; } connection = dbc; - mode = ClientMode; const char *service = q_dbus_bus_get_unique_name(connection); Q_ASSERT(service); diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp index 32580ada7a..62b99968bc 100644 --- a/src/gui/text/qfontdatabase_qpa.cpp +++ b/src/gui/text/qfontdatabase_qpa.cpp @@ -101,6 +101,17 @@ Q_GUI_EXPORT void qt_registerAliasToFontFamily(const QString &familyName, const f->aliases.push_back(alias); } +QString qt_resolveFontFamilyAlias(const QString &alias) +{ + if (!alias.isEmpty()) { + const QFontDatabasePrivate *d = privateDb(); + for (int i = 0; i < d->count; ++i) + if (d->families[i]->matchesFamilyName(alias)) + return d->families[i]->name; + } + return alias; +} + static QStringList fallbackFamilies(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) { QStringList retList = QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fallbacksForFamily(family,style,styleHint,script); diff --git a/src/gui/text/qplatformfontdatabase.cpp b/src/gui/text/qplatformfontdatabase.cpp index 4e2a2df66a..4399aff9da 100644 --- a/src/gui/text/qplatformfontdatabase.cpp +++ b/src/gui/text/qplatformfontdatabase.cpp @@ -379,9 +379,11 @@ QFont QPlatformFontDatabase::defaultFont() const \since 5.0 */ +QString qt_resolveFontFamilyAlias(const QString &alias); + QString QPlatformFontDatabase::resolveFontFamilyAlias(const QString &family) const { - return family; + return qt_resolveFontFamilyAlias(family); } /*! diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp index e3aae8ef0d..f2a1633bd3 100644 --- a/src/network/socket/qhttpsocketengine.cpp +++ b/src/network/socket/qhttpsocketengine.cpp @@ -497,12 +497,13 @@ void QHttpSocketEngine::slotSocketConnected() Q_D(QHttpSocketEngine); // Send the greeting. - const char method[] = "CONNECT "; + const char method[] = "CONNECT"; QByteArray peerAddress = d->peerName.isEmpty() ? d->peerAddress.toString().toLatin1() : QUrl::toAce(d->peerName); QByteArray path = peerAddress + ':' + QByteArray::number(d->peerPort); QByteArray data = method; + data += " "; data += path; data += " HTTP/1.1\r\n"; data += "Proxy-Connection: keep-alive\r\n"; diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index 1cc85bd0dc..afe634dc4b 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -768,6 +768,9 @@ QStringList QFontconfigDatabase::addApplicationFont(const QByteArray &fontData, QString QFontconfigDatabase::resolveFontFamilyAlias(const QString &family) const { + QString resolved = QBasicFontDatabase::resolveFontFamilyAlias(family); + if (!resolved.isEmpty() && resolved != family) + return resolved; FcPattern *pattern = FcPatternCreate(); if (!pattern) return family; @@ -781,7 +784,7 @@ QString QFontconfigDatabase::resolveFontFamilyAlias(const QString &family) const FcChar8 *familyAfterSubstitution = 0; FcPatternGetString(pattern, FC_FAMILY, 0, &familyAfterSubstitution); - QString resolved = QString::fromUtf8((const char *) familyAfterSubstitution); + resolved = QString::fromUtf8((const char *) familyAfterSubstitution); FcPatternDestroy(pattern); return resolved; diff --git a/src/plugins/platforms/directfb/qdirectfbconvenience.cpp b/src/plugins/platforms/directfb/qdirectfbconvenience.cpp index b6db830f82..5b4c958616 100644 --- a/src/plugins/platforms/directfb/qdirectfbconvenience.cpp +++ b/src/plugins/platforms/directfb/qdirectfbconvenience.cpp @@ -299,12 +299,14 @@ QDirectFbKeyMap::QDirectFbKeyMap() insert(DIKS_VOLUME_UP , Qt::Key_VolumeUp); insert(DIKS_VOLUME_DOWN , Qt::Key_VolumeDown); insert(DIKS_MUTE , Qt::Key_VolumeMute); - insert(DIKS_PLAYPAUSE , Qt::Key_Pause); + insert(DIKS_PLAYPAUSE , Qt::Key_MediaTogglePlayPause); insert(DIKS_PLAY , Qt::Key_MediaPlay); insert(DIKS_STOP , Qt::Key_MediaStop); insert(DIKS_RECORD , Qt::Key_MediaRecord); insert(DIKS_PREVIOUS , Qt::Key_MediaPrevious); insert(DIKS_NEXT , Qt::Key_MediaNext); + insert(DIKS_REWIND , Qt::Key_AudioRewind); + insert(DIKS_FASTFORWARD , Qt::Key_AudioForward); insert(DIKS_F1 , Qt::Key_F1); insert(DIKS_F2 , Qt::Key_F2); diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp index 7fedc27951..b7ccb5767e 100644 --- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp +++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp @@ -1586,11 +1586,14 @@ static QStringList extraTryFontsForFamily(const QString& family) break; } } - QStringList fm = QFontDatabase().families(); + QFontDatabase db; + const QStringList families = db.families(); const char **tf = tryFonts; while (tf && *tf) { - if (fm.contains(QLatin1String(*tf))) - result << QLatin1String(*tf); + // QTBUG-31689, family might be an English alias for a localized font name. + const QString family = QString::fromLatin1(*tf); + if (families.contains(family) || db.hasFamily(family)) + result << family; ++tf; } } diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index ca7896995f..b94ca20458 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -1397,7 +1397,7 @@ static const char * xcb_atomnames = { #if XCB_USE_MAEMO_WINDOW_PROPERTIES "_MEEGOTOUCH_ORIENTATION_ANGLE\0" #endif - "_XSETTINGS_SETTINGS" + "_XSETTINGS_SETTINGS\0" // \0\0 terminates loop. }; xcb_atom_t QXcbConnection::atom(QXcbAtom::Atom atom) const diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index dad4e57d13..9119e2cfba 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -69,6 +69,7 @@ #include <qheaderview.h> #include <qlineedit.h> #include <qmainwindow.h> +#include <qmdisubwindow.h> #include <qmenubar.h> #include <qpaintdevice.h> #include <qpainter.h> @@ -849,8 +850,17 @@ static QSize qt_aqua_get_known_size(QStyle::ContentsType ct, const QWidget *widg gbi.direction = QApplication::isRightToLeft() ? kThemeGrowLeft | kThemeGrowDown : kThemeGrowRight | kThemeGrowDown; gbi.size = sz == QAquaSizeSmall ? kHIThemeGrowBoxSizeSmall : kHIThemeGrowBoxSizeNormal; - if (HIThemeGetGrowBoxBounds(&p, &gbi, &r) == noErr) - ret = QSize(QSysInfo::MacintoshVersion <= QSysInfo::MV_10_6 ? r.size.width : 0, r.size.height); + if (HIThemeGetGrowBoxBounds(&p, &gbi, &r) == noErr) { + int width = 0; + // Snow Leopard and older get a size grip, as well as QMdiSubWindows. + if (QSysInfo::MacintoshVersion <= QSysInfo::MV_10_6 +#ifndef QT_NO_MDIAREA + || (widg && widg->parentWidget() && qobject_cast<QMdiSubWindow *>(widg->parentWidget())) +#endif + ) + width = r.size.width; + ret = QSize(width, r.size.height); + } } break; case QStyle::CT_ComboBox: @@ -4333,8 +4343,12 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter case CE_ProgressBarGroove: break; case CE_SizeGrip: { - // We do not draw size grips on versions > 10.6 - if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_6) + // We do not draw size grips on versions > 10.6 unless it's a QMdiSubWindow + if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_6 +#ifndef QT_NO_MDIAREA + && !(w && w->parentWidget() && qobject_cast<QMdiSubWindow *>(w->parentWidget())) +#endif + ) break; if (w && w->testAttribute(Qt::WA_MacOpaqueSizeGrip)) { diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index b08eab580d..e442e53bde 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -523,10 +523,11 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt case PE_Frame: { #ifndef QT_NO_ACCESSIBILITY if (QStyleHelper::isInstanceOf(option->styleObject, QAccessible::EditableText) - || QStyleHelper::isInstanceOf(option->styleObject, QAccessible::StaticText)) { + || QStyleHelper::isInstanceOf(option->styleObject, QAccessible::StaticText) || #else - if (false) { + if ( #endif + (widget && widget->inherits("QTextEdit"))) { painter->save(); int stateId = ETS_NORMAL; if (!(state & State_Enabled)) diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 7cd7172ef5..45e3f1b10b 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -49,6 +49,7 @@ #include <qevent.h> #include <qfontmetrics.h> #include <qwindow.h> +#include <qscreen.h> #include <qmainwindow.h> #include <qrubberband.h> #include <qstylepainter.h> @@ -1387,9 +1388,17 @@ bool QDockWidget::event(QEvent *event) d->toggleViewAction->setChecked(false); emit visibilityChanged(false); break; - case QEvent::Show: + case QEvent::Show: { d->toggleViewAction->setChecked(true); - emit visibilityChanged(geometry().right() >= 0 && geometry().bottom() >= 0); + QPoint parentTopLeft(0, 0); + if (isWindow()) { + if (const QWindow *window = windowHandle()) + parentTopLeft = window->screen()->availableVirtualGeometry().topLeft(); + else + parentTopLeft = QGuiApplication::primaryScreen()->availableVirtualGeometry().topLeft(); + } + emit visibilityChanged(geometry().right() >= parentTopLeft.x() && geometry().bottom() >= parentTopLeft.y()); +} break; #endif case QEvent::ApplicationLayoutDirectionChange: diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp index b38dea074f..63d14f2301 100644 --- a/src/widgets/widgets/qmdisubwindow.cpp +++ b/src/widgets/widgets/qmdisubwindow.cpp @@ -2927,7 +2927,7 @@ void QMdiSubWindow::showEvent(QShowEvent *showEvent) #if !defined(QT_NO_SIZEGRIP) && defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC) if (qobject_cast<QMacStyle *>(style()) && !d->sizeGrip && !(windowFlags() & Qt::FramelessWindowHint)) { - d->setSizeGrip(new QSizeGrip(0)); + d->setSizeGrip(new QSizeGrip(this)); Q_ASSERT(d->sizeGrip); if (isMinimized()) d->setSizeGripVisible(false); |