hpcu: the slightest cleanup
This commit is contained in:
parent
f99615c850
commit
056391eeca
48
hpcu/main.go
48
hpcu/main.go
|
@ -133,18 +133,16 @@ func requestOwnership(origin *selectionState, time xproto.Timestamp) {
|
|||
}
|
||||
}
|
||||
|
||||
func handleEvent(ev nexgb.Event) {
|
||||
switch e := ev.(type) {
|
||||
case xfixes.SelectionNotifyEvent:
|
||||
func handleXfixesSelectionNotify(e xfixes.SelectionNotifyEvent) {
|
||||
state, ok := selections[e.Selection]
|
||||
if !ok {
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
// Ownership request has been granted, don't ask ourselves for data.
|
||||
if e.Owner == wid {
|
||||
state.owning = e.SelectionTimestamp
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
// This should always be true.
|
||||
|
@ -155,7 +153,7 @@ func handleEvent(ev nexgb.Event) {
|
|||
// Not checking whether we should give up when our current retrieval
|
||||
// attempt is interrupted--the timeout mostly solves this.
|
||||
if e.Owner == xproto.WindowNone {
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
// Don't try to process two things at once. Each request gets a few
|
||||
|
@ -163,7 +161,7 @@ func handleEvent(ev nexgb.Event) {
|
|||
// doesn't commence. Ideally we'd set up a separate queue for these
|
||||
// skipped requests and process them later.
|
||||
if state.inProgress != 0 && e.Timestamp-state.inProgress < 5000 {
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
// ICCCM says we should ensure the named property doesn't exist.
|
||||
|
@ -174,22 +172,23 @@ func handleEvent(ev nexgb.Event) {
|
|||
|
||||
state.inProgress = e.Timestamp
|
||||
state.incr = false
|
||||
}
|
||||
|
||||
case xproto.SelectionNotifyEvent:
|
||||
func handleSelectionNotify(e xproto.SelectionNotifyEvent) {
|
||||
state, ok := selections[e.Selection]
|
||||
if e.Requestor != wid || !ok || e.Time != state.inProgress {
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
state.inProgress = 0
|
||||
if e.Property == xproto.AtomNone {
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
state.buffer = nil
|
||||
reply, err := getProperty(e.Requestor, e.Property)
|
||||
if err != nil {
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
// When you select a lot of text in VIM, it starts the ICCCM
|
||||
|
@ -203,18 +202,19 @@ func handleEvent(ev nexgb.Event) {
|
|||
}
|
||||
|
||||
_ = xproto.DeleteProperty(X, e.Requestor, e.Property)
|
||||
}
|
||||
|
||||
case xproto.PropertyNotifyEvent:
|
||||
func handlePropertyNotify(e xproto.PropertyNotifyEvent) {
|
||||
state, ok := selections[e.Atom]
|
||||
if e.Window != wid || e.State != xproto.PropertyNewValue ||
|
||||
!ok || !state.incr {
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
reply, err := getProperty(e.Window, e.Atom)
|
||||
if err != nil {
|
||||
state.incrFailed = true
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
if !appendText(state, reply) {
|
||||
|
@ -232,7 +232,9 @@ func handleEvent(ev nexgb.Event) {
|
|||
|
||||
_ = xproto.DeleteProperty(X, e.Window, e.Atom)
|
||||
|
||||
case xproto.SelectionRequestEvent:
|
||||
}
|
||||
|
||||
func handleSelectionRequest(e xproto.SelectionRequestEvent) {
|
||||
property := e.Property
|
||||
if property == xproto.AtomNone {
|
||||
property = e.Target
|
||||
|
@ -240,7 +242,7 @@ func handleEvent(ev nexgb.Event) {
|
|||
|
||||
state, ok := selections[e.Selection]
|
||||
if e.Owner != wid || !ok {
|
||||
break
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
|
@ -308,6 +310,18 @@ func handleEvent(ev nexgb.Event) {
|
|||
_ = xproto.SendEvent(X, false /* propagate */, e.Requestor,
|
||||
0 /* event mask */, string(response.Bytes()))
|
||||
}
|
||||
|
||||
func handleXEvent(ev nexgb.Event) {
|
||||
switch e := ev.(type) {
|
||||
case xfixes.SelectionNotifyEvent:
|
||||
handleXfixesSelectionNotify(e)
|
||||
case xproto.SelectionNotifyEvent:
|
||||
handleSelectionNotify(e)
|
||||
case xproto.PropertyNotifyEvent:
|
||||
handlePropertyNotify(e)
|
||||
case xproto.SelectionRequestEvent:
|
||||
handleSelectionRequest(e)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
@ -345,7 +359,7 @@ func main() {
|
|||
return
|
||||
}
|
||||
if ev != nil {
|
||||
handleEvent(ev)
|
||||
handleXEvent(ev)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue