This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new bc17a50cc9 Do not trigger modify listener while loading
transform/action , fixes #6612 (#6619)
bc17a50cc9 is described below
commit bc17a50cc9610499f3aaac89342b2125086a0b58
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Thu Feb 19 18:01:12 2026 +0100
Do not trigger modify listener while loading transform/action , fixes #6612
(#6619)
---
.../hop/ui/pipeline/transform/BaseTransformDialog.java | 17 ++++++++++++++---
.../org/apache/hop/ui/workflow/action/ActionDialog.java | 13 ++++++++++++-
.../hop/ui/workflow/actions/ActionBaseDialog.java | 8 +++++++-
3 files changed, 33 insertions(+), 5 deletions(-)
diff --git
a/ui/src/main/java/org/apache/hop/ui/pipeline/transform/BaseTransformDialog.java
b/ui/src/main/java/org/apache/hop/ui/pipeline/transform/BaseTransformDialog.java
index 4c21c85086..5f08207517 100644
---
a/ui/src/main/java/org/apache/hop/ui/pipeline/transform/BaseTransformDialog.java
+++
b/ui/src/main/java/org/apache/hop/ui/pipeline/transform/BaseTransformDialog.java
@@ -137,6 +137,9 @@ public abstract class BaseTransformDialog extends Dialog
implements ITransformDi
protected boolean backupChanged;
+ /** True while the dialog is loading */
+ protected boolean loading;
+
/** The base transform meta. */
protected ITransformMeta baseTransformMeta;
@@ -223,7 +226,8 @@ public abstract class BaseTransformDialog extends Dialog
implements ITransformDi
* <li>Applies a FormLayout with standard margins
* <li>Sets the shell title
* <li>Initializes {@link #middle} and {@link #margin} fields for layout
calculations
- * <li>Initializes {@link #lsMod} modify listener for change tracking
+ * <li>Initializes {@link #lsMod} modify listener for change tracking
(skipped while {@link
+ * #loading} is true so opening the dialog does not mark the pipeline
as changed)
* <li>Creates the transform name label and text field ({@link
#wlTransformName} and {@link
* #wTransformName})
* </ul>
@@ -284,8 +288,13 @@ public abstract class BaseTransformDialog extends Dialog
implements ITransformDi
middle = props.getMiddlePct();
margin = PropsUi.getMargin();
- // Initialize standard modify listener
- lsMod = e -> baseTransformMeta.setChanged();
+ // Initialize standard modify listener (no-op while loading so open does
not mark as changed)
+ lsMod =
+ e -> {
+ if (!loading) {
+ baseTransformMeta.setChanged();
+ }
+ };
// TransformName line
wlTransformName = new Label(shell, SWT.RIGHT);
@@ -315,6 +324,7 @@ public abstract class BaseTransformDialog extends Dialog
implements ITransformDi
fdSpacer.right = new FormAttachment(100, 0);
wSpacer.setLayoutData(fdSpacer);
+ loading = true;
return wSpacer;
}
@@ -445,6 +455,7 @@ public abstract class BaseTransformDialog extends Dialog
implements ITransformDi
}
wTransformName.selectAll();
wTransformName.setFocus();
+ loading = false;
}
}
diff --git
a/ui/src/main/java/org/apache/hop/ui/workflow/action/ActionDialog.java
b/ui/src/main/java/org/apache/hop/ui/workflow/action/ActionDialog.java
index 6bb6265392..c6ab841557 100644
--- a/ui/src/main/java/org/apache/hop/ui/workflow/action/ActionDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/workflow/action/ActionDialog.java
@@ -114,6 +114,9 @@ public abstract class ActionDialog extends Dialog
implements IActionDialog {
*/
protected int margin;
+ /** True while the dialog is loading */
+ protected boolean loading;
+
/**
* The middle percentage for form layouts. Initialized by {@link
#createShell(String)} to {@code
* props.getMiddlePct()}.
@@ -134,6 +137,7 @@ public abstract class ActionDialog extends Dialog
implements IActionDialog {
}
public void setActive() {
+ loading = false;
if (shell != null && !shell.isDisposed()) {
shell.setActive();
}
@@ -274,7 +278,12 @@ public abstract class ActionDialog extends Dialog
implements IActionDialog {
wName = new Text(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
PropsUi.setLook(wName);
- wName.addModifyListener(e -> onActionNameModified());
+ wName.addModifyListener(
+ e -> {
+ if (!loading) {
+ onActionNameModified();
+ }
+ });
FormData fdName = new FormData();
fdName.left = new FormAttachment(middle, 0);
fdName.top = new FormAttachment(wlName, 0, SWT.CENTER);
@@ -288,6 +297,7 @@ public abstract class ActionDialog extends Dialog
implements IActionDialog {
fdSpacer.right = new FormAttachment(100, 0);
wSpacer.setLayoutData(fdSpacer);
+ loading = true;
return wSpacer;
}
@@ -346,6 +356,7 @@ public abstract class ActionDialog extends Dialog
implements IActionDialog {
wName.selectAll();
wName.setFocus();
}
+ loading = false;
}
/**
diff --git
a/ui/src/main/java/org/apache/hop/ui/workflow/actions/ActionBaseDialog.java
b/ui/src/main/java/org/apache/hop/ui/workflow/actions/ActionBaseDialog.java
index e6aa9d1082..5635e4e667 100644
--- a/ui/src/main/java/org/apache/hop/ui/workflow/actions/ActionBaseDialog.java
+++ b/ui/src/main/java/org/apache/hop/ui/workflow/actions/ActionBaseDialog.java
@@ -174,8 +174,14 @@ public abstract class ActionBaseDialog extends
ActionDialog {
}
protected void createElements() {
+ loading = true;
- ModifyListener lsMod = e -> getAction().setChanged();
+ ModifyListener lsMod =
+ e -> {
+ if (!loading) {
+ getAction().setChanged();
+ }
+ };
FormLayout formLayout = new FormLayout();
formLayout.marginWidth = 15;