[graphics/krita] libs: Fix the command creation so they merge correctly.

Wolthera van Hövell <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit d3cbe3717b6475f915358f9d791add6215ed8afc by Wolthera van Hövell, on behalf of Wolthera van Hövell tot Westerflier.
Committed on 07/08/2026 at 09:24.
Pushed by woltherav into branch 'master'.

Fix the command creation so they merge correctly.

M  +1    -1    libs/image/commands_new/KisChangeImageHdrColorVolumeCommand.cpp
M  +29   -23   libs/ui/dialogs/kis_dlg_image_properties.cc
M  +2    -1    libs/ui/dialogs/kis_dlg_image_properties.h

https://invent.kde.org/graphics/krita/-/commit/d3cbe3717b6475f915358f9d791add6215ed8afc

diff --git a/libs/image/commands_new/KisChangeImageHdrColorVolumeCommand.cpp b/libs/image/commands_new/KisChangeImageHdrColorVolumeCommand.cpp
index fdcc2f79aec..7d6a8f6ec7c 100644
--- a/libs/image/commands_new/KisChangeImageHdrColorVolumeCommand.cpp
+++ b/libs/image/commands_new/KisChangeImageHdrColorVolumeCommand.cpp
@@ -16,7 +16,7 @@ KisChangeImageHdrColorVolumeCommand::KisChangeImageHdrColorVolumeCommand(KisImag
 {
     KisImageSP img = m_image.toStrongRef();
     if (img) {
-        m_cvi = img->colorVolumeInformation();
+        m_oldCvi = img->colorVolumeInformation();
     }
 }
 
diff --git a/libs/ui/dialogs/kis_dlg_image_properties.cc b/libs/ui/dialogs/kis_dlg_image_properties.cc
index 246db42774e..9c4ca8380dc 100644
--- a/libs/ui/dialogs/kis_dlg_image_properties.cc
+++ b/libs/ui/dialogs/kis_dlg_image_properties.cc
@@ -127,14 +127,14 @@ KisDlgImageProperties::KisDlgImageProperties(KisImageWSP image, KisDisplayColorC
     updateHDRColorVolume();
     connect(m_page->btnCalculateClli, &QPushButton::clicked, this, &KisDlgImageProperties::slotCalculateLightLevels);
     connect(d->image, &KisImage::sigContentLightLevelInformationChanged, this, &KisDlgImageProperties::updateHDRLightLevels);
-    connect(d->image, &KisImage::sigDiffuseWhiteLightLevelChanged, this, &KisDlgImageProperties::updateHDRLightLevels);
+    connect(d->image, &KisImage::sigDiffuseWhiteLightLevelChanged, this, &KisDlgImageProperties::updateHDRDiffuseWhite);
     connect(d->image, &KisImage::sigColorVolumeInformationChanged, this, &KisDlgImageProperties::updateHDRColorVolume);
 
     m_page->cmbDiffuseWhite->addItem(i18n("80 cd/m²"), 80.0);
     m_page->cmbDiffuseWhite->addItem(i18n("203 cd/m²"), 203.0);
 
-    connect(m_page->gbxDiffuseWhite, &QGroupBox::clicked, this, &KisDlgImageProperties::setHDRDiffuseLevelOnImage);
-    connect(m_page->cmbDiffuseWhite, SIGNAL(activated(int)), this, SLOT(setHDRDiffuseLevelOnImage()));
+    connect(m_page->gbxDiffuseWhite, &QGroupBox::clicked, this, &KisDlgImageProperties::setHDRDiffuseWhiteOnImage);
+    connect(m_page->cmbDiffuseWhite, SIGNAL(activated(int)), this, SLOT(setHDRDiffuseWhiteOnImage()));
 
     connect(m_page->gbxContentLightLevel, &QGroupBox::clicked, this, &KisDlgImageProperties::setHDRLightLevelsOnImage);
     connect(m_page->spnMaxCll, &QDoubleSpinBox::valueChanged, this, &KisDlgImageProperties::setHDRLightLevelsOnImage);
@@ -253,7 +253,7 @@ void KisDlgImageProperties::updateDisplayConfigInfo()
     m_page->wdgProofingOptions->setDisplayConfigOptions(d->colorConverter->conversionOptions());
 }
 
-void KisDlgImageProperties::updateHDRLightLevels()
+void KisDlgImageProperties::updateHDRDiffuseWhite()
 {
     if (d->image->diffuseWhiteLightLevel()) {
         m_page->gbxDiffuseWhite->setChecked(true);
@@ -267,6 +267,10 @@ void KisDlgImageProperties::updateHDRLightLevels()
         m_page->gbxDiffuseWhite->setChecked(false);
         m_page->cmbDiffuseWhite->setCurrentIndex(0);
     }
+}
+
+void KisDlgImageProperties::updateHDRLightLevels()
+{
     if (d->image->relativeContentLightLevelInformation()) {
         m_page->gbxContentLightLevel->setChecked(true);
         double diffuseWhite = d->image->diffuseWhiteLightLevel()? *d->image->diffuseWhiteLightLevel(): 80.0;
@@ -306,38 +310,37 @@ void KisDlgImageProperties::updateHDRColorVolume()
 
 void KisDlgImageProperties::setHDRLightLevelsOnImage()
 {
-    KUndo2Command *cmd;
+    std::optional<KisRelativeContentLightLevelInformation> optClli = std::nullopt;
+
     if (m_page->gbxContentLightLevel->isChecked()) {
-        double diffuseWhite = d->image->diffuseWhiteLightLevel()? *d->image->diffuseWhiteLightLevel(): 80.0;
+        double diffuseWhite = d->image->diffuseWhiteLightLevel().value_or(80.0);
         KisRelativeContentLightLevelInformation clli;
         clli.maxContentLightLevel = m_page->spnMaxCll->value() / diffuseWhite;
         clli.maxFrameAverageLightLevel = m_page->spnMaxFall->value() / diffuseWhite;
         clli.type = KisRelativeContentLightLevelInformation::CalculationType(m_page->cmbLumiCalcType->currentData().toInt());
-        cmd = new KisChangeImageHdrContentLightLevelCommand(d->image, std::make_optional(clli));
-    } else {
-        cmd = new KisChangeImageHdrContentLightLevelCommand(d->image, std::nullopt);
+        optClli = std::make_optional(clli);
     }
-    if (cmd) {
+    if (d->image->relativeContentLightLevelInformation() != optClli) {
+        KUndo2Command *cmd = new KisChangeImageHdrContentLightLevelCommand(d->image, optClli);
         d->image->undoAdapter()->addCommand(cmd);
     }
 }
 
-void KisDlgImageProperties::setHDRDiffuseLevelOnImage()
+void KisDlgImageProperties::setHDRDiffuseWhiteOnImage()
 {
-    KUndo2Command *cmd;
+    std::optional<double> dw = std::nullopt;
     if (m_page->gbxDiffuseWhite->isChecked()) {
-        cmd = new KisChangeImageHdrDiffuseWhiteCommand(d->image, std::make_optional(m_page->cmbDiffuseWhite->currentData().toDouble()));
-    } else {
-        cmd = new KisChangeImageHdrDiffuseWhiteCommand(d->image, std::nullopt);
+        dw = std::make_optional(m_page->cmbDiffuseWhite->currentData().toDouble());
     }
-    if (cmd) {
+    if (d->image->diffuseWhiteLightLevel() != dw) {
+        KUndo2Command *cmd = new KisChangeImageHdrDiffuseWhiteCommand(d->image, dw);
         d->image->undoAdapter()->addCommand(cmd);
     }
 }
 
 void KisDlgImageProperties::setHDRColorVolumeOnImage()
 {
-    KUndo2Command *cmd;
+    std::optional<KisColorVolumeInformation> optCvi = std::nullopt;
     if (m_page->gbxColorVolume->isChecked()) {
         KisColorVolumeInformation cvi;
 
@@ -350,11 +353,11 @@ void KisDlgImageProperties::setHDRColorVolumeOnImage()
         cvi.maxLuminance = m_page->spnMaxLuminance->value();
         cvi.minLuminance = m_page->spnMinLuminance->value();
 
-        cmd = new KisChangeImageHdrColorVolumeCommand(d->image, std::make_optional(cvi));
-    } else {
-        cmd = new KisChangeImageHdrColorVolumeCommand(d->image, std::nullopt);
+        optCvi = std::make_optional(cvi);
+
     }
-    if (cmd) {
+    if (d->image->colorVolumeInformation() != optCvi) {
+        KUndo2Command *cmd = new KisChangeImageHdrColorVolumeCommand(d->image, optCvi);
         d->image->undoAdapter()->addCommand(cmd);
     }
 }
@@ -414,9 +417,12 @@ void KisDlgImageProperties::slotCalculateLightLevels()
     applicator.end();
 
     d->image->waitForDone();
+    std::optional<KisRelativeContentLightLevelInformation> optClli = std::make_optional(visitor->contentLightLevelInformation());
 
-    KUndo2Command *cmd = new KisChangeImageHdrContentLightLevelCommand(d->image, std::make_optional(visitor->contentLightLevelInformation()));
-    d->image->undoAdapter()->addCommand(cmd);
+    if (d->image->relativeContentLightLevelInformation() != optClli) {
+        KUndo2Command *cmd = new KisChangeImageHdrContentLightLevelCommand(d->image, optClli);
+        d->image->undoAdapter()->addCommand(cmd);
+    }
 }
 
 void KisDlgImageProperties::slotColorSpaceChanged(const KoColorSpace *cs)
diff --git a/libs/ui/dialogs/kis_dlg_image_properties.h b/libs/ui/dialogs/kis_dlg_image_properties.h
index 3834753f2ec..73dc23d20cf 100644
--- a/libs/ui/dialogs/kis_dlg_image_properties.h
+++ b/libs/ui/dialogs/kis_dlg_image_properties.h
@@ -45,10 +45,11 @@ private Q_SLOTS:
     void setProofingConfigToImage();
     void updateDisplayConfigInfo();
 
+    void updateHDRDiffuseWhite();
     void updateHDRLightLevels();
     void updateHDRColorVolume();
 
-    void setHDRDiffuseLevelOnImage();
+    void setHDRDiffuseWhiteOnImage();
     void setHDRLightLevelsOnImage();
     void setHDRColorVolumeOnImage();
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.