Editor: Bookmark when Shift-clicking the gutter

Task-number: QTCREATORBUG-2852

Change-Id: If539f812bce76c1c1e7b63e7133e2a7c962990ea
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
This commit is contained in:
Leandro Melo
2011-11-29 13:51:00 +01:00
committed by Eike Ziller
parent d4a881e6ee
commit 67ab31c224
6 changed files with 43 additions and 10 deletions

View File

@@ -760,6 +760,14 @@ void BookmarkManager::loadBookmarks()
updateActionStatus(); updateActionStatus();
} }
void BookmarkManager::handleBookmarkRequest(TextEditor::ITextEditor *textEditor,
int line,
TextEditor::ITextEditor::MarkRequestKind kind)
{
if (kind == TextEditor::ITextEditor::BookmarkRequest && textEditor->file())
toggleBookmark(textEditor->file()->fileName(), line);
}
// BookmarkViewFactory // BookmarkViewFactory
BookmarkViewFactory::BookmarkViewFactory(BookmarkManager *bm) BookmarkViewFactory::BookmarkViewFactory(BookmarkManager *bm)

View File

@@ -36,6 +36,8 @@
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
#include <coreplugin/inavigationwidgetfactory.h> #include <coreplugin/inavigationwidgetfactory.h>
#include <texteditor/itexteditor.h>
#include <QtCore/QAbstractItemModel> #include <QtCore/QAbstractItemModel>
#include <QtCore/QMultiMap> #include <QtCore/QMultiMap>
#include <QtCore/QList> #include <QtCore/QList>
@@ -51,10 +53,6 @@ namespace Core {
class IEditor; class IEditor;
} }
namespace TextEditor {
class ITextEditor;
}
namespace Bookmarks { namespace Bookmarks {
namespace Internal { namespace Internal {
@@ -115,6 +113,9 @@ signals:
private slots: private slots:
void updateActionStatus(); void updateActionStatus();
void loadBookmarks(); void loadBookmarks();
void handleBookmarkRequest(TextEditor::ITextEditor * textEditor,
int line,
TextEditor::ITextEditor::MarkRequestKind kind);
private: private:
TextEditor::ITextEditor *currentTextEditor() const; TextEditor::ITextEditor *currentTextEditor() const;

View File

@@ -179,6 +179,13 @@ void BookmarksPlugin::editorOpened(Core::IEditor *editor)
if (qobject_cast<ITextEditor *>(editor)) { if (qobject_cast<ITextEditor *>(editor)) {
connect(editor, SIGNAL(markContextMenuRequested(TextEditor::ITextEditor*,int,QMenu*)), connect(editor, SIGNAL(markContextMenuRequested(TextEditor::ITextEditor*,int,QMenu*)),
this, SLOT(requestContextMenu(TextEditor::ITextEditor*,int,QMenu*))); this, SLOT(requestContextMenu(TextEditor::ITextEditor*,int,QMenu*)));
connect(editor,
SIGNAL(markRequested(TextEditor::ITextEditor*,int,
TextEditor::ITextEditor::MarkRequestKind)),
m_bookmarkManager,
SLOT(handleBookmarkRequest(TextEditor::ITextEditor*,int,
TextEditor::ITextEditor::MarkRequestKind)));
} }
} }

View File

@@ -707,7 +707,9 @@ public slots:
void editorOpened(Core::IEditor *editor); void editorOpened(Core::IEditor *editor);
void updateBreakMenuItem(Core::IEditor *editor); void updateBreakMenuItem(Core::IEditor *editor);
void setBusyCursor(bool busy); void setBusyCursor(bool busy);
void requestMark(TextEditor::ITextEditor *editor, int lineNumber); void requestMark(TextEditor::ITextEditor *editor,
int lineNumber,
TextEditor::ITextEditor::MarkRequestKind kind);
void requestContextMenu(TextEditor::ITextEditor *editor, void requestContextMenu(TextEditor::ITextEditor *editor,
int lineNumber, QMenu *menu); int lineNumber, QMenu *menu);
@@ -1773,8 +1775,8 @@ void DebuggerPluginPrivate::editorOpened(IEditor *editor)
if (!textEditor) if (!textEditor)
return; return;
connect(textEditor, connect(textEditor,
SIGNAL(markRequested(TextEditor::ITextEditor*,int)), SIGNAL(markRequested(TextEditor::ITextEditor*,int, TextEditor::ITextEditor::MarkRequestKind)),
SLOT(requestMark(TextEditor::ITextEditor*,int))); SLOT(requestMark(TextEditor::ITextEditor*,int, TextEditor::ITextEditor::MarkRequestKind)));
connect(textEditor, connect(textEditor,
SIGNAL(markContextMenuRequested(TextEditor::ITextEditor*,int,QMenu*)), SIGNAL(markContextMenuRequested(TextEditor::ITextEditor*,int,QMenu*)),
SLOT(requestContextMenu(TextEditor::ITextEditor*,int,QMenu*))); SLOT(requestContextMenu(TextEditor::ITextEditor*,int,QMenu*)));
@@ -1943,8 +1945,13 @@ void DebuggerPluginPrivate::toggleBreakpointByAddress(quint64 address,
} }
} }
void DebuggerPluginPrivate::requestMark(ITextEditor *editor, int lineNumber) void DebuggerPluginPrivate::requestMark(ITextEditor *editor,
int lineNumber,
ITextEditor::MarkRequestKind kind)
{ {
if (kind != ITextEditor::BreakpointRequest)
return;
if (editor->property("DisassemblerView").toBool()) { if (editor->property("DisassemblerView").toBool()) {
QString line = editor->contents() QString line = editor->contents()
.section('\n', lineNumber - 1, lineNumber - 1); .section('\n', lineNumber - 1, lineNumber - 1);

View File

@@ -4370,7 +4370,12 @@ void BaseTextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
d->extraAreaToggleMarkBlockNumber = -1; d->extraAreaToggleMarkBlockNumber = -1;
if (cursor.blockNumber() == n) { if (cursor.blockNumber() == n) {
int line = n + 1; int line = n + 1;
emit editor()->markRequested(editor(), line); ITextEditor::MarkRequestKind kind;
if (QApplication::keyboardModifiers() & Qt::ShiftModifier)
kind = ITextEditor::BookmarkRequest;
else
kind = ITextEditor::BreakpointRequest;
emit editor()->markRequested(editor(), line, kind);
} }
} }
} }

View File

@@ -153,10 +153,15 @@ public:
static QMap<QString, QString> openedTextEditorsContents(); static QMap<QString, QString> openedTextEditorsContents();
static QMap<QString, QTextCodec *> openedTextEditorsEncodings(); static QMap<QString, QTextCodec *> openedTextEditorsEncodings();
enum MarkRequestKind {
BreakpointRequest,
BookmarkRequest
};
signals: signals:
void contentsChanged(); void contentsChanged();
void contentsChangedBecauseOfUndo(); void contentsChangedBecauseOfUndo();
void markRequested(TextEditor::ITextEditor *editor, int line); void markRequested(TextEditor::ITextEditor *editor, int line, TextEditor::ITextEditor::MarkRequestKind kind);
void markContextMenuRequested(TextEditor::ITextEditor *editor, int line, QMenu *menu); void markContextMenuRequested(TextEditor::ITextEditor *editor, int line, QMenu *menu);
void tooltipOverrideRequested(TextEditor::ITextEditor *editor, const QPoint &globalPos, int position, bool *handled); void tooltipOverrideRequested(TextEditor::ITextEditor *editor, const QPoint &globalPos, int position, bool *handled);
void tooltipRequested(TextEditor::ITextEditor *editor, const QPoint &globalPos, int position); void tooltipRequested(TextEditor::ITextEditor *editor, const QPoint &globalPos, int position);