Re: [Usability] instant-apply issue



Havoc Pennington <hp redhat com> writes:

> [cc to desktop-devel added since several people have asked this]
> 
> Markus Bertheau <twanger bluetwanger de> writes:
> > 
> > With gconf you can set preferences from outside. Assume you have the
> > prefs dialog up. Now you change some property from outside with
> > gconf-editor. Should the widget in the prefs dialog reflect that?
> > 
> 
> My opinion is fairly strongly that this is a bad idea - I have to
> disagree with Jeff and Nils here.

The control-center dialogs already do this.  We have a nice object
written by Bradford that listens to GConf keys and keeps them up to
date.  

> Here are the reasons:
> 
>  1) The situation basically won't ever happen in practice.

Well, if you have multiple versions of the same dialog, it can happen
(like the nautilus preferences dialog.)

>  2) It makes prefs dialogs far harder to implement, you have to write
>     a bunch of code to monitor gconf changes.

Most of the time this isn't too bad.

>  3) It introduces a lot of potential for bizarre infinite loops 
>     in the prefs dialog code, if you change the key yourself
>     then get a notify then set the widget then change the 
>     key yourself, etc. etc.

You just have to only propagate the change if the value is different.
Just make sure you don't set a different value.

>  4) I don't like it from a UI standpoint, because the chances are much
>     higher that the gconf key was suddenly set by some system
>     implementation detail or something, than that the user has
>     switched to a terminal and started using "gconftool" - so if you
>     update prefs widgets on gconf key changes, you are blowing away
>     what the user had typed in. i.e. there's potential for losing user
>     data. Granted with instant-apply this is less of an issue, but
>     e.g. if you apply on focus out of a text entry, you could
>     overwrite the text before the focus out, for example.
> 
>  5) I don't like it from a UI standpoint, because the user won't 
>     understand why the value suddenly changed in the dialog
>     all by itself.

I doubt that changes will occur in a vacuum on a regular basis.  I bet
you're more likely to see it when you leave a dialog open, forget about
it, reopen it on a different terminal and come back to the first one.

> Overall: the situation will hardly ever arise, and when it does it's a
> tossup whether updating the dialog widgets is even nice UI, and doing
> this adds a ton of bug-prone code. So my guess is that from a
> practical standpoint trying to do this will just be visible to users
> in the form of bugs rather than features.
> 
> So my recommendation is that you re-initialize the values in the
> dialog each time you pop up the dialog, but that you do not 
> bother to update prefs widgets when receiving gconf notifies.

That's probably fine, but there's nothing wrong in going the extra mile
to handle the situation.  It's pretty slick when it works, and for
numbers, lists and booleans it's really easy to implement.

But you're right, it's not a common occurrence...

Thanks,
-Jonathan



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]