fix context menu in editor, and move workaround into shared function

This commit is contained in:
Damien Elmes 2019-02-05 14:37:07 +10:00
parent 372d5ed6e8
commit 1603a5224e
4 changed files with 18 additions and 11 deletions

View file

@ -20,7 +20,7 @@ from anki.utils import fmtTimeSpan, ids2str, stripHTMLMedia, htmlToTextLine, \
from aqt.utils import saveGeom, restoreGeom, saveSplitter, restoreSplitter, \ from aqt.utils import saveGeom, restoreGeom, saveSplitter, restoreSplitter, \
saveHeader, restoreHeader, saveState, restoreState, getTag, \ saveHeader, restoreHeader, saveState, restoreState, getTag, \
showInfo, askUser, tooltip, openHelp, showWarning, shortcut, mungeQA, \ showInfo, askUser, tooltip, openHelp, showWarning, shortcut, mungeQA, \
getOnlyText, MenuList, SubMenu getOnlyText, MenuList, SubMenu, qtMenuShortcutWorkaround
from anki.hooks import runHook, addHook, remHook, runFilter from anki.hooks import runHook, addHook, remHook, runFilter
from aqt.webview import AnkiWebView from aqt.webview import AnkiWebView
from anki.consts import * from anki.consts import *
@ -475,14 +475,12 @@ class Browser(QMainWindow):
m = QMenu() m = QMenu()
for act in self.form.menu_Cards.actions(): for act in self.form.menu_Cards.actions():
m.addAction(act) m.addAction(act)
if qtminor >= 10:
act.setShortcutVisibleInContextMenu(True)
m.addSeparator() m.addSeparator()
for act in self.form.menu_Notes.actions(): for act in self.form.menu_Notes.actions():
m.addAction(act) m.addAction(act)
if qtminor >= 10:
act.setShortcutVisibleInContextMenu(True)
runHook("browser.onContextMenu", self, m) runHook("browser.onContextMenu", self, m)
qtMenuShortcutWorkaround(m)
m.exec_(QCursor.pos()) m.exec_(QCursor.pos())
def updateFont(self): def updateFont(self):
@ -1586,8 +1584,8 @@ update cards set usn=?, mod=?, did=? where id in """ + scids,
for c, act in enumerate(flagActions): for c, act in enumerate(flagActions):
act.setChecked(flag == c+1) act.setChecked(flag == c+1)
if qtminor >= 10:
act.setShortcutVisibleInContextMenu(True) qtMenuShortcutWorkaround(self.form.menuFlag)
def onMark(self, mark=None): def onMark(self, mark=None):
if mark is None: if mark is None:

View file

@ -21,7 +21,7 @@ from anki.hooks import runHook, runFilter, addHook
from aqt.sound import getAudio from aqt.sound import getAudio
from aqt.webview import AnkiWebView from aqt.webview import AnkiWebView
from aqt.utils import shortcut, showInfo, showWarning, getFile, \ from aqt.utils import shortcut, showInfo, showWarning, getFile, \
openHelp, tooltip, downArrow openHelp, tooltip, downArrow, qtMenuShortcutWorkaround
import aqt import aqt
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import requests import requests
@ -777,6 +777,9 @@ to a cloze type first, via Edit>Change Note Type."""))
a = m.addAction(_("Edit HTML")) a = m.addAction(_("Edit HTML"))
a.triggered.connect(self.onHtmlEdit) a.triggered.connect(self.onHtmlEdit)
a.setShortcut(QKeySequence("Ctrl+Shift+X")) a.setShortcut(QKeySequence("Ctrl+Shift+X"))
qtMenuShortcutWorkaround(m)
m.exec_(QCursor.pos()) m.exec_(QCursor.pos())
# LaTeX # LaTeX

View file

@ -14,7 +14,7 @@ from anki.utils import stripHTML, json, bodyClass
from anki.hooks import addHook, runHook, runFilter from anki.hooks import addHook, runHook, runFilter
from anki.sound import playFromText, clearAudioQueue, play from anki.sound import playFromText, clearAudioQueue, play
from aqt.utils import mungeQA, tooltip, askUserDialog, \ from aqt.utils import mungeQA, tooltip, askUserDialog, \
downArrow downArrow, qtMenuShortcutWorkaround
from aqt.sound import getAudio from aqt.sound import getAudio
import aqt import aqt
@ -614,6 +614,7 @@ time = %(time)d;
self._addMenuItems(m, opts) self._addMenuItems(m, opts)
runHook("Reviewer.contextMenuEvent", self, m) runHook("Reviewer.contextMenuEvent", self, m)
qtMenuShortcutWorkaround(m)
m.exec_(QCursor.pos()) m.exec_(QCursor.pos())
def _addMenuItems(self, m, rows): def _addMenuItems(self, m, rows):
@ -624,6 +625,7 @@ time = %(time)d;
if len(row) == 2: if len(row) == 2:
subm = m.addMenu(row[0]) subm = m.addMenu(row[0])
self._addMenuItems(subm, row[1]) self._addMenuItems(subm, row[1])
qtMenuShortcutWorkaround(subm)
continue continue
if len(row) == 4: if len(row) == 4:
label, scut, func, opts = row label, scut, func, opts = row
@ -631,8 +633,6 @@ time = %(time)d;
label, scut, func = row label, scut, func = row
opts = {} opts = {}
a = m.addAction(label) a = m.addAction(label)
if qtminor >= 10:
a.setShortcutVisibleInContextMenu(True)
if scut: if scut:
a.setShortcut(QKeySequence(scut)) a.setShortcut(QKeySequence(scut))
if opts.get("checked"): if opts.get("checked"):

View file

@ -517,6 +517,12 @@ class MenuItem:
a = qmenu.addAction(self.title) a = qmenu.addAction(self.title)
a.triggered.connect(self.func) a.triggered.connect(self.func)
def qtMenuShortcutWorkaround(qmenu):
if qtminor < 10:
return
for act in qmenu.actions():
act.setShortcutVisibleInContextMenu(True)
###################################################################### ######################################################################
def versionWithBuild(): def versionWithBuild():