USe different small scale factor depending upon current font size

This commit is contained in:
craig.p.drummond
2014-02-25 19:27:29 +00:00
committed by craig.p.drummond
parent 159ebbf57d
commit efd36899dc
4 changed files with 34 additions and 16 deletions

View File

@@ -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

View File

@@ -50,8 +50,8 @@
#include <sys/types.h>
#include <utime.h>
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) {

View File

@@ -30,6 +30,7 @@
#include <QString>
#include <QLatin1Char>
#include <QDir>
#include <QFont>
#ifdef ENABLE_KDE_SUPPORT
#include <KDE/KGlobal>
#include <KDE/KLocale>
@@ -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();

View File

@@ -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;