prevent flicker on modal dialogs

This commit is contained in:
Damien Elmes 2011-04-16 04:48:31 +09:00
parent 96a1802fc7
commit 915798cf46
3 changed files with 11 additions and 6 deletions

View file

@ -32,9 +32,9 @@ class AddCards(QDialog):
self.onReset()
self.history = []
self.forceClose = False
#restoreGeom(self, "add")
restoreGeom(self, "add")
addHook('reset', self.onReset)
self.mw.requireReset()
self.mw.requireReset(modal=True)
self.open()
self.setupNewFact()

View file

@ -26,7 +26,7 @@ class EditCurrent(QDialog):
self.editor = aqt.editor.Editor(self.mw, self.form.fieldsArea)
self.editor.setFact(self.mw.reviewer.card.fact())
restoreGeom(self, "editcurrent")
self.mw.requireReset()
self.mw.requireReset(modal=True)
self.open()
# reset focus after open
self.editor.web.setFocus()

View file

@ -130,8 +130,9 @@ class AnkiQt(QMainWindow):
self.deck.reset()
runHook("reset")
def requireReset(self):
def requireReset(self, modal=False):
"Signal queue needs to be rebuilt when edits are finished or by user."
self.resetModal = modal
if self.state in ("overview", "review"):
self.moveToState("resetRequired")
elif self.state == "editCurrent":
@ -145,15 +146,19 @@ class AnkiQt(QMainWindow):
def _resetRequiredState(self, oldState):
self.returnState = oldState
if self.resetModal:
# we don't have to change the webview, as we have a covering window
return
self.web.setKeyHandler(None)
self.web.setLinkHandler(lambda url: self.maybeReset())
i = _("Close the editing window to resume.")
b = self.button("refresh", _("Resume Now"))
self.web.stdHtml("""
<center><div style="height: 100%%">
<div style="position:relative; vertical-align: middle;">
%s<br>
%s</div></div></center>
""" % (_("Close the editing window to resume."),
self.button("refresh", _("Resume Now"))), css=self.sharedCSS)
""" % (i, b), css=self.sharedCSS)
# HTML helpers
##########################################################################