summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/coreplugin/externaltool.cpp4
-rw-r--r--src/plugins/cppeditor/cpphighlighter.cpp4
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp4
-rw-r--r--src/plugins/debugger/qml/qmlcppengine.cpp6
-rw-r--r--src/plugins/fakevim/fakevimhandler.cpp1
-rw-r--r--src/plugins/fakevim/fakevimplugin.cpp8
-rw-r--r--src/plugins/git/branchmodel.cpp7
-rw-r--r--src/plugins/texteditor/basetextdocumentlayout.cpp66
-rw-r--r--src/plugins/texteditor/basetextdocumentlayout.h16
-rw-r--r--src/plugins/texteditor/syntaxhighlighter.cpp10
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()));
}
}