mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 15:32:23 -04:00
Only show edit actions with conform selection
This commit is contained in:
parent
23777eed67
commit
f72daacae4
1 changed files with 27 additions and 23 deletions
|
@ -1025,30 +1025,20 @@ class SidebarTreeView(QTreeView):
|
||||||
###########################
|
###########################
|
||||||
|
|
||||||
def onContextMenu(self, point: QPoint) -> None:
|
def onContextMenu(self, point: QPoint) -> None:
|
||||||
idx: QModelIndex = self.indexAt(point)
|
index: QModelIndex = self.indexAt(point)
|
||||||
item = self.model().item_for_index(idx)
|
item = self.model().item_for_index(index)
|
||||||
if not item:
|
if item and self.selectionModel().isSelected(index):
|
||||||
return
|
self.show_context_menu(item, index)
|
||||||
self.show_context_menu(item, idx)
|
|
||||||
|
|
||||||
# idx is only None when triggering the context menu from a left click on
|
def show_context_menu(self, item: SidebarItem, index: QModelIndex) -> None:
|
||||||
# saved searches - perhaps there is a better way to handle that?
|
menu = QMenu()
|
||||||
def show_context_menu(
|
self._maybe_add_type_specific_actions(menu, item)
|
||||||
self, item: SidebarItem, index: Optional[QModelIndex]
|
self._maybe_add_delete_action(menu, item, index)
|
||||||
) -> None:
|
self._maybe_add_rename_action(menu, item, index)
|
||||||
m = QMenu()
|
self._maybe_add_search_actions(menu)
|
||||||
self._maybe_add_type_specific_actions(m, item)
|
self._maybe_add_tree_actions(menu)
|
||||||
if item.item_type.is_deletable():
|
if menu.children():
|
||||||
m.addAction(tr(TR.ACTIONS_DELETE), lambda: self._on_delete(index))
|
menu.exec_(QCursor.pos())
|
||||||
if item.item_type.is_editable():
|
|
||||||
m.addAction(tr(TR.ACTIONS_RENAME), lambda: self.edit(index))
|
|
||||||
self._maybe_add_search_actions(m)
|
|
||||||
self._maybe_add_tree_actions(m)
|
|
||||||
|
|
||||||
if not m.children():
|
|
||||||
return
|
|
||||||
|
|
||||||
m.exec_(QCursor.pos())
|
|
||||||
|
|
||||||
def _maybe_add_type_specific_actions(self, menu: QMenu, item: SidebarItem) -> None:
|
def _maybe_add_type_specific_actions(self, menu: QMenu, item: SidebarItem) -> None:
|
||||||
if item.item_type in (SidebarItemType.NOTETYPE, SidebarItemType.NOTETYPE_ROOT):
|
if item.item_type in (SidebarItemType.NOTETYPE, SidebarItemType.NOTETYPE_ROOT):
|
||||||
|
@ -1058,6 +1048,20 @@ class SidebarTreeView(QTreeView):
|
||||||
tr(TR.BROWSING_SIDEBAR_SAVE_CURRENT_SEARCH), self.save_current_search
|
tr(TR.BROWSING_SIDEBAR_SAVE_CURRENT_SEARCH), self.save_current_search
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _maybe_add_delete_action(
|
||||||
|
self, menu: QMenu, item: SidebarItem, index: QModelIndex
|
||||||
|
) -> None:
|
||||||
|
if item.item_type.is_deletable() and all(
|
||||||
|
s.item_type == item.item_type for s in self._selected_items()
|
||||||
|
):
|
||||||
|
menu.addAction(tr(TR.ACTIONS_DELETE), lambda: self._on_delete(index))
|
||||||
|
|
||||||
|
def _maybe_add_rename_action(
|
||||||
|
self, menu: QMenu, item: SidebarItem, index: QModelIndex
|
||||||
|
) -> None:
|
||||||
|
if item.item_type.is_editable() and len(self._selected_items()) == 1:
|
||||||
|
menu.addAction(tr(TR.ACTIONS_RENAME), lambda: self.edit(index))
|
||||||
|
|
||||||
def _maybe_add_search_actions(self, menu: QMenu) -> None:
|
def _maybe_add_search_actions(self, menu: QMenu) -> None:
|
||||||
nodes = [
|
nodes = [
|
||||||
item.search_node for item in self._selected_items() if item.search_node
|
item.search_node for item in self._selected_items() if item.search_node
|
||||||
|
|
Loading…
Reference in a new issue