Parcourir la source

[filebrowser] Support multiple selection in d&d from gallery

Clément Espeute il y a 2 mois
Parent
commit
9818a653d7
2 fichiers modifiés avec 11 ajouts et 2 suppressions
  1. 5 1
      hide/comp/FancyGallery.hx
  2. 6 1
      hide/view/FileBrowser.hx

+ 5 - 1
hide/comp/FancyGallery.hx

@@ -217,7 +217,11 @@ class FancyGallery<GalleryItem> extends hide.comp.Component {
 		}
 	}
 
-		public function selectItem(item: GalleryItem) {
+	public function getSelectedItems() {
+		return [for (item => _ in selection) (cast item:GalleryItemData<GalleryItem>).item];
+	}
+
+	public function selectItem(item: GalleryItem) {
 		clearSelection();
 		var data = itemMap.get(cast item);
 		if (data == null) {

+ 6 - 1
hide/view/FileBrowser.hx

@@ -527,7 +527,8 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 
 		fancyGallery.dragAndDropInterface = {
 			onDragStart: (item: FileEntry, dataTransfer: js.html.DataTransfer) -> {
-				dataTransfer.setData(dragKey, haxe.Json.stringify([item.getPath()]));
+				var selection = getItemAndSelection(item, true);
+				dataTransfer.setData(dragKey, haxe.Json.stringify([for (item in selection) item.getPath()]));
 				return true;
 			}
 		}
@@ -733,6 +734,10 @@ class FileBrowser extends hide.ui.View<FileBrowserState> {
 			for (item in fancyTree.getSelectedItems()) {
 				hide.tools.Extensions.ArrayExtensions.pushUnique(items, item);
 			}
+		} else {
+			for (item in fancyGallery.getSelectedItems()) {
+				hide.tools.Extensions.ArrayExtensions.pushUnique(items, item);
+			}
 		}
 		return items;
 	}