diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListCompEntry.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListCompEntry.java index d1d104556..927feb528 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListCompEntry.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserFileListCompEntry.java @@ -189,7 +189,7 @@ public class BrowserFileListCompEntry { && cb.getBaseDirectory() .getPath() .equals(model.getFileSystemModel().getCurrentDirectory().getPath()) - && (item == null || item.getRawFileEntry().getKind() != FileKind.DIRECTORY)) { + && (item == null || item.getRawFileEntry().resolved().getKind() != FileKind.DIRECTORY)) { return false; } @@ -298,12 +298,10 @@ public class BrowserFileListCompEntry { return; } - model.getDraggedOverEmpty() - .setValue(item == null || item.getRawFileEntry().getKind() != FileKind.DIRECTORY); + var isDir = item != null && item.getRawFileEntry().resolved().getKind() == FileKind.DIRECTORY; + model.getDraggedOverEmpty().setValue(!isDir); model.getDraggedOverDirectory().setValue(item); - - - if (item == null || item.getRawFileEntry().getKind() != FileKind.DIRECTORY) { + if (!isDir) { return; } @@ -321,7 +319,7 @@ public class BrowserFileListCompEntry { } model.getFileSystemModel() - .cdAsync(item.getRawFileEntry().getPath()); + .cdAsync(item.getRawFileEntry().resolved().getPath()); }, Duration.ofMillis(500)); } diff --git a/app/src/main/java/io/xpipe/app/browser/file/BrowserQuickAccessContextMenu.java b/app/src/main/java/io/xpipe/app/browser/file/BrowserQuickAccessContextMenu.java index 1061f157b..9cec8beba 100644 --- a/app/src/main/java/io/xpipe/app/browser/file/BrowserQuickAccessContextMenu.java +++ b/app/src/main/java/io/xpipe/app/browser/file/BrowserQuickAccessContextMenu.java @@ -101,7 +101,7 @@ public class BrowserQuickAccessContextMenu extends ContextMenu { BooleanScope.executeExclusive(model.getBusy(), () -> { var dir = entry.getRawFileEntry().resolved().getPath(); try (var stream = model.getFileSystem().listFiles(model.getFileSystem(), dir)) { - var l = stream.map(fileEntry -> fileEntry.resolved()).toList(); + var l = stream.map(fileEntry -> fileEntry).toList(); // Wait until all files are listed, i.e. do not skip the stream elements list.addAll(l.subList(0, Math.min(l.size(), 150))); } diff --git a/app/src/main/java/io/xpipe/app/browser/menu/BrowserApplicationPathMenuProvider.java b/app/src/main/java/io/xpipe/app/browser/menu/BrowserApplicationPathMenuProvider.java index 652b5fa0e..72a8bd2c7 100644 --- a/app/src/main/java/io/xpipe/app/browser/menu/BrowserApplicationPathMenuProvider.java +++ b/app/src/main/java/io/xpipe/app/browser/menu/BrowserApplicationPathMenuProvider.java @@ -1,9 +1,12 @@ package io.xpipe.app.browser.menu; +import io.xpipe.app.browser.file.BrowserEntry; import io.xpipe.app.browser.file.BrowserFileSystemTabModel; import lombok.SneakyThrows; +import java.util.List; + public interface BrowserApplicationPathMenuProvider extends BrowserMenuItemProvider { String getExecutable(); @@ -18,6 +21,11 @@ public interface BrowserApplicationPathMenuProvider extends BrowserMenuItemProvi model.getFileSystem().getShell().get().view().isInPath(getExecutable(), true); } + @Override + default boolean isApplicable(BrowserFileSystemTabModel model, List entries) { + return model.getFileSystem().getShell().isPresent(); + } + @Override @SneakyThrows default boolean isActive(BrowserFileSystemTabModel model) {