-
Bug
-
Resolution: Cannot Reproduce
-
P4
-
None
-
17
-
x86_64
-
linux
ADDITIONAL SYSTEM INFORMATION :
Manjaro / KDE / Java 17
A DESCRIPTION OF THE PROBLEM :
Drag-n-Drop of files that contain [ or ] does not work on Linux / KDE because KDE applications such as the Dolphin File Manager. Because KDE applications do not URI-encode the [ and ] character when passing uri-list-flavor text data, but the Java DnD internals don't gracefully handle these slightly-off-spec URIs, and instead fails.
Test File Path:
"/home/rednoah/Downloads/Hello World [test].txt"
Stack Trace:
java.awt.dnd.InvalidDnDOperationException: java.net.URISyntaxException: Illegal character in path at index 47: file:///home/rednoah/Downloads/Hello%20World%20[test].txt
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer.getTransferData(SunDropTargetContextPeer.java:274)
at java.desktop/sun.awt.datatransfer.TransferableProxy.getTransferData(TransferableProxy.java:73)
at java.desktop/java.awt.dnd.DropTargetContext$TransferableProxy.getTransferData(DropTargetContext.java:387)
at net.filebot.ui.transfer.FileTransferable.getTransferData(Unknown Source)
at net.filebot.ui.transfer.FileTransferable.getFilesFromTransferable(Unknown Source)
at net.filebot.ui.transfer.BackgroundFileTransferablePolicy.handleTransferable(Unknown Source)
at net.filebot.ui.transfer.TransferablePolicy.importData(Unknown Source)
at net.filebot.ui.transfer.DefaultTransferHandler.importData(Unknown Source)
at java.desktop/javax.swing.TransferHandler$DropHandler.drop(TransferHandler.java:1544)
at java.desktop/java.awt.dnd.DropTarget.drop(DropTarget.java:455)
at java.desktop/javax.swing.TransferHandler$SwingDropTarget.drop(TransferHandler.java:1282)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:548)
at java.desktop/sun.awt.X11.XDropTargetContextPeer.processDropMessage(XDropTargetContextPeer.java:185)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:864)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:788)
at java.desktop/sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4866)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4649)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4511)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create basic Java GUI application that accepts java-file-list-flavor drop data and then drop a file that contains [ or ] from KDE / Dolphin File Manager.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Files with [] in the file path should work just like any other file path.
FREQUENCY : always
Manjaro / KDE / Java 17
A DESCRIPTION OF THE PROBLEM :
Drag-n-Drop of files that contain [ or ] does not work on Linux / KDE because KDE applications such as the Dolphin File Manager. Because KDE applications do not URI-encode the [ and ] character when passing uri-list-flavor text data, but the Java DnD internals don't gracefully handle these slightly-off-spec URIs, and instead fails.
Test File Path:
"/home/rednoah/Downloads/Hello World [test].txt"
Stack Trace:
java.awt.dnd.InvalidDnDOperationException: java.net.URISyntaxException: Illegal character in path at index 47: file:///home/rednoah/Downloads/Hello%20World%20[test].txt
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer.getTransferData(SunDropTargetContextPeer.java:274)
at java.desktop/sun.awt.datatransfer.TransferableProxy.getTransferData(TransferableProxy.java:73)
at java.desktop/java.awt.dnd.DropTargetContext$TransferableProxy.getTransferData(DropTargetContext.java:387)
at net.filebot.ui.transfer.FileTransferable.getTransferData(Unknown Source)
at net.filebot.ui.transfer.FileTransferable.getFilesFromTransferable(Unknown Source)
at net.filebot.ui.transfer.BackgroundFileTransferablePolicy.handleTransferable(Unknown Source)
at net.filebot.ui.transfer.TransferablePolicy.importData(Unknown Source)
at net.filebot.ui.transfer.DefaultTransferHandler.importData(Unknown Source)
at java.desktop/javax.swing.TransferHandler$DropHandler.drop(TransferHandler.java:1544)
at java.desktop/java.awt.dnd.DropTarget.drop(DropTarget.java:455)
at java.desktop/javax.swing.TransferHandler$SwingDropTarget.drop(TransferHandler.java:1282)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:548)
at java.desktop/sun.awt.X11.XDropTargetContextPeer.processDropMessage(XDropTargetContextPeer.java:185)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:864)
at java.desktop/sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:788)
at java.desktop/sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4866)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4649)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4511)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Create basic Java GUI application that accepts java-file-list-flavor drop data and then drop a file that contains [ or ] from KDE / Dolphin File Manager.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Files with [] in the file path should work just like any other file path.
FREQUENCY : always