From 2e1bf9a497dd82d9d6ee4889edf4472eb717719b Mon Sep 17 00:00:00 2001 From: Mar Schal Date: Tue, 23 Sep 2025 12:07:05 +0200 Subject: [PATCH] Move tabs by keyboard --- .../sparrowwallet/sparrow/AppController.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/AppController.java b/src/main/java/com/sparrowwallet/sparrow/AppController.java index 84aa0060..f12dbcbb 100644 --- a/src/main/java/com/sparrowwallet/sparrow/AppController.java +++ b/src/main/java/com/sparrowwallet/sparrow/AppController.java @@ -437,7 +437,7 @@ public class AppController implements Initializable { private void registerShortcuts() { OsType osType = OsType.getCurrent(); - if(osType == OsType.MACOS) { + if(osType == OsType.MACOS || osType == OsType.WINDOWS) { tabs.getScene().addEventFilter(KeyEvent.KEY_PRESSED, event -> { if(event.isShortcutDown() && event.isAltDown() && (event.getCode() == KeyCode.LEFT || event.getCode() == KeyCode.RIGHT)) { int currentIndex = tabs.getSelectionModel().getSelectedIndex(); @@ -448,7 +448,37 @@ public class AppController implements Initializable { } } }); + + // MSC: move tabs by keyboard + tabs.getScene().addEventFilter(KeyEvent.KEY_PRESSED, event -> { + if (event.isControlDown() && event.isShiftDown() && (event.getCode() == KeyCode.LEFT || event.getCode() == KeyCode.RIGHT)){ + boolean moveLeft = event.getCode() == KeyCode.LEFT; + int currentIndex = tabs.getSelectionModel().getSelectedIndex(); + + if (moveLeft && currentIndex == 0) + return; + if (!moveLeft && currentIndex + 1 >= tabs.getTabs().size()) + return; + + Tab selectedTab = tabs.getSelectionModel().getSelectedItem(); + tabs.getTabs().removeListener(tabsChangeListener); + tabs.getTabs().remove(selectedTab); + + if (moveLeft) + tabs.getTabs().add(currentIndex - 1, selectedTab); + else + tabs.getTabs().add(currentIndex + 1, selectedTab); + + tabs.getTabs().addListener(tabsChangeListener); + tabs.getSelectionModel().select(selectedTab); + EventManager.get().post(new RequestOpenWalletsEvent()); //Rearrange recent files list + } + }); + } + + + } private void setPlatformApplicationMenu() {