GNOME Bugzilla – Bug 107988
at-spi modifier relatch broken when using GOK
Last modified: 2004-12-22 21:47:04 UTC
at-spi's modifier relatch behavior is overzealous when GOK is running in corepointer mode; because the consumed buttonpress triggers an XKB 'relatch'. That's desirable, but because at-spi can't actually successfull do an XGrabButton anymore (metacity, I think), it has to use fallback detection methodsfor button state changes. It catches the button press, sends it to GOK which consumes it, then orders a relatch (since it knows that the button event will trigger an Xkb delatch event as a side-effect, which we want to revert. However, in the case of GOK, the button press also triggers a (synchronous) call to SPI_generateKeystroke, which in most cases will also (appropriately!) cause an XKB delatch. But since we've just issued a pending 'relatch' request, this delatch will get reverted. The only solution seems to be to check in generateKeystroke to see if the generated key event should cause a delatch or not, and "cancel" the relatch order if it should. Ugh!
Created attachment 14891 [details] [review] patch for this bug, tested.