Git commit 93faf98fb81b8a674bf5200469b35a88149a0470 by Dmitry Kazakov, on behalf of Srirupa Datta. Committed on 31/05/2021 at 12:54. Pushed by dkazakov into branch 'master'.
Remove work recursively button All layers and groups work recursively now. To achieve unrecursive behaviour, lock the layer/mask. GUI: BUG: 429501 FIXED IN: 5.0.0 M +9 -15 plugins/tools/tool_transform2/kis_tool_transform.cc M +1 -2 plugins/tools/tool_transform2/kis_tool_transform.h M +2 -11 plugins/tools/tool_transform2/kis_tool_transform_config_widget.cpp M +1 -2 plugins/tools/tool_transform2/kis_tool_transform_config_widget.h M +4 -4 plugins/tools/tool_transform2/kis_transform_utils.cpp M +1 -1 plugins/tools/tool_transform2/kis_transform_utils.h M +1 -4 plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.cpp M +0 -1 plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.h M +2 -3 plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp M +0 -2 plugins/tools/tool_transform2/strokes/transform_stroke_strategy.h M +18 -31 plugins/tools/tool_transform2/wdg_tool_transform.ui https://invent.kde.org/graphics/krita/commit/93faf98fb81b8a674bf5200469b35a88149a0470 diff --git a/plugins/tools/tool_transform2/kis_tool_transform.cc b/plugins/tools/tool_transform2/kis_tool_transform.cc index 08b055e772..3e71437705 100644 --- a/plugins/tools/tool_transform2/kis_tool_transform.cc +++ b/plugins/tools/tool_transform2/kis_tool_transform.cc @@ -83,7 +83,6 @@ KisToolTransform::KisToolTransform(KoCanvasBase * canvas) : KisTool(canvas, KisCursor::rotateCursor()) - , m_workRecursively(true) , m_warpStrategy( new KisWarpTransformStrategy( dynamic_cast<KisCanvas2*>(canvas)->coordinatesConverter(), @@ -845,11 +844,6 @@ void KisToolTransform::startStroke(ToolTransformArgs::TransformMode mode, bool f return; } - if (m_optionsWidget) { - m_workRecursively = m_optionsWidget->workRecursively() || - !currentNode->paintDevice(); - } - KisSelectionSP selection = resources->activeSelection(); /** @@ -873,7 +867,7 @@ void KisToolTransform::startStroke(ToolTransformArgs::TransformMode mode, bool f KisStrokeStrategy *strategy = 0; if (m_currentlyUsingOverlayPreviewStyle) { - TransformStrokeStrategy *transformStrategy = new TransformStrokeStrategy(mode, m_workRecursively, m_currentArgs.filterId(), forceReset, currentNode, selection, image().data(), image().data()); + TransformStrokeStrategy *transformStrategy = new TransformStrokeStrategy(mode, m_currentArgs.filterId(), forceReset, currentNode, selection, image().data(), image().data()); connect(transformStrategy, SIGNAL(sigPreviewDeviceReady(KisPaintDeviceSP)), SLOT(slotPreviewDeviceGenerated(KisPaintDeviceSP))); connect(transformStrategy, SIGNAL(sigTransactionGenerated(TransformTransactionProperties, ToolTransformArgs, void*)), SLOT(slotTransactionGenerated(TransformTransactionProperties, ToolTransformArgs, void*))); strategy = transformStrategy; @@ -885,7 +879,7 @@ void KisToolTransform::startStroke(ToolTransformArgs::TransformMode mode, bool f m_strokeStrategyCookie = transformStrategy; } else { - InplaceTransformStrokeStrategy *transformStrategy = new InplaceTransformStrokeStrategy(mode, m_workRecursively, m_currentArgs.filterId(), forceReset, currentNode, selection, externalSource, image().data(), image().data(), image()->root(), m_forceLodMode); + InplaceTransformStrokeStrategy *transformStrategy = new InplaceTransformStrokeStrategy(mode, m_currentArgs.filterId(), forceReset, currentNode, selection, externalSource, image().data(), image().data(), image()->root(), m_forceLodMode); connect(transformStrategy, SIGNAL(sigTransactionGenerated(TransformTransactionProperties, ToolTransformArgs, void*)), SLOT(slotTransactionGenerated(TransformTransactionProperties, ToolTransformArgs, void*))); strategy = transformStrategy; @@ -1023,7 +1017,7 @@ void KisToolTransform::slotTrackerChangedConfig(KisToolChangesTrackerDataSP stat updateOptionWidget(); } -QList<KisNodeSP> KisToolTransform::fetchNodesList(ToolTransformArgs::TransformMode mode, KisNodeSP root, bool recursive) +QList<KisNodeSP> KisToolTransform::fetchNodesList(ToolTransformArgs::TransformMode mode, KisNodeSP root, bool isExternalSourcePresent) { QList<KisNodeSP> result; @@ -1038,10 +1032,10 @@ QList<KisNodeSP> KisToolTransform::fetchNodesList(ToolTransformArgs::TransformMo } }; - if (recursive) { - KisLayerUtils::recursiveApplyNodes(root, fetchFunc); - } else { + if (isExternalSourcePresent) { fetchFunc(root); + } else { + KisLayerUtils::recursiveApplyNodes(root, fetchFunc); } return result; @@ -1050,8 +1044,8 @@ QList<KisNodeSP> KisToolTransform::fetchNodesList(ToolTransformArgs::TransformMo QWidget* KisToolTransform::createOptionWidget() { if (!m_canvas) return 0; - - m_optionsWidget = new KisToolTransformConfigWidget(&m_transaction, m_canvas, m_workRecursively, 0); + + m_optionsWidget = new KisToolTransformConfigWidget(&m_transaction, m_canvas, 0); Q_CHECK_PTR(m_optionsWidget); m_optionsWidget->setObjectName(toolId() + " option widget"); @@ -1104,7 +1098,7 @@ QWidget* KisToolTransform::createOptionWidget() } void KisToolTransform::updateOptionWidget() -{ +{ if (!m_optionsWidget) return; if (!currentNode()) { diff --git a/plugins/tools/tool_transform2/kis_tool_transform.h b/plugins/tools/tool_transform2/kis_tool_transform.h index 8337385512..eaa2c17516 100644 --- a/plugins/tools/tool_transform2/kis_tool_transform.h +++ b/plugins/tools/tool_transform2/kis_tool_transform.h @@ -230,7 +230,7 @@ public Q_SLOTS: void imageTooBigRequested(bool value); private: - QList<KisNodeSP> fetchNodesList(ToolTransformArgs::TransformMode mode, KisNodeSP root, bool recursive); + QList<KisNodeSP> fetchNodesList(ToolTransformArgs::TransformMode mode, KisNodeSP root, bool isExternalSourcePresent); QScopedPointer<QMenu> m_contextMenu; void startStroke(ToolTransformArgs::TransformMode mode, bool forceReset); @@ -268,7 +268,6 @@ private: bool m_preferOverlayPreviewStyle {false}; bool m_forceLodMode {false}; - bool m_workRecursively {false}; QPainterPath m_selectionPath; // original (unscaled) selection outline, used for painting decorations diff --git a/plugins/tools/tool_transform2/kis_tool_transform_config_widget.cpp b/plugins/tools/tool_transform2/kis_tool_transform_config_widget.cpp index 94a565a037..ec8aba6c3a 100644 --- a/plugins/tools/tool_transform2/kis_tool_transform_config_widget.cpp +++ b/plugins/tools/tool_transform2/kis_tool_transform_config_widget.cpp @@ -24,7 +24,7 @@ template<typename T> inline T sign(T x) { const int KisToolTransformConfigWidget::DEFAULT_POINTS_PER_LINE = 3; -KisToolTransformConfigWidget::KisToolTransformConfigWidget(TransformTransactionProperties *transaction, KisCanvas2 *canvas, bool workRecursively, QWidget *parent) +KisToolTransformConfigWidget::KisToolTransformConfigWidget(TransformTransactionProperties *transaction, KisCanvas2 *canvas, QWidget *parent) : QWidget(parent), m_transaction(transaction), m_notificationsBlocked(0), @@ -32,15 +32,11 @@ KisToolTransformConfigWidget::KisToolTransformConfigWidget(TransformTransactionP m_configChanged(false) { setupUi(this); - chkWorkRecursively->setIcon(KisIconUtils::loadIcon("krita_tool_transform_recursive")); flipXButton->setIcon(KisIconUtils::loadIcon("transform_icons_mirror_x")); flipYButton->setIcon(KisIconUtils::loadIcon("transform_icons_mirror_y")); rotateCWButton->setIcon(KisIconUtils::loadIcon("transform_icons_rotate_cw")); rotateCCWButton->setIcon(KisIconUtils::loadIcon("transform_icons_rotate_ccw")); - chkWorkRecursively->setChecked(workRecursively); - connect(chkWorkRecursively, SIGNAL(toggled(bool)), this, SIGNAL(sigRestartTransform())); - // Granularity can only be specified in the power of 2's QStringList granularityValues{"4","8","16","32"}; changeGranularity->addItems(granularityValues); @@ -499,7 +495,7 @@ void KisToolTransformConfigWidget::liquifyReverseDirectionChanged(bool value) void KisToolTransformConfigWidget::updateConfig(const ToolTransformArgs &config) { blockUiSlots(); - + if (config.mode() == ToolTransformArgs::FREE_TRANSFORM || config.mode() == ToolTransformArgs::PERSPECTIVE_4POINT) { @@ -670,11 +666,6 @@ void KisToolTransformConfigWidget::resetRotationCenterButtons() } } -bool KisToolTransformConfigWidget::workRecursively() const -{ - return chkWorkRecursively->isChecked(); -} - void KisToolTransformConfigWidget::setTooBigLabelVisible(bool value) { tooBigLabelWidget->setVisible(value); diff --git a/plugins/tools/tool_transform2/kis_tool_transform_config_widget.h b/plugins/tools/tool_transform2/kis_tool_transform_config_widget.h index fec6ea2d6e..a054383b27 100644 --- a/plugins/tools/tool_transform2/kis_tool_transform_config_widget.h +++ b/plugins/tools/tool_transform2/kis_tool_transform_config_widget.h @@ -19,13 +19,12 @@ class KisToolTransformConfigWidget : public QWidget, private Ui::WdgToolTransfor Q_OBJECT public: - KisToolTransformConfigWidget(TransformTransactionProperties *transaction, KisCanvas2 *canvas, bool workRecursively, QWidget *parent); + KisToolTransformConfigWidget(TransformTransactionProperties *transaction, KisCanvas2 *canvas, QWidget *parent); void setApplyResetDisabled(bool disabled); void resetRotationCenterButtons(); void setDefaultWarpPoints(int pointsPerLine = -1); void setTooBigLabelVisible(bool value); - bool workRecursively() const; public Q_SLOTS: void updateConfig(const ToolTransformArgs &config); diff --git a/plugins/tools/tool_transform2/kis_transform_utils.cpp b/plugins/tools/tool_transform2/kis_transform_utils.cpp index 4acac3d25d..54b689ad1a 100644 --- a/plugins/tools/tool_transform2/kis_transform_utils.cpp +++ b/plugins/tools/tool_transform2/kis_transform_utils.cpp @@ -609,7 +609,7 @@ KisNodeSP KisTransformUtils::tryOverrideRootToTransformMask(KisNodeSP root) return root; } -QList<KisNodeSP> KisTransformUtils::fetchNodesList(ToolTransformArgs::TransformMode mode, KisNodeSP root, bool recursive) +QList<KisNodeSP> KisTransformUtils::fetchNodesList(ToolTransformArgs::TransformMode mode, KisNodeSP root, bool isExternalSourcePresent) { QList<KisNodeSP> result; @@ -634,10 +634,10 @@ QList<KisNodeSP> KisTransformUtils::fetchNodesList(ToolTransformArgs::TransformM } }; - if (recursive) { - KisLayerUtils::recursiveApplyNodes(root, fetchFunc); - } else { + if (isExternalSourcePresent) { fetchFunc(root); + } else { + KisLayerUtils::recursiveApplyNodes(root, fetchFunc); } return result; diff --git a/plugins/tools/tool_transform2/kis_transform_utils.h b/plugins/tools/tool_transform2/kis_transform_utils.h index 22cac99eae..5438430304 100644 --- a/plugins/tools/tool_transform2/kis_transform_utils.h +++ b/plugins/tools/tool_transform2/kis_transform_utils.h @@ -182,7 +182,7 @@ public: static KisNodeSP tryOverrideRootToTransformMask(KisNodeSP root); - static QList<KisNodeSP> fetchNodesList(ToolTransformArgs::TransformMode mode, KisNodeSP root, bool recursive); + static QList<KisNodeSP> fetchNodesList(ToolTransformArgs::TransformMode mode, KisNodeSP root, bool isExternalSourcePresent); static bool tryInitArgsFromNode(KisNodeSP node, ToolTransformArgs *args); static bool tryFetchArgsFromCommandAndUndo(ToolTransformArgs *outArgs, ToolTransformArgs::TransformMode mode, KisNodeSP currentNode, KisNodeList selectedNodes, KisStrokeUndoFacade *undoFacade, QVector<KisStrokeJobData *> *undoJobs, const KisSavedMacroCommand **overriddenCommand); diff --git a/plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.cpp b/plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.cpp index 34762dfd6d..4970c44768 100644 --- a/plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.cpp +++ b/plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.cpp @@ -54,7 +54,6 @@ struct InplaceTransformStrokeStrategy::Private KisUpdatesFacade *updatesFacade; KisStrokeUndoFacade *undoFacade; ToolTransformArgs::TransformMode mode; - bool workRecursively; QString filterId; bool forceReset; KisNodeSP rootNode; @@ -119,7 +118,6 @@ struct InplaceTransformStrokeStrategy::Private InplaceTransformStrokeStrategy::InplaceTransformStrokeStrategy(ToolTransformArgs::TransformMode mode, - bool workRecursively, const QString &filterId, bool forceReset, KisNodeSP rootNode, @@ -134,7 +132,6 @@ InplaceTransformStrokeStrategy::InplaceTransformStrokeStrategy(ToolTransformArgs { m_d->mode = mode; - m_d->workRecursively = workRecursively; m_d->filterId = filterId; m_d->forceReset = forceReset; m_d->rootNode = rootNode; @@ -286,7 +283,7 @@ void InplaceTransformStrokeStrategy::initStrokeCallback() m_d->rootNode = KisTransformUtils::tryOverrideRootToTransformMask(m_d->rootNode); // When placing an external source image, we never work recursively on any layer masks - m_d->processedNodes = KisTransformUtils::fetchNodesList(m_d->mode, m_d->rootNode, m_d->workRecursively && !m_d->externalSource); + m_d->processedNodes = KisTransformUtils::fetchNodesList(m_d->mode, m_d->rootNode, m_d->externalSource); bool argsAreInitialized = false; QVector<KisStrokeJobData *> lastCommandUndoJobs; diff --git a/plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.h b/plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.h index a209f67cca..b2591f3cb8 100644 --- a/plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.h +++ b/plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.h @@ -90,7 +90,6 @@ public: public: InplaceTransformStrokeStrategy(ToolTransformArgs::TransformMode mode, - bool workRecursively, const QString &filterId, bool forceReset, KisNodeSP rootNode, diff --git a/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp b/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp index dbdb5a544d..8906164e86 100644 --- a/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp +++ b/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp @@ -44,7 +44,6 @@ TransformStrokeStrategy::TransformStrokeStrategy(ToolTransformArgs::TransformMode mode, - bool workRecursively, const QString &filterId, bool forceReset, KisNodeSP rootNode, @@ -54,7 +53,6 @@ TransformStrokeStrategy::TransformStrokeStrategy(ToolTransformArgs::TransformMod : KisStrokeStrategyUndoCommandBased(kundo2_i18n("Transform"), false, undoFacade), m_updatesFacade(updatesFacade), m_mode(mode), - m_workRecursively(workRecursively), m_filterId(filterId), m_forceReset(forceReset), m_selection(selection) @@ -392,7 +390,8 @@ void TransformStrokeStrategy::initStrokeCallback() } ToolTransformArgs initialTransformArgs; - m_processedNodes = KisTransformUtils::fetchNodesList(m_mode, m_rootNode, m_workRecursively); + bool isExternalSourcePresent = false; + m_processedNodes = KisTransformUtils::fetchNodesList(m_mode, m_rootNode, isExternalSourcePresent); bool argsAreInitialized = false; QVector<KisStrokeJobData *> lastCommandUndoJobs; diff --git a/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.h b/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.h index f30ff32e9a..b2f0976b50 100644 --- a/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.h +++ b/plugins/tools/tool_transform2/strokes/transform_stroke_strategy.h @@ -78,7 +78,6 @@ public: public: TransformStrokeStrategy(ToolTransformArgs::TransformMode mode, - bool workRecursively, const QString &filterId, bool forceReset, KisNodeSP rootNode, @@ -118,7 +117,6 @@ private: private: KisUpdatesFacade *m_updatesFacade; ToolTransformArgs::TransformMode m_mode; - bool m_workRecursively; QString m_filterId; bool m_forceReset; diff --git a/plugins/tools/tool_transform2/wdg_tool_transform.ui b/plugins/tools/tool_transform2/wdg_tool_transform.ui index 4263b69ade..117d2118f8 100644 --- a/plugins/tools/tool_transform2/wdg_tool_transform.ui +++ b/plugins/tools/tool_transform2/wdg_tool_transform.ui @@ -11,7 +11,7 @@ <x>0</x> <y>0</y> <width>515</width> - <height>724</height> + <height>780</height> </rect> </property> <property name="sizePolicy"> @@ -371,6 +371,12 @@ <property name="orientation"> <enum>Qt::Horizontal</enum> </property> + <property name="sizeHint" stdset="0"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> </spacer> </item> <item> @@ -565,6 +571,12 @@ <property name="orientation"> <enum>Qt::Horizontal</enum> </property> + <property name="sizeHint" stdset="0"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> </spacer> </item> </layout> @@ -1173,6 +1185,9 @@ <height>16777215</height> </size> </property> + <property name="focusPolicy"> + <enum>Qt::TabFocus</enum> + </property> <property name="toolTip"> <string>Flip selection horizontally</string> </property> @@ -2112,35 +2127,7 @@ </widget> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="0,1,0"> - <item> - <widget class="QPushButton" name="chkWorkRecursively"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="maximumSize"> - <size> - <width>32</width> - <height>16777215</height> - </size> - </property> - <property name="toolTip"> - <string>Work Recursively</string> - </property> - <property name="text"> - <string/> - </property> - <property name="checkable"> - <bool>true</bool> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> + <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,0"> <item> <spacer name="horizontalSpacer_5"> <property name="orientation"> @@ -2210,8 +2197,8 @@ <resources/> <connections/> <buttongroups> - <buttongroup name="cageTransformButtonGroup"/> <buttongroup name="freeTransformRadioGroup"/> <buttongroup name="buttonGroup"/> + <buttongroup name="cageTransformButtonGroup"/> </buttongroups> </ui>
