On Mon, May 09, 2005 at 07:31:51PM +0100, John Levon wrote: > On Mon, May 09, 2005 at 09:13:03PM +0300, Martin Vermeer wrote: > > "We can't update ... at all", is that an imperative? I.e., should we > > "disable interrupts" as one would have on a microprocessor two decades > > ago? And if so, how (in Qt/X11)?. > > We just need to delay stuff. Set some flags, and after the update, call > the dialog's update routine, the environment dropdown's update, etc. > > > I still don't understand your 'Eureka' experience. Please share it ;-) > > Qt is processing the event queue when we change a widget, it appears.
Hmmm yes. In case of the tabular dialog, the cell row and column numbers are updated. This sounds close to impossible. Unless there is a generic way in Qt/X11 to simply block the processing of the event queue (like one would mask an interrupt) I feel this is pretty hopeless. A fallback strategy would then be what I outlined: queue keyboard input (to preserve scriptability as Andre pointed out), shortcut the mouse (irrelevant for scriptability), and process all other LFUNs (from dialogs, minibuffer, ...) normally, except that they may not be allowed to start an update... they are going to get triggered at inconvenient times anyway. (And I mean, heck, we put those asserts there ourselves, assuming linear execution. Assumption shown wrong, big deal.) As I said, a fallback. And lots of comments, to remind us what is really happening. Do you have a realistic, better proposal? - Regards Martin
pgprc243JkDja.pgp
Description: PGP signature