Skip to content

Commit 8af890a

Browse files
committed
bindings: Correct KeySequenceEvent comparison
We've to iterate over the included elements, since slices can't be simply compared with the comparison operators.
1 parent 18f3e1b commit 8af890a

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

internal/action/bindings.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,24 @@ func findEvent(k string) (Event, error) {
251251
return event, nil
252252
}
253253

254+
func eventsEqual(e1 Event, e2 Event) bool {
255+
seq1, ok1 := e1.(KeySequenceEvent)
256+
seq2, ok2 := e2.(KeySequenceEvent)
257+
if ok1 && ok2 {
258+
if len(seq1.keys) != len(seq2.keys) {
259+
return false
260+
}
261+
for i := 0; i < len(seq1.keys); i++ {
262+
if seq1.keys[i] != seq2.keys[i] {
263+
return false
264+
}
265+
}
266+
return true
267+
}
268+
269+
return e1 == e2
270+
}
271+
254272
// TryBindKey tries to bind a key by writing to config.ConfigDir/bindings.json
255273
// Returns true if the keybinding already existed and a possible error
256274
func TryBindKey(k, v string, overwrite bool) (bool, error) {
@@ -278,7 +296,7 @@ func TryBindKey(k, v string, overwrite bool) (bool, error) {
278296
found := false
279297
for ev := range parsed {
280298
if e, err := findEvent(ev); err == nil {
281-
if e == key {
299+
if eventsEqual(e, key) {
282300
if overwrite {
283301
parsed[ev] = v
284302
}
@@ -327,7 +345,7 @@ func UnbindKey(k string) error {
327345

328346
for ev := range parsed {
329347
if e, err := findEvent(ev); err == nil {
330-
if e == key {
348+
if eventsEqual(e, key) {
331349
delete(parsed, ev)
332350
break
333351
}

0 commit comments

Comments
 (0)