mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 07:09:54 +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>
39 lines
887 B
Go
39 lines
887 B
Go
package dispatcher
|
|
|
|
import (
|
|
"errors"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func (d *Dispatcher) processDragAndDropMessage(message string) (string, error) {
|
|
switch message[1] {
|
|
case 'D':
|
|
msg := strings.SplitN(message[3:], ":", 3)
|
|
if len(msg) != 3 {
|
|
return "", errors.New("Invalid drag and drop Message: " + message)
|
|
}
|
|
|
|
x, err := strconv.Atoi(msg[0])
|
|
if err != nil {
|
|
return "", errors.New("Invalid x coordinate in drag and drop Message: " + message)
|
|
}
|
|
|
|
y, err := strconv.Atoi(msg[1])
|
|
if err != nil {
|
|
return "", errors.New("Invalid y coordinate in drag and drop Message: " + message)
|
|
}
|
|
|
|
paths := strings.Split(msg[2], "\n")
|
|
if len(paths) < 1 {
|
|
return "", errors.New("Invalid drag and drop Message: " + message)
|
|
}
|
|
|
|
d.events.Emit("wails:file-drop", x, y, paths)
|
|
default:
|
|
return "", errors.New("Invalid drag and drop Message: " + message)
|
|
}
|
|
|
|
return "", nil
|
|
}
|