Skip to content

Commit e40ee48

Browse files
committed
implement requested changes
1 parent cce63c5 commit e40ee48

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

app/os_macos.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import (
1010
"image"
1111
"io"
1212
"mime"
13+
"os"
1314
"path/filepath"
1415
"runtime"
15-
"strings"
1616
"time"
1717
"unicode"
1818
"unicode/utf8"
@@ -572,8 +572,8 @@ func gio_onExternalDrop(view C.CFTypeRef, path *C.char) {
572572

573573
w.w.Event(transfer.DataEvent{
574574
Type: mime,
575-
Open: func() io.ReadCloser {
576-
return io.NopCloser(strings.NewReader(fileUrl))
575+
Open: func() (io.ReadCloser, error) {
576+
return os.Open(fileUrl)
577577
},
578578
})
579579
}

io/router/pointer.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -858,9 +858,9 @@ func (q *pointerQueue) deliverTransferDataEvent(p *pointerInfo, events *handlerE
858858
transferIdx := len(q.transfers)
859859
events.Add(p.dataTarget, transfer.DataEvent{
860860
Type: src.offeredMime,
861-
Open: func() io.ReadCloser {
861+
Open: func() (io.ReadCloser, error) {
862862
q.transfers[transferIdx] = nil
863-
return src.data
863+
return src.data, nil
864864
},
865865
})
866866
q.transfers = append(q.transfers, src.data)

io/router/router.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -183,10 +183,15 @@ func (q *Router) Queue(events ...event.Event) bool {
183183
case clipboard.Event:
184184
q.cqueue.Push(e, &q.handlers)
185185
case transfer.DataEvent:
186-
for tag, handler := range q.pointer.queue.handlers {
187-
for _, mimeType := range (*handler).targetMimes {
188-
if mimeType == e.Type {
189-
q.handlers.Add(tag, e)
186+
pq := &q.pointer.queue
187+
for _, h := range pq.hitTree {
188+
if h.tag != nil {
189+
targetMimes := pq.handlers[h.tag].targetMimes
190+
for _, mimeType := range targetMimes {
191+
if mimeType == e.Type {
192+
q.handlers.Add(h.tag, e)
193+
break
194+
}
190195
}
191196
}
192197
}

io/transfer/transfer.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ type DataEvent struct {
103103
Type string
104104
// Open returns the transfer data. It is only valid to call Open in the frame
105105
// the DataEvent is received. The caller must close the return value after use.
106-
Open func() io.ReadCloser
106+
Open func() (io.ReadCloser, error)
107107
}
108108

109109
func (DataEvent) ImplementsEvent() {}

0 commit comments

Comments
 (0)