From a5837fff096ff15cada7e9a0bb2aa8573381245b Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Thu, 10 May 2018 20:26:46 +0300 Subject: [PATCH] add enabler/disabler for borderless maximized wins --- app/layout.cpp | 12 +++++++++++- app/universalsettings.cpp | 18 ++++++++++++++++++ app/universalsettings.h | 5 +++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/app/layout.cpp b/app/layout.cpp index 20800884a..6afe8d045 100644 --- a/app/layout.cpp +++ b/app/layout.cpp @@ -24,6 +24,7 @@ #include "importer.h" #include "layoutmanager.h" #include "screenpool.h" +#include "universalsettings.h" #include "dock/dockview.h" #include @@ -181,11 +182,20 @@ void Layout::initToCorona(DockCorona *corona) qDebug() << "Layout ::::: " << name() << " added contaiments ::: " << m_containments.size(); + connect(m_corona->universalSettings(), &UniversalSettings::canDisableBordersChanged, this, [&]() { + if (m_corona->universalSettings()->canDisableBorders()) { + kwin_setDisabledMaximizedBorders(disableBordersForMaximizedWindows()); + } else { + kwin_setDisabledMaximizedBorders(false); + } + }); + if (m_corona->layoutManager()->memoryUsage() == Dock::SingleLayout) { kwin_setDisabledMaximizedBorders(disableBordersForMaximizedWindows()); } else if (m_corona->layoutManager()->memoryUsage() == Dock::MultipleLayouts) { connect(m_corona->layoutManager(), &LayoutManager::currentLayoutNameChanged, this, [&]() { - if (m_corona->layoutManager()->currentLayoutName() == name()) { + if (m_corona->universalSettings()->canDisableBorders() + && m_corona->layoutManager()->currentLayoutName() == name()) { kwin_setDisabledMaximizedBorders(disableBordersForMaximizedWindows()); } }); diff --git a/app/universalsettings.cpp b/app/universalsettings.cpp index 3f68991f3..b74367fae 100644 --- a/app/universalsettings.cpp +++ b/app/universalsettings.cpp @@ -34,6 +34,7 @@ UniversalSettings::UniversalSettings(KSharedConfig::Ptr config, QObject *parent) m_config(config), m_universalGroup(KConfigGroup(config, QStringLiteral("UniversalSettings"))) { + connect(this, &UniversalSettings::canDisableBordersChanged, this, &UniversalSettings::saveConfig); connect(this, &UniversalSettings::currentLayoutNameChanged, this, &UniversalSettings::saveConfig); connect(this, &UniversalSettings::downloadWindowSizeChanged, this, &UniversalSettings::saveConfig); connect(this, &UniversalSettings::lastNonAssignedLayoutNameChanged, this, &UniversalSettings::saveConfig); @@ -246,6 +247,21 @@ void UniversalSettings::setAutostart(bool state) } } +bool UniversalSettings::canDisableBorders() const +{ + return m_canDisableBorders; +} + +void UniversalSettings::setCanDisableBorders(bool enable) +{ + if (m_canDisableBorders == enable) { + return; + } + + m_canDisableBorders = enable; + emit canDisableBordersChanged(); +} + Dock::LayoutsMemoryUsage UniversalSettings::layoutsMemoryUsage() const { return m_memoryUsage; @@ -279,6 +295,7 @@ void UniversalSettings::setMouseSensitivity(Dock::MouseSensitivity sensitivity) void UniversalSettings::loadConfig() { m_version = m_universalGroup.readEntry("version", 1); + m_canDisableBorders = m_universalGroup.readEntry("canDisableBorders", false); m_currentLayoutName = m_universalGroup.readEntry("currentLayout", QString()); m_downloadWindowSize = m_universalGroup.readEntry("downloadWindowSize", QSize(800, 550)); m_lastNonAssignedLayoutName = m_universalGroup.readEntry("lastNonAssignedLayout", QString()); @@ -294,6 +311,7 @@ void UniversalSettings::loadConfig() void UniversalSettings::saveConfig() { m_universalGroup.writeEntry("version", m_version); + m_universalGroup.writeEntry("canDisableBorders", m_canDisableBorders); m_universalGroup.writeEntry("currentLayout", m_currentLayoutName); m_universalGroup.writeEntry("downloadWindowSize", m_downloadWindowSize); m_universalGroup.writeEntry("lastNonAssignedLayout", m_lastNonAssignedLayoutName); diff --git a/app/universalsettings.h b/app/universalsettings.h index 7096a7929..dab520e22 100644 --- a/app/universalsettings.h +++ b/app/universalsettings.h @@ -58,6 +58,9 @@ public: bool autostart() const; void setAutostart(bool state); + bool canDisableBorders() const; + void setCanDisableBorders(bool enable); + bool showInfoWindow() const; void setShowInfoWindow(bool show); @@ -101,6 +104,7 @@ public slots: signals: void autostartChanged(); + void canDisableBordersChanged(); void currentLayoutNameChanged(); void downloadWindowSizeChanged(); void lastNonAssignedLayoutNameChanged(); @@ -125,6 +129,7 @@ private: void setLayoutsMemoryUsage(Dock::LayoutsMemoryUsage layoutsMemoryUsage); private: + bool m_canDisableBorders{false}; bool m_showInfoWindow{true}; //when there isnt a version it is an old universal file