hpcu: the slightest cleanup
This commit is contained in:
		
							
								
								
									
										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 (
 | 
			
		||||
@@ -307,6 +309,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)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -345,7 +359,7 @@ func main() {
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if ev != nil {
 | 
			
		||||
			handleEvent(ev)
 | 
			
		||||
			handleXEvent(ev)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user