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 b48cdd6905 avoid SWT from eating tab key in jediTerm, fixes #6631 
(#6638)
b48cdd6905 is described below

commit b48cdd690544dd9fa6de6d8b9f89e7f61dbce900
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Tue Feb 24 08:22:11 2026 +0100

    avoid SWT from eating tab key in jediTerm, fixes #6631 (#6638)
---
 .../hop/ui/hopgui/terminal/JediTerminalWidget.java | 43 ++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git 
a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java 
b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java
index d6203fca5c..57e19633be 100644
--- a/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java
+++ b/ui/src/main/java/org/apache/hop/ui/hopgui/terminal/JediTerminalWidget.java
@@ -38,6 +38,10 @@ import org.apache.hop.ui.core.PropsUi;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.awt.SWT_AWT;
 import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
 import org.eclipse.swt.graphics.FontData;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.FormAttachment;
@@ -154,6 +158,45 @@ public class JediTerminalWidget implements ITerminalWidget 
{
                     .start();
               });
         });
+
+    // Override tab listener and send it to jediTerm
+    if (Const.isLinux()) {
+      TraverseListener tabTraverse =
+          new TraverseListener() {
+            @Override
+            public void keyTraversed(TraverseEvent e) {
+              if (e.detail == SWT.TRAVERSE_TAB_NEXT || e.detail == 
SWT.TRAVERSE_TAB_PREVIOUS) {
+                e.doit = false;
+              }
+            }
+          };
+      KeyAdapter tabKey =
+          new KeyAdapter() {
+            @Override
+            public void keyPressed(KeyEvent e) {
+              if (e.keyCode == SWT.TAB) {
+                sendTabToShell();
+              }
+            }
+          };
+      bridgeComposite.addTraverseListener(tabTraverse);
+      bridgeComposite.addKeyListener(tabKey);
+      parent.addTraverseListener(tabTraverse);
+      parent.addKeyListener(tabKey);
+    }
+  }
+
+  /** Send Tab character directly to the shell PTY so completion works (used 
on Linux). */
+  private void sendTabToShell() {
+    final Pty4JTtyConnector connector = ttyConnector;
+    if (connector == null || !connector.isConnected()) {
+      return;
+    }
+    try {
+      connector.write("\t");
+    } catch (IOException e) {
+      log.logDebug("Could not send Tab to terminal: " + e.getMessage());
+    }
   }
 
   /** Create SettingsProvider with Hop theme and font scaling */

Reply via email to