diff --git a/src/libs/cplusplus/TypeOfExpression.cpp b/src/libs/cplusplus/TypeOfExpression.cpp index 53fa7e78396..68732f78ea0 100644 --- a/src/libs/cplusplus/TypeOfExpression.cpp +++ b/src/libs/cplusplus/TypeOfExpression.cpp @@ -107,6 +107,8 @@ void TypeOfExpression::processEnvironment(QMap documents Document::Ptr doc, Environment *env, QSet *processed) const { + if (! doc) + return; if (processed->contains(doc->fileName())) return; processed->insert(doc->fileName()); diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index 81a2228e669..100fdbe717f 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -46,11 +46,12 @@ #include #include #include +#include namespace Core { namespace Utils { -#ifdef Q_OS_OSX +#ifdef Q_OS_MAC /*static*/ const char * const PathChooser::browseButtonLabel = "Choose..."; #else /*static*/ const char * const PathChooser::browseButtonLabel = "Browse..."; @@ -112,7 +113,11 @@ PathChooser::PathChooser(QWidget *parent) : hLayout->addWidget(m_d->m_lineEdit); hLayout->setSizeConstraint(QLayout::SetMinimumSize); +#ifdef Q_OS_MAC + QPushButton *browseButton = new QPushButton; +#else QToolButton *browseButton = new QToolButton; +#endif browseButton->setText(tr(browseButtonLabel)); connect(browseButton, SIGNAL(clicked()), this, SLOT(slotBrowse())); diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index 82ed13a29e8..8e84df39321 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -334,6 +334,10 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget) m_navigationComboBox = new NavComboBox(this); m_navigationWidget = 0; +#ifdef Q_OS_MAC + // this is to avoid ugly tool bar behavior + m_navigationComboBox->setMaximumWidth(130); +#endif m_toolbar = new QToolBar(this); m_toolbar->setContentsMargins(0, 0, 0, 0); diff --git a/src/plugins/debugger/gdboptionpage.cpp b/src/plugins/debugger/gdboptionpage.cpp index 8bf1b22a0fc..7d6742e9582 100644 --- a/src/plugins/debugger/gdboptionpage.cpp +++ b/src/plugins/debugger/gdboptionpage.cpp @@ -88,11 +88,15 @@ QWidget *GdbOptionPage::createPage(QWidget *parent) { QWidget *w = new QWidget(parent); m_ui.setupUi(w); - m_ui.gdbLocationEdit->setText(m_settings->m_gdbCmd); + m_ui.gdbLocationChooser->setExpectedKind(Core::Utils::PathChooser::Command); + m_ui.gdbLocationChooser->setPromptDialogTitle(tr("Choose Gdb Location")); + m_ui.gdbLocationChooser->setPath(m_settings->m_gdbCmd); + m_ui.scriptFileChooser->setExpectedKind(Core::Utils::PathChooser::File); + m_ui.scriptFileChooser->setPromptDialogTitle(tr("Choose Location of Startup Script File")); + m_ui.scriptFileChooser->setPath(m_settings->m_scriptFile); m_ui.environmentEdit->setText(m_settings->m_gdbEnv); m_ui.autoStartBox->setChecked(m_settings->m_autoRun); m_ui.autoQuitBox->setChecked(m_settings->m_autoQuit); - m_ui.gdbStartupScriptEdit->setText(m_settings->m_scriptFile); // FIXME m_ui.autoStartBox->hide(); @@ -100,32 +104,22 @@ QWidget *GdbOptionPage::createPage(QWidget *parent) m_ui.environmentEdit->hide(); m_ui.labelEnvironment->hide(); - connect(m_ui.browseForGdbButton, SIGNAL(clicked()), - this, SLOT(browseForGdb())); - connect(m_ui.browseForScriptButton, SIGNAL(clicked()), - this, SLOT(browseForScript())); + connect(m_ui.gdbLocationChooser, SIGNAL(changed()), + this, SLOT(onGdbLocationChanged())); + connect(m_ui.scriptFileChooser, SIGNAL(changed()), + this, SLOT(onScriptFileChanged())); return w; } -void GdbOptionPage::browseForGdb() +void GdbOptionPage::onGdbLocationChanged() { - QString fileName = QFileDialog::getOpenFileName(m_ui.browseForGdbButton, - "Browse for gdb executable"); - if (fileName.isEmpty()) - return; - m_settings->m_gdbCmd = fileName; - m_ui.gdbLocationEdit->setText(fileName); + m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path(); } -void GdbOptionPage::browseForScript() +void GdbOptionPage::onScriptFileChanged() { - QString fileName = QFileDialog::getOpenFileName(m_ui.browseForGdbButton, - "Browse for gdb startup script"); - if (fileName.isEmpty()) - return; - m_settings->m_scriptFile = fileName; - m_ui.gdbStartupScriptEdit->setText(fileName); + m_settings->m_scriptFile = m_ui.scriptFileChooser->path(); } void GdbOptionPage::finished(bool accepted) @@ -133,11 +127,11 @@ void GdbOptionPage::finished(bool accepted) if (!accepted) return; - m_settings->m_gdbCmd = m_ui.gdbLocationEdit->text(); + m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path(); m_settings->m_gdbEnv = m_ui.environmentEdit->text(); m_settings->m_autoRun = m_ui.autoStartBox->isChecked(); m_settings->m_autoQuit = m_ui.autoQuitBox->isChecked(); - m_settings->m_scriptFile = m_ui.gdbStartupScriptEdit->text(); + m_settings->m_scriptFile = m_ui.scriptFileChooser->path(); Core::ICore *coreIFace = m_pm->getObject(); if (!coreIFace || !coreIFace->settings()) diff --git a/src/plugins/debugger/gdboptionpage.h b/src/plugins/debugger/gdboptionpage.h index b9da4ea0111..d306e03e20f 100644 --- a/src/plugins/debugger/gdboptionpage.h +++ b/src/plugins/debugger/gdboptionpage.h @@ -62,8 +62,8 @@ public: void finished(bool accepted); public slots: - void browseForGdb(); - void browseForScript(); + void onGdbLocationChanged(); + void onScriptFileChanged(); private: ExtensionSystem::PluginManager *m_pm; diff --git a/src/plugins/debugger/gdboptionpage.ui b/src/plugins/debugger/gdboptionpage.ui index a7496851188..580f13c0d66 100644 --- a/src/plugins/debugger/gdboptionpage.ui +++ b/src/plugins/debugger/gdboptionpage.ui @@ -32,10 +32,7 @@ 6 - - - - + @@ -46,9 +43,6 @@ Gdb Location: - - gdbLocationEdit - @@ -61,40 +55,6 @@ - - - - - - - - :/qworkbench/images/fileopen.png:/qworkbench/images/fileopen.png - - - false - - - - - - - - - - - 21 - 23 - - - - ... - - - - :/qworkbench/images/fileopen.png:/qworkbench/images/fileopen.png - - - @@ -105,6 +65,12 @@ + + + + + + @@ -137,6 +103,14 @@ + + + Core::Utils::PathChooser + QWidget +
utils/pathchooser.h
+ 1 +
+
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 6f443c92b47..5328a171aea 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -411,7 +411,7 @@ static QString niceType(QString type) "std::allocator >", "std::wstring"); // std::vector - static QRegExp re1("std::vector<(.*)\\s*,std::allocator<(.*)>\\s*>"); + static QRegExp re1("std::vector<(.*), std::allocator<(.*)>\\s*>"); re1.setMinimal(true); for (int i = 0; i != 10; ++i) { if (re1.indexIn(type) == -1 || re1.cap(1) != re1.cap(2)) @@ -420,7 +420,7 @@ static QString niceType(QString type) } // std::list - static QRegExp re2("std::list<(.*)\\s*,std::allocator<(.*)>\\s*>"); + static QRegExp re2("std::list<(.*), std::allocator<(.*)>\\s*>"); re2.setMinimal(true); for (int i = 0; i != 10; ++i) { if (re2.indexIn(type) == -1 || re2.cap(1) != re2.cap(2)) @@ -428,6 +428,17 @@ static QString niceType(QString type) type.replace(re2.cap(0), "std::list<" + re2.cap(1) + ">"); } + // std::map + static QRegExp re3("std::map<(.*), (.*), std::less<(.*)\\s*>, " + "std::allocator > >"); + re3.setMinimal(true); + for (int i = 0; i != 10; ++i) { + if (re3.indexIn(type) == -1 || re3.cap(1) != re3.cap(3) + || re3.cap(1) != re3.cap(4) || re3.cap(2) != re3.cap(5)) + break; + type.replace(re3.cap(0), "std::map<" + re3.cap(1) + ", " + re3.cap(2) + ">"); + } + type.replace(" >", ">"); } return type; diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp index dbc7eebcd3c..ab5ee635b5a 100644 --- a/tests/manual/gdbdebugger/simple/app.cpp +++ b/tests/manual/gdbdebugger/simple/app.cpp @@ -53,6 +53,7 @@ #include #include +#include #include #include #include @@ -131,7 +132,6 @@ void testArray() } } - void testQByteArray() { QByteArray ba = "Hello"; @@ -142,7 +142,6 @@ void testQByteArray() ba += 2; } - void testQHash() { QHash hgg0; @@ -412,6 +411,41 @@ void testStdList() vec.push_back(false); } +void testStdMap() +{ + std::map ggl; + ggl[11] = QStringList() << "11"; + ggl[22] = QStringList() << "22"; + + typedef std::map T; + T ggt; + ggt[11] = QStringList() << "11"; + ggt[22] = QStringList() << "22"; + +#if 0 + std::map gg0; + gg0[11] = 11.0; + gg0[22] = 22.0; + + + std::map gg1; + gg1["22.0"] = 22.0; + + std::map gg2; + gg2[22] = "22.0"; + + std::map gg3; + gg3["22.0"] = Foo(22); + gg3["33.0"] = Foo(33); + + QObject ob; + std::map > map; + map.insert("Hallo", QPointer(&ob)); + map.insert("Welt", QPointer(&ob)); + map.insert(".", QPointer(&ob)); +#endif +} + void testStdStack() { std::stack plist1; @@ -795,6 +829,7 @@ int main(int argc, char *argv[]) testArray(); testStdList(); + testStdMap(); testStdStack(); testStdString(); testStdVector();