=== modified file 'app/properties.c'
--- app/properties.c	2008-07-18 21:00:55 +0000
+++ app/properties.c	2008-11-21 08:51:37 +0000
@@ -25,6 +25,7 @@
 
 #include "intl.h"
 #include "properties.h"
+#include "propinternals.h"
 #include "object_ops.h"
 #include "connectionpoint_ops.h"
 #include "undo.h"
@@ -129,32 +130,36 @@
 
   if (   response_id == GTK_RESPONSE_APPLY 
       || 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_from_dialog(current_obj, object_part);
-      object_add_updates(current_obj, current_dia);
-
-      diagram_update_connections_object(current_dia, current_obj, TRUE);
-    
-      if (obj_change != NULL) {
-	undo_object_change(current_dia, current_obj, obj_change);
-      }
-    
-      diagram_modified(current_dia);
-
-      diagram_object_modified(current_dia, current_obj);
-
-      diagram_update_extents(current_dia);
+    if (prop_dialog_from_widget(object_part)->prop_set == TRUE) {
+      if ((current_obj != NULL) && (current_dia != NULL)) {
+	object_add_updates(current_obj, current_dia);
+	obj_change = current_obj->ops->apply_properties_from_dialog(current_obj, object_part);
+	object_add_updates(current_obj, current_dia);
+
+	diagram_update_connections_object(current_dia, current_obj, TRUE);
+    
+	if (obj_change != NULL) {
+          undo_object_change(current_dia, current_obj, obj_change);
+        }
+    
+        diagram_modified(current_dia);
+
+	diagram_object_modified(current_dia, current_obj);
+
+	diagram_update_extents(current_dia);
       
-      if (obj_change != NULL) {
-	undo_set_transactionpoint(current_dia->undo);
-      }  else {
-	message_warning(_("This object doesn't support Undo/Redo.\n"
-  			"Undo information erased."));
-	undo_clear(current_dia->undo);
+	if (obj_change != NULL) {
+          undo_set_transactionpoint(current_dia->undo);
+        }  else {
+           message_warning(_("This object doesn't support Undo/Redo.\n"
+			     "Undo information erased."));
+	   undo_clear(current_dia->undo);
+	}
+
+	diagram_flush(current_dia);
       }
 
-      diagram_flush(current_dia);
+      prop_dialog_from_widget(object_part)->prop_set = FALSE;
     }
   }
 

=== modified file 'lib/propdialogs.c'
--- lib/propdialogs.c	2008-07-18 21:00:55 +0000
+++ lib/propdialogs.c	2008-11-21 08:51:37 +0000
@@ -50,6 +50,7 @@
   dialog->obj_copy = NULL;
   dialog->curtable = NULL;
   dialog->containers = g_ptr_array_new();
+  dialog->prop_set = FALSE;
 
   prop_dialog_container_push(dialog,dialog->widget);
 
@@ -182,6 +183,7 @@
     g_assert(obj->ops->get_props);
 
     prop->experience &= ~PXP_NOTSET;
+    dialog->prop_set = TRUE;
 
     if (!prop->event_handler)
 	return;

=== modified file 'lib/properties.h'
--- lib/properties.h	2008-04-25 13:04:32 +0000
+++ lib/properties.h	2008-11-21 08:51:37 +0000
@@ -72,6 +72,7 @@
   WIDGET *lastcont;
   WIDGET *curtable;
   guint currow;
+  gboolean prop_set;
 };
 
 struct _PropEventData {

