Index: app/properties.c
===================================================================
--- app/properties.c	(wersja 3922)
+++ app/properties.c	(kopia robocza)
@@ -127,36 +127,42 @@
                    gpointer   data)
 {
   ObjectChange *obj_change = NULL;
+  GList* objlist;
+  DiaObject* obj;
+        
 
   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);
+        
+        for (objlist = current_dia->data->selected; objlist != NULL; objlist = g_list_next(objlist)){
+            obj = (DiaObject *) objlist->data;
+            if (obj->type == current_obj->type){
+                object_add_updates(current_obj, current_dia);
+                obj_change = obj->ops->apply_properties_from_dialog(obj, object_part);
+                object_add_updates(obj, current_dia);
+                diagram_update_connections_object(current_dia, obj, TRUE);
+                if (obj_change != NULL) {
+        	        undo_object_change(current_dia, obj, obj_change);
+                }
+                diagram_object_modified(current_dia, obj);
+                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_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);
-      }
 
       diagram_flush(current_dia);
-    }
+      }
   }
 
   if (response_id != GTK_RESPONSE_APPLY) {
Index: objects/UML/class_dialog.c
===================================================================
--- objects/UML/class_dialog.c	(wersja 3922)
+++ objects/UML/class_dialog.c	(kopia robocza)
@@ -2797,7 +2797,10 @@
   prop_dialog = umlclass->properties_dialog;
 
   old_state = umlclass_get_state(umlclass);
-  
+
+  if (prop_dialog == NULL)
+        return new_umlclass_change(umlclass, old_state, NULL, NULL, NULL);
+
   /* Allocate enought connection points for attributes and operations. */
   /* (two per op/attr) */
   if ( (prop_dialog->attr_vis->active) && (!prop_dialog->attr_supp->active))
Index: objects/UML/association.c
===================================================================
--- objects/UML/association.c	(wersja 3922)
+++ objects/UML/association.c	(kopia robocza)
@@ -996,6 +996,11 @@
   prop_dialog = assoc->properties_dialog;
 
   old_state = (ObjectState *)association_get_state(assoc);
+
+  if (prop_dialog == NULL)
+        return new_object_state_change(&assoc->orth.object, old_state, 
+				 (GetStateFunc)association_get_state,
+				 (SetStateFunc)association_set_state);
   
   /* Read from dialog and put in object: */
   g_free(assoc->name);
