Improve link handling in browser

This commit is contained in:
crschnick
2025-11-22 22:16:01 +00:00
parent efadd87e82
commit 473ddc528d
3 changed files with 14 additions and 8 deletions
@@ -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));
}
@@ -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)));
}
@@ -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<BrowserEntry> entries) {
return model.getFileSystem().getShell().isPresent();
}
@Override
@SneakyThrows
default boolean isActive(BrowserFileSystemTabModel model) {