Enable in-place editing of sidebar tags

This commit is contained in:
RumovZ 2021-02-28 21:50:21 +01:00
parent d0b916a2ff
commit 1b8cebb8c5

View file

@ -877,6 +877,7 @@ class SidebarTreeView(QTreeView):
expanded=node.expanded, expanded=node.expanded,
item_type=SidebarItemType.TAG, item_type=SidebarItemType.TAG,
full_name=head + node.name, full_name=head + node.name,
editable=True,
) )
root.add_child(item) root.add_child(item)
newhead = f"{head + node.name}::" newhead = f"{head + node.name}::"
@ -1098,13 +1099,16 @@ class SidebarTreeView(QTreeView):
self.browser.model.beginReset() self.browser.model.beginReset()
self.mw.taskman.run_in_background(do_remove, on_done) self.mw.taskman.run_in_background(do_remove, on_done)
def rename_tag(self, item: SidebarItem) -> None: def rename_tag(self, item: SidebarItem, new_name: str = None) -> None:
self.browser.editor.saveNow(lambda: self._rename_tag(item)) # block repainting until callback
self.setUpdatesEnabled(False)
self.browser.editor.saveNow(lambda: self._rename_tag(item, new_name))
def _rename_tag(self, item: SidebarItem) -> None: def _rename_tag(self, item: SidebarItem, new_name: str = None) -> None:
old_name = item.full_name old_name = item.full_name
new_name = getOnlyText(tr(TR.ACTIONS_NEW_NAME), default=old_name) new_name = new_name or getOnlyText(tr(TR.ACTIONS_NEW_NAME), default=old_name)
if new_name == old_name or not new_name: if new_name == old_name or not new_name:
self.setUpdatesEnabled(True)
return return
def do_rename() -> int: def do_rename() -> int:
@ -1154,6 +1158,8 @@ class SidebarTreeView(QTreeView):
return self.rename_deck(item, new_name) return self.rename_deck(item, new_name)
if item.item_type == SidebarItemType.SAVED_SEARCH: if item.item_type == SidebarItemType.SAVED_SEARCH:
return self.rename_saved_search(item, new_name) return self.rename_saved_search(item, new_name)
if item.item_type == SidebarItemType.TAG:
self.rename_tag(item, new_name)
return False return False
# Saved searches # Saved searches