diff --git a/ankiqt/ui/main.py b/ankiqt/ui/main.py index beb29d1c5..568153528 100755 --- a/ankiqt/ui/main.py +++ b/ankiqt/ui/main.py @@ -944,22 +944,51 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors") return True def showToolTip(self, msg): - t = QTimer(self) - t.setSingleShot(True) - t.start(200) - self.connect(t, SIGNAL("timeout()"), - lambda msg=msg: self._showToolTip(msg)) - - def _showToolTip(self, msg): - QToolTip.showText( - self.mainWin.statusbar.mapToGlobal(QPoint(0, -40)), - """\ + class CustomLabel(QLabel): + def mousePressEvent(self, evt): + evt.accept() + self.hide() + old = getattr(self, 'toolTipFrame', None) + if old: + old.deleteLater() + old = getattr(self, 'toolTipTimer', None) + if old: + old.stop() + old.deleteLater() + self.toolTipLabel = CustomLabel("""\
%s
""" % msg) + self.toolTipLabel.setFrameStyle(QFrame.Panel) + self.toolTipLabel.setLineWidth(2) + self.toolTipLabel.setWindowFlags(Qt.ToolTip) + p = QPalette() + p.setColor(QPalette.Window, QColor("#feffc4")) + self.toolTipLabel.setPalette(p) + aw = (self.app.instance().activeWindow() or + self) + self.toolTipLabel.move( + aw.mapToGlobal(QPoint(0, -100 + aw.height()))) + self.toolTipLabel.show() + self.toolTipTimer = QTimer(self) + self.toolTipTimer.setSingleShot(True) + self.toolTipTimer.start(2000) + self.connect(self.toolTipTimer, SIGNAL("timeout()"), + self.closeToolTip) + + def closeToolTip(self): + label = getattr(self, 'toolTipLabel', None) + if label: + label.deleteLater() + self.toolTipLabel = None + timer = getattr(self, 'toolTipTimer', None) + if timer: + timer.stop() + timer.deleteLater() + self.toolTipTimer = None def save(self, required=False): if not self.deck.path: