mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 23:39:21 +08:00

* Feature/1090 native drag and drop for file and folder (#3203) * implement basic dnd for linux * implemented windows * progress changed linux handling and added coordinates to drop * progress fix drop coordinates on windows * progress remove log from windows * progress move js * update js after merge * fix event listener registration * fix segfault on non file drag * remove logs, fix coordinates * minor changes, simplify to drop only * rename EnableWails -> EnableFileDrop * add documentation (PR id missing) * add PR id to changelog * fix remove casting from malloc * fix nil check for OnFileDrop's callback * fix nil check for OnFileDrop skip event when nil * add error message for nil callback in OnFileDrop --------- Co-authored-by: lyimmi <lelvente.zambo@gmail.com> Co-authored-by: Lea Anthony <lea.anthony@gmail.com> * implement native drag and drop for macOS (#3250) * implement native drag and drop for macOS * update docs * add to changelog * update docs (macOS is supported) * Fix windows DragAndDrop options * Fix class unset on dragleave for full frame elements * improve class unset (nested elements and borders case) * Fix runtime drop target detection and CSS class assignment * Edit changelog * Fix drag-and-drop options in references * Update v2/internal/frontend/desktop/darwin/WailsWebView.m * Update v2/internal/frontend/desktop/darwin/WailsWebView.m --------- Co-authored-by: Zámbó, Levente <levente.zambo@gmail.com> Co-authored-by: lyimmi <lelvente.zambo@gmail.com> Co-authored-by: Lea Anthony <lea.anthony@gmail.com> Co-authored-by: Andrey Pshenkin <andrey.pshenkin@gmail.com> Co-authored-by: Pavel Binar <pavel@beamtransfer.io>
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package runtime
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
)
|
|
|
|
// OnFileDrop returns a slice of file path strings when a drop is finished.
|
|
func OnFileDrop(ctx context.Context, callback func(x, y int, paths []string)) {
|
|
if callback == nil {
|
|
LogError(ctx, "OnFileDrop called with a nil callback")
|
|
return
|
|
}
|
|
EventsOn(ctx, "wails:file-drop", func(optionalData ...interface{}) {
|
|
if len(optionalData) != 3 {
|
|
callback(0, 0, nil)
|
|
}
|
|
x, ok := optionalData[0].(int)
|
|
if !ok {
|
|
LogError(ctx, fmt.Sprintf("invalid x coordinate in drag and drop: %v", optionalData[0]))
|
|
}
|
|
y, ok := optionalData[1].(int)
|
|
if !ok {
|
|
LogError(ctx, fmt.Sprintf("invalid y coordinate in drag and drop: %v", optionalData[1]))
|
|
}
|
|
paths, ok := optionalData[2].([]string)
|
|
if !ok {
|
|
LogError(ctx, fmt.Sprintf("invalid path data in drag and drop: %v", optionalData[2]))
|
|
}
|
|
callback(x, y, paths)
|
|
})
|
|
}
|
|
|
|
// OnFileDropOff removes the drag and drop listeners and handlers.
|
|
func OnFileDropOff(ctx context.Context) {
|
|
EventsOff(ctx, "wails:file-drop")
|
|
}
|