Only show edit actions with conform selection

This commit is contained in:
RumovZ 2021-03-07 10:30:20 +01:00
parent 23777eed67
commit f72daacae4

View file

@ -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