[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [calligra/krita-opengl2-rempt] krita: Revert "Revert "Fixed the Filter Dialog""
From:       Boudewijn Rempt <boud () valdyas ! org>
Date:       2013-06-10 9:59:33
Message-ID: 20130610095933.9B55FA6071 () git ! kde ! org
[Download RAW message or body]

Git commit 6116f04975af74da2ed0fbd986f576eb6950cfd4 by Boudewijn Rempt.
Committed on 10/06/2013 at 11:50.
Pushed by rempt into branch 'krita-opengl2-rempt'.

Revert "Revert "Fixed the Filter Dialog""

This reverts commit 1581e4c3abb2360be43c5c0ec5cd903947ff735f.

M  +9    -7    krita/image/kis_layer.cc
M  +0    -5    krita/image/kis_layer.h
M  +1    -1    krita/image/tests/kis_layer_test.cpp
M  +39   -38   krita/ui/dialogs/kis_dlg_filter.cpp
M  +19   -19   krita/ui/forms/wdgfilterdialog.ui

http://commits.kde.org/calligra/6116f04975af74da2ed0fbd986f576eb6950cfd4

diff --git a/krita/image/kis_layer.cc b/krita/image/kis_layer.cc
index 6e7300d..00ee756 100644
--- a/krita/image/kis_layer.cc
+++ b/krita/image/kis_layer.cc
@@ -562,8 +562,15 @@ QRect KisLayer::exactBounds() const
 
 void KisLayer::setPreviewMask(KisEffectMaskSP mask)
 {
-    m_d->previewMask = mask;
-    m_d->previewMask->setParent(this);
+    if (m_d->previewMask) {
+        m_d->previewMask->setParent(0);
+        m_d->previewMask = 0;
+    }
+
+    if (mask) {
+        m_d->previewMask = mask;
+        m_d->previewMask->setParent(this);
+    }
 }
 
 KisEffectMaskSP KisLayer::previewMask() const
@@ -571,11 +578,6 @@ KisEffectMaskSP KisLayer::previewMask() const
     return m_d->previewMask;
 }
 
-void KisLayer::removePreviewMask()
-{
-    m_d->previewMask = 0;
-}
-
 KisLayerSP KisLayer::parentLayer() const
 {
     return dynamic_cast<KisLayer*>(parent().data());
diff --git a/krita/image/kis_layer.h b/krita/image/kis_layer.h
index e68a62d..3a24c55 100644
--- a/krita/image/kis_layer.h
+++ b/krita/image/kis_layer.h
@@ -250,11 +250,6 @@ public:
     KisLayerSP parentLayer() const;
 
     /**
-     * Remove the temporary effect mask.
-     */
-    void removePreviewMask();
-
-    /**
      * @return the metadata object associated with this object.
      */
     KisMetaData::Store* metaData();
diff --git a/krita/image/tests/kis_layer_test.cpp \
b/krita/image/tests/kis_layer_test.cpp index 9696efd..61e59b2 100644
--- a/krita/image/tests/kis_layer_test.cpp
+++ b/krita/image/tests/kis_layer_test.cpp
@@ -232,7 +232,7 @@ void KisLayerTest::testHasEffectMasks()
     KisFilterMaskSP mask = new KisFilterMask();
     layer->setPreviewMask(mask);
     QVERIFY(layer->hasEffectMasks());
-    layer->removePreviewMask();
+    layer->setPreviewMask(0);
     QVERIFY(layer->hasEffectMasks() == false);
 }
 
diff --git a/krita/ui/dialogs/kis_dlg_filter.cpp \
b/krita/ui/dialogs/kis_dlg_filter.cpp index cde08c3..0fd80d0 100644
--- a/krita/ui/dialogs/kis_dlg_filter.cpp
+++ b/krita/ui/dialogs/kis_dlg_filter.cpp
@@ -20,25 +20,18 @@
 
 #include "kis_dlg_filter.h"
 
-#include <kguiitem.h>
-#include <KoCompositeOp.h>
-
-// From krita/image
 #include <filter/kis_filter.h>
 #include <filter/kis_filter_configuration.h>
 #include <kis_filter_mask.h>
 #include <kis_node.h>
 #include <kis_layer.h>
 #include <kis_selection.h>
-#include <kis_pixel_selection.h>
-#include <kis_paint_device.h>
-#include <kis_painter.h>
-#include "commands/kis_image_layer_add_command.h"
-#include "kis_undo_adapter.h"
-#include "ui_wdgfilterdialog.h"
-#include <kis_config.h>
-#include <kis_canvas2.h>
 #include <kis_view2.h>
+#include <kis_config.h>
+
+#include "kis_node_commands_adapter.h"
+#include "ui_wdgfilterdialog.h"
+
 
 struct KisFilterDialog::Private {
     Private()
@@ -67,20 +60,25 @@ KisFilterDialog::KisFilterDialog(KisView2 *view, KisNodeSP node, \
KisImageWSP ima  d->node = node;
     d->image = image;
     d->view = view;
-    d->mask = new KisFilterMask();
-    d->mask->initSelection(selection, dynamic_cast<KisLayer*>(node.data()));
+
     d->uiFilterDialog.filterSelection->setView(view);
     d->uiFilterDialog.filterSelection->showFilterGallery(KisConfig().showFilterGallery());
  
     if (d->node->inherits("KisLayer")) {
-        qobject_cast<KisLayer*>(d->node.data())->setPreviewMask(d->mask);
+        KisLayer *layer = dynamic_cast<KisLayer*>(node.data());
+        d->mask = new KisFilterMask();
+        d->mask->initSelection(selection, layer);
+        layer->setPreviewMask(d->mask);
+
+        d->uiFilterDialog.checkBoxPreview->show();
         d->uiFilterDialog.pushButtonCreateMaskEffect->show();
         d->uiFilterDialog.pushButtonCreateMaskEffect->setEnabled(true);
         connect(d->uiFilterDialog.pushButtonCreateMaskEffect, SIGNAL(pressed()), \
SLOT(createMask()));  } else {
+        d->uiFilterDialog.checkBoxPreview->hide();
         d->uiFilterDialog.pushButtonCreateMaskEffect->hide();
     }
-    d->uiFilterDialog.pushButtonCreateMaskEffect->hide(); // TODO fixme, understand \
why the mask isn't created, and then remove that line +
     d->uiFilterDialog.filterSelection->setPaintDevice(d->node->original());
     d->uiFilterDialog.pushButtonOk->setGuiItem(KStandardGuiItem::ok());
     d->uiFilterDialog.pushButtonCancel->setGuiItem(KStandardGuiItem::cancel());
@@ -114,13 +112,13 @@ void KisFilterDialog::setFilter(KisFilterSP f)
 void KisFilterDialog::updatePreview()
 {
     if (!d->currentFilter) return;
-    
-    if(d->uiFilterDialog.checkBoxPreview->isChecked()) {
+
+    if(d->mask && d->uiFilterDialog.checkBoxPreview->isChecked()) {
         d->mask->setFilter(d->uiFilterDialog.filterSelection->configuration());
-        d->mask->setDirty();
-        d->node->setDirty(d->node->extent());
     }
-    
+
+    d->node->setDirty();
+
     d->uiFilterDialog.pushButtonOk->setEnabled(true);
 }
 
@@ -138,35 +136,38 @@ void KisFilterDialog::apply()
 
 void KisFilterDialog::close()
 {
-    if (d->node->inherits("KisLayer")) {
-        qobject_cast<KisLayer*>(d->node.data())->removePreviewMask();
+    if (d->mask) {
+        qobject_cast<KisLayer*>(d->node.data())->setPreviewMask(0);;
+        d->node->setDirty();
     }
-    d->node->setDirty(d->node->extent());
+
     KisConfig().setShowFilterGallery(d->uiFilterDialog.filterSelection->isFilterGalleryVisible());
  }
 
 void KisFilterDialog::createMask()
 {
-    KisEffectMaskSP mask;
-    if (d->node->inherits("KisLayer")) {
-        KisLayer * l = qobject_cast<KisLayer*>(d->node.data());
-        mask = l->previewMask();
-        l->removePreviewMask();
-        d->image->undoAdapter()->addCommand(new KisImageLayerAddCommand(d->image, \
                mask, l, KisNodeSP(0)));
-        mask->setDirty();
-        close();
-        accept();
-    }
+    if (!d->mask) return;
+
+    KisLayer *layer = dynamic_cast<KisLayer*>(d->node.data());
+    layer->setPreviewMask(0);
+
+    Q_ASSERT(layer->allowAsChild(d->mask));
+    Q_ASSERT(d->mask->parent() == 0);
+
+    KisNodeCommandsAdapter adapter(d->view);
+    adapter.addNode(d->mask, layer, layer->lastChild());
+
+
+    d->mask = 0;
+    accept();
 }
 
 void KisFilterDialog::previewCheckBoxChange(int state)
 {
+    if (!d->mask) return;
+
     d->mask->setVisible(state == Qt::Checked);
     updatePreview();
-    if (state != Qt::Checked) {
-        // update node to hide what remains from the filter mask
-        d->node->setDirty(d->node->extent());
-    }
 
     KConfigGroup group(KGlobal::config(), "filterdialog");
     group.writeEntry("showPreview", d->uiFilterDialog.checkBoxPreview->isChecked());
diff --git a/krita/ui/forms/wdgfilterdialog.ui b/krita/ui/forms/wdgfilterdialog.ui
index 5c31b64..9f2edff 100644
--- a/krita/ui/forms/wdgfilterdialog.ui
+++ b/krita/ui/forms/wdgfilterdialog.ui
@@ -17,7 +17,7 @@
    <property name="margin">
     <number>0</number>
    </property>
-   <item row="0" column="0" colspan="5">
+   <item row="0" column="1" colspan="7">
     <widget class="KisFilterSelectorWidget" name="filterSelection" native="true">
      <property name="sizePolicy">
       <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
@@ -27,8 +27,22 @@
      </property>
     </widget>
    </item>
-   <item row="1" column="1">
-    <spacer>
+   <item row="1" column="7">
+    <widget class="KPushButton" name="pushButtonCancel">
+     <property name="autoDefault">
+      <bool>false</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="6">
+    <widget class="KPushButton" name="pushButtonOk">
+     <property name="default">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="5">
+    <spacer name="horizontalSpacer">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
@@ -46,31 +60,17 @@
       <bool>true</bool>
      </property>
      <property name="text">
-      <string>Create Mask Effect</string>
+      <string>Create Filter Mask</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="0">
+   <item row="1" column="4">
     <widget class="QCheckBox" name="checkBoxPreview">
      <property name="text">
       <string>Preview</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="2">
-    <widget class="KPushButton" name="pushButtonOk">
-     <property name="default">
-      <bool>true</bool>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="4">
-    <widget class="KPushButton" name="pushButtonCancel">
-     <property name="autoDefault">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
   </layout>
  </widget>
  <customwidgets>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic