Re: enforcing construct only properties and gnome-session



> Hey,
> 	Tim's GObject change which enforces construct-only properties (i.e.
> doesn't allow them to be set after construction) has at least one
> serious consequence in GNOME.
> 
> 	gnome-session's logout dialog creates a override_redirect dialog by:
> 
>   box = gtk_dialog_new ();
>   g_object_set_property (box, "type", GTK_WINDOW_POPUP, NULL);
> 
> 	which, because "type" is a CONSTRUCT_ONLY property, now fails. Because
> gnome-session maps this window with the server grabbed, the end result
> is that if you upgrade to gtk+ 2.3.1 without upgrading your
> gnome-session[1] clicking "Log Out" will cause your session to lock up.
> 
> 	I'm assuming that because this property has always been CONSTRUCT_ONLY
> - hence, gnome-session was always in the wrong to use it this way - we
> shouldn't consider this an incompatible API change in gtk+/glib? Seems
> like its a very similar situation to when gtk+ 2.1 made it impossible to
> instantiate a GtkWidget, which cause breakage in libgnomeui.
> 

I certainly think so, although the state of the GObject documentation makes
it even harder to do the right thing when doing the wrong thing isn't
prohibited. I think some CONSTRUCT_ONLY bugs were found in rhythmbox when Tim made
that change.

Matthias

-- 
+++ GMX - die erste Adresse für Mail, Message, More +++
Neu: Preissenkung für MMS und FreeMMS! http://www.gmx.net





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