[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