On Sun, May 08, 2005 at 05:50:08PM +0100, John Levon wrote: > But I'm a bit confused as to why this is an issue: when I rewrote the > cursor handling, I'm pretty sure I made it so that showCursor is only > /ever/ called right at the end of an update (that is, after processing > an LFUN). So I don't see why this is nesting, unless somebody has > changed this behaviour.
Somebody seemingly has: void BufferView::Pimpl::workAreaKeyPress(LyXKeySymPtr key, key_modifier::state state) { owner_->getLyXFunc().processKeySym(key, state); /* This is perhaps a bit of a hack. When we move * around, or type, it's nice to be able to see * the cursor immediately after the keypress. So * we reset the toggle timeout and force the visibility * of the cursor. Note we cannot do this inside * dispatch() itself, because that's called recursively. */ if (available()) { cursor_timeout.restart(); screen().showCursor(*bv_); // !!! } } Note the line marked with !!!. This workAreaKeyPress shows btw up in the backtrace of a nested update call. > The dialog ones are necessary because we want the dialogs to rebuild > their sizes etc. when we can't see the individual updates. If we had a > way to just update the dialog's events... I don't care how the dialog manage to rebuild there sizes if the core crashes. And there should be some solution as xforms can do it without. What's wrong with a signal emitted at the end of update() to which all interested dialogs can connect? Andre'