diff options
35 files changed, 113 insertions, 80 deletions
diff --git a/doc/global/externalsites/qtcreator.qdoc b/doc/global/externalsites/qtcreator.qdoc index 0a6e8dc5d1..15a4125250 100644 --- a/doc/global/externalsites/qtcreator.qdoc +++ b/doc/global/externalsites/qtcreator.qdoc @@ -467,3 +467,11 @@ \externalpage http://qt-project.org/doc/qtcreator/creator-debuggers.html \title Qt Creator: Adding Debuggers */ +/*! + \externalpage http://qt-project.org/doc/qtcreator/creator-android-app-tutorial.html + \title Qt Creator: Creating an Android Application +*/ +/*! + \externalpage http://qt-project.org/doc/qtcreator/creator-diff-editor.html + \title Qt Creator: Comparing Files +*/ diff --git a/mkspecs/devices/common/linux_device_pre.conf b/mkspecs/devices/common/linux_device_pre.conf index a4837a435d..16becbdd52 100644 --- a/mkspecs/devices/common/linux_device_pre.conf +++ b/mkspecs/devices/common/linux_device_pre.conf @@ -1,7 +1,7 @@ QT_QPA_DEFAULT_PLATFORM = eglfs MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/devices/linux-archos-gen8-g++/qmake.conf b/mkspecs/devices/linux-archos-gen8-g++/qmake.conf index 6f2b4736ac..891559f3bf 100644 --- a/mkspecs/devices/linux-archos-gen8-g++/qmake.conf +++ b/mkspecs/devices/linux-archos-gen8-g++/qmake.conf @@ -7,7 +7,7 @@ # http://github.com/KDAB/OpenEmbedded-Archos MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf b/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf index 90f0d90a3c..da2e046d08 100644 --- a/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf +++ b/mkspecs/devices/linux-arm-amlogic-8726M-g++/qmake.conf @@ -3,7 +3,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf b/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf index d734e97e89..011fc6fe28 100644 --- a/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf +++ b/mkspecs/devices/linux-arm-trident-pnx8473-g++/qmake.conf @@ -5,7 +5,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/devices/linux-beagleboard-g++/qmake.conf b/mkspecs/devices/linux-beagleboard-g++/qmake.conf index 0791693bbe..d78048951f 100644 --- a/mkspecs/devices/linux-beagleboard-g++/qmake.conf +++ b/mkspecs/devices/linux-beagleboard-g++/qmake.conf @@ -3,7 +3,7 @@ # http://beagleboard.org/ MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/devices/linux-maemo-n9-g++/qmake.conf b/mkspecs/devices/linux-maemo-n9-g++/qmake.conf index a9e2376d7c..1c18fc5c80 100644 --- a/mkspecs/devices/linux-maemo-n9-g++/qmake.conf +++ b/mkspecs/devices/linux-maemo-n9-g++/qmake.conf @@ -3,7 +3,7 @@ # http://wiki.qt-project.org/Devices/N9 MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib QMAKE_PLATFORM = maemo diff --git a/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf b/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf index bdaaa391e5..e196f279d7 100644 --- a/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf +++ b/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.conf @@ -3,7 +3,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf b/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf index e3a28fb9c4..932b4d7fa7 100644 --- a/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf +++ b/mkspecs/devices/linux-sh4-stmicro-ST7108-g++/qmake.conf @@ -5,7 +5,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf b/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf index f8ba5937c5..8bf2f63b04 100644 --- a/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf +++ b/mkspecs/devices/linux-sh4-stmicro-ST7540-g++/qmake.conf @@ -5,7 +5,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/devices/linux-snowball-g++/qmake.conf b/mkspecs/devices/linux-snowball-g++/qmake.conf index 0d3a90d524..ebad2bfd27 100644 --- a/mkspecs/devices/linux-snowball-g++/qmake.conf +++ b/mkspecs/devices/linux-snowball-g++/qmake.conf @@ -3,7 +3,7 @@ # http://qt-project.org/wiki/Snowball MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../../common/linux.conf) diff --git a/mkspecs/features/unix/gdb_dwarf_index.prf b/mkspecs/features/unix/gdb_dwarf_index.prf deleted file mode 100644 index 2b3dee6cc4..0000000000 --- a/mkspecs/features/unix/gdb_dwarf_index.prf +++ /dev/null @@ -1,23 +0,0 @@ -!separate_debug_info:have_target:debug:!static:!isEmpty(QMAKE_OBJCOPY) { - - contains(TEMPLATE, "lib") { - QMAKE_GDB_INDEX = { test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\"; } && - QMAKE_GDB_DIR = . - } else { - QMAKE_GDB_INDEX = { test -n \"$(DESTDIR)\" && DESTDIR=\"$(DESTDIR)\" || DESTDIR=.; } && - QMAKE_GDB_DIR = \$\$DESTDIR - } - - QMAKE_GDB_INDEX += \ - test \$\$(gdb --version | sed -e \'s,[^0-9][^0-9]*\\([0-9]\\)\\.\\([0-9]\\).*,\\1\\2,;q\') -gt 72 && \ - gdb --nx --batch --quiet -ex \'set confirm off\' -ex \"save gdb-index $$QMAKE_GDB_DIR\" -ex quit \'$(TARGET)\' && \ - test -f $(TARGET).gdb-index && \ - $$QMAKE_OBJCOPY --add-section \'.gdb_index=$(TARGET).gdb-index\' --set-section-flags \'.gdb_index=readonly\' \'$(TARGET)\' \'$(TARGET)\' && \ - $$QMAKE_DEL_FILE $(TARGET).gdb-index || true - - !isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK - QMAKE_POST_LINK = $$QMAKE_GDB_INDEX $$QMAKE_POST_LINK - - silent:QMAKE_POST_LINK = @echo indexing $@ for gdb && $$QMAKE_POST_LINK -} - diff --git a/mkspecs/freebsd-g++/qmake.conf b/mkspecs/freebsd-g++/qmake.conf index cb6cd3131c..f736e183ec 100644 --- a/mkspecs/freebsd-g++/qmake.conf +++ b/mkspecs/freebsd-g++/qmake.conf @@ -4,7 +4,6 @@ MAKEFILE_GENERATOR = UNIX QMAKE_PLATFORM = freebsd bsd -CONFIG += gdb_dwarf_index QMAKE_CFLAGS_THREAD = -pthread -D_THREAD_SAFE diff --git a/mkspecs/freebsd-g++46/qmake.conf b/mkspecs/freebsd-g++46/qmake.conf index 8f8e0cd21c..b94b1393e6 100644 --- a/mkspecs/freebsd-g++46/qmake.conf +++ b/mkspecs/freebsd-g++46/qmake.conf @@ -4,7 +4,6 @@ MAKEFILE_GENERATOR = UNIX QMAKE_PLATFORM = freebsd bsd -CONFIG += gdb_dwarf_index QMAKE_CFLAGS_THREAD = -pthread -D_THREAD_SAFE diff --git a/mkspecs/hurd-g++/qmake.conf b/mkspecs/hurd-g++/qmake.conf index ef3be3b37b..261695f1ea 100644 --- a/mkspecs/hurd-g++/qmake.conf +++ b/mkspecs/hurd-g++/qmake.conf @@ -4,7 +4,7 @@ MAKEFILE_GENERATOR = UNIX QMAKE_PLATFORM = hurd -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib QMAKE_CFLAGS_THREAD += -D_REENTRANT diff --git a/mkspecs/linux-arm-gnueabi-g++/qmake.conf b/mkspecs/linux-arm-gnueabi-g++/qmake.conf index b2653d8fea..365d5a219b 100644 --- a/mkspecs/linux-arm-gnueabi-g++/qmake.conf +++ b/mkspecs/linux-arm-gnueabi-g++/qmake.conf @@ -3,7 +3,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) diff --git a/mkspecs/linux-g++-32/qmake.conf b/mkspecs/linux-g++-32/qmake.conf index 56dfe8c1b2..340aa85e7c 100644 --- a/mkspecs/linux-g++-32/qmake.conf +++ b/mkspecs/linux-g++-32/qmake.conf @@ -3,7 +3,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib QMAKE_CFLAGS = -m32 diff --git a/mkspecs/linux-g++-64/qmake.conf b/mkspecs/linux-g++-64/qmake.conf index fc7672f19d..36fb6a83eb 100644 --- a/mkspecs/linux-g++-64/qmake.conf +++ b/mkspecs/linux-g++-64/qmake.conf @@ -6,7 +6,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib QMAKE_CFLAGS = -m64 diff --git a/mkspecs/linux-g++-maemo/qmake.conf b/mkspecs/linux-g++-maemo/qmake.conf index f04a32c750..dc49676456 100644 --- a/mkspecs/linux-g++-maemo/qmake.conf +++ b/mkspecs/linux-g++-maemo/qmake.conf @@ -4,7 +4,7 @@ MAKEFILE_GENERATOR = UNIX QMAKE_PLATFORM = maemo -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental CONFIG += nostrip QMAKE_INCREMENTAL_STYLE = sublib diff --git a/mkspecs/linux-g++/qmake.conf b/mkspecs/linux-g++/qmake.conf index 0c9634adf8..35bce8f064 100644 --- a/mkspecs/linux-g++/qmake.conf +++ b/mkspecs/linux-g++/qmake.conf @@ -3,7 +3,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf index 6c5cbe496d..1b71588b8c 100644 --- a/mkspecs/linux-icc/qmake.conf +++ b/mkspecs/linux-icc/qmake.conf @@ -3,7 +3,6 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += gdb_dwarf_index QMAKE_COMPILER = gcc intel_icc # icc pretends to be gcc diff --git a/mkspecs/linux-llvm/qmake.conf b/mkspecs/linux-llvm/qmake.conf index 6a9fed64c2..98b18fb373 100644 --- a/mkspecs/linux-llvm/qmake.conf +++ b/mkspecs/linux-llvm/qmake.conf @@ -3,7 +3,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) diff --git a/mkspecs/linux-lsb-g++/qmake.conf b/mkspecs/linux-lsb-g++/qmake.conf index 10a4014d65..80353cd5f6 100644 --- a/mkspecs/linux-lsb-g++/qmake.conf +++ b/mkspecs/linux-lsb-g++/qmake.conf @@ -3,7 +3,7 @@ # MAKEFILE_GENERATOR = UNIX -CONFIG += incremental gdb_dwarf_index +CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib include(../common/linux.conf) diff --git a/mkspecs/netbsd-g++/qmake.conf b/mkspecs/netbsd-g++/qmake.conf index 6c699aac53..6cb24d9bf9 100644 --- a/mkspecs/netbsd-g++/qmake.conf +++ b/mkspecs/netbsd-g++/qmake.conf @@ -4,7 +4,6 @@ MAKEFILE_GENERATOR = UNIX QMAKE_PLATFORM = netbsd bsd -CONFIG += gdb_dwarf_index QMAKE_COMPILER = gcc diff --git a/mkspecs/openbsd-g++/qmake.conf b/mkspecs/openbsd-g++/qmake.conf index f0773e9d0d..2fdbd2c469 100644 --- a/mkspecs/openbsd-g++/qmake.conf +++ b/mkspecs/openbsd-g++/qmake.conf @@ -4,7 +4,6 @@ MAKEFILE_GENERATOR = UNIX QMAKE_PLATFORM = openbsd bsd -CONFIG += gdb_dwarf_index QMAKE_COMPILER = gcc diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index 1a92b79a09..633682baf4 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -510,6 +510,11 @@ bool VCCLCompilerTool::parseOption(const char* option) BrowseInformation = brAllInfo; BrowseInformationFile = option+3; break; + case 'S': + if (config->CompilerVersion < NET2013) + found = false; + // Ignore this flag. Visual Studio 2013 takes care of this setting. + break; case 'r': BrowseInformation = brNoLocalSymbols; BrowseInformationFile = option+3; diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 0396fbc0c7..b2f9e29b44 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -1060,6 +1060,7 @@ QT_END_NAMESPACE #include <QtCore/qatomic.h> #include <QtCore/qglobalstatic.h> +#include <QtCore/qnumeric.h> #endif /* __cplusplus */ diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 0e38f2a2bf..5be94429b4 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -677,7 +677,7 @@ QByteArray QMetaObjectPrivate::decodeMethodSignature( const char *lparens = strchr(signature, '('); if (!lparens) return QByteArray(); - const char *rparens = strchr(lparens + 1, ')'); + const char *rparens = strrchr(lparens + 1, ')'); if (!rparens || *(rparens+1)) return QByteArray(); int nameLength = lparens - signature; diff --git a/src/corelib/kernel/qmetaobject_moc_p.h b/src/corelib/kernel/qmetaobject_moc_p.h index c791f017d4..d26cd54e5d 100644 --- a/src/corelib/kernel/qmetaobject_moc_p.h +++ b/src/corelib/kernel/qmetaobject_moc_p.h @@ -155,21 +155,28 @@ static QByteArray normalizeTypeInternal(const char *t, const char *e, bool fixSc //template recursion const char* tt = t; int templdepth = 1; + int scopeDepth = 0; while (t != e) { c = *t++; - if (c == '<') - ++templdepth; - if (c == '>') - --templdepth; - if (templdepth == 0 || (templdepth == 1 && c == ',')) { - result += normalizeTypeInternal(tt, t-1, fixScope, false); - result += c; - if (templdepth == 0) { - if (*t == '>') - result += ' '; // avoid >> - break; + if (c == '{' || c == '(' || c == '[') + ++scopeDepth; + if (c == '}' || c == ')' || c == ']') + --scopeDepth; + if (scopeDepth == 0) { + if (c == '<') + ++templdepth; + if (c == '>') + --templdepth; + if (templdepth == 0 || (templdepth == 1 && c == ',')) { + result += normalizeTypeInternal(tt, t-1, fixScope, false); + result += c; + if (templdepth == 0) { + if (*t == '>') + result += ' '; // avoid >> + break; + } + tt = t; } - tt = t; } } } diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc index e66a59a09c..ab7d72611e 100644 --- a/src/corelib/tools/qset.qdoc +++ b/src/corelib/tools/qset.qdoc @@ -621,9 +621,6 @@ unless you need to change the QSet through the iterator. Const iterators are slightly faster, and can improve code readability. - QSet\<T\>::iterator allows you to iterate over a QSet\<T\> and - modify it as you go (using QSet::erase()). However, - The default QSet::iterator constructor creates an uninitialized iterator. You must initialize it using a function like QSet::begin(), QSet::end(), or QSet::insert() before you can diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.mm b/src/plugins/platforms/cocoa/qcocoamenubar.mm index 5a8664747e..7335deb800 100644 --- a/src/plugins/platforms/cocoa/qcocoamenubar.mm +++ b/src/plugins/platforms/cocoa/qcocoamenubar.mm @@ -79,6 +79,10 @@ QCocoaMenuBar::~QCocoaMenuBar() if (m_window && m_window->menubar() == this) { m_window->setMenubar(0); + // Delete the children first so they do not cause + // the native menu items to be hidden after + // the menu bar was updated + qDeleteAll(children()); updateMenuBarImmediately(); } } diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index 2c3f795346..ea4838c8f2 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -224,14 +224,11 @@ Type Moc::parseType() ; } if (test(LANGLE)) { - QByteArray templ = lexemUntil(RANGLE); - for (int i = 0; i < templ.size(); ++i) { - type.name += templ.at(i); - if ((templ.at(i) == '<' && i+1 < templ.size() && templ.at(i+1) == ':') - || (templ.at(i) == '>' && i+1 < templ.size() && templ.at(i+1) == '>')) { - type.name += ' '; - } + if (type.name.isEmpty()) { + // '<' cannot start a type + return type; } + type.name += lexemUntil(RANGLE); } if (test(SCOPE)) { type.name += lexem(); @@ -1402,10 +1399,14 @@ QByteArray Moc::lexemUntil(Token target) QByteArray s; while (from <= index) { QByteArray n = symbols.at(from++-1).lexem(); - if (s.size() && n.size() - && is_ident_char(s.at(s.size()-1)) - && is_ident_char(n.at(0))) - s += ' '; + if (s.size() && n.size()) { + char prev = s.at(s.size()-1); + char next = n.at(0); + if ((is_ident_char(prev) && is_ident_char(next)) + || (prev == '<' && next == ':') + || (prev == '>' && next == '>')) + s += ' '; + } s += n; } return s; @@ -1440,9 +1441,20 @@ bool Moc::until(Token target) { case RBRACK: --brackCount; break; case LPAREN: ++parenCount; break; case RPAREN: --parenCount; break; - case LANGLE: ++angleCount; break; - case RANGLE: --angleCount; break; - case GTGT: angleCount -= 2; t = RANGLE; break; + case LANGLE: + if (parenCount == 0 && braceCount == 0 && parenCount == 0) + ++angleCount; + break; + case RANGLE: + if (parenCount == 0 && braceCount == 0) + --angleCount; + break; + case GTGT: + if (parenCount == 0 && braceCount == 0) { + angleCount -= 2; + t = RANGLE; + } + break; default: break; } if (t == target diff --git a/src/widgets/styles/qgtkstyle.cpp b/src/widgets/styles/qgtkstyle.cpp index b981aef98b..105aefb14c 100644 --- a/src/widgets/styles/qgtkstyle.cpp +++ b/src/widgets/styles/qgtkstyle.cpp @@ -2499,7 +2499,9 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom if ((option->subControls & SC_SliderGroove) && groove.isValid()) { GtkRange *range = (GtkRange*)scaleWidget; - GtkAdjustment *adjustment = d->gtk_range_get_adjustment(range); + GtkAdjustment *adjustment = 0; + if (d->gtk_adjustment_configure) + adjustment = d->gtk_range_get_adjustment(range); if (adjustment) { d->gtk_adjustment_configure(adjustment, slider->sliderPosition, diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index d180122ab2..d8530bca1e 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -1717,8 +1717,9 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD } } - int width = int(macRect.size.width) + extraWidth; - int height = int(macRect.size.height) + extraHeight; + int devicePixelRatio = p->device()->devicePixelRatio(); + int width = devicePixelRatio * (int(macRect.size.width) + extraWidth); + int height = devicePixelRatio * (int(macRect.size.height) + extraHeight); if (width <= 0 || height <= 0) return; // nothing to draw @@ -1730,6 +1731,7 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD QPixmap pm; if (!QPixmapCache::find(key, pm)) { QPixmap activePixmap(width, height); + activePixmap.setDevicePixelRatio(devicePixelRatio); activePixmap.fill(Qt::transparent); { if (combo){ @@ -1780,6 +1782,7 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD QImage colorlessImage; { QPixmap colorlessPixmap(width, height); + colorlessPixmap.setDevicePixelRatio(devicePixelRatio); colorlessPixmap.fill(Qt::transparent); QMacCGContext cg(&colorlessPixmap); @@ -1813,7 +1816,7 @@ void QMacStylePrivate::drawColorlessButton(const HIRect &macRect, HIThemeButtonD } QPixmapCache::insert(key, pm); } - p->drawPixmap(int(macRect.origin.x) - xoff, int(macRect.origin.y) + finalyoff, width, height, pm); + p->drawPixmap(int(macRect.origin.x) - xoff, int(macRect.origin.y) + finalyoff, width / devicePixelRatio, height / devicePixelRatio , pm); } QMacStyle::QMacStyle() @@ -6715,6 +6718,8 @@ CGContextRef qt_mac_cg_context(const QPaintDevice *pdev) } CGContextTranslateCTM(ret, 0, pm->height()); + int devicePixelRatio = pdev->devicePixelRatio(); + CGContextScaleCTM(ret, devicePixelRatio, devicePixelRatio); CGContextScaleCTM(ret, 1, -1); return ret; } else if (pdev->devType() == QInternal::Widget) { diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp index d4dfe54ab0..04140fa4a1 100644 --- a/tests/auto/tools/moc/tst_moc.cpp +++ b/tests/auto/tools/moc/tst_moc.cpp @@ -131,6 +131,7 @@ public: emit send(value); } + bool operator< ( const Sender & ) const { /* QTBUG-36834 */ return true;} signals: void send(const String::Type&); void send(const Int::Type&); @@ -1546,13 +1547,30 @@ class QTBUG12260_defaultTemplate_Object : public QObject public slots: #if !(defined(Q_CC_GNU) && __GNUC__ == 4 && __GNUC_MINOR__ <= 3) || defined(Q_MOC_RUN) void doSomething(QHash<QString, QVariant> values = QHash<QString, QVariant>() ) { Q_UNUSED(values); } + void doSomethingElse(QSharedPointer<QVarLengthArray<QString, (16 >> 2)> > val + = QSharedPointer<QVarLengthArray<QString, (16 >> 2)> >() ) + { Q_UNUSED(val); } #else // we want to test the previous function, but gcc < 4.4 seemed to have a bug similar to the one moc has. typedef QHash<QString, QVariant> WorkaroundGCCBug; void doSomething(QHash<QString, QVariant> values = WorkaroundGCCBug() ) { Q_UNUSED(values); } + void doSomethingElse(QSharedPointer<QVarLengthArray<QString, (16 >> 2)> > val + = (QSharedPointer<QVarLengthArray<QString, (16 >> 2)> >()) ) + { Q_UNUSED(val); } #endif void doAnotherThing(bool a = (1 < 3), bool b = (1 > 4)) { Q_UNUSED(a); Q_UNUSED(b); } + +#if defined(Q_MOC_RUN) || (defined(Q_COMPILER_AUTO_TYPE) && !(defined(Q_CC_CLANG) && (__clang_major__ * 100) + __clang_minor__) < 304) + // There is no Q_COMPILER_>> but if compiler support auto, it should also support >> + void performSomething(QVector<QList<QString>> e = QVector<QList<QString>>(8 < 1), + QHash<int, QVector<QString>> h = QHash<int, QVector<QString>>()) + { Q_UNUSED(e); Q_UNUSED(h); } +#else + void performSomething(QVector<QList<QString> > e = QVector<QList<QString> >(), + QHash<int, QVector<QString> > h = (QHash<int, QVector<QString> >())) + { Q_UNUSED(e); Q_UNUSED(h); } +#endif }; @@ -1560,6 +1578,8 @@ void tst_Moc::QTBUG12260_defaultTemplate() { QVERIFY(QTBUG12260_defaultTemplate_Object::staticMetaObject.indexOfSlot("doSomething(QHash<QString,QVariant>)") != -1); QVERIFY(QTBUG12260_defaultTemplate_Object::staticMetaObject.indexOfSlot("doAnotherThing(bool,bool)") != -1); + QVERIFY(QTBUG12260_defaultTemplate_Object::staticMetaObject.indexOfSlot("doSomethingElse(QSharedPointer<QVarLengthArray<QString,(16>>2)> >)") != -1); + QVERIFY(QTBUG12260_defaultTemplate_Object::staticMetaObject.indexOfSlot("performSomething(QVector<QList<QString> >,QHash<int,QVector<QString> >)") != -1); } void tst_Moc::notifyError() |