summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-07-15 15:46:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-15 15:46:20 +0200
commitd3859c61bfe9b82acb8a820e86f8d1ba915fe0d2 (patch)
tree7f9e6df2f619fab4d07d48d9459347bb01936297 /src
parent9f266a0210ff680fb85e6b6b3bd9eec7f3fe2b2e (diff)
parent1190863fc0855ef25e7239e35da3978f317638bd (diff)
Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/angle/src/libGLESv2/renderer/Renderer.cpp19
-rw-r--r--src/angle/patches/0011-Fix-compilation-of-libGLESv2-with-older-MinGW-w64-he.patch52
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp6
-rw-r--r--src/dbus/qdbusintegrator.cpp6
-rw-r--r--src/gui/text/qfontdatabase_qpa.cpp11
-rw-r--r--src/gui/text/qplatformfontdatabase.cpp4
-rw-r--r--src/network/socket/qhttpsocketengine.cpp3
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp5
-rw-r--r--src/plugins/platforms/directfb/qdirectfbconvenience.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.cpp9
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp2
-rw-r--r--src/widgets/styles/qmacstyle_mac.mm22
-rw-r--r--src/widgets/styles/qwindowsvistastyle.cpp5
-rw-r--r--src/widgets/widgets/qdockwidget.cpp13
-rw-r--r--src/widgets/widgets/qmdisubwindow.cpp2
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 **)&empty; // ouch! careful with QCoreApplication::argv()!
+ argv = (char **)&empty;
}
#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);