aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-07-19 11:27:28 +0200
committerhjk <hjk121@nokiamail.com>2014-07-23 10:38:31 +0200
commitcf8a614419fe07912ca959410cebf995a5ff9b4d (patch)
treef98c0cb436d2fcaf127e12e981e1ab4b6b17bd1e
parent53bfd5285de2633f560ed5a2c5d5bd42b78a1c99 (diff)
Merge ITextMark and BaseTextMark
Turns out we don't even need two-phase initialization, by transparently postponing registration until we get a non-empty file name, either at constuction, or at file name change times. Change-Id: I3e87e47c820066e6707e946fc474ab9c1993e61f Reviewed-by: Eike Ziller <eike.ziller@digia.com>
-rw-r--r--src/plugins/bookmarks/bookmark.cpp10
-rw-r--r--src/plugins/bookmarks/bookmark.h5
-rw-r--r--src/plugins/bookmarks/bookmarkmanager.cpp5
-rw-r--r--src/plugins/cpptools/cpptoolseditorsupport.h2
-rw-r--r--src/plugins/debugger/breakhandler.cpp4
-rw-r--r--src/plugins/debugger/breakpointmarker.cpp8
-rw-r--r--src/plugins/debugger/breakpointmarker.h4
-rw-r--r--src/plugins/debugger/debuggerengine.cpp7
-rw-r--r--src/plugins/debugger/disassembleragent.cpp14
-rw-r--r--src/plugins/debugger/sourceagent.cpp7
-rw-r--r--src/plugins/fakevim/fakevimplugin.cpp2
-rw-r--r--src/plugins/projectexplorer/task.cpp4
-rw-r--r--src/plugins/projectexplorer/task.h8
-rw-r--r--src/plugins/projectexplorer/taskhub.cpp15
-rw-r--r--src/plugins/texteditor/basetextdocument.cpp12
-rw-r--r--src/plugins/texteditor/basetextdocument.h14
-rw-r--r--src/plugins/texteditor/basetextdocumentlayout.cpp10
-rw-r--r--src/plugins/texteditor/basetextdocumentlayout.h7
-rw-r--r--src/plugins/texteditor/basetexteditor.cpp6
-rw-r--r--src/plugins/texteditor/basetextmark.h60
-rw-r--r--src/plugins/texteditor/itexteditor.h4
-rw-r--r--src/plugins/texteditor/itextmark.cpp143
-rw-r--r--src/plugins/texteditor/texteditor.pro8
-rw-r--r--src/plugins/texteditor/texteditor.qbs8
-rw-r--r--src/plugins/texteditor/texteditorplugin.cpp6
-rw-r--r--src/plugins/texteditor/texteditorplugin.h6
-rw-r--r--src/plugins/texteditor/textmark.cpp (renamed from src/plugins/texteditor/basetextmark.cpp)205
-rw-r--r--src/plugins/texteditor/textmark.h (renamed from src/plugins/texteditor/itextmark.h)29
-rw-r--r--src/plugins/texteditor/textmarkregistry.h (renamed from src/plugins/texteditor/basetextmarkregistry.h)12
-rw-r--r--src/plugins/valgrind/callgrindtextmark.cpp4
-rw-r--r--src/plugins/valgrind/callgrindtextmark.h4
-rw-r--r--src/plugins/valgrind/callgrindtool.cpp4
32 files changed, 265 insertions, 372 deletions
diff --git a/src/plugins/bookmarks/bookmark.cpp b/src/plugins/bookmarks/bookmark.cpp
index 16e6d21780..e64a91be7e 100644
--- a/src/plugins/bookmarks/bookmark.cpp
+++ b/src/plugins/bookmarks/bookmark.cpp
@@ -37,10 +37,10 @@
using namespace Bookmarks::Internal;
Bookmark::Bookmark(const QString& fileName, int lineNumber, BookmarkManager *manager) :
- BaseTextMark(fileName, lineNumber),
+ TextMark(fileName, lineNumber),
m_manager(manager)
{
- setPriority(TextEditor::ITextMark::NormalPriority);
+ setPriority(TextEditor::TextMark::NormalPriority);
setIcon(m_manager->bookmarkIcon());
}
@@ -52,7 +52,7 @@ void Bookmark::removedFromEditor()
void Bookmark::updateLineNumber(int line)
{
if (line != lineNumber()) {
- BaseTextMark::updateLineNumber(line);
+ TextMark::updateLineNumber(line);
m_manager->updateBookmark(this);
}
}
@@ -60,7 +60,7 @@ void Bookmark::updateLineNumber(int line)
void Bookmark::move(int line)
{
if (line != lineNumber()) {
- BaseTextMark::move(line);
+ TextMark::move(line);
m_manager->updateBookmark(this);
}
}
@@ -75,7 +75,7 @@ void Bookmark::updateBlock(const QTextBlock &block)
void Bookmark::updateFileName(const QString &fileName)
{
- BaseTextMark::updateFileName(fileName);
+ TextMark::updateFileName(fileName);
m_manager->updateBookmark(this);
}
diff --git a/src/plugins/bookmarks/bookmark.h b/src/plugins/bookmarks/bookmark.h
index 5ac9db50d5..2388f6b9d0 100644
--- a/src/plugins/bookmarks/bookmark.h
+++ b/src/plugins/bookmarks/bookmark.h
@@ -30,15 +30,14 @@
#ifndef BOOKMARK_H
#define BOOKMARK_H
-#include <texteditor/itexteditor.h>
-#include <texteditor/basetextmark.h>
+#include <texteditor/textmark.h>
namespace Bookmarks {
namespace Internal {
class BookmarkManager;
-class Bookmark : public TextEditor::BaseTextMark
+class Bookmark : public TextEditor::TextMark
{
public:
Bookmark(const QString &fileName, int lineNumber, BookmarkManager *manager);
diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp
index c398a53702..1c10d1b8c5 100644
--- a/src/plugins/bookmarks/bookmarkmanager.cpp
+++ b/src/plugins/bookmarks/bookmarkmanager.cpp
@@ -429,9 +429,7 @@ void BookmarkManager::toggleBookmark(const QString &fileName, int lineNumber)
}
// Add a new bookmark if no bookmark existed on this line
- Bookmark *bookmark = new Bookmark(fileName, editorLine, this);
- bookmark->init();
- addBookmark(bookmark);
+ addBookmark(new Bookmark(fileName, editorLine, this));
}
void BookmarkManager::updateBookmark(Bookmark *bookmark)
@@ -769,7 +767,6 @@ void BookmarkManager::addBookmark(const QString &s)
if (!filePath.isEmpty() && !findBookmark(filePath, lineNumber)) {
Bookmark *b = new Bookmark(filePath, lineNumber, this);
b->setNote(note);
- b->init();
addBookmark(b, false);
}
} else {
diff --git a/src/plugins/cpptools/cpptoolseditorsupport.h b/src/plugins/cpptools/cpptoolseditorsupport.h
index 18bf08fb5b..f859d55b1a 100644
--- a/src/plugins/cpptools/cpptoolseditorsupport.h
+++ b/src/plugins/cpptools/cpptoolseditorsupport.h
@@ -51,7 +51,7 @@ class DeclarationAST;
namespace TextEditor {
class BaseTextEditor;
-class ITextMark;
+class TextMark;
} // namespace TextEditor
namespace CppTools {
diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index 1614486ca0..d0e53fe70c 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -1468,10 +1468,8 @@ void BreakHandler::BreakpointItem::updateMarker(BreakpointModelId id)
if (marker && (file != marker->fileName() || line != marker->lineNumber()))
destroyMarker();
- if (!marker && !file.isEmpty() && line > 0) {
+ if (!marker && !file.isEmpty() && line > 0)
marker = new BreakpointMarker(id, file, line);
- marker->init();
- }
}
QIcon BreakHandler::BreakpointItem::icon() const
diff --git a/src/plugins/debugger/breakpointmarker.cpp b/src/plugins/debugger/breakpointmarker.cpp
index d631d9c084..4b861039e3 100644
--- a/src/plugins/debugger/breakpointmarker.cpp
+++ b/src/plugins/debugger/breakpointmarker.cpp
@@ -43,10 +43,10 @@ namespace Internal {
BreakpointMarker::BreakpointMarker(BreakpointModelId id,
const QString &fileName, int lineNumber)
- : BaseTextMark(fileName, lineNumber), m_id(id)
+ : TextMark(fileName, lineNumber), m_id(id)
{
setIcon(breakHandler()->icon(m_id));
- setPriority(TextEditor::ITextMark::NormalPriority);
+ setPriority(TextEditor::TextMark::NormalPriority);
//qDebug() << "CREATE MARKER " << fileName << lineNumber;
}
@@ -62,7 +62,7 @@ void BreakpointMarker::removedFromEditor()
void BreakpointMarker::updateLineNumber(int lineNumber)
{
- BaseTextMark::updateLineNumber(lineNumber);
+ TextMark::updateLineNumber(lineNumber);
breakHandler()->updateLineNumberFromMarker(m_id, lineNumber);
}
@@ -78,7 +78,7 @@ void BreakpointMarker::clicked()
void BreakpointMarker::updateFileName(const QString &fileName)
{
- BaseTextMark::updateFileName(fileName);
+ TextMark::updateFileName(fileName);
breakHandler()->updateFileNameFromMarker(m_id, fileName);
}
diff --git a/src/plugins/debugger/breakpointmarker.h b/src/plugins/debugger/breakpointmarker.h
index b41daab79c..454042cd5c 100644
--- a/src/plugins/debugger/breakpointmarker.h
+++ b/src/plugins/debugger/breakpointmarker.h
@@ -32,13 +32,13 @@
#include "breakpoint.h"
-#include <texteditor/basetextmark.h>
+#include <texteditor/textmark.h>
namespace Debugger {
namespace Internal {
// The red blob on the left side in the cpp editor.
-class BreakpointMarker : public TextEditor::BaseTextMark
+class BreakpointMarker : public TextEditor::TextMark
{
public:
BreakpointMarker(BreakpointModelId id, const QString &fileName, int lineNumber);
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 9ccd0f0b0b..500b893f46 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -307,7 +307,7 @@ public:
DisassemblerAgent m_disassemblerAgent;
MemoryAgent m_memoryAgent;
- QScopedPointer<TextEditor::BaseTextMark> m_locationMark;
+ QScopedPointer<TextEditor::TextMark> m_locationMark;
QTimer m_locationTimer;
bool m_isStateDebugging;
@@ -565,10 +565,9 @@ void DebuggerEngine::gotoLocation(const Location &loc)
editor->document()->setProperty(Constants::OPENED_BY_DEBUGGER, true);
if (loc.needsMarker()) {
- d->m_locationMark.reset(new TextEditor::BaseTextMark(file, line));
+ d->m_locationMark.reset(new TextEditor::TextMark(file, line));
d->m_locationMark->setIcon(debuggerCore()->locationMarkIcon());
- d->m_locationMark->setPriority(TextEditor::ITextMark::HighPriority);
- d->m_locationMark->init();
+ d->m_locationMark->setPriority(TextEditor::TextMark::HighPriority);
}
//qDebug() << "MEMORY: " << d->m_memoryAgent.hasVisibleEditor();
diff --git a/src/plugins/debugger/disassembleragent.cpp b/src/plugins/debugger/disassembleragent.cpp
index 5e0b71f787..b95277f964 100644
--- a/src/plugins/debugger/disassembleragent.cpp
+++ b/src/plugins/debugger/disassembleragent.cpp
@@ -103,8 +103,8 @@ public:
QPointer<BaseTextDocument> document;
Location location;
QPointer<DebuggerEngine> engine;
- ITextMark locationMark;
- QList<ITextMark *> breakpointMarks;
+ TextMark locationMark;
+ QList<TextMark *> breakpointMarks;
QList<CacheEntry> cache;
QString mimeType;
bool tryMixedInitialized;
@@ -114,14 +114,14 @@ public:
DisassemblerAgentPrivate::DisassemblerAgentPrivate()
: document(0),
- locationMark(0),
+ locationMark(QString(), 0),
mimeType(_("text/x-qtcreator-generic-asm")),
tryMixedInitialized(false),
tryMixed(true),
resetLocationScheduled(false)
{
locationMark.setIcon(debuggerCore()->locationMarkIcon());
- locationMark.setPriority(TextEditor::ITextMark::HighPriority);
+ locationMark.setPriority(TextEditor::TextMark::HighPriority);
}
DisassemblerAgentPrivate::~DisassemblerAgentPrivate()
@@ -353,7 +353,7 @@ void DisassemblerAgent::updateBreakpointMarkers()
return;
const DisassemblerLines contents = d->contentsAtCurrentLocation();
- foreach (TextEditor::ITextMark *marker, d->breakpointMarks)
+ foreach (TextEditor::TextMark *marker, d->breakpointMarks)
d->document->removeMark(marker);
qDeleteAll(d->breakpointMarks);
d->breakpointMarks.clear();
@@ -364,9 +364,9 @@ void DisassemblerAgent::updateBreakpointMarkers()
const int lineNumber = contents.lineForAddress(address);
if (!lineNumber)
continue;
- ITextMark *marker = new ITextMark(lineNumber);
+ TextMark *marker = new TextMark(QString(), lineNumber);
marker->setIcon(handler->icon(id));
- marker->setPriority(ITextMark::NormalPriority);
+ marker->setPriority(TextMark::NormalPriority);
d->breakpointMarks.append(marker);
d->document->addMark(marker);
}
diff --git a/src/plugins/debugger/sourceagent.cpp b/src/plugins/debugger/sourceagent.cpp
index 5ee2537539..3458172a20 100644
--- a/src/plugins/debugger/sourceagent.cpp
+++ b/src/plugins/debugger/sourceagent.cpp
@@ -35,6 +35,7 @@
#include "stackhandler.h"
#include <texteditor/basetexteditor.h>
+#include <texteditor/textmark.h>
#include <cppeditor/cppeditorconstants.h>
@@ -61,7 +62,7 @@ public:
public:
QPointer<TextEditor::BaseTextEditor> editor;
QPointer<DebuggerEngine> engine;
- TextEditor::ITextMark *locationMark;
+ TextEditor::TextMark *locationMark;
QString path;
QString producer;
};
@@ -140,9 +141,9 @@ void SourceAgent::updateLocationMarker()
d->locationMark = 0;
if (d->engine->stackHandler()->currentFrame().file == d->path) {
int lineNumber = d->engine->stackHandler()->currentFrame().line;
- d->locationMark = new TextEditor::ITextMark(lineNumber);
+ d->locationMark = new TextEditor::TextMark(QString(), lineNumber);
d->locationMark->setIcon(debuggerCore()->locationMarkIcon());
- d->locationMark->setPriority(TextEditor::ITextMark::HighPriority);
+ d->locationMark->setPriority(TextEditor::TextMark::HighPriority);
d->editor->baseTextDocument()->addMark(d->locationMark);
QPlainTextEdit *plainTextEdit = d->editor->editorWidget();
QTC_ASSERT(plainTextEdit, return);
diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp
index c38af9ed12..96d8c5b0d8 100644
--- a/src/plugins/fakevim/fakevimplugin.cpp
+++ b/src/plugins/fakevim/fakevimplugin.cpp
@@ -57,7 +57,7 @@
#include <texteditor/basetextdocumentlayout.h>
#include <texteditor/basetexteditor.h>
-#include <texteditor/basetextmark.h>
+#include <texteditor/textmark.h>
#include <texteditor/texteditorconstants.h>
#include <texteditor/typingsettings.h>
#include <texteditor/tabsettings.h>
diff --git a/src/plugins/projectexplorer/task.cpp b/src/plugins/projectexplorer/task.cpp
index 49fac5e537..eaa3c87a54 100644
--- a/src/plugins/projectexplorer/task.cpp
+++ b/src/plugins/projectexplorer/task.cpp
@@ -91,11 +91,11 @@ Task Task::buildConfigurationMissingTask()
ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM);
}
-void Task::addMark(TextEditor::BaseTextMark *mark)
+void Task::addMark(TextEditor::TextMark *mark)
{
QTC_ASSERT(m_mark.isNull(), return);
- m_mark = QSharedPointer<TextEditor::BaseTextMark>(mark);
+ m_mark = QSharedPointer<TextEditor::TextMark>(mark);
}
bool Task::isNull() const
diff --git a/src/plugins/projectexplorer/task.h b/src/plugins/projectexplorer/task.h
index c51a48df88..5e8c3dec91 100644
--- a/src/plugins/projectexplorer/task.h
+++ b/src/plugins/projectexplorer/task.h
@@ -33,11 +33,11 @@
#include "projectexplorer_export.h"
#include <coreplugin/id.h>
-#include <texteditor/basetextmark.h>
+#include <texteditor/textmark.h>
#include <utils/fileutils.h>
+#include <QIcon>
#include <QMetaType>
-
#include <QTextLayout>
namespace ProjectExplorer {
@@ -71,7 +71,7 @@ public:
int movedLine; // contains a line number if the line was moved in the editor
Core::Id category;
QIcon icon;
- void addMark(TextEditor::BaseTextMark *mark);
+ void addMark(TextEditor::TextMark *mark);
// Having a QList<QTextLayout::FormatRange> in Task isn't that great
// It would be cleaner to split up the text into
@@ -84,7 +84,7 @@ public:
QList<QTextLayout::FormatRange> formats;
private:
- QSharedPointer<TextEditor::BaseTextMark> m_mark;
+ QSharedPointer<TextEditor::TextMark> m_mark;
static unsigned int s_nextId;
};
diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp
index 78e2e643ba..cd603b6ccb 100644
--- a/src/plugins/projectexplorer/taskhub.cpp
+++ b/src/plugins/projectexplorer/taskhub.cpp
@@ -38,11 +38,11 @@ using namespace ProjectExplorer;
TaskHub *m_instance = 0;
QSet<Core::Id> TaskHub::m_registeredCategories;
-class TaskMark : public TextEditor::BaseTextMark
+class TaskMark : public TextEditor::TextMark
{
public:
TaskMark(unsigned int id, const QString &fileName, int lineNumber, bool visible)
- : BaseTextMark(fileName, lineNumber), m_id(id)
+ : TextMark(fileName, lineNumber), m_id(id)
{
setVisible(visible);
}
@@ -60,13 +60,13 @@ private:
void TaskMark::updateLineNumber(int lineNumber)
{
TaskHub::updateTaskLineNumber(m_id, lineNumber);
- BaseTextMark::updateLineNumber(lineNumber);
+ TextMark::updateLineNumber(lineNumber);
}
void TaskMark::updateFileName(const QString &fileName)
{
TaskHub::updateTaskFileName(m_id, fileName);
- BaseTextMark::updateFileName(fileName);
+ TextMark::updateFileName(fileName);
}
void TaskMark::removedFromEditor()
@@ -131,13 +131,10 @@ void TaskHub::addTask(Task task)
if (task.line != -1 && !task.file.isEmpty()) {
TaskMark *mark = new TaskMark(task.taskId, task.file.toString(), task.line, !task.icon.isNull());
mark->setIcon(task.icon);
- mark->setPriority(TextEditor::ITextMark::LowPriority);
+ mark->setPriority(TextEditor::TextMark::LowPriority);
task.addMark(mark);
- emit m_instance->taskAdded(task);
- mark->init();
- } else {
- emit m_instance->taskAdded(task);
}
+ emit m_instance->taskAdded(task);
}
void TaskHub::clearTasks(Core::Id categoryId)
diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp
index c7b5da4605..7a21699628 100644
--- a/src/plugins/texteditor/basetextdocument.cpp
+++ b/src/plugins/texteditor/basetextdocument.cpp
@@ -683,7 +683,7 @@ TextMarks BaseTextDocument::marks() const
return d->m_marksCache;
}
-bool BaseTextDocument::addMark(ITextMark *mark)
+bool BaseTextDocument::addMark(TextMark *mark)
{
if (mark->baseTextDocument())
return false;
@@ -730,7 +730,7 @@ TextMarks BaseTextDocument::marksAt(int line) const
return TextMarks();
}
-void BaseTextDocument::removeMarkFromMarksCache(ITextMark *mark)
+void BaseTextDocument::removeMarkFromMarksCache(TextMark *mark)
{
auto documentLayout = qobject_cast<BaseTextDocumentLayout*>(d->m_document->documentLayout());
QTC_ASSERT(documentLayout, return);
@@ -753,7 +753,7 @@ void BaseTextDocument::removeMarkFromMarksCache(ITextMark *mark)
documentLayout->requestExtraAreaUpdate();
} else {
double maxWidthFactor = 1.0;
- foreach (const ITextMark *mark, marks()) {
+ foreach (const TextMark *mark, marks()) {
if (!mark->isVisible())
continue;
maxWidthFactor = qMax(mark->widthFactor(), maxWidthFactor);
@@ -770,7 +770,7 @@ void BaseTextDocument::removeMarkFromMarksCache(ITextMark *mark)
}
}
-void BaseTextDocument::removeMark(ITextMark *mark)
+void BaseTextDocument::removeMark(TextMark *mark)
{
QTextBlock block = d->m_document->findBlockByNumber(mark->lineNumber() - 1);
if (TextBlockUserData *data = static_cast<TextBlockUserData *>(block.userData())) {
@@ -782,7 +782,7 @@ void BaseTextDocument::removeMark(ITextMark *mark)
mark->setBaseTextDocument(0);
}
-void BaseTextDocument::updateMark(ITextMark *mark)
+void BaseTextDocument::updateMark(TextMark *mark)
{
Q_UNUSED(mark)
auto documentLayout = qobject_cast<BaseTextDocumentLayout*>(d->m_document->documentLayout());
@@ -790,7 +790,7 @@ void BaseTextDocument::updateMark(ITextMark *mark)
documentLayout->requestUpdate();
}
-void BaseTextDocument::moveMark(ITextMark *mark, int previousLine)
+void BaseTextDocument::moveMark(TextMark *mark, int previousLine)
{
QTextBlock block = d->m_document->findBlockByNumber(previousLine - 1);
if (TextBlockUserData *data = BaseTextDocumentLayout::testUserData(block)) {
diff --git a/src/plugins/texteditor/basetextdocument.h b/src/plugins/texteditor/basetextdocument.h
index 0154bb21c1..c371d145ad 100644
--- a/src/plugins/texteditor/basetextdocument.h
+++ b/src/plugins/texteditor/basetextdocument.h
@@ -33,6 +33,7 @@
#include "texteditor_global.h"
#include "itexteditor.h"
+#include "itexteditor.h"
#include <QList>
@@ -50,9 +51,10 @@ class Indenter;
class StorageSettings;
class SyntaxHighlighter;
class TabSettings;
+class TextMark;
class TypingSettings;
-typedef QList<ITextMark *> TextMarks;
+typedef QList<TextMark *> TextMarks;
class TEXTEDITOR_EXPORT BaseTextDocument : public ITextEditorDocument
{
@@ -85,12 +87,12 @@ public:
QTextCursor unindent(const QTextCursor &cursor);
TextMarks marks() const;
- bool addMark(ITextMark *mark);
+ bool addMark(TextMark *mark);
TextMarks marksAt(int line) const;
- void removeMark(ITextMark *mark);
- void updateMark(ITextMark *mark);
- void moveMark(ITextMark *mark, int previousLine);
- void removeMarkFromMarksCache(TextEditor::ITextMark *mark);
+ void removeMark(TextMark *mark);
+ void updateMark(TextMark *mark);
+ void moveMark(TextMark *mark, int previousLine);
+ void removeMarkFromMarksCache(TextEditor::TextMark *mark);
// IDocument implementation.
bool save(QString *errorString, const QString &fileName, bool autoSave);
diff --git a/src/plugins/texteditor/basetextdocumentlayout.cpp b/src/plugins/texteditor/basetextdocumentlayout.cpp
index 0ef8232dce..09d6104623 100644
--- a/src/plugins/texteditor/basetextdocumentlayout.cpp
+++ b/src/plugins/texteditor/basetextdocumentlayout.cpp
@@ -40,7 +40,7 @@ CodeFormatterData::~CodeFormatterData()
TextBlockUserData::~TextBlockUserData()
{
- foreach (ITextMark *mrk, m_marks) {
+ foreach (TextMark *mrk, m_marks) {
mrk->baseTextDocument()->removeMarkFromMarksCache(mrk);
mrk->setBaseTextDocument(0);
mrk->removedFromEditor();
@@ -376,7 +376,7 @@ void TextBlockUserData::setCodeFormatterData(CodeFormatterData *data)
m_codeFormatterData = data;
}
-void TextBlockUserData::addMark(ITextMark *mark)
+void TextBlockUserData::addMark(TextMark *mark)
{
int i = 0;
for ( ; i < m_marks.size(); ++i) {
@@ -593,7 +593,7 @@ TextMarks BaseTextDocumentLayout::documentClosing()
void BaseTextDocumentLayout::documentReloaded(TextMarks marks, BaseTextDocument *baseTextDocument)
{
- foreach (ITextMark *mark, marks) {
+ foreach (TextMark *mark, marks) {
int blockNumber = mark->lineNumber() - 1;
QTextBlock block = document()->findBlockByNumber(blockNumber);
if (block.isValid()) {
@@ -618,7 +618,7 @@ void BaseTextDocumentLayout::updateMarksLineNumber()
int blockNumber = 0;
while (block.isValid()) {
if (const TextBlockUserData *userData = testUserData(block))
- foreach (ITextMark *mrk, userData->marks())
+ foreach (TextMark *mrk, userData->marks())
mrk->updateLineNumber(blockNumber + 1);
block = block.next();
++blockNumber;
@@ -628,7 +628,7 @@ void BaseTextDocumentLayout::updateMarksLineNumber()
void BaseTextDocumentLayout::updateMarksBlock(const QTextBlock &block)
{
if (const TextBlockUserData *userData = testUserData(block))
- foreach (ITextMark *mrk, userData->marks())
+ foreach (TextMark *mrk, userData->marks())
mrk->updateBlock(block);
}
diff --git a/src/plugins/texteditor/basetextdocumentlayout.h b/src/plugins/texteditor/basetextdocumentlayout.h
index 11dcc0ede9..cf7e85066f 100644
--- a/src/plugins/texteditor/basetextdocumentlayout.h
+++ b/src/plugins/texteditor/basetextdocumentlayout.h
@@ -33,6 +33,7 @@
#include "texteditor_global.h"
#include "basetexteditor.h"
+#include "textmark.h"
#include <QTextBlockUserData>
#include <QPlainTextDocumentLayout>
@@ -75,12 +76,12 @@ public:
~TextBlockUserData();
inline TextMarks marks() const { return m_marks; }
- void addMark(ITextMark *mark);
- inline bool removeMark(ITextMark *mark) { return m_marks.removeAll(mark); }
+ void addMark(TextMark *mark);
+ inline bool removeMark(TextMark *mark) { return m_marks.removeAll(mark); }
inline TextMarks documentClosing() {
TextMarks marks = m_marks;
- foreach (ITextMark *mrk, m_marks)
+ foreach (TextMark *mrk, m_marks)
mrk->setBaseTextDocument(0);
m_marks.clear();
return marks;
diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 7e5671bd87..e316a4584b 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -3933,7 +3933,7 @@ void BaseTextEditorWidget::extraAreaPaintEvent(QPaintEvent *e)
}
TextMarks::const_iterator end = marks.constEnd();
for ( ; it != end; ++it) {
- ITextMark *mark = *it;
+ TextMark *mark = *it;
if (!mark->isVisible())
continue;
const int height = fmLineSpacing - 1;
@@ -4605,7 +4605,7 @@ void BaseTextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
if (TextBlockUserData *data = static_cast<TextBlockUserData *>(block.userData())) {
TextMarks marks = data->marks();
for (int i = marks.size(); --i >= 0; ) {
- ITextMark *mark = marks.at(i);
+ TextMark *mark = marks.at(i);
if (mark->isDraggable()) {
d->m_markDragStart = e->pos();
break;
@@ -4653,7 +4653,7 @@ void BaseTextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
if (TextBlockUserData *data = static_cast<TextBlockUserData *>(block.userData())) {
TextMarks marks = data->marks();
for (int i = marks.size(); --i >= 0; ) {
- ITextMark *mark = marks.at(i);
+ TextMark *mark = marks.at(i);
if (sameLine) {
if (mark->isClickable()) {
mark->clicked();
diff --git a/src/plugins/texteditor/basetextmark.h b/src/plugins/texteditor/basetextmark.h
deleted file mode 100644
index bca051739b..0000000000
--- a/src/plugins/texteditor/basetextmark.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#ifndef BASETEXTMARK_H
-#define BASETEXTMARK_H
-
-#include "texteditor_global.h"
-#include "itextmark.h"
-
-namespace TextEditor {
-namespace Internal { class BaseTextMarkRegistry; }
-
-class TEXTEDITOR_EXPORT BaseTextMark : public TextEditor::ITextMark
-{
- friend class Internal::BaseTextMarkRegistry;
-
-public:
- BaseTextMark(const QString &fileName, int lineNumber);
- void init();
- virtual ~BaseTextMark();
-
- /// called if the filename of the document changed
- virtual void updateFileName(const QString &fileName);
-
- // access to internal data
- QString fileName() const { return m_fileName; }
-
-private:
- QString m_fileName;
-};
-
-} // namespace TextEditor
-
-#endif // BASETEXTMARK_H
diff --git a/src/plugins/texteditor/itexteditor.h b/src/plugins/texteditor/itexteditor.h
index 213a0c38f2..60a10a522b 100644
--- a/src/plugins/texteditor/itexteditor.h
+++ b/src/plugins/texteditor/itexteditor.h
@@ -32,17 +32,13 @@
#include "texteditor_global.h"
-#include "itextmark.h"
-
#include <coreplugin/textdocument.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h>
#include <QMap>
-#include <QIcon>
QT_BEGIN_NAMESPACE
-class QIcon;
class QMenu;
class QPainter;
class QPoint;
diff --git a/src/plugins/texteditor/itextmark.cpp b/src/plugins/texteditor/itextmark.cpp
deleted file mode 100644
index 658bb23bb7..0000000000
--- a/src/plugins/texteditor/itextmark.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-****************************************************************************/
-
-#include "itextmark.h"
-#include "basetextdocument.h"
-
-using namespace TextEditor;
-
-ITextMark::~ITextMark()
-{
- if (m_baseTextDocument)
- m_baseTextDocument->removeMark(this);
- m_baseTextDocument = 0;
-}
-
-int ITextMark::lineNumber() const
-{
- return m_lineNumber;
-}
-
-void ITextMark::paint(QPainter *painter, const QRect &rect) const
-{
- m_icon.paint(painter, rect, Qt::AlignCenter);
-}
-
-void ITextMark::updateLineNumber(int lineNumber)
-{
- m_lineNumber = lineNumber;
-}
-
-void ITextMark::move(int line)
-{
- if (line == m_lineNumber)
- return;
- const int previousLine = m_lineNumber;
- m_lineNumber = line;
- if (m_baseTextDocument)
- m_baseTextDocument->moveMark(this, previousLine);
-}
-
-void ITextMark::updateBlock(const QTextBlock &)
-{}
-
-void ITextMark::removedFromEditor()
-{}
-
-void ITextMark::setIcon(const QIcon &icon)
-{
- m_icon = icon;
-}
-
-void ITextMark::updateMarker()
-{
- if (m_baseTextDocument)
- m_baseTextDocument->updateMark(this);
-}
-
-void ITextMark::setPriority(Priority priority)
-{
- m_priority = priority;
-}
-
-ITextMark::Priority ITextMark::priority() const
-{
- return m_priority;
-}
-
-bool ITextMark::isVisible() const
-{
- return m_visible;
-}
-
-void ITextMark::setVisible(bool visible)
-{
- m_visible = visible;
- if (m_baseTextDocument)
- m_baseTextDocument->updateMark(this);
-}
-
-double ITextMark::widthFactor() const
-{
- return m_widthFactor;
-}
-
-void ITextMark::setWidthFactor(double factor)
-{
- m_widthFactor = factor;
-}
-
-bool ITextMark::isClickable() const
-{
- return false;
-}
-
-void ITextMark::clicked()
-{}
-
-bool ITextMark::isDraggable() const
-{
- return false;
-}
-
-void ITextMark::dragToLine(int lineNumber)
-{
- Q_UNUSED(lineNumber);
-}
-
-BaseTextDocument *ITextMark::baseTextDocument() const
-{
- return m_baseTextDocument;
-}
-
-void ITextMark::setBaseTextDocument(BaseTextDocument *baseTextDocument)
-{
- m_baseTextDocument = baseTextDocument;
-}
-
diff --git a/src/plugins/texteditor/texteditor.pro b/src/plugins/texteditor/texteditor.pro
index 8e226aec20..3c6c9f0b80 100644
--- a/src/plugins/texteditor/texteditor.pro
+++ b/src/plugins/texteditor/texteditor.pro
@@ -21,7 +21,6 @@ SOURCES += texteditorplugin.cpp \
displaysettingspage.cpp \
fontsettings.cpp \
linenumberfilter.cpp \
- basetextmark.cpp \
findinfiles.cpp \
basefilefind.cpp \
texteditorsettings.cpp \
@@ -106,7 +105,7 @@ SOURCES += texteditorplugin.cpp \
codestyleeditor.cpp \
circularclipboard.cpp \
circularclipboardassist.cpp \
- itextmark.cpp \
+ textmark.cpp \
codeassist/keywordscompletionassist.cpp \
marginsettings.cpp
@@ -130,7 +129,6 @@ HEADERS += texteditorplugin.h \
itexteditor.h \
linenumberfilter.h \
texteditor_global.h \
- basetextmark.h \
findinfiles.h \
basefilefind.h \
texteditorsettings.h \
@@ -223,9 +221,9 @@ HEADERS += texteditorplugin.h \
basefilefind_p.h \
circularclipboard.h \
circularclipboardassist.h \
- itextmark.h \
+ textmark.h \
codeassist/keywordscompletionassist.h \
- basetextmarkregistry.h \
+ textmarkregistry.h \
marginsettings.h
FORMS += \
diff --git a/src/plugins/texteditor/texteditor.qbs b/src/plugins/texteditor/texteditor.qbs
index c630ae0715..800d632bc5 100644
--- a/src/plugins/texteditor/texteditor.qbs
+++ b/src/plugins/texteditor/texteditor.qbs
@@ -28,9 +28,6 @@ QtcPlugin {
"basetexteditor.cpp",
"basetexteditor.h",
"basetexteditor_p.h",
- "basetextmark.cpp",
- "basetextmark.h",
- "basetextmarkregistry.h",
"behaviorsettings.cpp",
"behaviorsettings.h",
"behaviorsettingspage.cpp",
@@ -93,8 +90,6 @@ QtcPlugin {
"ioutlinewidget.h",
"itexteditor.cpp",
"itexteditor.h",
- "itextmark.cpp",
- "itextmark.h",
"linenumberfilter.cpp",
"linenumberfilter.h",
"marginsettings.cpp",
@@ -144,6 +139,9 @@ QtcPlugin {
"texteditorsettings.h",
"textfilewizard.cpp",
"textfilewizard.h",
+ "textmark.cpp",
+ "textmark.h",
+ "textmarkregistry.h",
"typingsettings.cpp",
"typingsettings.h",
]
diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp
index ab4fb99389..a390183e13 100644
--- a/src/plugins/texteditor/texteditorplugin.cpp
+++ b/src/plugins/texteditor/texteditorplugin.cpp
@@ -40,7 +40,7 @@
#include "plaintexteditor.h"
#include "outlinefactory.h"
#include "snippets/plaintextsnippetprovider.h"
-#include "basetextmarkregistry.h"
+#include "textmarkregistry.h"
#include <texteditor/generichighlighter/manager.h>
#include <coreplugin/icore.h>
@@ -190,7 +190,7 @@ bool TextEditorPlugin::initialize(const QStringList &arguments, QString *errorMe
m_outlineFactory = new OutlineFactory;
addAutoReleasedObject(m_outlineFactory);
- m_baseTextMarkRegistry = new BaseTextMarkRegistry(this);
+ m_baseTextMarkRegistry = new TextMarkRegistry(this);
return true;
}
@@ -271,7 +271,7 @@ LineNumberFilter *TextEditorPlugin::lineNumberFilter()
return m_instance->m_lineNumberFilter;
}
-BaseTextMarkRegistry *TextEditorPlugin::baseTextMarkRegistry()
+TextMarkRegistry *TextEditorPlugin::baseTextMarkRegistry()
{
return m_instance->m_baseTextMarkRegistry;
}
diff --git a/src/plugins/texteditor/texteditorplugin.h b/src/plugins/texteditor/texteditorplugin.h
index 82075b989c..66d5e8711e 100644
--- a/src/plugins/texteditor/texteditorplugin.h
+++ b/src/plugins/texteditor/texteditorplugin.h
@@ -45,7 +45,7 @@ namespace Internal {
class LineNumberFilter;
class PlainTextEditorFactory;
class OutlineFactory;
-class BaseTextMarkRegistry;
+class TextMarkRegistry;
class TextEditorPlugin : public ExtensionSystem::IPlugin
{
@@ -62,7 +62,7 @@ public:
static PlainTextEditorFactory *editorFactory();
static LineNumberFilter *lineNumberFilter();
- static BaseTextMarkRegistry *baseTextMarkRegistry();
+ static TextMarkRegistry *baseTextMarkRegistry();
private slots:
void invokeCompletion();
@@ -76,7 +76,7 @@ private:
LineNumberFilter *m_lineNumberFilter;
Core::SearchResultWindow *m_searchResultWindow;
OutlineFactory *m_outlineFactory;
- BaseTextMarkRegistry *m_baseTextMarkRegistry;
+ TextMarkRegistry *m_baseTextMarkRegistry;
#ifdef WITH_TESTS
diff --git a/src/plugins/texteditor/basetextmark.cpp b/src/plugins/texteditor/textmark.cpp
index 7606337bf8..e46dea0bd8 100644
--- a/src/plugins/texteditor/basetextmark.cpp
+++ b/src/plugins/texteditor/textmark.cpp
@@ -27,24 +27,163 @@
**
****************************************************************************/
-#include "basetextmarkregistry.h"
-#include "basetextmark.h"
+#include "textmark.h"
+#include "basetextdocument.h"
+#include "textmarkregistry.h"
#include "itexteditor.h"
#include "basetextdocument.h"
#include "texteditorplugin.h"
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/documentmanager.h>
-#include <extensionsystem/pluginmanager.h>
#include <utils/qtcassert.h>
using namespace Core;
using namespace Utils;
+using namespace TextEditor::Internal;
namespace TextEditor {
-namespace Internal {
-BaseTextMarkRegistry::BaseTextMarkRegistry(QObject *parent)
+TextMark::TextMark(const QString &fileName, int lineNumber)
+ : m_baseTextDocument(0),
+ m_fileName(fileName),
+ m_lineNumber(lineNumber),
+ m_priority(NormalPriority),
+ m_visible(true),
+ m_widthFactor(1.0)
+{
+ if (!m_fileName.isEmpty())
+ TextEditorPlugin::baseTextMarkRegistry()->add(this);
+}
+
+TextMark::~TextMark()
+{
+ TextEditorPlugin::baseTextMarkRegistry()->remove(this);
+ if (m_baseTextDocument)
+ m_baseTextDocument->removeMark(this);
+ m_baseTextDocument = 0;
+}
+
+QString TextMark::fileName() const
+{
+ return m_fileName;
+}
+
+void TextMark::updateFileName(const QString &fileName)
+{
+ if (fileName == m_fileName)
+ return;
+ if (!m_fileName.isEmpty())
+ TextEditorPlugin::baseTextMarkRegistry()->remove(this);
+ m_fileName = fileName;
+ if (!m_fileName.isEmpty())
+ TextEditorPlugin::baseTextMarkRegistry()->add(this);
+}
+
+int TextMark::lineNumber() const
+{
+ return m_lineNumber;
+}
+
+void TextMark::paint(QPainter *painter, const QRect &rect) const
+{
+ m_icon.paint(painter, rect, Qt::AlignCenter);
+}
+
+void TextMark::updateLineNumber(int lineNumber)
+{
+ m_lineNumber = lineNumber;
+}
+
+void TextMark::move(int line)
+{
+ if (line == m_lineNumber)
+ return;
+ const int previousLine = m_lineNumber;
+ m_lineNumber = line;
+ if (m_baseTextDocument)
+ m_baseTextDocument->moveMark(this, previousLine);
+}
+
+void TextMark::updateBlock(const QTextBlock &)
+{}
+
+void TextMark::removedFromEditor()
+{}
+
+void TextMark::setIcon(const QIcon &icon)
+{
+ m_icon = icon;
+}
+
+void TextMark::updateMarker()
+{
+ if (m_baseTextDocument)
+ m_baseTextDocument->updateMark(this);
+}
+
+void TextMark::setPriority(Priority priority)
+{
+ m_priority = priority;
+}
+
+TextMark::Priority TextMark::priority() const
+{
+ return m_priority;
+}
+
+bool TextMark::isVisible() const
+{
+ return m_visible;
+}
+
+void TextMark::setVisible(bool visible)
+{
+ m_visible = visible;
+ if (m_baseTextDocument)
+ m_baseTextDocument->updateMark(this);
+}
+
+double TextMark::widthFactor() const
+{
+ return m_widthFactor;
+}
+
+void TextMark::setWidthFactor(double factor)
+{
+ m_widthFactor = factor;
+}
+
+bool TextMark::isClickable() const
+{
+ return false;
+}
+
+void TextMark::clicked()
+{}
+
+bool TextMark::isDraggable() const
+{
+ return false;
+}
+
+void TextMark::dragToLine(int lineNumber)
+{
+ Q_UNUSED(lineNumber);
+}
+
+BaseTextDocument *TextMark::baseTextDocument() const
+{
+ return m_baseTextDocument;
+}
+
+void TextMark::setBaseTextDocument(BaseTextDocument *baseTextDocument)
+{
+ m_baseTextDocument = baseTextDocument;
+}
+
+
+TextMarkRegistry::TextMarkRegistry(QObject *parent)
: QObject(parent)
{
connect(EditorManager::instance(), SIGNAL(editorOpened(Core::IEditor*)),
@@ -56,7 +195,7 @@ BaseTextMarkRegistry::BaseTextMarkRegistry(QObject *parent)
this, SLOT(documentRenamed(Core::IDocument*,QString,QString)));
}
-void BaseTextMarkRegistry::add(BaseTextMark *mark)
+void TextMarkRegistry::add(TextMark *mark)
{
m_marks[FileName::fromString(mark->fileName())].insert(mark);
auto document = qobject_cast<BaseTextDocument*>(DocumentModel::documentForFilePath(mark->fileName()));
@@ -65,12 +204,12 @@ void BaseTextMarkRegistry::add(BaseTextMark *mark)
document->addMark(mark);
}
-bool BaseTextMarkRegistry::remove(BaseTextMark *mark)
+bool TextMarkRegistry::remove(TextMark *mark)
{
return m_marks[FileName::fromString(mark->fileName())].remove(mark);
}
-void BaseTextMarkRegistry::editorOpened(Core::IEditor *editor)
+void TextMarkRegistry::editorOpened(Core::IEditor *editor)
{
auto document = qobject_cast<BaseTextDocument *>(editor ? editor->document() : 0);
if (!document)
@@ -78,15 +217,14 @@ void BaseTextMarkRegistry::editorOpened(Core::IEditor *editor)
if (!m_marks.contains(FileName::fromString(document->filePath())))
return;
- foreach (BaseTextMark *mark, m_marks.value(FileName::fromString(document->filePath())))
+ foreach (TextMark *mark, m_marks.value(FileName::fromString(document->filePath())))
document->addMark(mark);
}
-void BaseTextMarkRegistry::documentRenamed(IDocument *document, const
+void TextMarkRegistry::documentRenamed(IDocument *document, const
QString &oldName, const QString &newName)
{
- TextEditor::BaseTextDocument *baseTextDocument
- = qobject_cast<TextEditor::BaseTextDocument *>(document);
+ BaseTextDocument *baseTextDocument = qobject_cast<BaseTextDocument *>(document);
if (!document)
return;
FileName oldFileName = FileName::fromString(oldName);
@@ -94,60 +232,31 @@ void BaseTextMarkRegistry::documentRenamed(IDocument *document, const
if (!m_marks.contains(oldFileName))
return;
- QSet<BaseTextMark *> toBeMoved;
- foreach (ITextMark *mark, baseTextDocument->marks())
- if (BaseTextMark *baseTextMark = dynamic_cast<BaseTextMark *>(mark))
- toBeMoved.insert(baseTextMark);
+ QSet<TextMark *> toBeMoved;
+ foreach (TextMark *mark, baseTextDocument->marks())
+ toBeMoved.insert(mark);
m_marks[oldFileName].subtract(toBeMoved);
m_marks[newFileName].unite(toBeMoved);
- foreach (BaseTextMark *mark, toBeMoved)
+ foreach (TextMark *mark, toBeMoved)
mark->updateFileName(newName);
}
-void BaseTextMarkRegistry::allDocumentsRenamed(const QString &oldName, const QString &newName)
+void TextMarkRegistry::allDocumentsRenamed(const QString &oldName, const QString &newName)
{
FileName oldFileName = FileName::fromString(oldName);
FileName newFileName = FileName::fromString(newName);
if (!m_marks.contains(oldFileName))
return;
- QSet<BaseTextMark *> oldFileNameMarks = m_marks.value(oldFileName);
+ QSet<TextMark *> oldFileNameMarks = m_marks.value(oldFileName);
m_marks[newFileName].unite(oldFileNameMarks);
m_marks[oldFileName].clear();
- foreach (BaseTextMark *mark, oldFileNameMarks)
+ foreach (TextMark *mark, oldFileNameMarks)
mark->updateFileName(newName);
}
-} // namespace Internal
-
-BaseTextMark::BaseTextMark(const QString &fileName, int lineNumber)
- : ITextMark(lineNumber), m_fileName(fileName)
-{
-}
-
-// we need two phase initialization, since we are calling virtual functions
-// of BaseTextMark in add() and also accessing widthFactor
-// which might be set in the derived constructor
-void BaseTextMark::init()
-{
- Internal::TextEditorPlugin::baseTextMarkRegistry()->add(this);
-}
-
-BaseTextMark::~BaseTextMark()
-{
- // oha we are deleted
- bool b = Internal::TextEditorPlugin::baseTextMarkRegistry()->remove(this);
- // If you get a assertion in this line, init() was never called
- QTC_CHECK(b);
-}
-
-void BaseTextMark::updateFileName(const QString &fileName)
-{
- m_fileName = fileName;
-}
-
} // namespace TextEditor
diff --git a/src/plugins/texteditor/itextmark.h b/src/plugins/texteditor/textmark.h
index 402ca3d974..60d63fb96f 100644
--- a/src/plugins/texteditor/itextmark.h
+++ b/src/plugins/texteditor/textmark.h
@@ -27,8 +27,8 @@
**
****************************************************************************/
-#ifndef ITEXTMARK_H
-#define ITEXTMARK_H
+#ifndef TextMark_H
+#define TextMark_H
#include "texteditor_global.h"
@@ -46,17 +46,13 @@ namespace TextEditor {
class ITextEditor;
class BaseTextDocument;
-class TEXTEDITOR_EXPORT ITextMark
+namespace Internal { class TextMarkRegistry; }
+
+class TEXTEDITOR_EXPORT TextMark
{
public:
- ITextMark(int line)
- : m_baseTextDocument(0),
- m_lineNumber(line),
- m_priority(NormalPriority),
- m_visible(true),
- m_widthFactor(1.0)
- {}
- virtual ~ITextMark();
+ TextMark(const QString &fileName, int lineNumber);
+ virtual ~TextMark();
// determine order on markers on the same line.
enum Priority
@@ -66,8 +62,12 @@ public:
HighPriority // shown on top.
};
+ QString fileName() const;
int lineNumber() const;
+
virtual void paint(QPainter *painter, const QRect &rect) const;
+ /// called if the filename of the document changed
+ virtual void updateFileName(const QString &fileName);
virtual void updateLineNumber(int lineNumber);
virtual void updateBlock(const QTextBlock &block);
virtual void move(int line);
@@ -91,8 +91,11 @@ public:
void setBaseTextDocument(BaseTextDocument *baseTextDocument);
private:
- Q_DISABLE_COPY(ITextMark)
+ Q_DISABLE_COPY(TextMark)
+ friend class Internal::TextMarkRegistry;
+
BaseTextDocument *m_baseTextDocument;
+ QString m_fileName;
int m_lineNumber;
Priority m_priority;
bool m_visible;
@@ -102,4 +105,4 @@ private:
} // namespace TextEditor
-#endif // ITEXTMARK_H
+#endif // TextMark_H
diff --git a/src/plugins/texteditor/basetextmarkregistry.h b/src/plugins/texteditor/textmarkregistry.h
index ad1174fb63..8e1bb02877 100644
--- a/src/plugins/texteditor/basetextmarkregistry.h
+++ b/src/plugins/texteditor/textmarkregistry.h
@@ -42,23 +42,23 @@ class IDocument;
}
namespace TextEditor {
-class BaseTextMark;
+class TextMark;
namespace Internal {
-class BaseTextMarkRegistry : public QObject
+class TextMarkRegistry : public QObject
{
Q_OBJECT
public:
- BaseTextMarkRegistry(QObject *parent);
+ TextMarkRegistry(QObject *parent);
- void add(BaseTextMark *mark);
- bool remove(BaseTextMark *mark);
+ void add(TextMark *mark);
+ bool remove(TextMark *mark);
private slots:
void editorOpened(Core::IEditor *editor);
void documentRenamed(Core::IDocument *document, const QString &oldName, const QString &newName);
void allDocumentsRenamed(const QString &oldName, const QString &newName);
private:
- QHash<Utils::FileName, QSet<BaseTextMark *> > m_marks;
+ QHash<Utils::FileName, QSet<TextMark *> > m_marks;
};
} // namespace Internal
diff --git a/src/plugins/valgrind/callgrindtextmark.cpp b/src/plugins/valgrind/callgrindtextmark.cpp
index 8470d50327..389792e496 100644
--- a/src/plugins/valgrind/callgrindtextmark.cpp
+++ b/src/plugins/valgrind/callgrindtextmark.cpp
@@ -44,9 +44,9 @@ using namespace Valgrind::Callgrind;
CallgrindTextMark::CallgrindTextMark(const QPersistentModelIndex &index,
const QString &fileName, int lineNumber)
- : TextEditor::BaseTextMark(fileName, lineNumber), m_modelIndex(index)
+ : TextEditor::TextMark(fileName, lineNumber), m_modelIndex(index)
{
- setPriority(TextEditor::ITextMark::HighPriority);
+ setPriority(TextEditor::TextMark::HighPriority);
setWidthFactor(4.0);
}
diff --git a/src/plugins/valgrind/callgrindtextmark.h b/src/plugins/valgrind/callgrindtextmark.h
index 14f2467a9c..f522040238 100644
--- a/src/plugins/valgrind/callgrindtextmark.h
+++ b/src/plugins/valgrind/callgrindtextmark.h
@@ -30,7 +30,7 @@
#ifndef CALLGRINDTEXTMARK_H
#define CALLGRINDTEXTMARK_H
-#include <texteditor/basetextmark.h>
+#include <texteditor/textmark.h>
#include <QPersistentModelIndex>
@@ -40,7 +40,7 @@ namespace Callgrind { class Function; }
namespace Internal {
-class CallgrindTextMark : public TextEditor::BaseTextMark
+class CallgrindTextMark : public TextEditor::TextMark
{
public:
/**
diff --git a/src/plugins/valgrind/callgrindtool.cpp b/src/plugins/valgrind/callgrindtool.cpp
index 6aec7c9709..2f255f8b97 100644
--- a/src/plugins/valgrind/callgrindtool.cpp
+++ b/src/plugins/valgrind/callgrindtool.cpp
@@ -1014,9 +1014,7 @@ void CallgrindToolPrivate::createTextMarks()
continue;
locations << location;
- CallgrindTextMark *mark = new CallgrindTextMark(index, fileName, lineNumber);
- mark->init();
- m_textMarks.append(mark);
+ m_textMarks.append(new CallgrindTextMark(index, fileName, lineNumber));
}
}