mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix tooltips not being displayed for layout buttons in layout menu
This commit is contained in:
parent
a8dfb5885f
commit
f01474325e
@ -4,7 +4,7 @@
|
||||
|
||||
from qt.core import (
|
||||
QFontMetrics, QHBoxLayout, QIcon, QMenu, QStylePainter, QPushButton, QSize,
|
||||
QSizePolicy, Qt, QWidget, QStyleOption, QStyle, QEvent)
|
||||
QSizePolicy, Qt, QWidget, QStyleOption, QStyle)
|
||||
|
||||
|
||||
ICON_SZ = 64
|
||||
@ -12,9 +12,10 @@ ICON_SZ = 64
|
||||
|
||||
class LayoutItem(QWidget):
|
||||
|
||||
mouse_over = False
|
||||
|
||||
def __init__(self, button, parent=None):
|
||||
QWidget.__init__(self, parent)
|
||||
self.mouse_over = False
|
||||
self.setSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Fixed)
|
||||
self.button = button
|
||||
self.text = button.label
|
||||
@ -22,6 +23,10 @@ class LayoutItem(QWidget):
|
||||
self.fm = QFontMetrics(self.font())
|
||||
self._bi = self._di = None
|
||||
|
||||
def update_tips(self):
|
||||
self.setToolTip(self.button.toolTip())
|
||||
self.setStatusTip(self.button.statusTip())
|
||||
|
||||
@property
|
||||
def bright_icon(self):
|
||||
if self._bi is None:
|
||||
@ -34,17 +39,17 @@ class LayoutItem(QWidget):
|
||||
self._di = self.button.icon().pixmap(ICON_SZ, ICON_SZ, mode=QIcon.Mode.Disabled)
|
||||
return self._di
|
||||
|
||||
def event(self, ev):
|
||||
m = None
|
||||
et = ev.type()
|
||||
if et == QEvent.Type.Enter:
|
||||
m = True
|
||||
elif et == QEvent.Type.Leave:
|
||||
m = False
|
||||
if m is not None and m != self.mouse_over:
|
||||
self.mouse_over = m
|
||||
def enterEvent(self, ev):
|
||||
super().enterEvent(ev)
|
||||
if not self.mouse_over:
|
||||
self.mouse_over = True
|
||||
self.update()
|
||||
|
||||
def leaveEvent(self, ev):
|
||||
super().leaveEvent(ev)
|
||||
if self.mouse_over:
|
||||
self.mouse_over = False
|
||||
self.update()
|
||||
return QWidget.event(self, ev)
|
||||
|
||||
def sizeHint(self):
|
||||
br = self.fm.boundingRect(self.text)
|
||||
@ -100,8 +105,13 @@ class LayoutMenu(QMenu):
|
||||
for b in buttons:
|
||||
self.items.append(LayoutItem(b, self))
|
||||
l.addWidget(self.items[-1])
|
||||
self.aboutToShow.connect(self.about_to_show)
|
||||
self.current_item = None
|
||||
|
||||
def about_to_show(self):
|
||||
for x in self.items:
|
||||
x.update_tips()
|
||||
|
||||
def sizeHint(self):
|
||||
return QWidget.sizeHint(self)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user