diff --git a/src/tagstudio/qt/controllers/autofill_line_edit.py b/src/tagstudio/qt/controllers/autofill_line_edit.py index e0c32228..daaa9f48 100644 --- a/src/tagstudio/qt/controllers/autofill_line_edit.py +++ b/src/tagstudio/qt/controllers/autofill_line_edit.py @@ -5,9 +5,10 @@ from typing import override import structlog from PySide6 import QtCore, QtGui -from PySide6.QtCore import Signal +from PySide6.QtCore import QPoint, Signal from PySide6.QtWidgets import ( QLineEdit, + QMenu, QWidget, ) @@ -72,3 +73,12 @@ class AutofillLineEdit(QLineEdit): if arg__1.key() == QtCore.Qt.Key.Key_Shift: self.holding_shift.emit(False) # noqa: FBT003 return super().keyReleaseEvent(arg__1) + + def show_action_menu(self, pos: QPoint) -> None: + """Show a context menu of actions.""" + menu = QMenu(self) + for action in self.actions(): + # Filter out icon action(s) + if action.text(): + menu.addAction(action) + menu.exec(self.mapToGlobal(pos)) # pyright: ignore[reportArgumentType] diff --git a/src/tagstudio/qt/views/suggest_box_view.py b/src/tagstudio/qt/views/suggest_box_view.py index 7279d6a1..6b790551 100644 --- a/src/tagstudio/qt/views/suggest_box_view.py +++ b/src/tagstudio/qt/views/suggest_box_view.py @@ -72,7 +72,8 @@ class SuggestBoxView(QVBoxLayout): QPixmap(), AutofillLineEdit.ActionPosition.TrailingPosition ) self.scroll_area.setFocusProxy(self.search_field) - self.search_field.setContextMenuPolicy(Qt.ContextMenuPolicy.ActionsContextMenu) + self.search_field.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) + self.search_field.customContextMenuRequested.connect(self.search_field.show_action_menu) # Finalize Layout self.addWidget(scroll_area_container)