diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp index ae677bcdb69b34885009ff9c41e97a6b17a63710..648c79e95d3fb6275e19feef723d8b8f30ccbfab 100644 --- a/share/qtcreator/gdbmacros/gdbmacros.cpp +++ b/share/qtcreator/gdbmacros/gdbmacros.cpp @@ -3590,10 +3590,16 @@ static void handleProtocolVersion2and3(QDumper &d) break; case 'V': #ifndef QT_BOOTSTRAPPED - if (isEqual(type, "QVariant")) + if (isEqual(type, "QVariantList")) { // resolve typedef + d.outerType = "QList"; + d.innerType = "QVariant"; + d.extraInt[0] = sizeof(QVariant); + qDumpQList(d); + } else if (isEqual(type, "QVariant")) { qDumpQVariant(d); - else if (isEqual(type, "QVector")) + } else if (isEqual(type, "QVector")) { qDumpQVector(d); + } #endif break; case 'W': @@ -3801,6 +3807,7 @@ void *qDumpObjectData440( "\""NS"QStringList\"," "\""NS"QTextCodec\"," "\""NS"QVariant\"," + "\""NS"QVariantList\"," "\""NS"QVector\"," #if QT_VERSION >= 0x040500 "\""NS"QMultiMap\"," diff --git a/share/qtcreator/gdbmacros/test/main.cpp b/share/qtcreator/gdbmacros/test/main.cpp index 60e0989294b9055bb13baf75b424c76723b450b5..de8fc9f91f209a3c41137d081995825a9dc6a911 100644 --- a/share/qtcreator/gdbmacros/test/main.cpp +++ b/share/qtcreator/gdbmacros/test/main.cpp @@ -280,6 +280,27 @@ static int dumpQVariant() return 0; } +static int dumpQVariantList() +{ + QVariantList test; + if (!optEmptyContainers) { + test.push_back(QVariant(QLatin1String("hallo"))); + test.push_back(QVariant(42)); + test.push_back(QVariant(3.141)); + } + // As a list + prepareInBuffer("QList", "local.qvariantlist", "local.qvariantlist", "QVariant"); + qDumpObjectData440(2, 42, testAddress(&test), 1, sizeof(QVariant), 0,0 ,0); + fputs(qDumpOutBuffer, stdout); + // As typedef + fputs("\n\n", stdout); + prepareInBuffer("QVariantList", "local.qvariantlist", "local.qvariantlist", ""); + qDumpObjectData440(2, 42, testAddress(&test), 1, 0, 0,0 ,0); + fputs(qDumpOutBuffer, stdout); + fputc('\n', stdout); + return 0; +} + // --------------- std types static int dumpStdString() @@ -548,6 +569,7 @@ static TypeDumpFunctionMap registerTypes() rc.insert("QObject", dumpQObject); rc.insert("QObjectList", dumpQObjectList); rc.insert("QVariant", dumpQVariant); + rc.insert("QVariantList", dumpQVariantList); return rc; } diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 9dca44cb337538ba91034f5f76ebb78949fd6a25..a305eb278c694a5e9cea225a24922c9771d8841c 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -256,6 +256,7 @@ bool DebuggerListener::coreAboutToClose() if (answer == QMessageBox::No) return false; mgr->exitDebugger(); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); return true; } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 59ed22c04d53e4bf1290d22db0a39ddfa43ebb53..8b1e3b2c380ac949e611f1327664d3cd13fb1448 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -225,7 +225,7 @@ QMainWindow *GdbEngine::mainWindow() const GdbEngine::~GdbEngine() { // prevent sending error messages afterwards - disconnect(&m_gdbProc); + disconnect(&m_gdbProc, 0, this, 0); delete m_gdbAdapter; m_gdbAdapter = 0; }