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

List:       kde-commits
Subject:    [calligra/krita-opengl2-rempt] krita: Revert "Fixed the Filter Dialog"
From:       Boudewijn Rempt <boud () valdyas ! org>
Date:       2013-06-07 8:59:52
Message-ID: 20130607085952.AB24DA6067 () git ! kde ! org
[Download RAW message or body]

Git commit 1581e4c3abb2360be43c5c0ec5cd903947ff735f by Boudewijn Rempt.
Committed on 01/06/2013 at 14:00.
Pushed by rempt into branch 'krita-opengl2-rempt'.

Revert "Fixed the Filter Dialog"

This reverts commit a13e5a2d26b09eb81294add5839b2fc114922cca.

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

http://commits.kde.org/calligra/1581e4c3abb2360be43c5c0ec5cd903947ff735f

diff --git a/krita/image/kis_layer.cc b/krita/image/kis_layer.cc
index 00ee756..6e7300d 100644
--- a/krita/image/kis_layer.cc
+++ b/krita/image/kis_layer.cc
@@ -562,15 +562,8 @@ QRect KisLayer::exactBounds() const
 
 void KisLayer::setPreviewMask(KisEffectMaskSP mask)
 {
-    if (m_d->previewMask) {
-        m_d->previewMask->setParent(0);
-        m_d->previewMask = 0;
-    }
-
-    if (mask) {
-        m_d->previewMask = mask;
-        m_d->previewMask->setParent(this);
-    }
+    m_d->previewMask = mask;
+    m_d->previewMask->setParent(this);
 }
 
 KisEffectMaskSP KisLayer::previewMask() const
@@ -578,6 +571,11 @@ 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 3a24c55..e68a62d 100644
--- a/krita/image/kis_layer.h
+++ b/krita/image/kis_layer.h
@@ -250,6 +250,11 @@ 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 61e59b2..9696efd 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->setPreviewMask(0);
+    layer->removePreviewMask();
     QVERIFY(layer->hasEffectMasks() == false);
 }
 
diff --git a/krita/ui/dialogs/kis_dlg_filter.cpp \
b/krita/ui/dialogs/kis_dlg_filter.cpp index 0fd80d0..cde08c3 100644
--- a/krita/ui/dialogs/kis_dlg_filter.cpp
+++ b/krita/ui/dialogs/kis_dlg_filter.cpp
@@ -20,18 +20,25 @@
 
 #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_view2.h>
-#include <kis_config.h>
-
-#include "kis_node_commands_adapter.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>
 
 struct KisFilterDialog::Private {
     Private()
@@ -60,25 +67,20 @@ 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")) {
-        KisLayer *layer = dynamic_cast<KisLayer*>(node.data());
-        d->mask = new KisFilterMask();
-        d->mask->initSelection(selection, layer);
-        layer->setPreviewMask(d->mask);
-
-        d->uiFilterDialog.checkBoxPreview->show();
+        qobject_cast<KisLayer*>(d->node.data())->setPreviewMask(d->mask);
         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());
@@ -112,13 +114,13 @@ void KisFilterDialog::setFilter(KisFilterSP f)
 void KisFilterDialog::updatePreview()
 {
     if (!d->currentFilter) return;
-
-    if(d->mask && d->uiFilterDialog.checkBoxPreview->isChecked()) {
+    
+    if(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);
 }
 
@@ -136,38 +138,35 @@ void KisFilterDialog::apply()
 
 void KisFilterDialog::close()
 {
-    if (d->mask) {
-        qobject_cast<KisLayer*>(d->node.data())->setPreviewMask(0);;
-        d->node->setDirty();
+    if (d->node->inherits("KisLayer")) {
+        qobject_cast<KisLayer*>(d->node.data())->removePreviewMask();
     }
-
+    d->node->setDirty(d->node->extent());
     KisConfig().setShowFilterGallery(d->uiFilterDialog.filterSelection->isFilterGalleryVisible());
  }
 
 void KisFilterDialog::createMask()
 {
-    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();
+    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();
+    }
 }
 
 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 9f2edff..5c31b64 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="1" colspan="7">
+   <item row="0" column="0" colspan="5">
     <widget class="KisFilterSelectorWidget" name="filterSelection" native="true">
      <property name="sizePolicy">
       <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
@@ -27,22 +27,8 @@
      </property>
     </widget>
    </item>
-   <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">
+   <item row="1" column="1">
+    <spacer>
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
@@ -60,17 +46,31 @@
       <bool>true</bool>
      </property>
      <property name="text">
-      <string>Create Filter Mask</string>
+      <string>Create Mask Effect</string>
      </property>
     </widget>
    </item>
-   <item row="1" column="4">
+   <item row="1" column="0">
     <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