From 54ccf51cdab1a337d69e6dc7848a4ab346f39051 Mon Sep 17 00:00:00 2001
From: Michail Vourlakos <mvourlakos@gmail.com>
Date: Sun, 26 Jun 2022 09:36:08 +0300
Subject: [PATCH] view:respect plasma theme default opacity value

--when background contrast effect is enabled and the
user has chosen DEFAULT opacity for its background then
plasma theme preferred contrast effect values should be
used.

BUG:443366
---
 app/view/effects.cpp                          | 19 +++++++++++++------
 .../package/contents/ui/BindingsExternal.qml  |  2 +-
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/app/view/effects.cpp b/app/view/effects.cpp
index ffb80ad8a..b1a137fad 100644
--- a/app/view/effects.cpp
+++ b/app/view/effects.cpp
@@ -40,6 +40,7 @@ Effects::~Effects()
 void Effects::init()
 {
     connect(this, &Effects::backgroundOpacityChanged, this, &Effects::updateEffects);
+    connect(this, &Effects::backgroundOpacityChanged, this, &Effects::updateBackgroundContrastValues);
     connect(this, &Effects::backgroundCornersMaskChanged, this, &Effects::updateEffects);
     connect(this, &Effects::backgroundRadiusEnabledChanged, this, &Effects::updateEffects);
     connect(this, &Effects::drawEffectsChanged, this, &Effects::updateEffects);
@@ -652,15 +653,21 @@ qreal Effects::currentMidValue(const qreal &max, const qreal &factor, const qrea
 void Effects::updateBackgroundContrastValues()
 {
     if (!m_theme.backgroundContrastEnabled()) {
-        m_backEffectContrast = 1;
-        m_backEffectIntesity = 1;
-        m_backEffectSaturation = 1;
+        m_backEffectContrast = 1.0;
+        m_backEffectIntesity = 1.0;
+        m_backEffectSaturation = 1.0;
         return;
     }
 
-    m_backEffectContrast = currentMidValue(m_theme.backgroundContrast(), m_backgroundOpacity, 1);
-    m_backEffectIntesity = currentMidValue(m_theme.backgroundIntensity(), m_backgroundOpacity, 1);
-    m_backEffectSaturation = currentMidValue(m_theme.backgroundSaturation(), m_backgroundOpacity, 1);
+    if (m_backgroundOpacity == -1 /*Default plasma opacity option*/) {
+        m_backEffectContrast = m_theme.backgroundContrast();
+        m_backEffectIntesity = m_theme.backgroundIntensity();
+        m_backEffectSaturation = m_theme.backgroundSaturation();
+    } else {
+        m_backEffectContrast = currentMidValue(m_theme.backgroundContrast(), m_backgroundOpacity, 1);
+        m_backEffectIntesity = currentMidValue(m_theme.backgroundIntensity(), m_backgroundOpacity, 1);
+        m_backEffectSaturation = currentMidValue(m_theme.backgroundSaturation(), m_backgroundOpacity, 1);
+    }
 }
 
 void Effects::updateEnabledBorders()
diff --git a/containment/package/contents/ui/BindingsExternal.qml b/containment/package/contents/ui/BindingsExternal.qml
index fb83d41c4..a2cf5acb5 100644
--- a/containment/package/contents/ui/BindingsExternal.qml
+++ b/containment/package/contents/ui/BindingsExternal.qml
@@ -191,7 +191,7 @@ Item {
         target: latteView && latteView.effects ? latteView.effects : null
         property: "backgroundOpacity"
         when: latteView && latteView.effects
-        value: background.currentOpacity
+        value: plasmoid.configuration.panelTransparency===-1 /*Default option*/ ? -1 : background.currentOpacity
     }
 
     Binding{