Skip to content

Commit f89dd7b

Browse files
committed
Implement drag and drop
Closes #8
1 parent 483ab77 commit f89dd7b

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

main.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,22 @@ func initUI() error {
445445
mainWin.Connect("destroy", func() {
446446
gtk.MainQuit()
447447
})
448+
449+
dragTarget, err := gtk.TargetEntryNew("text/uri-list", gtk.TARGET_OTHER_APP, 0)
450+
if err != nil {
451+
return fmt.Errorf("failed to create drag target: %s", err)
452+
}
453+
mainWin.DragDestSet(gtk.DEST_DEFAULT_ALL, []gtk.TargetEntry{*dragTarget}, gdk.ACTION_COPY)
454+
mainWin.Connect("drag-data-received", func(_ *gtk.Window, _ *gdk.DragContext, x, y int, s *gtk.SelectionData, m int, t uint) {
455+
uri := strings.SplitN(string(s.GetData()), "\r", 2)[0]
456+
if !strings.HasPrefix(uri, "file://") {
457+
return
458+
}
459+
if closeFile() {
460+
open(strings.TrimPrefix(uri, "file://"))
461+
}
462+
})
463+
448464
iconPix, err := gdk.PixbufNewFromBytesOnly(appIcon)
449465
if err != nil {
450466
return fmt.Errorf("failed to create main icon pixbuf: %s", err)

0 commit comments

Comments
 (0)