Angus,

Now I've looked at the cross reference dialog, I don't know why Andreas
made it instant apply: it's for inserting new refs as well as editing
existing ones.  So in this case I'd say okay/cancel is the appropriate
button setup.  This will go in that thread in a moment.

More general comments on the issues associated with instant apply
dialogs follow.  Please don't think I'm trying to be argumentative, I'm
just brain-dumping.  Have a good trip by the way!

On Thu, 2005-03-10 at 18:41 +0000, Angus Leeming wrote:
> > The reason for doing a manual dispatchParams in the dialog code rather
> > than just triggering the apply method is that these signals represent an
> > interactive process: it should be as streamlined as possible, rather
> > than reading all the parameters out of the dialog just to apply a change
> > to one.
> 
> Nonsense. You're updating the state of a single inset. That's conceptually 
> a single piece of information.
This point actually isn't all that important to me, if you really want
to call the whole apply process for each change then that doesn't make
much difference.

> Explain to me what is wrong with the UI of the QRef or XRef dialogs and 
> how the GRef dialog does things better and I might buy it. However, the 
> Controller does a heap of internal accountancy stuff when its told that 
> the Apply Button has been pressed. It doesn't *just* call GRef::apply. 
> You're subverting all of that by invoking dispatch directly.
Don't confuse the issue of (1) whether to make the dialog instant-apply
with the issue of (2) whether to have the dialog dispatchParams itself
rather than calling the controller's apply function.

As for (2), I don't really know, maybe it's worth reading out the whole
dialog on each change.  If you say so.  I've never paid much attention
to what the controller does behind the scenes.  Anyway, I think the
candidates for instant-apply have already been done: it will be a small
task at some point to go back and make them not use dispatchParams
themselves.  No big deal.

As for (1), I shall firstly invoke the holy GNOME HIG of might and
power:
"""
Do not make the user press an OK or Apply button to make the changes
happen, unless either:

      * the change will take more than about one second to apply, in
        which case applying the change immediately could make the system
        feel slow or unresponsive, or
        
      * the changes in the window have to be applied simultaneously to
        prevent the system entering a potentially unstable state. For
        example, the hostname and proxy fields in a network properties
        window.
"""

If you don't agree that lyx-gtk ought to follow the GNOME guidelines,
then I shall simply say that I think the okay/apply/cancel is an
overcomplicated UI for a smallish dialog.

LyX introduces the slightly uncomfortable special case that quite a
number of the dialogs serve for both editing properties and inserting
new objects.  This is a third exception to the "instant apply dialogs
are good" policy.

John

Reply via email to