bgribble/mfp

Object selection and interaction gets messed up

Opened this issue · 1 comments

There's a syndrome where several aspects of mouse interaction with the UI get messed up. Symptoms include:

  • Clicking a patch element does not select it. Dragging a select box around it will sometimes select it.
  • Select boxes sometimes "resist" enclosing certain objects
  • Selection will randomly include an object that is not supposed to be selected
  • The selected object will get "stuck" in drag-mode, where mouse motion moves the object around even though no button is held down

All of these behaviors seem to be associated with a stream of Clutter warning messages like this (visible if you run mfp with --verbose-remote)

[ 125.793   main] gui  (mfpgui:139154): Clutter-WARNING **: 10:27:04.713: The required ID of 3 does not refer to an existing actor; this usually implies that the pick() of an actor is not correctly implemented or that there is an error in the glReadPixels() implementation of the GL driver.

These messages stream (seemingly associated with MotionEvents) when the pointer is over specific objects; the "ID" referred to seems to be associated with the visible patch element (it changes when the pointer is over a different object).

Sometimes the messages for a particular object will stop and it will be selectable again.

This feels like Clutter bitrot or GL driver issues or Wayland or some such nonsense.

Would it be possible to catch that warning, identify the relevant GUI object, and delete and re-create it as a hacky bandaid? We are catching the console output of the GUI process so it should be feasible to at least notice when it happens.

Workaround (partial): C-. (control-period) will force-clear all modifier keys, exit all minor modes, and deselect everything