Skip to content

Commit

Permalink
Merge branch 1.7.5 into master [release]
Browse files Browse the repository at this point in the history
  • Loading branch information
crschnick committed Nov 18, 2023
1 parent 63ab4cf commit eac9504
Show file tree
Hide file tree
Showing 18 changed files with 69 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,10 @@ private void borderScroll(TableView<?> tableView, DragEvent event) {
VirtualFlow<?> flow = (VirtualFlow<?>) skin.getChildren().get(1);
ScrollBar vbar = (ScrollBar) flow.getChildrenUnmodifiable().get(2);

if (!vbar.isVisible()) {
return;
}

double proximity = 100;
Bounds tableBounds = tableView.localToScene(tableView.getBoundsInParent());
double dragY = event.getSceneY();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ protected Region createSimple() {
});

var listBox = new VerticalComp(List.of(list, dragNotice)).padding(new Insets(10, 10, 5, 10));
var stack = new LoadingOverlayComp(
var stack = LoadingOverlayComp.noProgress(
new StackComp(List.of(backgroundStack, listBox, clearPane))
.apply(DragOverPseudoClassAugment.create())
.apply(struc -> {
Expand Down
9 changes: 7 additions & 2 deletions app/src/main/java/io/xpipe/app/browser/FileSystemHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,12 @@ public static void validateDirectoryPath(OpenFileSystemModel model, String path)
throw ErrorEvent.unreportable(new IllegalArgumentException(String.format("Directory %s does not exist", path)));
}

model.getFileSystem().directoryAccessible(path);
try {
model.getFileSystem().directoryAccessible(path);
} catch (Exception ex) {
ErrorEvent.unreportable(ex);
throw ex;
}
}

private static FileSystem localFileSystem;
Expand Down Expand Up @@ -229,7 +234,7 @@ private static void dropFileAcrossFileSystems(FileSystem.FileEntry target, FileS

if (sourceFile.getKind() == FileKind.DIRECTORY) {
target.getFileSystem().mkdirs(targetFile);
} else {
} else if (sourceFile.getKind() == FileKind.FILE) {
try (var in = sourceFile.getFileSystem().openInput(sourceFile.getPath());
var out = target.getFileSystem().openOutput(targetFile)) {
in.transferTo(out);
Expand Down
11 changes: 9 additions & 2 deletions app/src/main/java/io/xpipe/app/comp/base/LoadingOverlayComp.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,25 @@
import io.xpipe.app.util.ThreadHelper;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.layout.StackPane;

public class LoadingOverlayComp extends Comp<CompStructure<StackPane>> {

public static LoadingOverlayComp noProgress(Comp<?> comp, ObservableValue<Boolean> loading) {
return new LoadingOverlayComp(comp, loading, new SimpleDoubleProperty(-1));
}

private final Comp<?> comp;
private final ObservableValue<Boolean> showLoading;
private final ObservableValue<Number> progress;

public LoadingOverlayComp(Comp<?> comp, ObservableValue<Boolean> loading) {
public LoadingOverlayComp(Comp<?> comp, ObservableValue<Boolean> loading, ObservableValue<Number> progress) {
this.comp = comp;
this.showLoading = PlatformThread.sync(loading);
this.progress = PlatformThread.sync(progress);
}

@Override
Expand All @@ -29,7 +36,7 @@ public CompStructure<StackPane> createBase() {
var r = compStruc.get();

var loading = new RingProgressIndicator(0, false);
loading.setProgress(-1);
loading.progressProperty().bind(progress);
loading.visibleProperty().bind(Bindings.not(AppPrefs.get().performanceMode()));

var loadingOverlay = new StackPane(loading);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ protected final Region createSimple() {
});
new ContextMenuAugment<>(() -> this.createContextMenu()).augment(new SimpleCompStructure<>(button));

var loading = new LoadingOverlayComp(
var loading = LoadingOverlayComp.noProgress(
Comp.of(() -> button),
BindingsHelper.persist(
wrapper.getInRefresh().and(wrapper.getObserving().not())));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,6 @@ private Comp<?> createAlphabeticalSortButton() {
});
alphabetical.accessibleTextKey("sortAlphabetical");
alphabetical.apply(new FancyTooltipAugment<>("sortAlphabetical"));
alphabetical.shortcut(new KeyCodeCombination(KeyCode.P, KeyCombination.SHORTCUT_DOWN));
return alphabetical;
}

Expand Down Expand Up @@ -204,7 +203,6 @@ private Comp<?> createDateSortButton() {
});
date.accessibleTextKey("sortLastUsed");
date.apply(new FancyTooltipAugment<>("sortLastUsed"));
date.shortcut(new KeyCodeCombination(KeyCode.L, KeyCombination.SHORTCUT_DOWN));
return date;
}

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/io/xpipe/app/core/AppWindowHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ public static void setupStylesheets(Scene scene) {
public static void setupContent(
Stage stage, Function<Stage, Comp<?>> contentFunc, boolean bindSize, ObservableValue<Boolean> loading) {
var baseComp = contentFunc.apply(stage);
var content = loading != null ? new LoadingOverlayComp(baseComp, loading) : baseComp;
var content = loading != null ? LoadingOverlayComp.noProgress(baseComp, loading) : baseComp;
var contentR = content.createRegion();
AppFont.small(contentR);
var scene = new Scene(bindSize ? new Pane(contentR) : contentR, -1, -1, false);
Expand All @@ -175,7 +175,7 @@ public static void setupContent(
scene.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
if (AppProperties.get().isDeveloperMode() && event.getCode().equals(KeyCode.F6)) {
var newBaseComp = contentFunc.apply(stage);
var newComp = loading != null ? new LoadingOverlayComp(newBaseComp, loading) : newBaseComp;
var newComp = loading != null ? LoadingOverlayComp.noProgress(newBaseComp, loading) : newBaseComp;
var newR = newComp.createRegion();
AppFont.medium(newR);
scene.setRoot(bindSize ? new Pane(newR) : newR);
Expand Down
4 changes: 0 additions & 4 deletions app/src/main/java/io/xpipe/app/prefs/AboutComp.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,6 @@

public class AboutComp extends Comp<CompStructure<?>> {

private Region createDepsList() {
return new ThirdPartyDependencyListComp().createRegion();
}

private Comp<?> createLinks() {
return new OptionsBuilder()
.addComp(
Expand Down
19 changes: 6 additions & 13 deletions app/src/main/java/io/xpipe/app/prefs/PropertiesComp.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,26 @@
package io.xpipe.app.prefs;

import atlantafx.base.controls.Tile;
import io.xpipe.app.core.*;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.core.AppProperties;
import io.xpipe.app.fxcomps.Comp;
import io.xpipe.app.fxcomps.SimpleComp;
import io.xpipe.app.fxcomps.impl.LabelComp;
import io.xpipe.app.util.JfxHelper;
import io.xpipe.app.util.OptionsBuilder;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.layout.Region;

public class PropertiesComp extends SimpleComp {

@Override
protected Region createSimple() {
var title = Comp.of(() -> {
var image = new ImageView(AppImages.image("logo/logo_48x48.png"));
image.setPreserveRatio(true);
image.setSmooth(true);
image.setFitHeight(40);
var label = new Label(AppI18n.get("xPipeClient"), image);
label.getStyleClass().add("header");
AppFont.setSize(label, 5);
return new Tile(AppI18n.get("xPipeClient"), "Version " + AppProperties.get().getVersion() + " ("
+ AppProperties.get().getArch() + ")", image);
return JfxHelper.createNamedEntry(AppI18n.get("xPipeClient"), "Version " + AppProperties.get().getVersion() + " ("
+ AppProperties.get().getArch() + ")", "logo/logo_48x48.png");
});

var section = new OptionsBuilder()
.addComp(title, null)
.addComp(Comp.vspacer(10))
.name("build")
.addComp(
new LabelComp(AppProperties.get().getBuild()),
Expand Down
4 changes: 0 additions & 4 deletions app/src/main/java/io/xpipe/app/util/ScriptHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,6 @@ public static String createExecScript(ShellDialect type, ShellControl processCon
.getShellDialect()
.createScriptTextFileWriteCommand(processControl, content, file)
.execute();
var e = processControl.getShellDialect().getScriptPermissionsCommand(file);
if (e != null) {
processControl.executeSimpleCommand(e, "Failed to set script permissions of " + file);
}
return file;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@
}

.browser .table-view:drag-into-current .table-row-cell {
-fx-opacity: 0.8;
-fx-opacity: 0.65;
}

.browser .table-row-cell:file:hover,.table-row-cell:folder:hover {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package io.xpipe.core.process;

import java.io.BufferedInputStream;
import java.io.InputStream;

public class BufferedProcessInputStream extends BufferedInputStream {

public BufferedProcessInputStream(InputStream in, int size) {
super(in, size);
}

public int bufferedAvailable() {
return count - pos;
}
}
4 changes: 4 additions & 0 deletions core/src/main/java/io/xpipe/core/process/ShellControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ public interface ShellControl extends ProcessControl {

ShellDialect getTargetTerminalShellDialect();

BufferedProcessInputStream getStdout();

BufferedProcessInputStream getStderr();

default boolean hasLocalSystemAccess() {
return getSystemId().equals(XPipeSystemId.getLocal());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ public boolean fileExists(String file) throws Exception {
try (var pc = shellControl
.getShellDialect()
.createFileExistsCommand(shellControl, file)
.complex()
.start()) {
return pc.discardAndCheckExit();
}
Expand Down Expand Up @@ -124,7 +123,6 @@ public void move(String file, String newFile) throws Exception {
public void mkdirs(String file) throws Exception {
try (var pc = shellControl
.command(proc -> proc.getShellDialect().getMkdirsCommand(file))
.complex()
.start()) {
pc.discardOrThrow();
}
Expand Down
5 changes: 4 additions & 1 deletion core/src/main/java/io/xpipe/core/store/FileSystem.java
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,10 @@ public FileEntry resolved() {
Stream<FileEntry> listFiles(String file) throws Exception;

default List<FileEntry> listFilesRecursively(String file) throws Exception {
var base = listFiles(file).toList();
List<FileEntry> base;
try (var filesStream = listFiles(file)) {
base = filesStream.toList();
}
return base.stream()
.flatMap(fileEntry -> {
if (fileEntry.getKind() != FileKind.DIRECTORY) {
Expand Down
14 changes: 14 additions & 0 deletions dist/changelogs/1.7.5.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## Changes in 1.7.5

- Implement some more performance improvements
- Fix file browser transfer freezing up when trying to copy/move nested directories
- Fix file browser transfer failing when trying to copy symbolic links
- Fix file browser jittering when dragging and dropping files
- Fix performance regression when transferring large files

## Previous changes in 1.7

- [1.7.4](https://github.com/xpipe-io/xpipe/releases/tag/1.7.4)
- [1.7.3](https://github.com/xpipe-io/xpipe/releases/tag/1.7.3)
- [1.7.2](https://github.com/xpipe-io/xpipe/releases/tag/1.7.2)
- [1.7.1](https://github.com/xpipe-io/xpipe/releases/tag/1.7.1)
Original file line number Diff line number Diff line change
Expand Up @@ -99,11 +99,6 @@ private static String initScriptsDirectory(ShellControl proc, List<SimpleScriptS
var fileName = scriptStore.get().getName().toLowerCase(Locale.ROOT).replaceAll(" ", "_");
var scriptFile = FileNames.join(targetDir, fileName + "." + d.getScriptFileEnding());
d.createScriptTextFileWriteCommand(proc, content, scriptFile).execute();

var chmod = d.getScriptPermissionsCommand(scriptFile);
if (chmod != null) {
proc.executeSimpleBooleanCommand(chmod);
}
}

d.createTextFileWriteCommand(proc, String.valueOf(hash), hashFile).execute();
Expand Down
2 changes: 1 addition & 1 deletion version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.7.4
1.7.5

0 comments on commit eac9504

Please sign in to comment.