[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