Dont endlessly chain NOT when repeatedly inverting the same search

This commit is contained in:
Kovid Goyal 2024-04-30 13:26:16 +05:30
parent 3bd4387f83
commit dd747283ca
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -58,9 +58,9 @@ class SearchLineEdit(QLineEdit): # {{{
menu.addAction(ac) menu.addAction(ac)
menu.addSeparator() menu.addSeparator()
ac = menu.addAction(_('Invert current search')) ac = menu.addAction(_('Invert current search'))
ac.setEnabled(bool(self.text())) ac.setEnabled(bool(self.text().strip()))
ac.setIcon(QIcon.ic('search.png')) ac.setIcon(QIcon.ic('search.png'))
ac.triggered.connect(self.reverse_search) ac.triggered.connect(self.invert_search)
menu.addAction(ac) menu.addAction(ac)
menu.addSeparator() menu.addSeparator()
if self.as_url is not None: if self.as_url is not None:
@ -70,10 +70,16 @@ class SearchLineEdit(QLineEdit): # {{{
menu.addAction(_('&Clear search history')).triggered.connect(self.clear_history) menu.addAction(_('&Clear search history')).triggered.connect(self.clear_history)
menu.exec(ev.globalPos()) menu.exec(ev.globalPos())
def reverse_search(self): def invert_search(self):
self.setText(f'NOT ( {self.text()} )') q = self.text().strip()
ev = QKeyEvent(QEvent.Type.KeyPress, Qt.Key.Key_Enter, Qt.KeyboardModifier.NoModifier) if q:
self.keyPressEvent(ev) if q.startswith('NOT ( ') and q.endswith(' )'):
q = q[6:-2]
else:
q = f'NOT ( {q} )'
self.setText(q)
ev = QKeyEvent(QEvent.Type.KeyPress, Qt.Key.Key_Enter, Qt.KeyboardModifier.NoModifier)
self.keyPressEvent(ev)
def paste_and_search(self): def paste_and_search(self):
self.paste() self.paste()