[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kfile
From:       Christoph Feck <christoph () maxiom ! de>
Date:       2010-11-12 1:44:01
Message-ID: 20101112014401.AFEC6AC89E () svn ! kde ! org
[Download RAW message or body]

SVN commit 1195822 by cfeck:

Fix font handling

Do not use setFont() on widget to render bold text, this
breaks changing application fonts by user.

BUG: 254507


 M  +0 -3      kurlnavigator.cpp  
 M  +12 -8     kurlnavigatorbutton.cpp  


--- trunk/KDE/kdelibs/kfile/kurlnavigator.cpp #1195821:1195822
@@ -276,9 +276,6 @@
 
     q->setLayoutDirection(Qt::LeftToRight);
 
-    const QFont font = KGlobalSettings::generalFont();
-    q->setFont(font);
-
     const int minHeight = m_pathBox->sizeHint().height();
     q->setMinimumHeight(minHeight);
 
--- trunk/KDE/kdelibs/kfile/kurlnavigatorbutton.cpp #1195821:1195822
@@ -105,11 +105,8 @@
 {
     m_subDir = subDir;
 
-    QFont adjustedFont(font());
-    adjustedFont.setBold(m_subDir.isEmpty());
-    setFont(adjustedFont);
-
-    update();
+    // We use a different (bold) font on active, so the size hint changes
+    updateGeometry();
 }
 
 QString KUrlNavigatorButton::activeSubDirectory() const
@@ -119,9 +116,11 @@
 
 QSize KUrlNavigatorButton::sizeHint() const
 {
+    QFont adjustedFont(font());
+    adjustedFont.setBold(m_subDir.isEmpty());
     // the minimum size is textWidth + arrowWidth() + 2 * BorderWidth; for the
     // preferred size we add the BorderWidth 2 times again for having an uncluttered look
-    const int width = fontMetrics().width(text()) + arrowWidth() + 4 * BorderWidth;
+    const int width = QFontMetrics(adjustedFont).width(text()) + arrowWidth() + 4 * BorderWidth;
     return QSize(width, KUrlNavigatorButtonBase::sizeHint().height());
 }
 
@@ -131,6 +130,10 @@
 
     QPainter painter(this);
 
+    QFont adjustedFont(font());
+    adjustedFont.setBold(m_subDir.isEmpty());
+    painter.setFont(adjustedFont);
+
     int buttonWidth  = width();
     int preferredWidth = sizeHint().width();
     if (preferredWidth < minimumWidth()) {
@@ -538,8 +541,9 @@
         availableWidth -= arrowWidth() - BorderWidth;
     }
 
-    QFontMetrics fontMetrics(font());
-    return fontMetrics.width(text()) >= availableWidth;
+    QFont adjustedFont(font());
+    adjustedFont.setBold(m_subDir.isEmpty());
+    return QFontMetrics(adjustedFont).width(text()) >= availableWidth;
 }
 
 void KUrlNavigatorButton::updateMinimumWidth()
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic