Index: lib/group.c
===================================================================
--- lib/group.c	(revision 3608)
+++ lib/group.c	(working copy)
@@ -402,7 +402,7 @@
 
       if (desc) descs = g_list_append(descs, (gpointer)desc);
     }
-    group->pdesc = prop_desc_lists_intersection(descs);
+    group->pdesc = prop_desc_lists_union(descs);
     g_list_free(descs); /* XXX: haven't we got a leak here ? */
 
     if (group->pdesc != NULL) {
Index: lib/propdialogs.c
===================================================================
--- lib/propdialogs.c	(revision 3608)
+++ lib/propdialogs.c	(working copy)
@@ -178,12 +178,16 @@
     DiaObject *obj = dialog->obj_copy;
     int j;
 
-    g_assert(prop->event_handler);
     g_assert(obj);
     g_assert(object_complies_with_stdprop(obj));
     g_assert(obj->ops->set_props);
     g_assert(obj->ops->get_props);
 
+    prop->experience &= !PXP_NOTSET;
+
+    if (!prop->event_handler)
+	return;
+
     /* g_message("Received a signal for object %s from property %s",
        obj->type->name,prop->name); */
 
@@ -216,7 +220,6 @@
 {
   DiaObject *obj = prop->self.dialog->obj_copy;
 
-  if (!prop->event_handler) return;
   if (0==strcmp(signal,"FIXME")) {
     g_warning("signal type unknown for this kind of property (name is %s), \n"
               "handler ignored.",prop->name);
@@ -244,7 +247,7 @@
   PropWidgetAssoc pwa;
   GtkWidget *label;
 
-  if ((prop->event_handler) && (!dialog->obj_copy)) 
+  if (!dialog->obj_copy)
     dialog->obj_copy = dialog->orig_obj->ops->copy(dialog->orig_obj);
 
   prop->self.dialog = dialog;
@@ -256,6 +259,7 @@
 
   prop->self.widget = widget;
   if (prop->ops->reset_widget) prop->ops->reset_widget(prop,widget);
+  prop->experience |= PXP_NOTSET;
   
   pwa.prop = prop;
   pwa.widget = widget;  
Index: lib/prop_geomtypes.c
===================================================================
--- lib/prop_geomtypes.c	(revision 3608)
+++ lib/prop_geomtypes.c	(working copy)
@@ -72,7 +72,7 @@
                                                          0.1, 1.0, 1.0));
   GtkWidget *ret = gtk_spin_button_new(adj, 1.0, 2);
   gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(ret),TRUE);
-  prophandler_connect(&prop->common,GTK_OBJECT(adj),"value_changed");
+  prophandler_connect(&prop->common,GTK_OBJECT(ret),"value_changed");
   
   return ret;
 }
