From d9a18daed5eb090e50fca9d230d039038ed4cfcb Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 8 Apr 2023 10:19:54 +0000 Subject: [PATCH] Improve drag and drop styling in file browser --- app/src/main/java/io/xpipe/app/browser/FileListComp.java | 8 ++++++++ .../main/java/io/xpipe/app/browser/FileListCompEntry.java | 7 ++----- .../main/java/io/xpipe/app/issue/SentryErrorHandler.java | 2 ++ .../io/xpipe/app/resources/lang/preferences_en.properties | 2 +- .../resources/io/xpipe/app/resources/style/browser.css | 6 +----- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/browser/FileListComp.java b/app/src/main/java/io/xpipe/app/browser/FileListComp.java index 22982b7a4..8e44dbcc8 100644 --- a/app/src/main/java/io/xpipe/app/browser/FileListComp.java +++ b/app/src/main/java/io/xpipe/app/browser/FileListComp.java @@ -42,6 +42,8 @@ import static javafx.scene.control.TableColumn.SortType.ASCENDING; final class FileListComp extends AnchorPane { private static final PseudoClass HIDDEN = PseudoClass.getPseudoClass("hidden"); + private static final PseudoClass EMPTY = PseudoClass.getPseudoClass("empty"); + private static final PseudoClass FILE = PseudoClass.getPseudoClass("file"); private static final PseudoClass FOLDER = PseudoClass.getPseudoClass("folder"); private static final PseudoClass DRAG = PseudoClass.getPseudoClass("drag"); private static final PseudoClass DRAG_OVER = PseudoClass.getPseudoClass("drag-over"); @@ -186,6 +188,12 @@ final class FileListComp extends AnchorPane { row.pseudoClassStateChanged(DRAG_OVER, false); }); + row.itemProperty().addListener((observable, oldValue, newValue) -> { + row.pseudoClassStateChanged(EMPTY, newValue == null); + row.pseudoClassStateChanged(FILE, newValue != null && !newValue.isDirectory()); + row.pseudoClassStateChanged(FOLDER, newValue != null && newValue.isDirectory()); + }); + fileList.getDraggedOverDirectory().addListener((observable, oldValue, newValue) -> { row.pseudoClassStateChanged(DRAG_OVER, newValue != null && newValue == row.getItem()); }); diff --git a/app/src/main/java/io/xpipe/app/browser/FileListCompEntry.java b/app/src/main/java/io/xpipe/app/browser/FileListCompEntry.java index 4ddd72b83..1262f1126 100644 --- a/app/src/main/java/io/xpipe/app/browser/FileListCompEntry.java +++ b/app/src/main/java/io/xpipe/app/browser/FileListCompEntry.java @@ -166,11 +166,8 @@ public class FileListCompEntry { } private void acceptDrag(DragEvent event) { - if (item == null || !item.isDirectory()) { - model.getDraggedOverEmpty().setValue(true); - } else { - model.getDraggedOverDirectory().setValue(item); - } + model.getDraggedOverEmpty().setValue(item == null || !item.isDirectory()); + model.getDraggedOverDirectory().setValue(item); event.acceptTransferModes(TransferMode.COPY_OR_MOVE); } diff --git a/app/src/main/java/io/xpipe/app/issue/SentryErrorHandler.java b/app/src/main/java/io/xpipe/app/issue/SentryErrorHandler.java index 59cbfcbec..d3228116a 100644 --- a/app/src/main/java/io/xpipe/app/issue/SentryErrorHandler.java +++ b/app/src/main/java/io/xpipe/app/issue/SentryErrorHandler.java @@ -5,6 +5,7 @@ import io.sentry.protocol.SentryId; import io.sentry.protocol.User; import io.xpipe.app.core.AppCache; import io.xpipe.app.core.AppProperties; +import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.util.XPipeDistributionType; import org.apache.commons.io.FileUtils; @@ -86,6 +87,7 @@ public class SentryErrorHandler { .toList(); atts.forEach(attachment -> s.addAttachment(attachment)); + s.setTag("developerMode", AppPrefs.get() != null ? AppPrefs.get().developerMode().getValue().toString() : "false"); s.setTag("terminal", Boolean.toString(ee.isTerminal())); s.setTag("omitted", Boolean.toString(ee.isOmitted())); if (ee.getThrowable() != null) { diff --git a/app/src/main/resources/io/xpipe/app/resources/lang/preferences_en.properties b/app/src/main/resources/io/xpipe/app/resources/lang/preferences_en.properties index bc6cf4436..72004a69f 100644 --- a/app/src/main/resources/io/xpipe/app/resources/lang/preferences_en.properties +++ b/app/src/main/resources/io/xpipe/app/resources/lang/preferences_en.properties @@ -7,7 +7,7 @@ editorProgramDescription=The default text editor to use when editing any kind of useSystemFont=Use system font updates=Updates advanced=Advanced -useSystemFontDescription=In case you're using a custom font on your system, you can opt to use it instead of the default X-Pipe font. +useSystemFontDescription=Controls whether to use your system font or the default font used by X-Pipe (Roboto). tooltipDelay=Tooltip delay tooltipDelayDescription=The amount of milliseconds to wait until a tooltip is displayed. fontSize=Font size diff --git a/app/src/main/resources/io/xpipe/app/resources/style/browser.css b/app/src/main/resources/io/xpipe/app/resources/style/browser.css index 09c6b3be4..db7422619 100644 --- a/app/src/main/resources/io/xpipe/app/resources/style/browser.css +++ b/app/src/main/resources/io/xpipe/app/resources/style/browser.css @@ -54,15 +54,11 @@ -fx-opacity: 0.75; } -.browser .table-directory-view .table-view:drag-into-current { - -fx-background-color: -color-success-muted; -} - .browser .table-directory-view .table-view:drag-into-current .table-row-cell { -fx-opacity: 0.8; } -.browser .table-row-cell:drag-over { +.browser .table-row-cell:folder:drag-over { -fx-background-color: -color-success-muted; }