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 */