diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/coreplugin/externaltool.cpp | 4 | ||||
-rw-r--r-- | src/plugins/cppeditor/cpphighlighter.cpp | 4 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerplugin.cpp | 4 | ||||
-rw-r--r-- | src/plugins/debugger/qml/qmlcppengine.cpp | 6 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimhandler.cpp | 1 | ||||
-rw-r--r-- | src/plugins/fakevim/fakevimplugin.cpp | 8 | ||||
-rw-r--r-- | src/plugins/git/branchmodel.cpp | 7 | ||||
-rw-r--r-- | src/plugins/texteditor/basetextdocumentlayout.cpp | 66 | ||||
-rw-r--r-- | src/plugins/texteditor/basetextdocumentlayout.h | 16 | ||||
-rw-r--r-- | src/plugins/texteditor/syntaxhighlighter.cpp | 10 |
10 files changed, 115 insertions, 11 deletions
diff --git a/src/plugins/coreplugin/externaltool.cpp b/src/plugins/coreplugin/externaltool.cpp index eba664430c..2681ebb2f0 100644 --- a/src/plugins/coreplugin/externaltool.cpp +++ b/src/plugins/coreplugin/externaltool.cpp @@ -45,6 +45,7 @@ #include <utils/environment.h> #include <utils/fileutils.h> +#include <QtCore/QCoreApplication> #include <QtCore/QXmlStreamReader> #include <QtCore/QXmlStreamWriter> #include <QtCore/QDir> @@ -316,7 +317,8 @@ static void localizedText(const QStringList &locales, QXmlStreamReader *reader, } } else { if (*currentLocale < 0 && currentText->isEmpty()) { - *currentText = reader->readElementText(); + *currentText = QCoreApplication::translate("Core::Internal::ExternalTool", + reader->readElementText().toLatin1().constData()); } else { reader->skipCurrentElement(); } diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp index c105e2859d..a413892fb5 100644 --- a/src/plugins/cppeditor/cpphighlighter.cpp +++ b/src/plugins/cppeditor/cpphighlighter.cpp @@ -239,13 +239,17 @@ void CppHighlighter::highlightBlock(const QString &text) int oldState = currentState & 0xff; int oldBraceDepth = currentState >> 8; if (oldState == tokenize.state() && oldBraceDepth != braceDepth) { + BaseTextDocumentLayout::FoldValidator foldValidor; + foldValidor.setup(qobject_cast<BaseTextDocumentLayout *>(document()->documentLayout())); int delta = braceDepth - oldBraceDepth; QTextBlock block = currentBlock().next(); while (block.isValid() && block.userState() != -1) { BaseTextDocumentLayout::changeBraceDepth(block, delta); BaseTextDocumentLayout::changeFoldingIndent(block, delta); + foldValidor.process(block); block = block.next(); } + foldValidor.finalize(); } } diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 7602dd062d..9093622ea8 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -904,7 +904,7 @@ public slots: { const QAction *action = qobject_cast<const QAction *>(sender()); QTC_ASSERT(action, return); - const ContextData data = action->data().value<ContextData>(); + const BreakpointMenuContextData data = action->data().value<BreakpointMenuContextData>(); currentEngine()->executeRunToLine(data); } @@ -912,7 +912,7 @@ public slots: { const QAction *action = qobject_cast<const QAction *>(sender()); QTC_ASSERT(action, return); - const ContextData data = action->data().value<ContextData>(); + const BreakpointMenuContextData data = action->data().value<BreakpointMenuContextData>(); currentEngine()->executeJumpToLine(data); } diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index 2c45927cda..19203fa3a4 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -413,7 +413,11 @@ void QmlCppEngine::executeJumpToLine(const ContextData &data) void QmlCppEngine::executeDebuggerCommand(const QString &command) { - d->m_cppEngine->executeDebuggerCommand(command); + if (d->m_qmlEngine->state() == InferiorStopOk) { + d->m_qmlEngine->executeDebuggerCommand(command); + } else { + d->m_cppEngine->executeDebuggerCommand(command); + } } ///////////////////////////////////////////////////////// diff --git a/src/plugins/fakevim/fakevimhandler.cpp b/src/plugins/fakevim/fakevimhandler.cpp index fa63f3d8f6..96d7d87859 100644 --- a/src/plugins/fakevim/fakevimhandler.cpp +++ b/src/plugins/fakevim/fakevimhandler.cpp @@ -3915,7 +3915,6 @@ void FakeVimHandler::Private::highlightMatches(const QString &needle) sel.cursor = tc; sel.format = tc.blockCharFormat(); sel.format.setBackground(QColor(177, 177, 0)); - sel.format.setForeground(Qt::black); m_searchSelections.append(sel); if (document()->characterAt(tc.position()) == ParagraphSeparator) tc.movePosition(Right, MoveAnchor); diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index 6629f3d4f1..4bb47b9c15 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -997,6 +997,10 @@ bool FakeVimPluginPrivate::initialize() Constants::INSTALL_HANDLER, globalcontext); cmd->setDefaultKeySequence(QKeySequence(Constants::INSTALL_KEY)); + ActionContainer *advancedMenu = + actionManager()->actionContainer(Core::Constants::M_EDIT_ADVANCED); + advancedMenu->addAction(cmd, Core::Constants::G_EDIT_EDITOR); + for (int i = 1; i < 10; ++i) { QAction *act = new QAction(this); act->setText(QString("Execute User Action #%1").arg(i)); @@ -1008,10 +1012,6 @@ bool FakeVimPluginPrivate::initialize() connect(act, SIGNAL(triggered()), SLOT(userActionTriggered())); } - ActionContainer *advancedMenu = - actionManager()->actionContainer(Core::Constants::M_EDIT_ADVANCED); - advancedMenu->addAction(cmd, Core::Constants::G_EDIT_EDITOR); - connect(m_core, SIGNAL(coreAboutToClose()), this, SLOT(onCoreAboutToClose())); // EditorManager diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp index 5d1712aeee..3b562c6816 100644 --- a/src/plugins/git/branchmodel.cpp +++ b/src/plugins/git/branchmodel.cpp @@ -448,8 +448,11 @@ void BranchModel::checkoutBranch(const QModelIndex &idx) } if (m_client->synchronousCheckoutBranch(m_workingDirectory, branch, &errorMessage)) { if (errorMessage.isEmpty()) { - static_cast<BranchNode *>(currentBranch().internalPointer())->current = false; - emit dataChanged(currentBranch(), currentBranch()); + QModelIndex currentIdx = currentBranch(); + if (currentIdx.isValid()) { + static_cast<BranchNode *>(currentIdx.internalPointer())->current = false; + emit dataChanged(currentBranch(), currentBranch()); + } static_cast<BranchNode *>(idx.internalPointer())->current = true; emit dataChanged(idx, idx); } else { diff --git a/src/plugins/texteditor/basetextdocumentlayout.cpp b/src/plugins/texteditor/basetextdocumentlayout.cpp index f6357e9035..d0d6fe04ba 100644 --- a/src/plugins/texteditor/basetextdocumentlayout.cpp +++ b/src/plugins/texteditor/basetextdocumentlayout.cpp @@ -575,3 +575,69 @@ QSizeF BaseTextDocumentLayout::documentSize() const size.setWidth(qMax((qreal)m_requiredWidth, size.width())); return size; } + +BaseTextDocumentLayout::FoldValidator::FoldValidator() + : m_layout(0) + , m_requestDocUpdate(false) + , m_insideFold(0) +{} + +void BaseTextDocumentLayout::FoldValidator::setup(BaseTextDocumentLayout *layout) +{ + m_layout = layout; +} + +void BaseTextDocumentLayout::FoldValidator::reset() +{ + m_insideFold = 0; + m_requestDocUpdate = false; +} + +void BaseTextDocumentLayout::FoldValidator::process(QTextBlock block) +{ + if (!m_layout) + return; + + const QTextBlock &previous = block.previous(); + if (!previous.isValid()) + return; + + if ((BaseTextDocumentLayout::isFolded(previous) + && !BaseTextDocumentLayout::canFold(previous)) + || (!BaseTextDocumentLayout::isFolded(previous) + && BaseTextDocumentLayout::canFold(previous) + && !block.isVisible())) { + BaseTextDocumentLayout::setFolded(previous, !BaseTextDocumentLayout::isFolded(previous)); + } + + if (BaseTextDocumentLayout::isFolded(previous) && !m_insideFold) + m_insideFold = BaseTextDocumentLayout::foldingIndent(block); + + bool toggleVisibility = false; + if (m_insideFold) { + if (BaseTextDocumentLayout::foldingIndent(block) >= m_insideFold) { + if (block.isVisible()) + toggleVisibility = true; + } else { + m_insideFold = 0; + if (!block.isVisible()) + toggleVisibility = true; + } + } else if (!block.isVisible()) { + toggleVisibility = true; + } + + if (toggleVisibility) { + block.setVisible(!block.isVisible()); + block.setLineCount(block.isVisible() ? qMax(1, block.layout()->lineCount()) : 0); + m_requestDocUpdate = true; + } +} + +void BaseTextDocumentLayout::FoldValidator::finalize() +{ + if (m_requestDocUpdate && m_layout) { + m_layout->requestUpdate(); + m_layout->emitDocumentSizeChanged(); + } +} diff --git a/src/plugins/texteditor/basetextdocumentlayout.h b/src/plugins/texteditor/basetextdocumentlayout.h index fb115bc3e4..6930e5d0a7 100644 --- a/src/plugins/texteditor/basetextdocumentlayout.h +++ b/src/plugins/texteditor/basetextdocumentlayout.h @@ -174,6 +174,22 @@ public: static bool isFolded(const QTextBlock &block); static void setFolded(const QTextBlock &block, bool folded); + class TEXTEDITOR_EXPORT FoldValidator + { + public: + FoldValidator(); + + void setup(BaseTextDocumentLayout *layout); + void reset(); + void process(QTextBlock block); + void finalize(); + + private: + BaseTextDocumentLayout *m_layout; + bool m_requestDocUpdate; + int m_insideFold; + }; + static TextBlockUserData *testUserData(const QTextBlock &block) { return static_cast<TextBlockUserData*>(block.userData()); } diff --git a/src/plugins/texteditor/syntaxhighlighter.cpp b/src/plugins/texteditor/syntaxhighlighter.cpp index f10b203786..876433ea7b 100644 --- a/src/plugins/texteditor/syntaxhighlighter.cpp +++ b/src/plugins/texteditor/syntaxhighlighter.cpp @@ -31,6 +31,7 @@ #include "syntaxhighlighter.h" #include "basetextdocument.h" +#include "basetextdocumentlayout.h" #include <qtextdocument.h> #include <qtextlayout.h> @@ -76,10 +77,12 @@ public: } void applyFormatChanges(int from, int charsRemoved, int charsAdded); + QVector<QTextCharFormat> formatChanges; QTextBlock currentBlock; bool rehighlightPending; bool inReformatBlocks; + BaseTextDocumentLayout::FoldValidator foldValidator; }; static bool adjustRange(QTextLayout::FormatRange &range, int from, int charsRemoved, int charsAdded) { @@ -180,6 +183,8 @@ void SyntaxHighlighterPrivate::_q_reformatBlocks(int from, int charsRemoved, int void SyntaxHighlighterPrivate::reformatBlocks(int from, int charsRemoved, int charsAdded) { + foldValidator.reset(); + rehighlightPending = false; QTextBlock block = doc->findBlock(from); @@ -206,6 +211,8 @@ void SyntaxHighlighterPrivate::reformatBlocks(int from, int charsRemoved, int ch } formatChanges.clear(); + + foldValidator.finalize(); } void SyntaxHighlighterPrivate::reformatBlock(const QTextBlock &block, int from, int charsRemoved, int charsAdded) @@ -220,6 +227,8 @@ void SyntaxHighlighterPrivate::reformatBlock(const QTextBlock &block, int from, q->highlightBlock(block.text()); applyFormatChanges(from, charsRemoved, charsAdded); + foldValidator.process(currentBlock); + currentBlock = QTextBlock(); } @@ -375,6 +384,7 @@ void SyntaxHighlighter::setDocument(QTextDocument *doc) this, SLOT(_q_reformatBlocks(int,int,int))); d->rehighlightPending = true; QTimer::singleShot(0, this, SLOT(_q_delayedRehighlight())); + d->foldValidator.setup(qobject_cast<BaseTextDocumentLayout *>(doc->documentLayout())); } } |