From 635337068e4baddbd1c6ae0ed5262f9e996019f9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 25 Nov 2020 09:14:47 +0530 Subject: [PATCH] Metadata edit dialog: Fix keyboard shortcuts for bold/italic/underline not workining when more than one comments editor widget is present on a single tab. Fixes #1905479 [Edit Metadata: Non-default layout and custom longtext column breaks formatting shortcuts](https://bugs.launchpad.net/calibre/+bug/1905479) --- src/calibre/gui2/comments_editor.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/calibre/gui2/comments_editor.py b/src/calibre/gui2/comments_editor.py index 071cecdb26..dc99fe095f 100644 --- a/src/calibre/gui2/comments_editor.py +++ b/src/calibre/gui2/comments_editor.py @@ -255,12 +255,6 @@ class EditorWidget(QTextEdit, LineEditECM): # {{{ self._parent = weakref.ref(parent) self.comments_pat = re.compile(r'', re.DOTALL) - extra_shortcuts = { - 'bold': 'Bold', - 'italic': 'Italic', - 'underline': 'Underline', - } - for rec in ( ('bold', 'format-text-bold', _('Bold'), True), ('italic', 'format-text-italic', _('Italic'), True), @@ -298,9 +292,6 @@ class EditorWidget(QTextEdit, LineEditECM): # {{{ if checkable: ac.setCheckable(checkable) setattr(self, 'action_'+name, ac) - ss = extra_shortcuts.get(name) - if ss is not None: - ac.setShortcut(QKeySequence(getattr(QKeySequence, ss))) ac.triggered.connect(getattr(self, 'do_' + name)) self.action_block_style = QAction(QIcon(I('format-text-heading.png')), @@ -341,6 +332,21 @@ class EditorWidget(QTextEdit, LineEditECM): # {{{ self.textChanged.connect(self.data_changed) self.update_cursor_position_actions() + def keyPressEvent(self, ev): + if ev.matches(QKeySequence.Bold): + ev.accept() + self.action_bold.toggle(), self.action_bold.trigger() + return + if ev.matches(QKeySequence.Italic): + ev.accept() + self.action_italic.toggle(), self.action_italic.trigger() + return + if ev.matches(QKeySequence.Underline): + ev.accept() + self.action_underline.toggle(), self.action_underline.trigger() + return + return QTextEdit.keyPressEvent(self, ev) + def update_clipboard_actions(self, copy_available): self.action_copy.setEnabled(copy_available) self.action_cut.setEnabled(copy_available)