Bookmarks: Do not allow setting bookmarks in temporary files

Those can never get triggered anyway as they point to a file without
any filename.

Change-Id: Id04aa2e63a7e6918269851df0cd41c7334bfc94c
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2015-09-03 15:01:04 +02:00
parent d2d883ce29
commit 482b395926
4 changed files with 15 additions and 14 deletions

View File

@@ -671,7 +671,10 @@ BookmarkManager::State BookmarkManager::state() const
void BookmarkManager::updateActionStatus() void BookmarkManager::updateActionStatus()
{ {
emit updateActions(state()); IEditor *editor = EditorManager::currentEditor();
const bool enableToggle = editor && !editor->document()->isTemporary();
updateActions(enableToggle, state());
} }
void BookmarkManager::moveUp() void BookmarkManager::moveUp()

View File

@@ -107,7 +107,7 @@ public:
bool gotoBookmark(Bookmark *bookmark); bool gotoBookmark(Bookmark *bookmark);
signals: signals:
void updateActions(int state); void updateActions(bool enableToggle, int state);
void currentIndexChanged(const QModelIndex &); void currentIndexChanged(const QModelIndex &);
private: private:

View File

@@ -72,8 +72,6 @@ BookmarksPlugin::BookmarksPlugin() :
bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *) bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *)
{ {
Context textcontext(TextEditor::Constants::C_TEXTEDITOR);
ActionContainer *mtools = ActionManager::actionContainer(Core::Constants::M_TOOLS); ActionContainer *mtools = ActionManager::actionContainer(Core::Constants::M_TOOLS);
ActionContainer *mbm = ActionManager::createMenu(Id(BOOKMARKS_MENU)); ActionContainer *mbm = ActionManager::createMenu(Id(BOOKMARKS_MENU));
mbm->menu()->setTitle(tr("&Bookmarks")); mbm->menu()->setTitle(tr("&Bookmarks"));
@@ -81,11 +79,11 @@ bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *)
//Toggle //Toggle
m_toggleAction = new QAction(tr("Toggle Bookmark"), this); m_toggleAction = new QAction(tr("Toggle Bookmark"), this);
Command *cmd = ActionManager::registerAction(m_toggleAction, BOOKMARKS_TOGGLE_ACTION, textcontext); Command *cmd = ActionManager::registerAction(m_toggleAction, BOOKMARKS_TOGGLE_ACTION);
cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+M") : tr("Ctrl+M"))); cmd->setDefaultKeySequence(QKeySequence(UseMacShortcuts ? tr("Meta+M") : tr("Ctrl+M")));
mbm->addAction(cmd); mbm->addAction(cmd);
mbm->addSeparator(textcontext); mbm->addSeparator();
//Previous //Previous
m_prevAction = new QAction(tr("Previous Bookmark"), this); m_prevAction = new QAction(tr("Previous Bookmark"), this);
@@ -116,7 +114,8 @@ bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *)
m_bookmarkManager = new BookmarkManager; m_bookmarkManager = new BookmarkManager;
connect(m_toggleAction, &QAction::triggered, [this]() { connect(m_toggleAction, &QAction::triggered, [this]() {
if (BaseTextEditor *editor = BaseTextEditor::currentTextEditor()) BaseTextEditor *editor = BaseTextEditor::currentTextEditor();
if (editor && !editor->document()->isTemporary())
m_bookmarkManager->toggleBookmark(editor->document()->filePath().toString(), editor->currentLine()); m_bookmarkManager->toggleBookmark(editor->document()->filePath().toString(), editor->currentLine());
}); });
@@ -130,7 +129,7 @@ bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *)
}); });
connect(m_bookmarkManager, &BookmarkManager::updateActions, this, &BookmarksPlugin::updateActions); connect(m_bookmarkManager, &BookmarkManager::updateActions, this, &BookmarksPlugin::updateActions);
updateActions(m_bookmarkManager->state()); updateActions(false, m_bookmarkManager->state());
addAutoReleasedObject(new BookmarkViewFactory(m_bookmarkManager)); addAutoReleasedObject(new BookmarkViewFactory(m_bookmarkManager));
m_bookmarkMarginAction = new QAction(this); m_bookmarkMarginAction = new QAction(this);
@@ -154,12 +153,12 @@ BookmarksPlugin::~BookmarksPlugin()
delete m_bookmarkManager; delete m_bookmarkManager;
} }
void BookmarksPlugin::updateActions(int state) void BookmarksPlugin::updateActions(bool enableToggle, int state)
{ {
const bool hasbm = state >= BookmarkManager::HasBookMarks; const bool hasbm = state >= BookmarkManager::HasBookMarks;
const bool hasdocbm = state == BookmarkManager::HasBookmarksInDocument; const bool hasdocbm = state == BookmarkManager::HasBookmarksInDocument;
m_toggleAction->setEnabled(true); m_toggleAction->setEnabled(enableToggle);
m_prevAction->setEnabled(hasbm); m_prevAction->setEnabled(hasbm);
m_nextAction->setEnabled(hasbm); m_nextAction->setEnabled(hasbm);
m_docPrevAction->setEnabled(hasdocbm); m_docPrevAction->setEnabled(hasdocbm);
@@ -171,7 +170,7 @@ void BookmarksPlugin::editorOpened(IEditor *editor)
if (auto widget = qobject_cast<TextEditorWidget *>(editor->widget())) { if (auto widget = qobject_cast<TextEditorWidget *>(editor->widget())) {
connect(widget, &TextEditorWidget::markRequested, m_bookmarkManager, connect(widget, &TextEditorWidget::markRequested, m_bookmarkManager,
[this, editor](TextEditorWidget *, int line, TextMarkRequestKind kind) { [this, editor](TextEditorWidget *, int line, TextMarkRequestKind kind) {
if (kind == BookmarkRequest && editor->document()) if (kind == BookmarkRequest && !editor->document()->isTemporary())
m_bookmarkManager->toggleBookmark(editor->document()->filePath().toString(), line); m_bookmarkManager->toggleBookmark(editor->document()->filePath().toString(), line);
}); });
@@ -198,8 +197,7 @@ void BookmarksPlugin::editorAboutToClose(IEditor *editor)
void BookmarksPlugin::requestContextMenu(TextEditorWidget *widget, void BookmarksPlugin::requestContextMenu(TextEditorWidget *widget,
int lineNumber, QMenu *menu) int lineNumber, QMenu *menu)
{ {
// Don't set bookmarks in disassembler views. if (widget->textDocument()->isTemporary() || widget->textDocument()->property("DisassemblerView").toBool())
if (widget->textDocument()->property("DisassemblerView").toBool())
return; return;
m_bookmarkMarginActionLineNumber = lineNumber; m_bookmarkMarginActionLineNumber = lineNumber;

View File

@@ -63,7 +63,7 @@ public:
void extensionsInitialized() {} void extensionsInitialized() {}
private: private:
void updateActions(int stateMask); void updateActions(bool enableToggle, int stateMask);
void editorOpened(Core::IEditor *editor); void editorOpened(Core::IEditor *editor);
void editorAboutToClose(Core::IEditor *editor); void editorAboutToClose(Core::IEditor *editor);