From 0305b44785a9e8dc5f6a8c2bec08a297387a0c04 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 13 Sep 2023 18:23:37 +0300 Subject: [PATCH] plasma: perfect size for lockout applet small for desktop applet but suitable for any theme and any form factor (desktop-like, panel, etc.) Signed-off-by: Ivailo Monev --- plasma/applets/lockout/lockout.cpp | 47 +++++-------------- .../lockout/plasma-applet-lockout.desktop | 2 +- 2 files changed, 14 insertions(+), 35 deletions(-) diff --git a/plasma/applets/lockout/lockout.cpp b/plasma/applets/lockout/lockout.cpp index 44c0c4f8..dd2855ec 100644 --- a/plasma/applets/lockout/lockout.cpp +++ b/plasma/applets/lockout/lockout.cpp @@ -232,7 +232,7 @@ LockoutApplet::LockoutApplet(QObject *parent, const QVariantList &args) KGlobal::locale()->insertCatalog("plasma_applet_lockout"); setAspectRatioMode(Plasma::AspectRatioMode::IgnoreAspectRatio); setHasConfigurationInterface(true); - setPreferredSize(40, 110); + setPreferredSize(110, 40); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); } @@ -442,59 +442,36 @@ void LockoutApplet::createConfigurationInterface(KConfigDialog *parent) void LockoutApplet::updateSizes() { - int visiblebuttons = 0; - QSizeF basesize; + QSizeF preferredsize; if (m_showlock) { - basesize = m_lockwidget->preferredSize(); - visiblebuttons++; + preferredsize = m_lockwidget->preferredSize(); } if (m_showswitch) { - if (basesize.isNull()) { - basesize = m_switchwidget->preferredSize(); - } - visiblebuttons++; + preferredsize += m_switchwidget->preferredSize(); } if (m_showshutdown) { - if (basesize.isNull()) { - basesize = m_shutdownwidget->preferredSize(); - } - visiblebuttons++; + preferredsize += m_shutdownwidget->preferredSize(); } if (m_showtoram) { - if (basesize.isNull()) { - basesize = m_toramwidget->preferredSize(); - } - visiblebuttons++; + preferredsize += m_toramwidget->preferredSize(); } if (m_showtodisk) { - if (basesize.isNull()) { - basesize = m_todiskwidget->preferredSize(); - } - visiblebuttons++; + preferredsize += m_todiskwidget->preferredSize(); } if (m_showhybrid) { - if (basesize.isNull()) { - basesize = m_hybridwidget->preferredSize(); - } - visiblebuttons++; + preferredsize += m_hybridwidget->preferredSize(); } - if (basesize.isNull()) { - basesize = s_basesize; + if (preferredsize.isNull()) { + preferredsize = s_basesize; } - Q_ASSERT(visiblebuttons > 0); - // for non-panel expand to the widget size depending on the orientation - const bool hasspacing = (m_layout->spacing() != 0); + setPreferredSize(preferredsize); switch (m_layout->orientation()) { case Qt::Horizontal: { - basesize.setWidth(basesize.width() * visiblebuttons); - setPreferredSize(hasspacing ? basesize.expandedTo(size()) : basesize); setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); break; } case Qt::Vertical: { - basesize.setHeight(basesize.height() * visiblebuttons); - setPreferredSize(hasspacing ? basesize.expandedTo(size()) : basesize); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); break; } @@ -504,6 +481,8 @@ void LockoutApplet::updateSizes() void LockoutApplet::constraintsEvent(Plasma::Constraints constraints) { + // perfect size finder + // qDebug() << Q_FUNC_INFO << size(); if (constraints & Plasma::SizeConstraint || constraints & Plasma::FormFactorConstraint) { switch (formFactor()) { case Plasma::FormFactor::Horizontal: { diff --git a/plasma/applets/lockout/plasma-applet-lockout.desktop b/plasma/applets/lockout/plasma-applet-lockout.desktop index 2d76d663..45b6e307 100644 --- a/plasma/applets/lockout/plasma-applet-lockout.desktop +++ b/plasma/applets/lockout/plasma-applet-lockout.desktop @@ -214,4 +214,4 @@ X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL X-KDE-PluginInfo-EnabledByDefault=true -X-Plasma-DefaultSize=40,110 +X-Plasma-DefaultSize=110,40