diff --git a/support/fancytabwidget.cpp b/support/fancytabwidget.cpp index 55b276840..88493bee8 100644 --- a/support/fancytabwidget.cpp +++ b/support/fancytabwidget.cpp @@ -307,12 +307,7 @@ FancyTabBar::FancyTabBar(QWidget *parent, bool text, int iSize, Pos pos) , m_pos(pos) , m_iconSize(iSize) { - QFont f(font()); - if (f.pointSizeF()>=8) { - f.setPointSizeF(f.pointSizeF()*0.8); - setFont(f); - } - + setFont(Utils::smallFont(font())); setAttribute(Qt::WA_Hover, true); setFocusPolicy(Qt::NoFocus); setMouseTracking(true); // Needed for hover events diff --git a/support/utils.cpp b/support/utils.cpp index 377a5b244..cc81184cc 100644 --- a/support/utils.cpp +++ b/support/utils.cpp @@ -50,8 +50,8 @@ #include #include -QLatin1Char Utils::constDirSep('/'); -QLatin1String Utils::constDirSepStr("/"); +const QLatin1Char Utils::constDirSep('/'); +const QLatin1String Utils::constDirSepStr("/"); const char * Utils::constDirSepCharStr="/"; static const QLatin1String constHttp("http://"); @@ -317,7 +317,7 @@ void Utils::msleep(int msecs) #endif // Q_WS_WIN // kstandarddirs.h -extern bool Utils::makeDir(const QString &dir, int mode) +bool Utils::makeDir(const QString &dir, int mode) { // we want an absolute path if (QDir::isRelativePath(dir)) { @@ -744,7 +744,28 @@ bool Utils::isDirReadable(const QString &dir) #endif } -extern int Utils::layoutSpacing(QWidget *w) +double Utils::smallFontFactor(const QFont &f) +{ + double sz=f.pointSizeF(); + if (sz<7.0) { + return 1.0; + } + if (sz<8.5) { + return 0.9; + } + if (sz<9.0) { + return 0.85; + } + return 0.8; +} + +QFont Utils::smallFont(QFont f) +{ + f.setPointSizeF(f.pointSizeF()*smallFontFactor(f)); + return f; +} + +int Utils::layoutSpacing(QWidget *w) { int spacing=(w ? w->style() : qApp->style())->layoutSpacing(QSizePolicy::DefaultType, QSizePolicy::DefaultType, Qt::Vertical); if (spacing<0) { @@ -753,7 +774,7 @@ extern int Utils::layoutSpacing(QWidget *w) return spacing; } -extern bool Utils::isHighDpi() +bool Utils::isHighDpi() { static int fontHeight=-1; if (-1==fontHeight) { diff --git a/support/utils.h b/support/utils.h index b4d0db4c3..5ad5584dd 100644 --- a/support/utils.h +++ b/support/utils.h @@ -30,6 +30,7 @@ #include #include #include +#include #ifdef ENABLE_KDE_SUPPORT #include #include @@ -45,8 +46,8 @@ class QWidget; namespace Utils { - extern QLatin1Char constDirSep; - extern QLatin1String constDirSepStr; + extern const QLatin1Char constDirSep; + extern const QLatin1String constDirSepStr; extern const char * constDirSepCharStr; inline bool equal(double d1, double d2, double precision=0.0001) @@ -104,6 +105,8 @@ namespace Utils extern void touchFile(const QString &fileName); extern bool isDirReadable(const QString &dir); + extern double smallFontFactor(const QFont &f); + extern QFont smallFont(QFont f); extern int layoutSpacing(QWidget *w); extern bool isHighDpi(); diff --git a/widgets/itemview.cpp b/widgets/itemview.cpp index 340f89729..99e59e689 100644 --- a/widgets/itemview.cpp +++ b/widgets/itemview.cpp @@ -140,7 +140,7 @@ public: imageSize=constDevImageSize; } return QSize(qMax(64, imageSize) + (constBorder * 2), - qMax(textHeight, imageSize) + (constBorder*2) + (int)((showCapacity ? textHeight*0.8 : 0)+0.5)); + qMax(textHeight, imageSize) + (constBorder*2) + (int)((showCapacity ? textHeight*Utils::smallFontFactor(QApplication::font()) : 0)+0.5)); } } @@ -279,8 +279,7 @@ public: painter->setFont(textFont); painter->drawText(textRect, text, textOpt); } else { - QFont childFont(QApplication::font()); - childFont.setPointSizeF(childFont.pointSizeF()*0.8); + QFont childFont(Utils::smallFont(QApplication::font())); QFontMetrics childMetrics(childFont); QRect childRect;