On Friday 11 September 2009, Aaron J. Seigo wrote:
> On September 11, 2009, Marco Martin wrote:
> > but the ones thatreally have to use the proxywidget to paint, like the
> > ones that have to layout text there wouldn't be much we can do about
> > (maybe syncing the nativewidget font with the plasma theme one?)
>
> that'd probably be the best we could do...
was thinking about that, if it's ok i'll start the monkeycode device...
--
Marco Martin
Index: pushbutton.cpp
===================================================================
--- pushbutton.cpp (revision 1022402)
+++ pushbutton.cpp (working copy)
@@ -49,7 +49,8 @@
background(0),
animId(-1),
fadeIn(false),
- svg(0)
+ svg(0),
+ customFont(false)
{
}
@@ -110,6 +111,7 @@
QString absImagePath;
Svg *svg;
QString svgElement;
+ bool customFont;
};
void PushButtonPrivate::syncActiveRect()
@@ -382,8 +384,15 @@
}
}
+ QFont widgetFont;
+ if (d->customFont) {
+ widgetFont = Plasma::Theme::defaultTheme()->font(Plasma::Theme::DefaultFont);
+ } else {
+ widgetFont = font();
+ }
+
//if there is not enough room for the text make it to fade out
- QFontMetricsF fm(Plasma::Theme::defaultTheme()->font(Plasma::Theme::DefaultFont));
+ QFontMetricsF fm(widgetFont);
if (rect.width() < fm.width(nativeWidget()->text())) {
if (bufferPixmap.isNull()) {
bufferPixmap = QPixmap(rect.size().toSize());
@@ -392,7 +401,7 @@
QPainter p(&bufferPixmap);
p.setPen(painter->pen());
- p.setFont(Plasma::Theme::defaultTheme()->font(Plasma::Theme::DefaultFont));
+ p.setFont(widgetFont);
// Create the alpha gradient for the fade out effect
QLinearGradient alphaGradient(0, 0, 1, 0);
@@ -414,7 +423,7 @@
painter->drawPixmap(rect.topLeft(), bufferPixmap);
} else {
- painter->setFont(Plasma::Theme::defaultTheme()->font(Plasma::Theme::DefaultFont));
+ painter->setFont(widgetFont);
painter->drawText(rect, Qt::AlignCenter, nativeWidget()->text());
}
}
@@ -439,6 +448,13 @@
QGraphicsProxyWidget::hoverEnterEvent(event);
}
+void PushButton::changeEvent(QEvent *event)
+{
+ if (event->type() == QEvent::FontChange) {
+ d->customFont = true;
+ }
+}
+
void PushButton::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
if (nativeWidget()->isDown()) {
Index: pushbutton.h
===================================================================
--- pushbutton.h (revision 1022402)
+++ pushbutton.h (working copy)
@@ -167,6 +167,7 @@
void resizeEvent(QGraphicsSceneResizeEvent *event);
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
+ void changeEvent(QEvent *event);
private:
PushButtonPrivate *const d;
_______________________________________________
Plasma-devel mailing list
Plasma-devel@kde.org
https://mail.kde.org/mailman/listinfo/plasma-devel