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;

Reply via email to