support for high dpi in aurorae
Summary: aurorae themes have hardoded sizes in pixels in their config files, but the framesvgs scale by themselves based on font dpi leading to corrupt results scale all sizes using the same logic(that's also used in c++ based kdecorations), gives correct looking scaled decorations BUG:375868 Test Plan: see screenshot Reviewers: #plasma, graesslin Reviewed By: #plasma, graesslin Subscribers: plasma-devel, kwin, #kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D5114icc-effect-5.14.5
parent
404f2675f8
commit
bfbcd01971
|
@ -19,6 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include <KConfig>
|
#include <KConfig>
|
||||||
#include <KConfigGroup>
|
#include <KConfigGroup>
|
||||||
|
|
||||||
|
#include <QGuiApplication>
|
||||||
|
#include <QScreen>
|
||||||
|
|
||||||
namespace Aurorae
|
namespace Aurorae
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -122,45 +125,53 @@ void ThemeConfig::load(const KConfig &conf)
|
||||||
m_shadow = general.readEntry("Shadow", defaultShadow());
|
m_shadow = general.readEntry("Shadow", defaultShadow());
|
||||||
m_decorationPosition = general.readEntry("DecorationPosition", defaultDecorationPosition());
|
m_decorationPosition = general.readEntry("DecorationPosition", defaultDecorationPosition());
|
||||||
|
|
||||||
|
int scaleFactor = 1;
|
||||||
|
QScreen *primary = QGuiApplication::primaryScreen();
|
||||||
|
if (primary) {
|
||||||
|
const qreal dpi = primary->logicalDotsPerInchX();
|
||||||
|
scaleFactor = (qreal)dpi / (qreal)96;
|
||||||
|
}
|
||||||
|
|
||||||
KConfigGroup border(&conf, QStringLiteral("Layout"));
|
KConfigGroup border(&conf, QStringLiteral("Layout"));
|
||||||
// default values taken from KCommonDecoration::layoutMetric() in kcommondecoration.cpp
|
// default values taken from KCommonDecoration::layoutMetric() in kcommondecoration.cpp
|
||||||
m_borderLeft = border.readEntry("BorderLeft", defaultBorderLeft());
|
m_borderLeft = scaleFactor * border.readEntry("BorderLeft", defaultBorderLeft());
|
||||||
m_borderRight = border.readEntry("BorderRight", defaultBorderRight());
|
m_borderRight = scaleFactor * border.readEntry("BorderRight", defaultBorderRight());
|
||||||
m_borderBottom = border.readEntry("BorderBottom", defaultBorderBottom());
|
m_borderBottom = scaleFactor * border.readEntry("BorderBottom", defaultBorderBottom());
|
||||||
m_borderTop = border.readEntry("BorderTop", defaultBorderTop());
|
m_borderTop = scaleFactor * border.readEntry("BorderTop", defaultBorderTop());
|
||||||
|
|
||||||
m_titleEdgeTop = border.readEntry("TitleEdgeTop", defaultTitleEdgeTop());
|
m_titleEdgeTop = scaleFactor * border.readEntry("TitleEdgeTop", defaultTitleEdgeTop());
|
||||||
m_titleEdgeBottom = border.readEntry("TitleEdgeBottom", defaultTitleEdgeBottom());
|
m_titleEdgeBottom = scaleFactor * border.readEntry("TitleEdgeBottom", defaultTitleEdgeBottom());
|
||||||
m_titleEdgeLeft = border.readEntry("TitleEdgeLeft", defaultTitleEdgeLeft());
|
m_titleEdgeLeft = scaleFactor * border.readEntry("TitleEdgeLeft", defaultTitleEdgeLeft());
|
||||||
m_titleEdgeRight = border.readEntry("TitleEdgeRight", defaultTitleEdgeRight());
|
m_titleEdgeRight = scaleFactor * border.readEntry("TitleEdgeRight", defaultTitleEdgeRight());
|
||||||
m_titleEdgeTopMaximized = border.readEntry("TitleEdgeTopMaximized", defaultTitleEdgeTopMaximized());
|
m_titleEdgeTopMaximized = scaleFactor * border.readEntry("TitleEdgeTopMaximized", defaultTitleEdgeTopMaximized());
|
||||||
m_titleEdgeBottomMaximized = border.readEntry("TitleEdgeBottomMaximized", defaultTitleEdgeBottomMaximized());
|
m_titleEdgeBottomMaximized = scaleFactor * border.readEntry("TitleEdgeBottomMaximized", defaultTitleEdgeBottomMaximized());
|
||||||
m_titleEdgeLeftMaximized = border.readEntry("TitleEdgeLeftMaximized", defaultTitleEdgeLeftMaximized());
|
m_titleEdgeLeftMaximized = scaleFactor * border.readEntry("TitleEdgeLeftMaximized", defaultTitleEdgeLeftMaximized());
|
||||||
m_titleEdgeRightMaximized = border.readEntry("TitleEdgeRightMaximized", defaultTitleEdgeRightMaximized());
|
m_titleEdgeRightMaximized = scaleFactor * border.readEntry("TitleEdgeRightMaximized", defaultTitleEdgeRightMaximized());
|
||||||
m_titleBorderLeft = border.readEntry("TitleBorderLeft", defaultTitleBorderLeft());
|
m_titleBorderLeft = scaleFactor * border.readEntry("TitleBorderLeft", defaultTitleBorderLeft());
|
||||||
m_titleBorderRight = border.readEntry("TitleBorderRight", defaultTitleBorderRight());
|
m_titleBorderRight = scaleFactor * border.readEntry("TitleBorderRight", defaultTitleBorderRight());
|
||||||
m_titleHeight = border.readEntry("TitleHeight", defaultTitleHeight());
|
m_titleHeight = scaleFactor * border.readEntry("TitleHeight", defaultTitleHeight());
|
||||||
|
|
||||||
m_buttonWidth = border.readEntry("ButtonWidth", defaultButtonWidth());
|
m_buttonWidth = border.readEntry("ButtonWidth", defaultButtonWidth());
|
||||||
m_buttonWidthMinimize = border.readEntry("ButtonWidthMinimize", m_buttonWidth);
|
m_buttonWidthMinimize = scaleFactor * border.readEntry("ButtonWidthMinimize", m_buttonWidth);
|
||||||
m_buttonWidthMaximizeRestore = border.readEntry("ButtonWidthMaximizeRestore", m_buttonWidth);
|
m_buttonWidthMaximizeRestore = scaleFactor * border.readEntry("ButtonWidthMaximizeRestore", m_buttonWidth);
|
||||||
m_buttonWidthClose = border.readEntry("ButtonWidthClose", m_buttonWidth);
|
m_buttonWidthClose = scaleFactor * border.readEntry("ButtonWidthClose", m_buttonWidth);
|
||||||
m_buttonWidthAllDesktops = border.readEntry("ButtonWidthAlldesktops", m_buttonWidth);
|
m_buttonWidthAllDesktops = scaleFactor * border.readEntry("ButtonWidthAlldesktops", m_buttonWidth);
|
||||||
m_buttonWidthKeepAbove = border.readEntry("ButtonWidthKeepabove", m_buttonWidth);
|
m_buttonWidthKeepAbove = scaleFactor * border.readEntry("ButtonWidthKeepabove", m_buttonWidth);
|
||||||
m_buttonWidthKeepBelow = border.readEntry("ButtonWidthKeepbelow", m_buttonWidth);
|
m_buttonWidthKeepBelow = scaleFactor * border.readEntry("ButtonWidthKeepbelow", m_buttonWidth);
|
||||||
m_buttonWidthShade = border.readEntry("ButtonWidthShade", m_buttonWidth);
|
m_buttonWidthShade = scaleFactor * border.readEntry("ButtonWidthShade", m_buttonWidth);
|
||||||
m_buttonWidthHelp = border.readEntry("ButtonWidthHelp", m_buttonWidth);
|
m_buttonWidthHelp = scaleFactor * border.readEntry("ButtonWidthHelp", m_buttonWidth);
|
||||||
m_buttonWidthMenu = border.readEntry("ButtonWidthMenu", m_buttonWidth);
|
m_buttonWidthMenu = scaleFactor * border.readEntry("ButtonWidthMenu", m_buttonWidth);
|
||||||
m_buttonWidthAppMenu = border.readEntry("ButtonWidthAppMenu", m_buttonWidthMenu);
|
m_buttonWidthAppMenu = scaleFactor * border.readEntry("ButtonWidthAppMenu", m_buttonWidthMenu);
|
||||||
m_buttonHeight = border.readEntry("ButtonHeight", defaultButtonHeight());
|
m_buttonWidth *= scaleFactor;
|
||||||
m_buttonSpacing = border.readEntry("ButtonSpacing", defaultButtonSpacing());
|
m_buttonHeight = scaleFactor * border.readEntry("ButtonHeight", defaultButtonHeight());
|
||||||
m_buttonMarginTop = border.readEntry("ButtonMarginTop", defaultButtonMarginTop());
|
m_buttonSpacing = scaleFactor * border.readEntry("ButtonSpacing", defaultButtonSpacing());
|
||||||
m_explicitButtonSpacer = border.readEntry("ExplicitButtonSpacer", defaultExplicitButtonSpacer());
|
m_buttonMarginTop = scaleFactor * border.readEntry("ButtonMarginTop", defaultButtonMarginTop());
|
||||||
|
m_explicitButtonSpacer = scaleFactor * border.readEntry("ExplicitButtonSpacer", defaultExplicitButtonSpacer());
|
||||||
|
|
||||||
m_paddingLeft = border.readEntry("PaddingLeft", defaultPaddingLeft());
|
m_paddingLeft = scaleFactor * border.readEntry("PaddingLeft", defaultPaddingLeft());
|
||||||
m_paddingRight = border.readEntry("PaddingRight", defaultPaddingRight());
|
m_paddingRight = scaleFactor * border.readEntry("PaddingRight", defaultPaddingRight());
|
||||||
m_paddingTop = border.readEntry("PaddingTop", defaultPaddingTop());
|
m_paddingTop = scaleFactor * border.readEntry("PaddingTop", defaultPaddingTop());
|
||||||
m_paddingBottom = border.readEntry("PaddingBottom", defaultPaddingBottom());
|
m_paddingBottom = scaleFactor * border.readEntry("PaddingBottom", defaultPaddingBottom());
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor ThemeConfig::activeTextColor(bool useTabs, bool focused) const
|
QColor ThemeConfig::activeTextColor(bool useTabs, bool focused) const
|
||||||
|
|
Loading…
Reference in New Issue