The targets list now has the proper type of ATOM
This commit is contained in:
parent
0d4104255c
commit
6456759bfc
@ -237,7 +237,6 @@ func (request *selectionRequest) handleSelectionNotify (
|
|||||||
// to True. As previously discussed, the owner has no way of knowing
|
// to True. As previously discussed, the owner has no way of knowing
|
||||||
// when the data has been transferred to the requestor unless the
|
// when the data has been transferred to the requestor unless the
|
||||||
// property is removed.
|
// property is removed.
|
||||||
if err != nil { request.die(err); return }
|
|
||||||
err = xproto.DeletePropertyChecked (
|
err = xproto.DeletePropertyChecked (
|
||||||
request.window.backend.connection.Conn(),
|
request.window.backend.connection.Conn(),
|
||||||
request.window.xWindow.Id,
|
request.window.xWindow.Id,
|
||||||
|
@ -38,7 +38,7 @@ func (window *window) claimSelection (name xproto.Atom, data data.Data) *selecti
|
|||||||
ownerReply, err := xproto.GetSelectionOwner (
|
ownerReply, err := xproto.GetSelectionOwner (
|
||||||
window.backend.connection.Conn(), name).Reply()
|
window.backend.connection.Conn(), name).Reply()
|
||||||
if err != nil { return nil }
|
if err != nil { return nil }
|
||||||
if ownerReply.Owner != window.xWindow.Id { return nil}
|
if ownerReply.Owner != window.xWindow.Id { return nil }
|
||||||
|
|
||||||
return &selectionClaim {
|
return &selectionClaim {
|
||||||
window: window,
|
window: window,
|
||||||
@ -63,8 +63,9 @@ func (window *window) refuseSelectionRequest (request xevent.SelectionRequestEve
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (window *window) fulfillSelectionRequest (
|
func (window *window) fulfillSelectionRequest (
|
||||||
data []byte,
|
data []byte,
|
||||||
format byte,
|
format byte,
|
||||||
|
ty xproto.Atom,
|
||||||
request xevent.SelectionRequestEvent,
|
request xevent.SelectionRequestEvent,
|
||||||
) {
|
) {
|
||||||
die := func () { window.refuseSelectionRequest(request) }
|
die := func () { window.refuseSelectionRequest(request) }
|
||||||
@ -78,7 +79,7 @@ func (window *window) fulfillSelectionRequest (
|
|||||||
window.backend.connection.Conn(),
|
window.backend.connection.Conn(),
|
||||||
xproto.PropModeReplace, request.Requestor,
|
xproto.PropModeReplace, request.Requestor,
|
||||||
request.Property,
|
request.Property,
|
||||||
request.Target, format,
|
ty, format,
|
||||||
uint32(len(data) / (int(format) / 8)), data).Check()
|
uint32(len(data) / (int(format) / 8)), data).Check()
|
||||||
if err != nil { die() }
|
if err != nil { die() }
|
||||||
|
|
||||||
@ -136,7 +137,7 @@ func (claim *selectionClaim) handleSelectionRequest (
|
|||||||
|
|
||||||
switch targetName {
|
switch targetName {
|
||||||
case "TARGETS":
|
case "TARGETS":
|
||||||
targetNames := []string { }
|
targetNames := []string { "TARGETS", }
|
||||||
for mime := range claim.data {
|
for mime := range claim.data {
|
||||||
targetNames = append(targetNames, mimeToTargets(mime)...)
|
targetNames = append(targetNames, mimeToTargets(mime)...)
|
||||||
}
|
}
|
||||||
@ -146,7 +147,9 @@ func (claim *selectionClaim) handleSelectionRequest (
|
|||||||
if err != nil { die(); return }
|
if err != nil { die(); return }
|
||||||
xgb.Put32(data[(index) * 4:], uint32(atom))
|
xgb.Put32(data[(index) * 4:], uint32(atom))
|
||||||
}
|
}
|
||||||
claim.window.fulfillSelectionRequest(data, 32, event)
|
atomAtom, err := xprop.Atm(claim.window.backend.connection, "ATOM")
|
||||||
|
if err != nil { die(); return }
|
||||||
|
claim.window.fulfillSelectionRequest(data, 32, atomAtom, event)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
mime, confidence := targetToMime(targetName)
|
mime, confidence := targetToMime(targetName)
|
||||||
@ -156,6 +159,6 @@ func (claim *selectionClaim) handleSelectionRequest (
|
|||||||
reader.Seek(0, io.SeekStart)
|
reader.Seek(0, io.SeekStart)
|
||||||
data, err := io.ReadAll(reader)
|
data, err := io.ReadAll(reader)
|
||||||
if err != nil { die() }
|
if err != nil { die() }
|
||||||
claim.window.fulfillSelectionRequest(data, 8, event)
|
claim.window.fulfillSelectionRequest(data, 8, event.Target, event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user