mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-06 09:55:40 +00:00
app: [Wayland] avoid stuck primary button when invoking window management
Clicking on the window border or the title bar initiates resizing and
moving of the window respectively. This commit fixes a bug where this
would cause a stuck pressed primary button, as we won't receive a
release event. The fix is to only update the set of pressed buttons
after we've decided not to invoke window management.
This fixes a regression introduced by
2957d007a2.
Signed-off-by: Dominik Honnef <dominik@honnef.co>
This commit is contained in:
committed by
Elias Naur
parent
e768fe347a
commit
ad3db5212d
+12
-12
@@ -903,18 +903,7 @@ func gio_onPointerButton(data unsafe.Pointer, p *C.struct_wl_pointer, serial, t,
|
|||||||
default:
|
default:
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var typ pointer.Type
|
if state == 1 && btn == pointer.ButtonPrimary {
|
||||||
switch state {
|
|
||||||
case 0:
|
|
||||||
w.pointerBtns &^= btn
|
|
||||||
typ = pointer.Release
|
|
||||||
// Move or resize gestures no longer applies.
|
|
||||||
w.inCompositor = false
|
|
||||||
case 1:
|
|
||||||
w.pointerBtns |= btn
|
|
||||||
typ = pointer.Press
|
|
||||||
}
|
|
||||||
if typ == pointer.Press && btn == pointer.ButtonPrimary {
|
|
||||||
if _, edge := w.systemGesture(); edge != 0 {
|
if _, edge := w.systemGesture(); edge != 0 {
|
||||||
w.resize(serial, edge)
|
w.resize(serial, edge)
|
||||||
return
|
return
|
||||||
@@ -928,6 +917,17 @@ func gio_onPointerButton(data unsafe.Pointer, p *C.struct_wl_pointer, serial, t,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var typ pointer.Type
|
||||||
|
switch state {
|
||||||
|
case 0:
|
||||||
|
w.pointerBtns &^= btn
|
||||||
|
typ = pointer.Release
|
||||||
|
// Move or resize gestures no longer applies.
|
||||||
|
w.inCompositor = false
|
||||||
|
case 1:
|
||||||
|
w.pointerBtns |= btn
|
||||||
|
typ = pointer.Press
|
||||||
|
}
|
||||||
w.flushScroll()
|
w.flushScroll()
|
||||||
w.resetFling()
|
w.resetFling()
|
||||||
w.w.Event(pointer.Event{
|
w.w.Event(pointer.Event{
|
||||||
|
|||||||
Reference in New Issue
Block a user