summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordt <qtc-commiter@nokia.com>2008-12-12 12:13:49 +0100
committerdt <qtc-commiter@nokia.com>2008-12-12 12:13:49 +0100
commit7d24f921e3b519ceb9528a179ed88c696876a212 (patch)
tree4ccd08aa17952bb41cfdafcbf46a1e538670fb7c /src
parenta7227782db27c9b68cb1768d3f2a4ce4237c7ee5 (diff)
parent8e297aceddad7cb9378ac437461e160398e0f206 (diff)
downloadqt-creator-7d24f921e3b519ceb9528a179ed88c696876a212.tar.gz
Merge branch '0.9.1-beta' of git@scm.dev.nokia.troll.no:creator/mainline into 0.9.1-beta
Diffstat (limited to 'src')
-rw-r--r--src/libs/cplusplus/CppDocument.h12
-rw-r--r--src/libs/cplusplus/LookupContext.cpp2
-rw-r--r--src/libs/cplusplus/LookupContext.h6
-rw-r--r--src/libs/cplusplus/TypeOfExpression.cpp14
-rw-r--r--src/libs/cplusplus/TypeOfExpression.h8
-rw-r--r--src/libs/utils/pathchooser.cpp7
-rw-r--r--src/plugins/coreplugin/navigationwidget.cpp4
-rw-r--r--src/plugins/coreplugin/versiondialog.cpp2
-rw-r--r--src/plugins/cppeditor/cppeditor.cpp17
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp14
-rw-r--r--src/plugins/cpptools/cpphoverhandler.cpp6
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp21
-rw-r--r--src/plugins/cpptools/cppmodelmanager.h5
-rw-r--r--src/plugins/cpptools/cppmodelmanagerinterface.h8
-rw-r--r--src/plugins/cpptools/cpptools.pro1
-rw-r--r--src/plugins/cpptools/searchsymbols.h1
-rw-r--r--src/plugins/debugger/debugger.pro2
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp8
-rw-r--r--src/plugins/debugger/debuggerplugin.h2
-rw-r--r--src/plugins/debugger/gdbengine.h2
-rw-r--r--src/plugins/debugger/gdboptionpage.cpp49
-rw-r--r--src/plugins/debugger/gdboptionpage.h7
-rw-r--r--src/plugins/debugger/gdboptionpage.ui53
-rw-r--r--src/plugins/debugger/gdbtypemacros.cpp17
-rw-r--r--src/plugins/debugger/gdbtypemacros.ui144
-rw-r--r--src/plugins/debugger/watchhandler.cpp15
-rw-r--r--src/plugins/designer/workbenchintegration.cpp4
-rw-r--r--src/plugins/git/settingspage.cpp2
-rw-r--r--src/plugins/projectexplorer/allprojectsfilter.h4
-rw-r--r--src/plugins/projectexplorer/currentprojectfilter.h4
-rw-r--r--src/plugins/qt4projectmanager/qt4project.cpp4
-rw-r--r--src/plugins/quickopen/directoryfilter.cpp4
-rw-r--r--src/plugins/quickopen/filesystemfilter.cpp4
-rw-r--r--src/plugins/quickopen/filesystemfilter.h4
-rw-r--r--src/plugins/quickopen/iquickopenfilter.cpp24
-rw-r--r--src/plugins/quickopen/iquickopenfilter.h33
-rw-r--r--src/plugins/quickopen/opendocumentsfilter.h4
-rw-r--r--src/plugins/quickopen/quickopenfiltersfilter.cpp6
-rw-r--r--src/plugins/quickopen/quickopentoolwindow.cpp4
-rw-r--r--src/plugins/quickopen/settingspage.cpp5
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp37
-rw-r--r--src/plugins/texteditor/generalsettingspage.ui6
42 files changed, 311 insertions, 265 deletions
diff --git a/src/libs/cplusplus/CppDocument.h b/src/libs/cplusplus/CppDocument.h
index b31f0d2bc6..54de3c801e 100644
--- a/src/libs/cplusplus/CppDocument.h
+++ b/src/libs/cplusplus/CppDocument.h
@@ -40,7 +40,7 @@
#include <QByteArray>
#include <QList>
-#include <QSet>
+#include <QMap>
#include <QSharedPointer>
#include <QString>
#include <QStringList>
@@ -236,6 +236,16 @@ private:
QList<MacroUse> _macroUses;
};
+class CPLUSPLUS_EXPORT Snapshot: public QMap<QString, Document::Ptr>
+{
+public:
+ Snapshot()
+ { }
+
+ ~Snapshot()
+ { }
+};
+
} // end of namespace CPlusPlus
#endif // CPPDOCUMENT_H
diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp
index 67eb05d7f4..8b24b59f5e 100644
--- a/src/libs/cplusplus/LookupContext.cpp
+++ b/src/libs/cplusplus/LookupContext.cpp
@@ -77,7 +77,7 @@ LookupContext::LookupContext(Control *control)
LookupContext::LookupContext(Symbol *symbol,
Document::Ptr expressionDocument,
Document::Ptr thisDocument,
- const QMap<QString, Document::Ptr> &documents)
+ const Snapshot &documents)
: _symbol(symbol),
_expressionDocument(expressionDocument),
_thisDocument(thisDocument),
diff --git a/src/libs/cplusplus/LookupContext.h b/src/libs/cplusplus/LookupContext.h
index 36ea6a8298..18754bf667 100644
--- a/src/libs/cplusplus/LookupContext.h
+++ b/src/libs/cplusplus/LookupContext.h
@@ -57,7 +57,7 @@ public:
LookupContext(Symbol *symbol,
Document::Ptr expressionDocument,
Document::Ptr thisDocument,
- const QMap<QString, Document::Ptr> &documents);
+ const Snapshot &documents);
LookupContext(Symbol *symbol,
const LookupContext &context);
@@ -87,7 +87,7 @@ public:
QList<Symbol *> resolveClassOrNamespace(Name *name) const
{ return resolveClassOrNamespace(name, visibleScopes()); }
- QMap<QString, Document::Ptr> documents() const
+ Snapshot snapshot() const
{ return _documents; }
enum ResolveMode {
@@ -140,7 +140,7 @@ private:
Document::Ptr _thisDocument;
// All documents.
- QMap<QString, Document::Ptr> _documents;
+ Snapshot _documents;
// Visible scopes.
QList<Scope *> _visibleScopes;
diff --git a/src/libs/cplusplus/TypeOfExpression.cpp b/src/libs/cplusplus/TypeOfExpression.cpp
index 53fa7e7839..cb373cce02 100644
--- a/src/libs/cplusplus/TypeOfExpression.cpp
+++ b/src/libs/cplusplus/TypeOfExpression.cpp
@@ -46,9 +46,9 @@ TypeOfExpression::TypeOfExpression():
{
}
-void TypeOfExpression::setDocuments(const QMap<QString, Document::Ptr> &documents)
+void TypeOfExpression::setSnapshot(const Snapshot &documents)
{
- m_documents = documents;
+ m_snapshot = documents;
m_lookupContext = LookupContext();
}
@@ -59,12 +59,12 @@ QList<TypeOfExpression::Result> TypeOfExpression::operator()(const QString &expr
{
QString code = expression;
if (mode == Preprocess)
- code = preprocessedExpression(expression, m_documents, document);
+ code = preprocessedExpression(expression, m_snapshot, document);
Document::Ptr expressionDoc = documentForExpression(code);
m_ast = extractExpressionAST(expressionDoc);
m_lookupContext = LookupContext(lastVisibleSymbol, expressionDoc,
- document, m_documents);
+ document, m_snapshot);
ResolveExpression resolveExpression(m_lookupContext);
return resolveExpression(m_ast);
@@ -103,10 +103,12 @@ Document::Ptr TypeOfExpression::documentForExpression(const QString &expression)
return doc;
}
-void TypeOfExpression::processEnvironment(QMap<QString, Document::Ptr> documents,
+void TypeOfExpression::processEnvironment(Snapshot documents,
Document::Ptr doc, Environment *env,
QSet<QString> *processed) const
{
+ if (! doc)
+ return;
if (processed->contains(doc->fileName()))
return;
processed->insert(doc->fileName());
@@ -120,7 +122,7 @@ void TypeOfExpression::processEnvironment(QMap<QString, Document::Ptr> documents
}
QString TypeOfExpression::preprocessedExpression(const QString &expression,
- QMap<QString, Document::Ptr> documents,
+ Snapshot documents,
Document::Ptr thisDocument) const
{
Environment env;
diff --git a/src/libs/cplusplus/TypeOfExpression.h b/src/libs/cplusplus/TypeOfExpression.h
index e6a9a7f4b6..87d4113f30 100644
--- a/src/libs/cplusplus/TypeOfExpression.h
+++ b/src/libs/cplusplus/TypeOfExpression.h
@@ -61,7 +61,7 @@ public:
* Also clears the lookup context, so can be used to make sure references
* to the documents previously used are removed.
*/
- void setDocuments(const QMap<QString, Document::Ptr> &documents);
+ void setSnapshot(const Snapshot &documents);
enum PreprocessMode {
NoPreprocess,
@@ -100,15 +100,15 @@ private:
ExpressionAST *extractExpressionAST(Document::Ptr doc) const;
Document::Ptr documentForExpression(const QString &expression) const;
- void processEnvironment(QMap<QString, CPlusPlus::Document::Ptr> documents,
+ void processEnvironment(CPlusPlus::Snapshot documents,
CPlusPlus::Document::Ptr doc, CPlusPlus::Environment *env,
QSet<QString> *processed) const;
QString preprocessedExpression(const QString &expression,
- QMap<QString, CPlusPlus::Document::Ptr> documents,
+ CPlusPlus::Snapshot documents,
CPlusPlus::Document::Ptr thisDocument) const;
- QMap<QString, Document::Ptr> m_documents;
+ Snapshot m_snapshot;
ExpressionAST *m_ast;
LookupContext m_lookupContext;
};
diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp
index 81a2228e66..100fdbe717 100644
--- a/src/libs/utils/pathchooser.cpp
+++ b/src/libs/utils/pathchooser.cpp
@@ -46,11 +46,12 @@
#include <QtGui/QHBoxLayout>
#include <QtGui/QLineEdit>
#include <QtGui/QToolButton>
+#include <QtGui/QPushButton>
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 bf78bf94f2..c5189e60ef 100644
--- a/src/plugins/coreplugin/navigationwidget.cpp
+++ b/src/plugins/coreplugin/navigationwidget.cpp
@@ -342,6 +342,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/coreplugin/versiondialog.cpp b/src/plugins/coreplugin/versiondialog.cpp
index 0decae6cf1..e534a0d1ea 100644
--- a/src/plugins/coreplugin/versiondialog.cpp
+++ b/src/plugins/coreplugin/versiondialog.cpp
@@ -72,7 +72,7 @@ VersionDialog::VersionDialog(QWidget *parent)
"<br/>"
"Built on " __DATE__ " at " __TIME__ "<br />"
#ifdef IDE_REVISION
- "Using revision %5<br/>"
+ "From revision %5<br/>"
#endif
"<br/>"
"<br/>"
diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp
index e3bf12757b..49b130ebc1 100644
--- a/src/plugins/cppeditor/cppeditor.cpp
+++ b/src/plugins/cppeditor/cppeditor.cpp
@@ -427,7 +427,9 @@ void CPPEditor::switchDeclarationDefinition()
if (!m_modelManager)
return;
- Document::Ptr doc = m_modelManager->document(file()->fileName());
+ const Snapshot snapshot = m_modelManager->snapshot();
+
+ Document::Ptr doc = snapshot.value(file()->fileName());
if (!doc)
return;
Symbol *lastSymbol = doc->findSymbolAt(line, column);
@@ -445,7 +447,7 @@ void CPPEditor::switchDeclarationDefinition()
if (f) {
TypeOfExpression typeOfExpression;
- typeOfExpression.setDocuments(m_modelManager->documents());
+ typeOfExpression.setSnapshot(m_modelManager->snapshot());
QList<TypeOfExpression::Result> resolvedSymbols = typeOfExpression(QString(), doc, lastSymbol);
const LookupContext &context = typeOfExpression.lookupContext();
@@ -474,10 +476,12 @@ void CPPEditor::jumpToDefinition()
if (!m_modelManager)
return;
+ const Snapshot snapshot = m_modelManager->snapshot();
+
// Find the last symbol up to the cursor position
int line = 0, column = 0;
convertPosition(position(), &line, &column);
- Document::Ptr doc = m_modelManager->document(file()->fileName());
+ Document::Ptr doc = snapshot.value(file()->fileName());
if (!doc)
return;
@@ -503,7 +507,7 @@ void CPPEditor::jumpToDefinition()
// Evaluate the type of the expression
TypeOfExpression typeOfExpression;
- typeOfExpression.setDocuments(m_modelManager->documents());
+ typeOfExpression.setSnapshot(m_modelManager->snapshot());
QList<TypeOfExpression::Result> resolvedSymbols =
typeOfExpression(expression, doc, lastSymbol);
@@ -572,7 +576,7 @@ Symbol *CPPEditor::findDefinition(Symbol *lastSymbol)
QualifiedNameId *q = control.qualifiedNameId(&qualifiedName[0], qualifiedName.size());
LookupContext context(&control);
- const QMap<QString, Document::Ptr> documents = m_modelManager->documents();
+ const Snapshot documents = m_modelManager->snapshot();
foreach (Document::Ptr doc, documents) {
QList<Scope *> visibleScopes;
visibleScopes.append(doc->globalSymbols());
@@ -744,7 +748,8 @@ void CPPEditor::unCommentSelection()
QString endText = endBlock.text();
int endPos = end - endBlock.position();
- bool hasTrailingCharacters = !endText.mid(endPos).trimmed().isEmpty();
+ bool hasTrailingCharacters = !endText.left(endPos).remove(QLatin1String("//")).trimmed().isEmpty()
+ && !endText.mid(endPos).trimmed().isEmpty();
if ((endPos <= endText.length() - 2
&& endText.at(endPos) == QLatin1Char('*')
&& endText.at(endPos+1) == QLatin1Char('/'))) {
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index 4606bd948f..addf5301f7 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -434,10 +434,12 @@ int CppCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
//if (! expression.isEmpty())
//qDebug() << "***** expression:" << expression;
- if (Document::Ptr thisDocument = m_manager->document(fileName)) {
+ const Snapshot snapshot = m_manager->snapshot();
+
+ if (Document::Ptr thisDocument = snapshot.value(fileName)) {
Symbol *symbol = thisDocument->findSymbolAt(line, column);
- typeOfExpression.setDocuments(m_manager->documents());
+ typeOfExpression.setSnapshot(m_manager->snapshot());
QList<TypeOfExpression::Result> resolvedTypes = typeOfExpression(expression, thisDocument, symbol,
TypeOfExpression::Preprocess);
@@ -964,8 +966,10 @@ void CppCodeCompletion::complete(const TextEditor::CompletionItem &item)
if (Function *function = symbol->type()->asFunction()) {
// If the member is a function, automatically place the opening parenthesis,
// except when it might take template parameters.
- if (!function->returnType().isValid()
- && (function->identity() && !function->identity()->isDestructorNameId())) {
+ const bool hasReturnType = function->returnType().isValid() ||
+ function->returnType().isSigned() ||
+ function->returnType().isUnsigned();
+ if (! hasReturnType && (function->identity() && !function->identity()->isDestructorNameId())) {
// Don't insert any magic, since the user might have just wanted to select the class
} else if (function->templateParameterCount() != 0) {
@@ -1034,7 +1038,7 @@ void CppCodeCompletion::cleanup()
// Set empty map in order to avoid referencing old versions of the documents
// until the next completion
- typeOfExpression.setDocuments(QMap<QString, Document::Ptr>());
+ typeOfExpression.setSnapshot(Snapshot());
}
int CppCodeCompletion::findStartOfName(const TextEditor::ITextEditor *editor)
diff --git a/src/plugins/cpptools/cpphoverhandler.cpp b/src/plugins/cpptools/cpphoverhandler.cpp
index f3831e5394..fab0d83b31 100644
--- a/src/plugins/cpptools/cpphoverhandler.cpp
+++ b/src/plugins/cpptools/cpphoverhandler.cpp
@@ -165,9 +165,11 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
QTextCursor tc(edit->document());
tc.setPosition(pos);
+ const Snapshot documents = m_manager->snapshot();
+
const int lineNumber = tc.block().blockNumber() + 1;
const QString fileName = editor->file()->fileName();
- Document::Ptr doc = m_manager->document(fileName);
+ Document::Ptr doc = documents.value(fileName);
if (doc) {
foreach (Document::DiagnosticMessage m, doc->diagnosticMessages()) {
if (m.line() == lineNumber) {
@@ -212,7 +214,7 @@ void CppHoverHandler::updateHelpIdAndTooltip(TextEditor::ITextEditor *editor, in
Symbol *lastSymbol = doc->findSymbolAt(line, column);
TypeOfExpression typeOfExpression;
- typeOfExpression.setDocuments(m_manager->documents());
+ typeOfExpression.setSnapshot(documents);
QList<TypeOfExpression::Result> types = typeOfExpression(expression, doc, lastSymbol);
if (!types.isEmpty()) {
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 9adc892713..a02656ee8c 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -143,7 +143,7 @@ protected:
private:
QPointer<CppModelManager> m_modelManager;
- CppModelManager::DocumentTable m_documents;
+ Snapshot m_snapshot;
Environment env;
pp m_proc;
QStringList m_includePaths;
@@ -160,7 +160,7 @@ private:
CppPreprocessor::CppPreprocessor(QPointer<CppModelManager> modelManager)
: m_modelManager(modelManager),
- m_documents(modelManager->documents()),
+ m_snapshot(modelManager->snapshot()),
m_proc(this, env)
{ }
@@ -340,7 +340,7 @@ void CppPreprocessor::mergeEnvironment(Document::Ptr doc, QSet<QString> *process
processed->insert(fn);
foreach (QString includedFile, doc->includedFiles()) {
- mergeEnvironment(m_documents.value(includedFile), processed);
+ mergeEnvironment(m_snapshot.value(includedFile), processed);
}
foreach (const Macro macro, doc->definedMacros()) {
@@ -386,7 +386,7 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type,
}
if (! contents.isEmpty()) {
- Document::Ptr cachedDoc = m_documents.value(fileName);
+ Document::Ptr cachedDoc = m_snapshot.value(fileName);
if (cachedDoc && m_currentDoc) {
mergeEnvironment(cachedDoc);
} else {
@@ -477,11 +477,8 @@ CppModelManager::CppModelManager(QObject *parent) :
CppModelManager::~CppModelManager()
{ }
-Document::Ptr CppModelManager::document(const QString &fileName) const
-{ return m_documents.value(fileName); }
-
-CppModelManager::DocumentTable CppModelManager::documents() const
-{ return m_documents; }
+Snapshot CppModelManager::snapshot() const
+{ return m_snapshot; }
void CppModelManager::ensureUpdated()
{
@@ -672,7 +669,7 @@ void CppModelManager::emitDocumentUpdated(Document::Ptr doc)
void CppModelManager::onDocumentUpdated(Document::Ptr doc)
{
const QString fileName = doc->fileName();
- m_documents[fileName] = doc;
+ m_snapshot[fileName] = doc;
QList<Core::IEditor *> openedEditors = m_core->editorManager()->openedEditors();
foreach (Core::IEditor *editor, openedEditors) {
if (editor->file()->fileName() == fileName) {
@@ -837,7 +834,7 @@ void CppModelManager::parse(QFutureInterface<void> &future,
void CppModelManager::GC()
{
- DocumentTable documents = m_documents;
+ Snapshot documents = m_snapshot;
QSet<QString> processed;
QStringList todo = projectFiles();
@@ -868,7 +865,7 @@ void CppModelManager::GC()
}
emit aboutToRemoveFiles(removedFiles);
- m_documents = documents;
+ m_snapshot = documents;
}
diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h
index 3b2f4e1999..2594705620 100644
--- a/src/plugins/cpptools/cppmodelmanager.h
+++ b/src/plugins/cpptools/cppmodelmanager.h
@@ -76,8 +76,7 @@ public:
virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const;
virtual void updateProjectInfo(const ProjectInfo &pinfo);
- virtual CPlusPlus::Document::Ptr document(const QString &fileName) const;
- virtual DocumentTable documents() const;
+ virtual CPlusPlus::Snapshot snapshot() const;
virtual void GC();
QFuture<void> refreshSourceFiles(const QStringList &sourceFiles);
@@ -146,7 +145,7 @@ private:
Core::ICore *m_core;
ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer;
CppHoverHandler *m_hoverHandler;
- DocumentTable m_documents;
+ CPlusPlus::Snapshot m_snapshot;
// cache
bool m_dirty;
diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.h b/src/plugins/cpptools/cppmodelmanagerinterface.h
index e3ad4fe961..6dc0da67ca 100644
--- a/src/plugins/cpptools/cppmodelmanagerinterface.h
+++ b/src/plugins/cpptools/cppmodelmanagerinterface.h
@@ -46,14 +46,11 @@ namespace ProjectExplorer {
namespace CppTools {
-class CPPTOOLS_EXPORT CppModelManagerInterface
- : public QObject
+class CPPTOOLS_EXPORT CppModelManagerInterface: public QObject
{
Q_OBJECT
public:
- typedef QMap<QString, CPlusPlus::Document::Ptr> DocumentTable; // ### remove me
-
class ProjectInfo
{
public:
@@ -89,8 +86,7 @@ public:
virtual void GC() = 0;
virtual void updateSourceFiles(const QStringList &sourceFiles) = 0;
- virtual CPlusPlus::Document::Ptr document(const QString &fileName) const = 0;
- virtual DocumentTable documents() const = 0;
+ virtual CPlusPlus::Snapshot snapshot() const = 0;
virtual QList<ProjectInfo> projectInfos() const = 0;
virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0;
diff --git a/src/plugins/cpptools/cpptools.pro b/src/plugins/cpptools/cpptools.pro
index 74112379e3..170f62b5bf 100644
--- a/src/plugins/cpptools/cpptools.pro
+++ b/src/plugins/cpptools/cpptools.pro
@@ -6,7 +6,6 @@ include(cpptools_dependencies.pri)
# DEFINES += QT_NO_CAST_FROM_ASCII
DEFINES += QT_NO_CAST_TO_ASCII
-unix:QMAKE_CXXFLAGS_DEBUG += -O3
INCLUDEPATH += .
DEFINES += CPPTOOLS_LIBRARY
CONFIG += help
diff --git a/src/plugins/cpptools/searchsymbols.h b/src/plugins/cpptools/searchsymbols.h
index 4997e5cf04..494455f6d8 100644
--- a/src/plugins/cpptools/searchsymbols.h
+++ b/src/plugins/cpptools/searchsymbols.h
@@ -43,6 +43,7 @@
#include <QIcon>
#include <QMetaType>
#include <QString>
+#include <QSet>
#include <functional>
diff --git a/src/plugins/debugger/debugger.pro b/src/plugins/debugger/debugger.pro
index 3d67e19c6a..7308fb441c 100644
--- a/src/plugins/debugger/debugger.pro
+++ b/src/plugins/debugger/debugger.pro
@@ -58,7 +58,6 @@ SOURCES += attachexternaldialog.cpp \
gdbengine.cpp \
gdbmi.cpp \
gdboptionpage.cpp \
- gdbtypemacros.cpp \
gdbengine.h \
moduleshandler.cpp \
moduleswindow.cpp \
@@ -79,7 +78,6 @@ FORMS += attachexternaldialog.ui \
breakcondition.ui \
mode.ui \
gdboptionpage.ui \
- gdbtypemacros.ui \
startexternaldialog.ui \
RESOURCES += debugger.qrc
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 37406f70cc..d9217069c6 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -183,7 +183,6 @@ DebuggerPlugin::DebuggerPlugin()
{
m_pm = 0;
m_generalOptionPage = 0;
- m_typeMacroPage = 0;
m_locationMark = 0;
m_manager = 0;
}
@@ -202,7 +201,6 @@ void DebuggerPlugin::shutdown()
//qDebug() << "DebuggerPlugin::~DebuggerPlugin";
removeObject(m_debugMode);
removeObject(m_generalOptionPage);
- removeObject(m_typeMacroPage);
// FIXME: when using the line below, BreakWindow etc gets deleted twice.
// so better leak for now...
@@ -212,9 +210,6 @@ void DebuggerPlugin::shutdown()
delete m_generalOptionPage;
m_generalOptionPage = 0;
- delete m_typeMacroPage;
- m_typeMacroPage = 0;
-
delete m_locationMark;
m_locationMark = 0;
@@ -409,13 +404,10 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes
mdebug->addAction(cmd);
m_generalOptionPage = 0;
- m_typeMacroPage = 0;
// FIXME:
m_generalOptionPage = new GdbOptionPage(&theGdbSettings());
addObject(m_generalOptionPage);
- m_typeMacroPage = new TypeMacroPage(&theGdbSettings());
- addObject(m_typeMacroPage);
m_locationMark = 0;
diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h
index 91ffe4dbf7..ebf12b5e12 100644
--- a/src/plugins/debugger/debuggerplugin.h
+++ b/src/plugins/debugger/debuggerplugin.h
@@ -54,7 +54,6 @@ namespace Internal {
class DebuggerManager;
class DebugMode;
class GdbOptionPage;
-class TypeMacroPage;
class LocationMark;
class DebuggerPlugin : public ExtensionSystem::IPlugin
@@ -103,7 +102,6 @@ private:
ExtensionSystem::PluginManager *m_pm;
GdbOptionPage *m_generalOptionPage;
- TypeMacroPage *m_typeMacroPage;
QString m_previousMode;
LocationMark *m_locationMark;
diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h
index 56106a7524..6b3cbb15fe 100644
--- a/src/plugins/debugger/gdbengine.h
+++ b/src/plugins/debugger/gdbengine.h
@@ -80,7 +80,7 @@ enum DataDumperState
DataDumperUnavailable,
};
-// FIXME: Move to extra file?
+
class GdbSettings
{
public:
diff --git a/src/plugins/debugger/gdboptionpage.cpp b/src/plugins/debugger/gdboptionpage.cpp
index e05b811889..7d6742e958 100644
--- a/src/plugins/debugger/gdboptionpage.cpp
+++ b/src/plugins/debugger/gdboptionpage.cpp
@@ -58,7 +58,11 @@ GdbOptionPage::GdbOptionPage(GdbSettings *settings)
#if defined(Q_OS_WIN32)
defaultCommand.append(".exe");
#endif
+ QString defaultScript = coreIFace->resourcePath() +
+ QLatin1String("/gdb/qt4macros");
+
m_settings->m_gdbCmd = s->value("Location", defaultCommand).toString();
+ m_settings->m_scriptFile= s->value("ScriptFile", defaultScript).toString();
m_settings->m_gdbEnv = s->value("Environment", "").toString();
m_settings->m_autoRun = s->value("AutoRun", true).toBool();
m_settings->m_autoQuit = s->value("AutoQuit", true).toBool();
@@ -72,36 +76,50 @@ QString GdbOptionPage::name() const
QString GdbOptionPage::category() const
{
- return "Debugger|Gdb";
+ return "Debugger";
}
QString GdbOptionPage::trCategory() const
{
- return tr("Debugger|Gdb");
+ return tr("Debugger");
}
QWidget *GdbOptionPage::createPage(QWidget *parent)
{
QWidget *w = new QWidget(parent);
m_ui.setupUi(w);
- m_ui.gdbEdit->setText(m_settings->m_gdbCmd);
- m_ui.envEdit->setText(m_settings->m_gdbEnv);
+ 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);
- connect(m_ui.pushButtonBrowse, SIGNAL(clicked()),
- this, SLOT(browse()));
+
+ // FIXME
+ m_ui.autoStartBox->hide();
+ m_ui.autoQuitBox->hide();
+ m_ui.environmentEdit->hide();
+ m_ui.labelEnvironment->hide();
+
+ connect(m_ui.gdbLocationChooser, SIGNAL(changed()),
+ this, SLOT(onGdbLocationChanged()));
+ connect(m_ui.scriptFileChooser, SIGNAL(changed()),
+ this, SLOT(onScriptFileChanged()));
return w;
}
-void GdbOptionPage::browse()
+void GdbOptionPage::onGdbLocationChanged()
{
- QString fileName = QFileDialog::getOpenFileName(m_ui.pushButtonBrowse,
- "Browse for gdb executable");
- if (fileName.isEmpty())
- return;
- m_settings->m_gdbCmd = fileName;
- m_ui.gdbEdit->setText(fileName);
+ m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path();
+}
+
+void GdbOptionPage::onScriptFileChanged()
+{
+ m_settings->m_scriptFile = m_ui.scriptFileChooser->path();
}
void GdbOptionPage::finished(bool accepted)
@@ -109,10 +127,11 @@ void GdbOptionPage::finished(bool accepted)
if (!accepted)
return;
- m_settings->m_gdbCmd = m_ui.gdbEdit->text();
- m_settings->m_gdbEnv = m_ui.envEdit->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.scriptFileChooser->path();
Core::ICore *coreIFace = m_pm->getObject<Core::ICore>();
if (!coreIFace || !coreIFace->settings())
diff --git a/src/plugins/debugger/gdboptionpage.h b/src/plugins/debugger/gdboptionpage.h
index 1d71024bac..d306e03e20 100644
--- a/src/plugins/debugger/gdboptionpage.h
+++ b/src/plugins/debugger/gdboptionpage.h
@@ -35,7 +35,6 @@
#define GDBOPTIONPAGE_H
#include "ui_gdboptionpage.h"
-#include "ui_gdbtypemacros.h"
#include <coreplugin/dialogs/ioptionspage.h>
@@ -63,7 +62,8 @@ public:
void finished(bool accepted);
public slots:
- void browse();
+ void onGdbLocationChanged();
+ void onScriptFileChanged();
private:
ExtensionSystem::PluginManager *m_pm;
@@ -72,6 +72,7 @@ private:
GdbSettings *m_settings;
};
+#if 0
class TypeMacroPage : public Core::IOptionsPage
{
Q_OBJECT
@@ -87,7 +88,6 @@ public:
void finished(bool accepted);
private slots:
- void onScriptButton();
void onAddButton();
void onDelButton();
void currentItemChanged(QTreeWidgetItem *item);
@@ -100,6 +100,7 @@ private:
GdbSettings *m_settings;
QWidget *m_widget;
};
+#endif
} // namespace Internal
} // namespace Debugger
diff --git a/src/plugins/debugger/gdboptionpage.ui b/src/plugins/debugger/gdboptionpage.ui
index 4b58d5d714..580f13c0d6 100644
--- a/src/plugins/debugger/gdboptionpage.ui
+++ b/src/plugins/debugger/gdboptionpage.ui
@@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>433</width>
- <height>216</height>
+ <height>233</height>
</rect>
</property>
<property name="windowTitle">
@@ -23,7 +23,7 @@
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
- <string>Gdb Debug Options</string>
+ <string>Locations</string>
</property>
<layout class="QGridLayout">
<property name="margin">
@@ -32,46 +32,45 @@
<property name="spacing">
<number>6</number>
</property>
- <item row="0" column="1">
- <widget class="QLineEdit" name="gdbEdit"/>
- </item>
- <item row="1" column="1" colspan="2">
- <widget class="QLineEdit" name="envEdit"/>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="environmentEdit"/>
</item>
<item row="0" column="0">
- <widget class="QLabel" name="label">
+ <widget class="QLabel" name="labelGdbLocaltion">
+ <property name="toolTip">
+ <string>This is either a full abolute path leading to the gdb binary you intend to use or the name of a gdb binary that wiull be searched in your PATH.</string>
+ </property>
<property name="text">
<string>Gdb Location:</string>
</property>
- <property name="buddy">
- <cstring>gdbEdit</cstring>
- </property>
</widget>
</item>
<item row="1" column="0">
- <widget class="QLabel" name="label_2">
+ <widget class="QLabel" name="labelEnvironment">
<property name="text">
<string>Environment:</string>
</property>
<property name="buddy">
- <cstring>envEdit</cstring>
+ <cstring>environmentEdit</cstring>
</property>
</widget>
</item>
- <item row="0" column="2">
- <widget class="QPushButton" name="pushButtonBrowse">
- <property name="text">
- <string/>
+ <item row="2" column="0">
+ <widget class="QLabel" name="labelGdbStartupScript">
+ <property name="toolTip">
+ <string>This is either empty or points to a file containing gdb commands that will be executed immediately after gdb starts up.</string>
</property>
- <property name="icon">
- <iconset resource="../coreplugin/core.qrc">
- <normaloff>:/qworkbench/images/fileopen.png</normaloff>:/qworkbench/images/fileopen.png</iconset>
- </property>
- <property name="checkable">
- <bool>false</bool>
+ <property name="text">
+ <string>Gdb Startup Script:</string>
</property>
</widget>
</item>
+ <item row="2" column="1">
+ <widget class="Core::Utils::PathChooser" name="scriptFileChooser" native="true"/>
+ </item>
+ <item row="0" column="1">
+ <widget class="Core::Utils::PathChooser" name="gdbLocationChooser" native="true"/>
+ </item>
</layout>
</widget>
</item>
@@ -104,6 +103,14 @@
</item>
</layout>
</widget>
+ <customwidgets>
+ <customwidget>
+ <class>Core::Utils::PathChooser</class>
+ <extends>QWidget</extends>
+ <header location="global">utils/pathchooser.h</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
<resources>
<include location="../coreplugin/core.qrc"/>
</resources>
diff --git a/src/plugins/debugger/gdbtypemacros.cpp b/src/plugins/debugger/gdbtypemacros.cpp
index 8610d01e39..89178af268 100644
--- a/src/plugins/debugger/gdbtypemacros.cpp
+++ b/src/plugins/debugger/gdbtypemacros.cpp
@@ -109,6 +109,8 @@ QWidget *TypeMacroPage::createPage(QWidget *parent)
m_widget = new QWidget(parent);
m_ui.setupUi(m_widget);
+ m_ui.scriptFile->setPromptDialogTitle(tr("Select Gdb Script"));
+ m_ui.scriptFile->setExpectedKind(Core::Utils::PathChooser::File);
connect(m_ui.addButton, SIGNAL(clicked()),
this, SLOT(onAddButton()));
@@ -116,8 +118,8 @@ QWidget *TypeMacroPage::createPage(QWidget *parent)
connect(m_ui.delButton, SIGNAL(clicked()),
this, SLOT(onDelButton()));
- connect(m_ui.scriptButton, SIGNAL(clicked()),
- this, SLOT(onScriptButton()));
+ connect(m_ui.scriptFile, SIGNAL(validChanged()),
+ this, SLOT(updateButtonState()));
connect(m_ui.treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
this, SLOT(currentItemChanged(QTreeWidgetItem *)));
@@ -139,7 +141,7 @@ QWidget *TypeMacroPage::createPage(QWidget *parent)
++i;
}
- m_ui.scriptEdit->setText(m_settings->m_scriptFile);
+ m_ui.scriptFile->setPath(m_settings->m_scriptFile);
updateButtonState();
@@ -152,7 +154,7 @@ void TypeMacroPage::finished(bool accepted)
return;
m_settings->m_typeMacros.clear();
- m_settings->m_scriptFile = m_ui.scriptEdit->text();
+ m_settings->m_scriptFile = m_ui.scriptFile->path();
for (int i = 0; i < m_ui.treeWidget->topLevelItemCount(); ++i) {
QTreeWidgetItem *item = m_ui.treeWidget->topLevelItem(i);
@@ -172,13 +174,6 @@ void TypeMacroPage::finished(bool accepted)
}
}
-void TypeMacroPage::onScriptButton()
-{
- QString fileName = QFileDialog::getOpenFileName(m_widget, tr("Select Gdb Script"));
- m_ui.scriptEdit->setText(fileName);
- updateButtonState();
-}
-
void TypeMacroPage::onAddButton()
{
if (m_ui.typeEdit->text().isEmpty() || m_ui.macroEdit->text().isEmpty())
diff --git a/src/plugins/debugger/gdbtypemacros.ui b/src/plugins/debugger/gdbtypemacros.ui
index aa7215577b..f42514e4e4 100644
--- a/src/plugins/debugger/gdbtypemacros.ui
+++ b/src/plugins/debugger/gdbtypemacros.ui
@@ -1,146 +1,115 @@
-<ui version="4.0" >
- <author></author>
- <comment></comment>
- <exportmacro></exportmacro>
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>TypeMacroPage</class>
- <widget class="QWidget" name="TypeMacroPage" >
- <property name="geometry" >
+ <widget class="QWidget" name="TypeMacroPage">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>519</width>
- <height>238</height>
+ <height>263</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>Form</string>
</property>
- <layout class="QVBoxLayout" >
- <property name="margin" >
- <number>9</number>
- </property>
- <property name="spacing" >
+ <layout class="QVBoxLayout">
+ <property name="spacing">
<number>6</number>
</property>
+ <property name="margin">
+ <number>9</number>
+ </property>
<item>
- <widget class="QGroupBox" name="groupBox" >
- <property name="title" >
- <string>Script File</string>
- </property>
- <layout class="QHBoxLayout" >
- <property name="margin" >
- <number>9</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item>
- <widget class="QLineEdit" name="scriptEdit" />
- </item>
- <item>
- <widget class="QToolButton" name="scriptButton" >
- <property name="minimumSize" >
- <size>
- <width>21</width>
- <height>23</height>
- </size>
- </property>
- <property name="text" >
- <string>...</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <layout class="QGridLayout" >
- <property name="margin" >
+ <layout class="QGridLayout">
+ <property name="margin">
<number>0</number>
</property>
- <property name="spacing" >
+ <property name="spacing">
<number>6</number>
</property>
- <item row="0" column="0" colspan="2" >
- <widget class="QTreeWidget" name="treeWidget" >
- <property name="rootIsDecorated" >
+ <item row="0" column="0" colspan="2">
+ <widget class="QTreeWidget" name="treeWidget">
+ <property name="rootIsDecorated">
<bool>false</bool>
</property>
<column>
- <property name="text" >
+ <property name="text">
<string>Type</string>
</property>
</column>
<column>
- <property name="text" >
+ <property name="text">
<string>Macro</string>
</property>
</column>
</widget>
</item>
- <item row="1" column="2" >
- <widget class="QToolButton" name="addButton" >
- <property name="minimumSize" >
+ <item row="1" column="2">
+ <widget class="QToolButton" name="addButton">
+ <property name="minimumSize">
<size>
<width>21</width>
<height>23</height>
</size>
</property>
- <property name="text" >
+ <property name="text">
<string>+</string>
</property>
- <property name="icon" >
- <iconset resource="gdbdebugger.qrc" >:/gdbdebugger/images/newitem.png</iconset>
+ <property name="icon">
+ <iconset>
+ <normaloff>:/gdbdebugger/images/newitem.png</normaloff>:/gdbdebugger/images/newitem.png</iconset>
</property>
</widget>
</item>
- <item row="2" column="0" >
- <widget class="QLabel" name="label_2" >
- <property name="text" >
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
<string>Macro Name:</string>
</property>
</widget>
</item>
- <item row="3" column="0" >
- <widget class="QLabel" name="label_3" >
- <property name="text" >
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
<string>Parse as:</string>
</property>
</widget>
</item>
- <item row="2" column="1" >
- <widget class="QLineEdit" name="macroEdit" />
+ <item row="2" column="1">
+ <widget class="QLineEdit" name="macroEdit"/>
</item>
- <item row="0" column="2" >
- <layout class="QVBoxLayout" >
- <property name="margin" >
+ <item row="0" column="2">
+ <layout class="QVBoxLayout">
+ <property name="spacing">
<number>0</number>
</property>
- <property name="spacing" >
+ <property name="margin">
<number>0</number>
</property>
<item>
- <widget class="QToolButton" name="delButton" >
- <property name="minimumSize" >
+ <widget class="QToolButton" name="delButton">
+ <property name="minimumSize">
<size>
<width>21</width>
<height>23</height>
</size>
</property>
- <property name="text" >
+ <property name="text">
<string>-</string>
</property>
- <property name="icon" >
- <iconset resource="gdbdebugger.qrc" >:/gdbdebugger/images/delete.png</iconset>
+ <property name="icon">
+ <iconset>
+ <normaloff>:/gdbdebugger/images/delete.png</normaloff>:/gdbdebugger/images/delete.png</iconset>
</property>
</widget>
</item>
<item>
<spacer>
- <property name="orientation" >
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
@@ -150,25 +119,25 @@
</item>
</layout>
</item>
- <item row="1" column="1" >
- <widget class="QLineEdit" name="typeEdit" />
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="typeEdit"/>
</item>
- <item row="1" column="0" >
- <widget class="QLabel" name="label" >
- <property name="text" >
+ <item row="1" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
<string>Type:</string>
</property>
</widget>
</item>
- <item row="3" column="1" >
- <widget class="QComboBox" name="parseAsBox" >
+ <item row="3" column="1">
+ <widget class="QComboBox" name="parseAsBox">
<item>
- <property name="text" >
+ <property name="text">
<string>ASCII (char *)</string>
</property>
</item>
<item>
- <property name="text" >
+ <property name="text">
<string>Unicode (short)</string>
</property>
</item>
@@ -178,9 +147,8 @@
</item>
</layout>
</widget>
- <pixmapfunction></pixmapfunction>
<resources>
- <include location="gdbdebugger.qrc" />
+ <include location="gdbdebugger.qrc"/>
</resources>
<connections/>
</ui>
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 6f443c92b4..5328a171ae 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -411,7 +411,7 @@ static QString niceType(QString type)
"std::allocator<wchar_t> >", "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<std::pair<const (.*), (.*)\\s*> > >");
+ 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/src/plugins/designer/workbenchintegration.cpp b/src/plugins/designer/workbenchintegration.cpp
index 4e49218a5c..273aa2cfb8 100644
--- a/src/plugins/designer/workbenchintegration.cpp
+++ b/src/plugins/designer/workbenchintegration.cpp
@@ -95,7 +95,7 @@ QList<Document::Ptr> WorkbenchIntegration::findDocuments(const QString &uiFileNa
QList<Document::Ptr> docList;
// take all docs
- CppTools::CppModelManagerInterface::DocumentTable docTable = cppModelManager->documents();
+ CPlusPlus::Snapshot docTable = cppModelManager->snapshot();
foreach (Document::Ptr doc, docTable) { // we go through all documents
QStringList includes = doc->includedFiles();
foreach (QString include, includes) {
@@ -253,7 +253,7 @@ Document::Ptr WorkbenchIntegration::findDefinition(Function *functionDeclaration
QualifiedNameId *q = control.qualifiedNameId(&qualifiedName[0], qualifiedName.size());
LookupContext context(&control);
- const QMap<QString, Document::Ptr> documents = cppModelManager->documents();
+ const Snapshot documents = cppModelManager->snapshot();
foreach (Document::Ptr doc, documents) {
QList<Scope *> visibleScopes;
visibleScopes.append(doc->globalSymbols());
diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp
index e1b14cb9cc..7f0581fc3c 100644
--- a/src/plugins/git/settingspage.cpp
+++ b/src/plugins/git/settingspage.cpp
@@ -77,7 +77,7 @@ QString SettingsPage::name() const
return tr("General");
}
- QString SettingsPage::category() const
+QString SettingsPage::category() const
{
return QLatin1String("Git");
}
diff --git a/src/plugins/projectexplorer/allprojectsfilter.h b/src/plugins/projectexplorer/allprojectsfilter.h
index 3315e7b2de..448483c7a7 100644
--- a/src/plugins/projectexplorer/allprojectsfilter.h
+++ b/src/plugins/projectexplorer/allprojectsfilter.h
@@ -55,8 +55,8 @@ class AllProjectsFilter : public QuickOpen::BaseFileFilter
public:
AllProjectsFilter(ProjectExplorerPlugin *pe, Core::ICore *core);
- QString trName() const { return tr("File in any project"); }
- QString name() const { return "File in any project"; }
+ QString trName() const { return tr("Files in any project"); }
+ QString name() const { return "Files in any project"; }
QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; }
void refresh(QFutureInterface<void> &future);
diff --git a/src/plugins/projectexplorer/currentprojectfilter.h b/src/plugins/projectexplorer/currentprojectfilter.h
index bacd3a73ea..3e5d216632 100644
--- a/src/plugins/projectexplorer/currentprojectfilter.h
+++ b/src/plugins/projectexplorer/currentprojectfilter.h
@@ -55,8 +55,8 @@ class CurrentProjectFilter : public QuickOpen::BaseFileFilter
public:
CurrentProjectFilter(ProjectExplorerPlugin *pe, Core::ICore *core);
- QString trName() const { return tr("File in current project"); }
- QString name() const { return "File in current project"; }
+ QString trName() const { return tr("Files in current project"); }
+ QString name() const { return "Files in current project"; }
QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Low; }
void refresh(QFutureInterface<void> &future);
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index c926320193..9e47ac404d 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -498,12 +498,8 @@ void Qt4Project::updateCodeModel()
pinfo.sourceFiles = files;
modelmanager->updateProjectInfo(pinfo);
-
- modelmanager->GC();
modelmanager->updateSourceFiles(pinfo.sourceFiles);
}
-
- // update info
}
diff --git a/src/plugins/quickopen/directoryfilter.cpp b/src/plugins/quickopen/directoryfilter.cpp
index afc22af054..30f7fc28fa 100644
--- a/src/plugins/quickopen/directoryfilter.cpp
+++ b/src/plugins/quickopen/directoryfilter.cpp
@@ -62,7 +62,7 @@ QByteArray DirectoryFilter::saveState() const
out << m_directories;
out << m_filters;
out << shortcutString();
- out << defaultActiveState();
+ out << isIncludedByDefault();
out << m_files;
return value;
}
@@ -120,7 +120,7 @@ bool DirectoryFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
m_ui.directoryList->addItems(m_directories);
m_ui.fileTypeEdit->setText(m_filters.join(tr(",")));
m_ui.shortcutEdit->setText(shortcutString());
- m_ui.defaultFlag->setChecked(!defaultActiveState());
+ m_ui.defaultFlag->setChecked(!isIncludedByDefault());
updateOptionButtons();
if (dialog.exec() == QDialog::Accepted) {
QMutexLocker locker(&m_lock);
diff --git a/src/plugins/quickopen/filesystemfilter.cpp b/src/plugins/quickopen/filesystemfilter.cpp
index 386523ebc4..4631a8d934 100644
--- a/src/plugins/quickopen/filesystemfilter.cpp
+++ b/src/plugins/quickopen/filesystemfilter.cpp
@@ -114,7 +114,7 @@ bool FileSystemFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
ui.setupUi(&dialog);
ui.hiddenFilesFlag->setChecked(m_includeHidden);
- ui.limitCheck->setChecked(!defaultActiveState());
+ ui.limitCheck->setChecked(!isIncludedByDefault());
ui.shortcutEdit->setText(shortcutString());
if (dialog.exec() == QDialog::Accepted) {
@@ -132,7 +132,7 @@ QByteArray FileSystemFilter::saveState() const
QDataStream out(&value, QIODevice::WriteOnly);
out << m_includeHidden;
out << shortcutString();
- out << defaultActiveState();
+ out << isIncludedByDefault();
return value;
}
diff --git a/src/plugins/quickopen/filesystemfilter.h b/src/plugins/quickopen/filesystemfilter.h
index 0e895a45aa..a404da038f 100644
--- a/src/plugins/quickopen/filesystemfilter.h
+++ b/src/plugins/quickopen/filesystemfilter.h
@@ -56,8 +56,8 @@ class FileSystemFilter : public QuickOpen::IQuickOpenFilter
public:
FileSystemFilter(Core::EditorManager *editorManager, QuickOpenToolWindow *toolWindow);
- QString trName() const { return tr("File in file system"); }
- QString name() const { return "File in file system"; }
+ QString trName() const { return tr("Files in file system"); }
+ QString name() const { return "Files in file system"; }
QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Medium; }
QList<QuickOpen::FilterEntry> matchesFor(const QString &entry);
void accept(QuickOpen::FilterEntry selection) const;
diff --git a/src/plugins/quickopen/iquickopenfilter.cpp b/src/plugins/quickopen/iquickopenfilter.cpp
index ad6441ca28..82922e3ba2 100644
--- a/src/plugins/quickopen/iquickopenfilter.cpp
+++ b/src/plugins/quickopen/iquickopenfilter.cpp
@@ -43,7 +43,9 @@
using namespace QuickOpen;
IQuickOpenFilter::IQuickOpenFilter(QObject *parent):
- QObject(parent)
+ QObject(parent),
+ m_includedByDefault(false),
+ m_hidden(false)
{
}
@@ -62,7 +64,7 @@ QByteArray IQuickOpenFilter::saveState() const
QByteArray value;
QDataStream out(&value, QIODevice::WriteOnly);
out << shortcutString();
- out << defaultActiveState();
+ out << isIncludedByDefault();
return value;
}
@@ -91,7 +93,7 @@ bool IQuickOpenFilter::openConfigDialog(QWidget *parent, bool &needsRefresh)
QHBoxLayout *hlayout = new QHBoxLayout;
QLineEdit *shortcutEdit = new QLineEdit(shortcutString());
QCheckBox *limitCheck = new QCheckBox(tr("Limit to prefix"));
- limitCheck->setChecked(!defaultActiveState());
+ limitCheck->setChecked(!isIncludedByDefault());
hlayout->addWidget(new QLabel(tr("Prefix:")));
hlayout->addWidget(shortcutEdit);
@@ -120,12 +122,22 @@ bool IQuickOpenFilter::isConfigurable() const
return true;
}
-bool IQuickOpenFilter::defaultActiveState() const
+bool IQuickOpenFilter::isIncludedByDefault() const
{
- return m_default;
+ return m_includedByDefault;
}
void IQuickOpenFilter::setIncludedByDefault(bool includedByDefault)
{
- m_default = includedByDefault;
+ m_includedByDefault = includedByDefault;
+}
+
+bool IQuickOpenFilter::isHidden() const
+{
+ return m_hidden;
+}
+
+void IQuickOpenFilter::setHidden(bool hidden)
+{
+ m_hidden = hidden;
}
diff --git a/src/plugins/quickopen/iquickopenfilter.h b/src/plugins/quickopen/iquickopenfilter.h
index 376b0d0fe9..d5591ac940 100644
--- a/src/plugins/quickopen/iquickopenfilter.h
+++ b/src/plugins/quickopen/iquickopenfilter.h
@@ -87,26 +87,25 @@ public:
IQuickOpenFilter(QObject *parent = 0);
virtual ~IQuickOpenFilter() {}
- /* visible name */
+ /* Visible name. */
virtual QString trName() const = 0;
- /* internal name */
+ /* Internal name. */
virtual QString name() const = 0;
- /* selection list order in case of multiple active filters (high goes on top) */
+ /* Selection list order in case of multiple active filters (high goes on top). */
virtual Priority priority() const = 0;
- /* string to type to use this filter exclusively */
- virtual QString shortcutString() const;
- void setShortcutString(const QString &shortcut);
+ /* String to type to use this filter exclusively. */
+ QString shortcutString() const;
- /* list of matches for the given user entry */
+ /* List of matches for the given user entry. */
virtual QList<FilterEntry> matchesFor(const QString &entry) = 0;
- /* user has selected the given entry that belongs to this filter */
+ /* User has selected the given entry that belongs to this filter. */
virtual void accept(FilterEntry selection) const = 0;
- /* implement to update caches on user request, if that's a long operation */
+ /* Implement to update caches on user request, if that's a long operation. */
virtual void refresh(QFutureInterface<void> &future) = 0;
/* Saved state is used to restore the filter at start up. */
@@ -126,9 +125,11 @@ public:
* implementation returns true. */
virtual bool isConfigurable() const;
- /* is this filter used also when the shortcutString is not used? */
- virtual bool defaultActiveState() const;
- void setIncludedByDefault(bool includedByDefault);
+ /* Is this filter used also when the shortcutString is not used? */
+ bool isIncludedByDefault() const;
+
+ /* Returns whether the filter should be hidden from configuration and menus. */
+ bool isHidden() const;
static QString trimWildcards(const QString &str) {
if (str.isEmpty())
@@ -143,9 +144,15 @@ public:
return str.mid(first, last-first+1);
}
+protected:
+ void setShortcutString(const QString &shortcut);
+ void setIncludedByDefault(bool includedByDefault);
+ void setHidden(bool hidden);
+
private:
QString m_shortcut;
- bool m_default;
+ bool m_includedByDefault;
+ bool m_hidden;
};
} // namespace QuickOpen
diff --git a/src/plugins/quickopen/opendocumentsfilter.h b/src/plugins/quickopen/opendocumentsfilter.h
index 7b24aeeca0..6957119727 100644
--- a/src/plugins/quickopen/opendocumentsfilter.h
+++ b/src/plugins/quickopen/opendocumentsfilter.h
@@ -54,8 +54,8 @@ class OpenDocumentsFilter : public QuickOpen::IQuickOpenFilter
public:
OpenDocumentsFilter(Core::EditorManager *editorManager);
- QString trName() const { return tr("Open document"); }
- QString name() const { return "Open document"; }
+ QString trName() const { return tr("Open documents"); }
+ QString name() const { return "Open documents"; }
QuickOpen::IQuickOpenFilter::Priority priority() const { return QuickOpen::IQuickOpenFilter::Medium; }
QList<QuickOpen::FilterEntry> matchesFor(const QString &entry);
void accept(QuickOpen::FilterEntry selection) const;
diff --git a/src/plugins/quickopen/quickopenfiltersfilter.cpp b/src/plugins/quickopen/quickopenfiltersfilter.cpp
index e8a487c7d9..519c56daec 100644
--- a/src/plugins/quickopen/quickopenfiltersfilter.cpp
+++ b/src/plugins/quickopen/quickopenfiltersfilter.cpp
@@ -49,7 +49,7 @@ QuickOpenFiltersFilter::QuickOpenFiltersFilter(QuickOpenPlugin *plugin,
m_icon(QIcon(Core::Constants::ICON_NEXT))
{
setIncludedByDefault(true);
- setShortcutString(QString());
+ setHidden(true);
}
QString QuickOpenFiltersFilter::trName() const
@@ -71,8 +71,8 @@ QList<FilterEntry> QuickOpenFiltersFilter::matchesFor(const QString &entry)
{
QList<FilterEntry> entries;
if (entry.isEmpty()) {
- foreach (IQuickOpenFilter* filter, m_plugin->filter()) {
- if (!filter->shortcutString().isEmpty()) {
+ foreach (IQuickOpenFilter *filter, m_plugin->filter()) {
+ if (!filter->shortcutString().isEmpty() && !filter->isHidden()) {
FilterEntry entry(this,
filter->shortcutString(),
QVariant::fromValue(filter),
diff --git a/src/plugins/quickopen/quickopentoolwindow.cpp b/src/plugins/quickopen/quickopentoolwindow.cpp
index 211947be8d..9701923515 100644
--- a/src/plugins/quickopen/quickopentoolwindow.cpp
+++ b/src/plugins/quickopen/quickopentoolwindow.cpp
@@ -314,7 +314,7 @@ void QuickOpenToolWindow::updateFilterList()
{
m_filterMenu->clear();
foreach (IQuickOpenFilter *filter, m_quickOpenPlugin->filter()) {
- if (!filter->shortcutString().isEmpty()) {
+ if (!filter->shortcutString().isEmpty() && !filter->isHidden()) {
QAction *action = m_filterMenu->addAction(filter->trName(), this, SLOT(filterSelected()));
action->setData(qVariantFromValue(filter));
}
@@ -396,7 +396,7 @@ QList<IQuickOpenFilter*> QuickOpenToolWindow::filtersFor(const QString &text, QS
searchText = text;
QList<IQuickOpenFilter*> activeFilters;
foreach (IQuickOpenFilter *filter, filters)
- if (filter->defaultActiveState())
+ if (filter->isIncludedByDefault())
activeFilters << filter;
return activeFilters;
}
diff --git a/src/plugins/quickopen/settingspage.cpp b/src/plugins/quickopen/settingspage.cpp
index 76263c731b..4b1f81fc86 100644
--- a/src/plugins/quickopen/settingspage.cpp
+++ b/src/plugins/quickopen/settingspage.cpp
@@ -121,8 +121,11 @@ void SettingsPage::updateFilterList()
{
m_ui.filterList->clear();
foreach (IQuickOpenFilter *filter, m_filters) {
+ if (filter->isHidden())
+ continue;
+
QString title;
- if (filter->defaultActiveState())
+ if (filter->isIncludedByDefault())
title = filter->trName();
else
title = tr("%1 (Prefix: %2)").arg(filter->trName()).arg(filter->shortcutString());
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 59ee2c005a..1cff254452 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -735,12 +735,15 @@ void BaseTextEditor::moveLineUpDown(bool up)
move.clearSelection();
move.insertText(text);
int end = move.position();
- move.endEditBlock();
+
if (hasSelection) {
move.setPosition(start);
move.setPosition(end, QTextCursor::KeepAnchor);
}
+ indent(document(), move, QChar::Null);
+ move.endEditBlock();
+
setTextCursor(move);
}
@@ -2514,7 +2517,7 @@ void BaseTextEditor::extraAreaMouseEvent(QMouseEvent *e)
}
} else if (e->button() == Qt::RightButton) {
QMenu * contextMenu = new QMenu(this);
- emit d->m_editable->markContextMenuRequested(editableInterface(), cursor.blockNumber(), contextMenu);
+ emit d->m_editable->markContextMenuRequested(editableInterface(), cursor.blockNumber() + 1, contextMenu);
if (!contextMenu->isEmpty())
contextMenu->exec(e->globalPos());
delete contextMenu;
@@ -2765,6 +2768,8 @@ void BaseTextEditor::handleHomeKey(bool anchor)
while (character == tab || character.category() == QChar::Separator_Space) {
++pos;
+ if (pos == initpos)
+ break;
character = characterAt(pos);
}
@@ -2952,12 +2957,13 @@ void BaseTextEditor::markBlocksAsChanged(QList<int> blockNumbers) {
TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor *cursor, QChar c)
{
- if (!TextEditDocumentLayout::hasParentheses(cursor->block()))
+ QTextBlock block = cursor->block();
+ if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block))
return NoMatch;
- Parentheses parenList = TextEditDocumentLayout::parentheses(cursor->block());
+ Parentheses parenList = TextEditDocumentLayout::parentheses(block);
Parenthesis openParen, closedParen;
- QTextBlock closedParenParag = cursor->block();
+ QTextBlock closedParenParag = block;
const int cursorPos = cursor->position() - closedParenParag.position();
int i = 0;
@@ -2982,7 +2988,8 @@ TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor
closedParenParag = closedParenParag.next();
if (!closedParenParag.isValid())
return NoMatch;
- if (TextEditDocumentLayout::hasParentheses(closedParenParag)) {
+ if (TextEditDocumentLayout::hasParentheses(closedParenParag)
+ && !TextEditDocumentLayout::ifdefedOut(closedParenParag)) {
parenList = TextEditDocumentLayout::parentheses(closedParenParag);
break;
}
@@ -3019,12 +3026,13 @@ TextBlockUserData::MatchType TextBlockUserData::checkOpenParenthesis(QTextCursor
TextBlockUserData::MatchType TextBlockUserData::checkClosedParenthesis(QTextCursor *cursor, QChar c)
{
- if (!TextEditDocumentLayout::hasParentheses(cursor->block()))
+ QTextBlock block = cursor->block();
+ if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block))
return NoMatch;
- Parentheses parenList = TextEditDocumentLayout::parentheses(cursor->block());
+ Parentheses parenList = TextEditDocumentLayout::parentheses(block);
Parenthesis openParen, closedParen;
- QTextBlock openParenParag = cursor->block();
+ QTextBlock openParenParag = block;
const int cursorPos = cursor->position() - openParenParag.position();
int i = parenList.count() - 1;
@@ -3050,7 +3058,8 @@ TextBlockUserData::MatchType TextBlockUserData::checkClosedParenthesis(QTextCurs
if (!openParenParag.isValid())
return NoMatch;
- if (TextEditDocumentLayout::hasParentheses(openParenParag)) {
+ if (TextEditDocumentLayout::hasParentheses(openParenParag)
+ && !TextEditDocumentLayout::ifdefedOut(openParenParag)) {
parenList = TextEditDocumentLayout::parentheses(openParenParag);
break;
}
@@ -3092,7 +3101,7 @@ bool TextBlockUserData::findPreviousOpenParenthesis(QTextCursor *cursor, bool se
int ignore = 0;
while (block.isValid()) {
Parentheses parenList = TextEditDocumentLayout::parentheses(block);
- if (!parenList.isEmpty()) {
+ if (!parenList.isEmpty() && !TextEditDocumentLayout::ifdefedOut(block)) {
for (int i = parenList.count()-1; i >= 0; --i) {
Parenthesis paren = parenList.at(i);
if (block == cursor->block() && position - block.position() <= paren.pos + 1)
@@ -3119,7 +3128,7 @@ bool TextBlockUserData::findNextClosingParenthesis(QTextCursor *cursor, bool sel
int ignore = 0;
while (block.isValid()) {
Parentheses parenList = TextEditDocumentLayout::parentheses(block);
- if (!parenList.isEmpty()) {
+ if (!parenList.isEmpty() && !TextEditDocumentLayout::ifdefedOut(block)) {
for (int i = 0; i < parenList.count(); ++i) {
Parenthesis paren = parenList.at(i);
if (block == cursor->block() && position - block.position() >= paren.pos)
@@ -3144,7 +3153,7 @@ TextBlockUserData::MatchType TextBlockUserData::matchCursorBackward(QTextCursor
cursor->clearSelection();
const QTextBlock block = cursor->block();
- if (!TextEditDocumentLayout::hasParentheses(block))
+ if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block))
return NoMatch;
const int relPos = cursor->position() - block.position();
@@ -3166,7 +3175,7 @@ TextBlockUserData::MatchType TextBlockUserData::matchCursorForward(QTextCursor *
cursor->clearSelection();
const QTextBlock block = cursor->block();
- if (!TextEditDocumentLayout::hasParentheses(block))
+ if (!TextEditDocumentLayout::hasParentheses(block) || TextEditDocumentLayout::ifdefedOut(block))
return NoMatch;
const int relPos = cursor->position() - block.position();
diff --git a/src/plugins/texteditor/generalsettingspage.ui b/src/plugins/texteditor/generalsettingspage.ui
index 11f6b8b997..140f94628d 100644
--- a/src/plugins/texteditor/generalsettingspage.ui
+++ b/src/plugins/texteditor/generalsettingspage.ui
@@ -66,6 +66,9 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
<property name="maximum">
<number>20</number>
</property>
@@ -132,6 +135,9 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
<property name="maximum">
<number>20</number>
</property>