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'

Reply via email to