Index: app/properties.c
===================================================================
--- app/properties.c	(revision 3733)
+++ app/properties.c	(working copy)
@@ -131,7 +131,7 @@
       || response_id == GTK_RESPONSE_OK) {
     if ((current_obj != NULL) && (current_dia != NULL)) {
       object_add_updates(current_obj, current_dia);
-      obj_change = current_obj->ops->apply_properties(current_obj, object_part);
+      obj_change = current_obj->ops->apply_properties_dialog(current_obj, object_part);
       object_add_updates(current_obj, current_dia);
 
       diagram_update_connections_object(current_dia, current_obj, TRUE);
Index: objects/Istar/other.c
===================================================================
--- objects/Istar/other.c	(revision 3733)
+++ objects/Istar/other.c	(working copy)
@@ -135,7 +135,8 @@
   (MoveFunc)            other_move,
   (MoveHandleFunc)      other_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      other_get_object_menu,
   (DescribePropsFunc)   other_describe_props,
   (GetPropsFunc)        other_get_props,
Index: objects/Istar/goal.c
===================================================================
--- objects/Istar/goal.c	(revision 3733)
+++ objects/Istar/goal.c	(working copy)
@@ -141,7 +141,8 @@
   (MoveFunc)            goal_move,
   (MoveHandleFunc)      goal_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   goal_describe_props,
   (GetPropsFunc)        goal_get_props,
Index: objects/Istar/actor.c
===================================================================
--- objects/Istar/actor.c	(revision 3733)
+++ objects/Istar/actor.c	(working copy)
@@ -131,7 +131,8 @@
   (MoveFunc)            actor_move,
   (MoveHandleFunc)      actor_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   actor_describe_props,
   (GetPropsFunc)        actor_get_props,
Index: objects/Istar/link.c
===================================================================
--- objects/Istar/link.c	(revision 3733)
+++ objects/Istar/link.c	(working copy)
@@ -141,7 +141,8 @@
   (MoveFunc)            link_move,
   (MoveHandleFunc)      link_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   link_describe_props,
   (GetPropsFunc)        link_get_props,
Index: objects/Jackson/requirement.c
===================================================================
--- objects/Jackson/requirement.c	(revision 3733)
+++ objects/Jackson/requirement.c	(working copy)
@@ -127,7 +127,8 @@
   (MoveFunc)            req_move,
   (MoveHandleFunc)      req_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   req_describe_props,
   (GetPropsFunc)        req_get_props,
Index: objects/Jackson/phenomenon.c
===================================================================
--- objects/Jackson/phenomenon.c	(revision 3733)
+++ objects/Jackson/phenomenon.c	(working copy)
@@ -123,7 +123,8 @@
   (MoveFunc)            message_move,
   (MoveHandleFunc)      message_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   message_describe_props,
   (GetPropsFunc)        message_get_props,
Index: objects/Jackson/domain.c
===================================================================
--- objects/Jackson/domain.c	(revision 3733)
+++ objects/Jackson/domain.c	(working copy)
@@ -162,7 +162,8 @@
   (MoveFunc)            jackson_box_move,
   (MoveHandleFunc)      jackson_box_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      jackson_box_get_object_menu,
   (DescribePropsFunc)   jackson_box_describe_props,
   (GetPropsFunc)        jackson_box_get_props,
Index: objects/flowchart/parallelogram.c
===================================================================
--- objects/flowchart/parallelogram.c	(revision 3733)
+++ objects/flowchart/parallelogram.c	(working copy)
@@ -131,7 +131,8 @@
   (MoveFunc)            pgram_move,
   (MoveHandleFunc)      pgram_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   pgram_describe_props,
   (GetPropsFunc)        pgram_get_props,
Index: objects/flowchart/box.c
===================================================================
--- objects/flowchart/box.c	(revision 3733)
+++ objects/flowchart/box.c	(working copy)
@@ -129,7 +129,8 @@
   (MoveFunc)            box_move,
   (MoveHandleFunc)      box_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   box_describe_props,
   (GetPropsFunc)        box_get_props,
Index: objects/flowchart/diamond.c
===================================================================
--- objects/flowchart/diamond.c	(revision 3733)
+++ objects/flowchart/diamond.c	(working copy)
@@ -130,7 +130,8 @@
   (MoveFunc)            diamond_move,
   (MoveHandleFunc)      diamond_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   diamond_describe_props,
   (GetPropsFunc)        diamond_get_props,
Index: objects/flowchart/ellipse.c
===================================================================
--- objects/flowchart/ellipse.c	(revision 3733)
+++ objects/flowchart/ellipse.c	(working copy)
@@ -129,7 +129,8 @@
   (MoveFunc)            ellipse_move,
   (MoveHandleFunc)      ellipse_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   ellipse_describe_props,
   (GetPropsFunc)        ellipse_get_props,
Index: objects/network/radiocell.c
===================================================================
--- objects/network/radiocell.c	(revision 3733)
+++ objects/network/radiocell.c	(working copy)
@@ -107,7 +107,8 @@
   (MoveFunc)            radiocell_move,
   (MoveHandleFunc)      radiocell_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   radiocell_describe_props,
   (GetPropsFunc)        radiocell_get_props,
Index: objects/network/wanlink.c
===================================================================
--- objects/network/wanlink.c	(revision 3733)
+++ objects/network/wanlink.c	(working copy)
@@ -94,7 +94,8 @@
   (MoveFunc)            wanlink_move,
   (MoveHandleFunc)      wanlink_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   wanlink_describe_props,
   (GetPropsFunc)        wanlink_get_props,
Index: objects/network/bus.c
===================================================================
--- objects/network/bus.c	(revision 3733)
+++ objects/network/bus.c	(working copy)
@@ -130,7 +130,8 @@
   (MoveFunc)            bus_move,
   (MoveHandleFunc)      bus_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      bus_get_object_menu,
   (DescribePropsFunc)   bus_describe_props,
   (GetPropsFunc)        bus_get_props,
Index: objects/network/basestation.c
===================================================================
--- objects/network/basestation.c	(revision 3733)
+++ objects/network/basestation.c	(working copy)
@@ -115,7 +115,8 @@
   (MoveFunc)            basestation_move,
   (MoveHandleFunc)      basestation_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   basestation_describe_props,
   (GetPropsFunc)        basestation_get_props,
Index: objects/SISSI/site.c
===================================================================
--- objects/SISSI/site.c	(revision 3733)
+++ objects/SISSI/site.c	(working copy)
@@ -104,7 +104,8 @@
   (MoveFunc)            object_sissi_move,
   (MoveHandleFunc)      object_sissi_move_handle,
   (GetPropertiesFunc)   object_sissi_get_properties,
-  (ApplyPropertiesFunc) object_sissi_apply_properties,
+  (ApplyPropertiesDialogFunc) object_sissi_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   site_describe_props,
   (GetPropsFunc)        site_get_props,
Index: objects/SISSI/faraday.c
===================================================================
--- objects/SISSI/faraday.c	(revision 3733)
+++ objects/SISSI/faraday.c	(working copy)
@@ -104,7 +104,8 @@
   (MoveFunc)            object_sissi_move,
   (MoveHandleFunc)      object_sissi_move_handle,
   (GetPropertiesFunc)   object_sissi_get_properties,
-  (ApplyPropertiesFunc) object_sissi_apply_properties,
+  (ApplyPropertiesDialogFunc) object_sissi_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   faraday_describe_props,
   (GetPropsFunc)        faraday_get_props,
Index: objects/SISSI/area.c
===================================================================
--- objects/SISSI/area.c	(revision 3733)
+++ objects/SISSI/area.c	(working copy)
@@ -102,7 +102,8 @@
   (MoveFunc)            object_sissi_move,
   (MoveHandleFunc)      object_sissi_move_handle,
   (GetPropertiesFunc)   object_sissi_get_properties,
-  (ApplyPropertiesFunc) object_sissi_apply_properties,
+  (ApplyPropertiesDialogFunc) object_sissi_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   area_describe_props,
   (GetPropsFunc)        area_get_props,
Index: objects/SISSI/room.c
===================================================================
--- objects/SISSI/room.c	(revision 3733)
+++ objects/SISSI/room.c	(working copy)
@@ -103,7 +103,8 @@
   (MoveFunc)            object_sissi_move,
   (MoveHandleFunc)      object_sissi_move_handle,
   (GetPropertiesFunc)   object_sissi_get_properties,
-  (ApplyPropertiesFunc) object_sissi_apply_properties,
+  (ApplyPropertiesDialogFunc) object_sissi_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   room_describe_props,
   (GetPropsFunc)        room_get_props,
Index: objects/SISSI/sissi_object.c
===================================================================
--- objects/SISSI/sissi_object.c	(revision 3733)
+++ objects/SISSI/sissi_object.c	(working copy)
@@ -104,7 +104,8 @@
   (MoveFunc)            object_sissi_move,
   (MoveHandleFunc)      object_sissi_move_handle,
   (GetPropertiesFunc)   object_sissi_get_properties,
-  (ApplyPropertiesFunc) object_sissi_apply_properties,
+  (ApplyPropertiesDialogFunc) object_sissi_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   sissi_object_describe_props,
   (GetPropsFunc)        sissi_object_get_props,
Index: objects/SADT/box.c
===================================================================
--- objects/SADT/box.c	(revision 3733)
+++ objects/SADT/box.c	(working copy)
@@ -122,7 +122,8 @@
   (MoveFunc)            sadtbox_move,
   (MoveHandleFunc)      sadtbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      sadtbox_get_object_menu,
   (DescribePropsFunc)   sadtbox_describe_props,
   (GetPropsFunc)        sadtbox_get_props,
Index: objects/SADT/annotation.c
===================================================================
--- objects/SADT/annotation.c	(revision 3733)
+++ objects/SADT/annotation.c	(working copy)
@@ -107,7 +107,8 @@
   (MoveFunc)            annotation_move,
   (MoveHandleFunc)      annotation_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   annotation_describe_props,
   (GetPropsFunc)        annotation_get_props,
Index: objects/SADT/arrow.c
===================================================================
--- objects/SADT/arrow.c	(revision 3733)
+++ objects/SADT/arrow.c	(working copy)
@@ -123,7 +123,8 @@
   (MoveFunc)            sadtarrow_move,
   (MoveHandleFunc)      sadtarrow_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      sadtarrow_get_object_menu,
   (DescribePropsFunc)   sadtarrow_describe_props,
   (GetPropsFunc)        sadtarrow_get_props,
Index: objects/Misc/analog_clock.c
===================================================================
--- objects/Misc/analog_clock.c	(revision 3733)
+++ objects/Misc/analog_clock.c	(working copy)
@@ -119,7 +119,8 @@
   (MoveFunc)            analog_clock_move,
   (MoveHandleFunc)      analog_clock_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   analog_clock_describe_props,
   (GetPropsFunc)        analog_clock_get_props,
Index: objects/UML/fork.c
===================================================================
--- objects/UML/fork.c	(revision 3733)
+++ objects/UML/fork.c	(working copy)
@@ -101,7 +101,8 @@
   (MoveFunc)            fork_move,
   (MoveHandleFunc)      fork_move_handle,
   (GetPropertiesFunc)   object_return_null,
-  (ApplyPropertiesFunc) object_return_void,
+  (ApplyPropertiesDialogFunc) object_return_void,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   fork_describe_props,
   (GetPropsFunc)        fork_get_props,
Index: objects/UML/component.c
===================================================================
--- objects/UML/component.c	(revision 3733)
+++ objects/UML/component.c	(working copy)
@@ -109,7 +109,8 @@
   (MoveFunc)            component_move,
   (MoveHandleFunc)      component_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   component_describe_props,
   (GetPropsFunc)        component_get_props,
Index: objects/UML/note.c
===================================================================
--- objects/UML/note.c	(revision 3733)
+++ objects/UML/note.c	(working copy)
@@ -104,7 +104,8 @@
   (MoveFunc)            note_move,
   (MoveHandleFunc)      note_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   note_describe_props,
   (GetPropsFunc)        note_get_props,
Index: objects/UML/large_package.c
===================================================================
--- objects/UML/large_package.c	(revision 3733)
+++ objects/UML/large_package.c	(working copy)
@@ -112,7 +112,8 @@
   (MoveFunc)            largepackage_move,
   (MoveHandleFunc)      largepackage_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   largepackage_describe_props,
   (GetPropsFunc)        largepackage_get_props,
Index: objects/UML/class.c
===================================================================
--- objects/UML/class.c	(revision 3733)
+++ objects/UML/class.c	(working copy)
@@ -113,7 +113,8 @@
   (MoveFunc)            umlclass_move,
   (MoveHandleFunc)      umlclass_move_handle,
   (GetPropertiesFunc)   umlclass_get_properties,
-  (ApplyPropertiesFunc) umlclass_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) umlclass_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      umlclass_object_menu,
   (DescribePropsFunc)   umlclass_describe_props,
   (GetPropsFunc)        umlclass_get_props,
Index: objects/UML/object.c
===================================================================
--- objects/UML/object.c	(revision 3733)
+++ objects/UML/object.c	(working copy)
@@ -131,7 +131,8 @@
   (MoveFunc)            objet_move,
   (MoveHandleFunc)      objet_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   objet_describe_props,
   (GetPropsFunc)        objet_get_props,
Index: objects/UML/component_feature.c
===================================================================
--- objects/UML/component_feature.c	(revision 3733)
+++ objects/UML/component_feature.c	(working copy)
@@ -134,7 +134,8 @@
   (MoveFunc)            compfeat_move,
   (MoveHandleFunc)      compfeat_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      compfeat_get_object_menu,
   (DescribePropsFunc)   compfeat_describe_props,
   (GetPropsFunc)        compfeat_get_props,
Index: objects/UML/realizes.c
===================================================================
--- objects/UML/realizes.c	(revision 3733)
+++ objects/UML/realizes.c	(working copy)
@@ -116,7 +116,8 @@
   (MoveFunc)            realizes_move,
   (MoveHandleFunc)      realizes_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      realizes_get_object_menu,
   (DescribePropsFunc)   realizes_describe_props,
   (GetPropsFunc)        realizes_get_props,
Index: objects/UML/constraint.c
===================================================================
--- objects/UML/constraint.c	(revision 3733)
+++ objects/UML/constraint.c	(working copy)
@@ -112,7 +112,8 @@
   (MoveFunc)            constraint_move,
   (MoveHandleFunc)      constraint_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   constraint_describe_props,
   (GetPropsFunc)        constraint_get_props,
Index: objects/UML/message.c
===================================================================
--- objects/UML/message.c	(revision 3733)
+++ objects/UML/message.c	(working copy)
@@ -124,7 +124,8 @@
   (MoveFunc)            message_move,
   (MoveHandleFunc)      message_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   message_describe_props,
   (GetPropsFunc)        message_get_props,
Index: objects/UML/lifeline.c
===================================================================
--- objects/UML/lifeline.c	(revision 3733)
+++ objects/UML/lifeline.c	(working copy)
@@ -127,7 +127,8 @@
   (MoveFunc)            lifeline_move,
   (MoveHandleFunc)      lifeline_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      lifeline_get_object_menu,
   (DescribePropsFunc)   lifeline_describe_props,
   (GetPropsFunc)        lifeline_get_props,
Index: objects/UML/usecase.c
===================================================================
--- objects/UML/usecase.c	(revision 3733)
+++ objects/UML/usecase.c	(working copy)
@@ -117,7 +117,8 @@
   (MoveFunc)            usecase_move,
   (MoveHandleFunc)      usecase_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   usecase_describe_props,
   (GetPropsFunc)        usecase_get_props,
Index: objects/UML/activity.c
===================================================================
--- objects/UML/activity.c	(revision 3733)
+++ objects/UML/activity.c	(working copy)
@@ -108,7 +108,8 @@
   (MoveFunc)            state_move,
   (MoveHandleFunc)      state_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   state_describe_props,
   (GetPropsFunc)        state_get_props,
Index: objects/UML/state_term.c
===================================================================
--- objects/UML/state_term.c	(revision 3733)
+++ objects/UML/state_term.c	(working copy)
@@ -107,7 +107,8 @@
   (MoveFunc)            state_move,
   (MoveHandleFunc)      state_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   state_describe_props,
   (GetPropsFunc)        state_get_props,
Index: objects/UML/actor.c
===================================================================
--- objects/UML/actor.c	(revision 3733)
+++ objects/UML/actor.c	(working copy)
@@ -105,7 +105,8 @@
   (MoveFunc)            actor_move,
   (MoveHandleFunc)      actor_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   actor_describe_props,
   (GetPropsFunc)        actor_get_props,
Index: objects/UML/generalization.c
===================================================================
--- objects/UML/generalization.c	(revision 3733)
+++ objects/UML/generalization.c	(working copy)
@@ -115,7 +115,8 @@
   (MoveFunc)            generalization_move,
   (MoveHandleFunc)      generalization_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      generalization_get_object_menu,
   (DescribePropsFunc)   generalization_describe_props,
   (GetPropsFunc)        generalization_get_props,
Index: objects/UML/association.c
===================================================================
--- objects/UML/association.c	(revision 3733)
+++ objects/UML/association.c	(working copy)
@@ -225,7 +225,8 @@
   (MoveFunc)            association_move,
   (MoveHandleFunc)      association_move_handle,
   (GetPropertiesFunc)   association_get_properties,
-  (ApplyPropertiesFunc) association_apply_properties,
+  (ApplyPropertiesDialogFunc) association_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      association_get_object_menu,
   (DescribePropsFunc)   association_describe_props,
   (GetPropsFunc)        association_get_props,
Index: objects/UML/implements.c
===================================================================
--- objects/UML/implements.c	(revision 3733)
+++ objects/UML/implements.c	(working copy)
@@ -113,7 +113,8 @@
   (MoveFunc)            implements_move,
   (MoveHandleFunc)      implements_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   implements_describe_props,
   (GetPropsFunc)        implements_get_props,
Index: objects/UML/dependency.c
===================================================================
--- objects/UML/dependency.c	(revision 3733)
+++ objects/UML/dependency.c	(working copy)
@@ -119,7 +119,8 @@
   (MoveFunc)            dependency_move,
   (MoveHandleFunc)      dependency_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      dependency_get_object_menu,
   (DescribePropsFunc)   dependency_describe_props,
   (GetPropsFunc)        dependency_get_props,
Index: objects/UML/classicon.c
===================================================================
--- objects/UML/classicon.c	(revision 3733)
+++ objects/UML/classicon.c	(working copy)
@@ -116,7 +116,8 @@
   (MoveFunc)            classicon_move,
   (MoveHandleFunc)      classicon_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   classicon_describe_props,
   (GetPropsFunc)        classicon_get_props,
Index: objects/UML/state.c
===================================================================
--- objects/UML/state.c	(revision 3733)
+++ objects/UML/state.c	(working copy)
@@ -129,7 +129,8 @@
   (MoveFunc)            state_move,
   (MoveHandleFunc)      state_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   state_describe_props,
   (GetPropsFunc)        state_get_props,
Index: objects/UML/small_package.c
===================================================================
--- objects/UML/small_package.c	(revision 3733)
+++ objects/UML/small_package.c	(working copy)
@@ -109,7 +109,8 @@
   (MoveFunc)            smallpackage_move,
   (MoveHandleFunc)      smallpackage_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   smallpackage_describe_props,
   (GetPropsFunc)        smallpackage_get_props,
Index: objects/UML/node.c
===================================================================
--- objects/UML/node.c	(revision 3733)
+++ objects/UML/node.c	(working copy)
@@ -110,7 +110,8 @@
   (MoveFunc)            node_move,
   (MoveHandleFunc)      node_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   node_describe_props,
   (GetPropsFunc)        node_get_props,
Index: objects/UML/transition.c
===================================================================
--- objects/UML/transition.c	(revision 3733)
+++ objects/UML/transition.c	(working copy)
@@ -120,7 +120,8 @@
   (MoveFunc)            transition_move,
   (MoveHandleFunc)      transition_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      transition_get_object_menu,
   (DescribePropsFunc)   transition_describe_props,
   (GetPropsFunc)        transition_get_props,
Index: objects/UML/branch.c
===================================================================
--- objects/UML/branch.c	(revision 3733)
+++ objects/UML/branch.c	(working copy)
@@ -102,7 +102,8 @@
   (MoveFunc)            branch_move,
   (MoveHandleFunc)      branch_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   branch_describe_props,
   (GetPropsFunc)        branch_get_props,
Index: objects/KAOS/other.c
===================================================================
--- objects/KAOS/other.c	(revision 3733)
+++ objects/KAOS/other.c	(working copy)
@@ -138,7 +138,8 @@
   (MoveFunc)            other_move,
   (MoveHandleFunc)      other_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      other_get_object_menu,
   (DescribePropsFunc)   other_describe_props,
   (GetPropsFunc)        other_get_props,
Index: objects/KAOS/goal.c
===================================================================
--- objects/KAOS/goal.c	(revision 3733)
+++ objects/KAOS/goal.c	(working copy)
@@ -144,7 +144,8 @@
   (MoveFunc)            goal_move,
   (MoveHandleFunc)      goal_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      goal_get_object_menu,
   (DescribePropsFunc)   goal_describe_props,
   (GetPropsFunc)        goal_get_props,
Index: objects/KAOS/metabinrel.c
===================================================================
--- objects/KAOS/metabinrel.c	(revision 3733)
+++ objects/KAOS/metabinrel.c	(working copy)
@@ -144,7 +144,8 @@
   (MoveFunc)            mbr_move,
   (MoveHandleFunc)      mbr_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   mbr_describe_props,
   (GetPropsFunc)        mbr_get_props,
Index: objects/KAOS/metaandorrel.c
===================================================================
--- objects/KAOS/metaandorrel.c	(revision 3733)
+++ objects/KAOS/metaandorrel.c	(working copy)
@@ -140,7 +140,8 @@
   (MoveFunc)            maor_move,
   (MoveHandleFunc)      maor_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   maor_describe_props,
   (GetPropsFunc)        maor_get_props,
Index: objects/chronogram/chronoline.c
===================================================================
--- objects/chronogram/chronoline.c	(revision 3733)
+++ objects/chronogram/chronoline.c	(working copy)
@@ -132,7 +132,8 @@
   (MoveFunc)            chronoline_move,
   (MoveHandleFunc)      chronoline_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   chronoline_describe_props,
   (GetPropsFunc)        chronoline_get_props,
Index: objects/chronogram/chronoref.c
===================================================================
--- objects/chronogram/chronoref.c	(revision 3733)
+++ objects/chronogram/chronoref.c	(working copy)
@@ -126,7 +126,8 @@
   (MoveFunc)            chronoref_move,
   (MoveHandleFunc)      chronoref_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   chronoref_describe_props,
   (GetPropsFunc)        chronoref_get_props,
Index: objects/standard/zigzagline.c
===================================================================
--- objects/standard/zigzagline.c	(revision 3733)
+++ objects/standard/zigzagline.c	(working copy)
@@ -110,7 +110,8 @@
   (MoveFunc)            zigzagline_move,
   (MoveHandleFunc)      zigzagline_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      zigzagline_get_object_menu,
   (DescribePropsFunc)   zigzagline_describe_props,
   (GetPropsFunc)        zigzagline_get_props,
Index: objects/standard/arc.c
===================================================================
--- objects/standard/arc.c	(revision 3733)
+++ objects/standard/arc.c	(working copy)
@@ -122,7 +122,8 @@
   (MoveFunc)            arc_move,
   (MoveHandleFunc)      arc_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   arc_describe_props,
   (GetPropsFunc)        arc_get_props,
Index: objects/standard/textobj.c
===================================================================
--- objects/standard/textobj.c	(revision 3733)
+++ objects/standard/textobj.c	(working copy)
@@ -120,7 +120,8 @@
   (MoveFunc)            textobj_move,
   (MoveHandleFunc)      textobj_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   textobj_describe_props,
   (GetPropsFunc)        textobj_get_props,
Index: objects/standard/bezier.c
===================================================================
--- objects/standard/bezier.c	(revision 3733)
+++ objects/standard/bezier.c	(working copy)
@@ -118,7 +118,8 @@
   (MoveFunc)            bezierline_move,
   (MoveHandleFunc)      bezierline_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      bezierline_get_object_menu,
   (DescribePropsFunc)   bezierline_describe_props,
   (GetPropsFunc)        bezierline_get_props,
Index: objects/standard/image.c
===================================================================
--- objects/standard/image.c	(revision 3733)
+++ objects/standard/image.c	(working copy)
@@ -119,7 +119,8 @@
   (MoveFunc)            image_move,
   (MoveHandleFunc)      image_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   image_describe_props,
   (GetPropsFunc)        image_get_props,
Index: objects/standard/beziergon.c
===================================================================
--- objects/standard/beziergon.c	(revision 3733)
+++ objects/standard/beziergon.c	(working copy)
@@ -118,7 +118,8 @@
   (MoveFunc)            beziergon_move,
   (MoveHandleFunc)      beziergon_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      beziergon_get_object_menu,
   (DescribePropsFunc)   beziergon_describe_props,
   (GetPropsFunc)        beziergon_get_props,
Index: objects/standard/polygon.c
===================================================================
--- objects/standard/polygon.c	(revision 3733)
+++ objects/standard/polygon.c	(working copy)
@@ -121,7 +121,8 @@
   (MoveFunc)            polygon_move,
   (MoveHandleFunc)      polygon_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      polygon_get_object_menu,
   (DescribePropsFunc)   polygon_describe_props,
   (GetPropsFunc)        polygon_get_props,
Index: objects/standard/line.c
===================================================================
--- objects/standard/line.c	(revision 3733)
+++ objects/standard/line.c	(working copy)
@@ -115,7 +115,8 @@
   (MoveFunc)            line_move,
   (MoveHandleFunc)      line_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      line_get_object_menu,
   (DescribePropsFunc)   line_describe_props,
   (GetPropsFunc)        line_get_props,
Index: objects/standard/box.c
===================================================================
--- objects/standard/box.c	(revision 3733)
+++ objects/standard/box.c	(working copy)
@@ -124,7 +124,8 @@
   (MoveFunc)            box_move,
   (MoveHandleFunc)      box_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      box_get_object_menu,
   (DescribePropsFunc)   box_describe_props,
   (GetPropsFunc)        box_get_props,
Index: objects/standard/polyline.c
===================================================================
--- objects/standard/polyline.c	(revision 3733)
+++ objects/standard/polyline.c	(working copy)
@@ -113,7 +113,8 @@
   (MoveFunc)            polyline_move,
   (MoveHandleFunc)      polyline_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      polyline_get_object_menu,
   (DescribePropsFunc)   polyline_describe_props,
   (GetPropsFunc)        polyline_get_props,
Index: objects/standard/ellipse.c
===================================================================
--- objects/standard/ellipse.c	(revision 3733)
+++ objects/standard/ellipse.c	(working copy)
@@ -120,7 +120,8 @@
   (MoveFunc)            ellipse_move,
   (MoveHandleFunc)      ellipse_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      ellipse_get_object_menu,
   (DescribePropsFunc)   ellipse_describe_props,
   (GetPropsFunc)        ellipse_get_props,
Index: objects/AADL/aadlprocess.c
===================================================================
--- objects/AADL/aadlprocess.c	(revision 3733)
+++ objects/AADL/aadlprocess.c	(working copy)
@@ -146,7 +146,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlprocessor.c
===================================================================
--- objects/AADL/aadlprocessor.c	(revision 3733)
+++ objects/AADL/aadlprocessor.c	(working copy)
@@ -116,7 +116,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlsubprogram.c
===================================================================
--- objects/AADL/aadlsubprogram.c	(revision 3733)
+++ objects/AADL/aadlsubprogram.c	(working copy)
@@ -128,7 +128,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlthreadgroup.c
===================================================================
--- objects/AADL/aadlthreadgroup.c	(revision 3733)
+++ objects/AADL/aadlthreadgroup.c	(working copy)
@@ -73,7 +73,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlsystem.c
===================================================================
--- objects/AADL/aadlsystem.c	(revision 3733)
+++ objects/AADL/aadlsystem.c	(working copy)
@@ -138,7 +138,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlbox.c
===================================================================
--- objects/AADL/aadlbox.c	(revision 3733)
+++ objects/AADL/aadlbox.c	(working copy)
@@ -134,7 +134,8 @@
       (MoveFunc)            aadlbox_move,
       (MoveHandleFunc)      aadlbox_move_handle,
       (GetPropertiesFunc)   object_create_props_dialog,
-      (ApplyPropertiesFunc) object_apply_props_from_dialog,
+      (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
       (ObjectMenuFunc)      aadlbox_get_object_menu,
       (DescribePropsFunc)   aadlbox_describe_props,
       (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlbus.c
===================================================================
--- objects/AADL/aadlbus.c	(revision 3733)
+++ objects/AADL/aadlbus.c	(working copy)
@@ -205,7 +205,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlpackage.c
===================================================================
--- objects/AADL/aadlpackage.c	(revision 3733)
+++ objects/AADL/aadlpackage.c	(working copy)
@@ -105,7 +105,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadldevice.c
===================================================================
--- objects/AADL/aadldevice.c	(revision 3733)
+++ objects/AADL/aadldevice.c	(working copy)
@@ -142,7 +142,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlthread.c
===================================================================
--- objects/AADL/aadlthread.c	(revision 3733)
+++ objects/AADL/aadlthread.c	(working copy)
@@ -70,7 +70,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadlmemory.c
===================================================================
--- objects/AADL/aadlmemory.c	(revision 3733)
+++ objects/AADL/aadlmemory.c	(working copy)
@@ -127,7 +127,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/AADL/aadldata.c
===================================================================
--- objects/AADL/aadldata.c	(revision 3733)
+++ objects/AADL/aadldata.c	(working copy)
@@ -158,7 +158,8 @@
   (MoveFunc)            aadlbox_move,
   (MoveHandleFunc)      aadlbox_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      aadlbox_get_object_menu,
   (DescribePropsFunc)   aadlbox_describe_props,
   (GetPropsFunc)        aadlbox_get_props,
Index: objects/ER/relationship.c
===================================================================
--- objects/ER/relationship.c	(revision 3733)
+++ objects/ER/relationship.c	(working copy)
@@ -127,7 +127,8 @@
   (MoveFunc)            relationship_move,
   (MoveHandleFunc)      relationship_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   relationship_describe_props,
   (GetPropsFunc)        relationship_get_props,
Index: objects/ER/attribute.c
===================================================================
--- objects/ER/attribute.c	(revision 3733)
+++ objects/ER/attribute.c	(working copy)
@@ -140,7 +140,8 @@
   (MoveFunc)            attribute_move,
   (MoveHandleFunc)      attribute_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   attribute_describe_props,
   (GetPropsFunc)        attribute_get_props,
Index: objects/ER/participation.c
===================================================================
--- objects/ER/participation.c	(revision 3733)
+++ objects/ER/participation.c	(working copy)
@@ -103,7 +103,8 @@
   (MoveFunc)            participation_move,
   (MoveHandleFunc)      participation_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      participation_get_object_menu,
   (DescribePropsFunc)   participation_describe_props,
   (GetPropsFunc)        participation_get_props,
Index: objects/ER/entity.c
===================================================================
--- objects/ER/entity.c	(revision 3733)
+++ objects/ER/entity.c	(working copy)
@@ -122,7 +122,8 @@
   (MoveFunc)            entity_move,
   (MoveHandleFunc)      entity_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   entity_describe_props,
   (GetPropsFunc)        entity_get_props,
Index: objects/FS/flow-ortho.c
===================================================================
--- objects/FS/flow-ortho.c	(revision 3733)
+++ objects/FS/flow-ortho.c	(working copy)
@@ -147,7 +147,8 @@
   (MoveFunc)            orthflow_move,
   (MoveHandleFunc)      orthflow_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      orthflow_get_object_menu,
   (DescribePropsFunc)   orthflow_describe_props,
   (GetPropsFunc)        orthflow_get_props,
Index: objects/FS/function.c
===================================================================
--- objects/FS/function.c	(revision 3733)
+++ objects/FS/function.c	(working copy)
@@ -129,7 +129,8 @@
   (MoveFunc)            function_move,
   (MoveHandleFunc)      function_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      function_get_object_menu,
   (DescribePropsFunc)   function_describe_props,
   (GetPropsFunc)        function_get_props,
Index: objects/FS/flow.c
===================================================================
--- objects/FS/flow.c	(revision 3733)
+++ objects/FS/flow.c	(working copy)
@@ -124,7 +124,8 @@
   (MoveFunc)            flow_move,
   (MoveHandleFunc)      flow_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      flow_get_object_menu,
   (DescribePropsFunc)   flow_describe_props,
   (GetPropsFunc)        flow_get_props,
Index: objects/FS/flow-poly.c
===================================================================
--- objects/FS/flow-poly.c	(revision 3733)
+++ objects/FS/flow-poly.c	(working copy)
@@ -114,7 +114,8 @@
   (MoveFunc)            flow_move,
   (MoveHandleFunc)      flow_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      flow_get_object_menu,
   (DescribePropsFunc)   flow_describe_props,
   (GetPropsFunc)        flow_get_props,
Index: objects/custom/custom_object.c
===================================================================
--- objects/custom/custom_object.c	(revision 3733)
+++ objects/custom/custom_object.c	(working copy)
@@ -160,7 +160,8 @@
   (MoveFunc)            custom_move,
   (MoveHandleFunc)      custom_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      custom_get_object_menu,
   (DescribePropsFunc)   custom_describe_props,
   (GetPropsFunc)        custom_get_props,
Index: objects/GRAFCET/vector.c
===================================================================
--- objects/GRAFCET/vector.c	(revision 3733)
+++ objects/GRAFCET/vector.c	(working copy)
@@ -116,7 +116,8 @@
   (MoveFunc)            arc_move,
   (MoveHandleFunc)      arc_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      arc_get_object_menu,
   (DescribePropsFunc)   arc_describe_props,
   (GetPropsFunc)        arc_get_props,
Index: objects/GRAFCET/vergent.c
===================================================================
--- objects/GRAFCET/vergent.c	(revision 3733)
+++ objects/GRAFCET/vergent.c	(working copy)
@@ -110,7 +110,8 @@
   (MoveFunc)            vergent_move,
   (MoveHandleFunc)      vergent_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      vergent_get_object_menu,
   (DescribePropsFunc)   vergent_describe_props,
   (GetPropsFunc)        vergent_get_props,
Index: objects/GRAFCET/step.c
===================================================================
--- objects/GRAFCET/step.c	(revision 3733)
+++ objects/GRAFCET/step.c	(working copy)
@@ -135,7 +135,8 @@
   (MoveFunc)            step_move,
   (MoveHandleFunc)      step_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   step_describe_props,
   (GetPropsFunc)        step_get_props,
Index: objects/GRAFCET/action.c
===================================================================
--- objects/GRAFCET/action.c	(revision 3733)
+++ objects/GRAFCET/action.c	(working copy)
@@ -117,7 +117,8 @@
   (MoveFunc)            action_move,
   (MoveHandleFunc)      action_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   action_describe_props,
   (GetPropsFunc)        action_get_props,
Index: objects/GRAFCET/condition.c
===================================================================
--- objects/GRAFCET/condition.c	(revision 3733)
+++ objects/GRAFCET/condition.c	(working copy)
@@ -116,7 +116,8 @@
   (MoveFunc)            condition_move,
   (MoveHandleFunc)      condition_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   condition_describe_props,
   (GetPropsFunc)        condition_get_props,
Index: objects/GRAFCET/transition.c
===================================================================
--- objects/GRAFCET/transition.c	(revision 3733)
+++ objects/GRAFCET/transition.c	(working copy)
@@ -127,7 +127,8 @@
   (MoveFunc)            transition_move,
   (MoveHandleFunc)      transition_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   transition_describe_props,
   (GetPropsFunc)        transition_get_props,
Index: objects/EML/interaction-ortho.c
===================================================================
--- objects/EML/interaction-ortho.c	(revision 3733)
+++ objects/EML/interaction-ortho.c	(working copy)
@@ -91,7 +91,8 @@
   (MoveFunc)            interaction_ortho_move,
   (MoveHandleFunc)      interaction_ortho_move_handle,
   (GetPropertiesFunc)   interaction_ortho_get_properties,
-  (ApplyPropertiesFunc) interaction_ortho_apply_properties,
+  (ApplyPropertiesDialogFunc) interaction_ortho_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      interaction_ortho_get_object_menu
 };
 
Index: objects/EML/process.c
===================================================================
--- objects/EML/process.c	(revision 3733)
+++ objects/EML/process.c	(working copy)
@@ -77,7 +77,8 @@
   (MoveFunc)            emlprocess_move,
   (MoveHandleFunc)      emlprocess_move_handle,
   (GetPropertiesFunc)   emlprocess_get_properties,
-  (ApplyPropertiesFunc) emlprocess_apply_properties,
+  (ApplyPropertiesDialogFunc) emlprocess_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL
 };
 
Index: objects/EML/interaction.c
===================================================================
--- objects/EML/interaction.c	(revision 3733)
+++ objects/EML/interaction.c	(working copy)
@@ -93,7 +93,8 @@
   (MoveFunc)            interaction_move,
   (MoveHandleFunc)      interaction_move_handle,
   (GetPropertiesFunc)   interaction_get_properties,
-  (ApplyPropertiesFunc) interaction_apply_properties,
+  (ApplyPropertiesDialogFunc) interaction_apply_properties,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      interaction_get_object_menu
 };
 
Index: objects/EML/instantiation.c
===================================================================
--- objects/EML/instantiation.c	(revision 3733)
+++ objects/EML/instantiation.c	(working copy)
@@ -118,7 +118,8 @@
   (MoveFunc)            instantiation_move,
   (MoveHandleFunc)      instantiation_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      instantiation_get_object_menu,
   (DescribePropsFunc)   instantiation_describe_props,
   (GetPropsFunc)        instantiation_get_props,
Index: lib/objchange.h
===================================================================
--- lib/objchange.h	(revision 3733)
+++ lib/objchange.h	(working copy)
@@ -26,6 +26,14 @@
 typedef void (*ObjectChangeRevertFunc)(ObjectChange *change, DiaObject *obj);
 typedef void (*ObjectChangeFreeFunc)(ObjectChange *change);
 
+/*
+   RFC: Why do the functions require the changed object as an
+   argument? It doesn't make sense to have a "change" that is not
+   associated with a particular object. The object should be specified
+   by the change itself. Why would anyone try to apply an arbitrary
+   change to some arbitrary object other than the one involved in
+   originally making that change?
+ */
 struct _ObjectChange {
   /*! If apply == transaction_point_pointer then this is a transaction
      point. Otherwise this is applying the change */
Index: lib/object.h
===================================================================
--- lib/object.h	(revision 3733)
+++ lib/object.h	(working copy)
@@ -268,8 +268,15 @@
  * @return a Change that can be used for undo/redo.
  * The returned change is already applied.
  */
-typedef ObjectChange *(*ApplyPropertiesFunc) (DiaObject* obj, GtkWidget *widget);
+typedef ObjectChange *(*ApplyPropertiesDialogFunc) (DiaObject* obj, GtkWidget *widget);
 
+/** This function is used to apply a list of properties to the current
+    object. It is typically called by ApplyPropertiesDialogFunc. This
+    is different from SetPropsFunc since this is used to implement
+    undo/redo.
+ */
+typedef ObjectChange *(*ApplyObjectPropertiesFunc) (DiaObject* obj, GPtrArray* props);
+
 /** Desribe the properties that this object supports.
  *  This is one of the object_ops functions.
  * @param obj The object whose properties we want described.
@@ -418,7 +425,8 @@
   MoveFunc            move;
   MoveHandleFunc      move_handle;
   GetPropertiesFunc   get_properties;
-  ApplyPropertiesFunc apply_properties;
+  ApplyPropertiesDialogFunc apply_properties_dialog;
+  ApplyObjectPropertiesFunc apply_object_properties;
   ObjectMenuFunc      get_object_menu;
 
   DescribePropsFunc   describe_props;
Index: lib/group.c
===================================================================
--- lib/group.c	(revision 3733)
+++ lib/group.c	(working copy)
@@ -25,6 +25,7 @@
 #include "connectionpoint.h"
 #include "group.h"
 #include "properties.h"
+#include "propinternals.h"
 #include "diarenderer.h"
 
 struct _Group {
@@ -38,6 +39,18 @@
   PropDescription *pdesc;
 };
 
+typedef struct _GroupPropChange GroupPropChange;
+struct _GroupPropChange {
+  ObjectChange obj_change;
+  Group *group;
+  GList *changes_per_object;
+};
+
+static GroupPropChange* group_apply_props(Group *group, GPtrArray *props);
+static void group_prop_change_apply(GroupPropChange *change, DiaObject *obj);
+static void group_prop_change_revert(GroupPropChange *change, DiaObject *obj);
+static void group_prop_change_free(GroupPropChange *change);
+
 static real group_distance_from(Group *group, Point *point);
 static void group_select(Group *group);
 static ObjectChange* group_move_handle(Group *group, Handle *handle, Point *to, ConnectionPoint *cp,
@@ -61,7 +74,8 @@
   (MoveFunc)            group_move,
   (MoveHandleFunc)      group_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) group_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   group_describe_props,
   (GetPropsFunc)        group_get_props,
@@ -445,3 +459,86 @@
     }
   }
 }
+
+GroupPropChange *
+group_apply_props(Group *group, GPtrArray *props)
+{
+  GList *tmp = NULL;
+  GList *clist = NULL;
+  GroupPropChange *change = NULL;
+  change = g_new0(GroupPropChange, 1);
+
+
+  change->obj_change.apply =
+    (ObjectChangeApplyFunc) group_prop_change_apply;
+  change->obj_change.revert =
+    (ObjectChangeRevertFunc) group_prop_change_revert;
+  change->obj_change.free =
+    (ObjectChangeFreeFunc) group_prop_change_free;
+
+  change->group = group;
+
+  for (tmp = group->objects; tmp != NULL; tmp = g_list_next(tmp)) {
+    DiaObject *obj = (DiaObject*)tmp->data;
+    ObjectChange *objchange = obj->ops->apply_object_properties(obj, props);
+    clist = g_list_append(clist, objchange);
+  }
+
+  change->changes_per_object = clist;
+
+  return change;
+}
+
+static void
+group_prop_change_apply(GroupPropChange *change, DiaObject *obj)
+{
+  GList *tmp;
+
+  for (tmp = change->changes_per_object; tmp != NULL;
+       tmp = g_list_next(tmp)) {
+    ObjectChange *obj_change = (ObjectChange*)tmp->data;
+
+    /*
+      This call to apply() depends on the fact that it is actually a
+      call to object_prop_change_apply_revert(), which never uses its
+      second argument. This particular behaviour used in
+      ObjectPropChange is actually better than the behaviour implied
+      in ObjectChange. Read comments near the ObjectChange struct in
+      objchange.h
+     */
+    obj_change->apply(obj_change, NULL);
+  }
+}
+
+static void
+group_prop_change_revert(GroupPropChange *change, DiaObject *obj)
+{
+  GList *tmp;
+
+  for (tmp = change->changes_per_object; tmp != NULL;
+       tmp = g_list_next(tmp)) {
+    ObjectChange *obj_change = (ObjectChange*)tmp->data;
+
+    /*
+      This call to revert() depends on the fact that it is actually a
+      call to object_prop_change_apply_revert(), which never uses its
+      second argument. This particular behaviour used in
+      ObjectPropChange is actually better than the behaviour implied
+      in ObjectChange. Read comments near the ObjectChange struct in
+      objchange.h
+     */
+    obj_change->revert(obj_change, NULL);
+  }
+}
+
+static void group_prop_change_free(GroupPropChange *change)
+{
+  GList *tmp;
+  for (tmp = change->changes_per_object; tmp != NULL;
+       tmp = g_list_next(tmp)) {
+    ObjectChange *obj_change = (ObjectChange*)tmp->data;
+    obj_change->free(obj_change);
+    g_free(obj_change);
+  }
+  g_list_free(change->changes_per_object);
+}
Index: lib/propobject.c
===================================================================
--- lib/propobject.c	(revision 3733)
+++ lib/propobject.c	(working copy)
@@ -157,7 +157,7 @@
   PropDialog *dialog = prop_dialog_from_widget(dialog_widget);
 
   prop_get_data_from_widgets(dialog);
-  return object_apply_props(obj, dialog->props);
+  return obj->ops->apply_object_properties(obj, dialog->props);
 }
 
 
Index: lib/newgroup.c
===================================================================
--- lib/newgroup.c	(revision 3733)
+++ lib/newgroup.c	(working copy)
@@ -105,7 +105,8 @@
   (MoveFunc)            newgroup_move,
   (MoveHandleFunc)      newgroup_move_handle,
   (GetPropertiesFunc)   object_create_props_dialog,
-  (ApplyPropertiesFunc) object_apply_props_from_dialog,
+  (ApplyPropertiesDialogFunc) object_apply_props_from_dialog,
+  (ApplyObjectPropertiesFunc) object_apply_props,
   (ObjectMenuFunc)      NULL,
   (DescribePropsFunc)   newgroup_describe_props,
   (GetPropsFunc)        newgroup_get_props,
