From 12dcf3d4b06fd83b8c62c01a93dc26f94dc922ee Mon Sep 17 00:00:00 2001 From: drewc Date: Wed, 29 Jun 2005 08:08:53 -0700 Subject: [PATCH] fixed the slot-presentations so that changes to an edit in progress are properly synced when adding fkey, and has-many items to a class. darcs-hash:20050629150853-39164-160275e40f164c76b2df1eee0d1c11c9737e36b0.gz --- src/mewa/mewa.lisp | 9 +++++---- src/mewa/slot-presentations.lisp | 13 +++++++------ src/packages.lisp | 4 +--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/mewa/mewa.lisp b/src/mewa/mewa.lisp index 01b3577..16a08e5 100644 --- a/src/mewa/mewa.lisp +++ b/src/mewa/mewa.lisp @@ -277,8 +277,6 @@ attributes is an alist keyed on the attribute nreeame." (defmacro call-presentation (object &rest args) `(present-object ,object :presentation (make-presentation ,object ,@args))) - - (defaction cancel-save-instance ((self mewa)) (cond ((slot-value (instance self) 'clsql-sys::view-database) @@ -295,6 +293,10 @@ attributes is an alist keyed on the attribute nreeame." (defaction ok ((self mewa) &optional arg) "Returns the component if it has not been modified. if it has been, prompt user to save or cancel" (declare (ignore arg)) + (ensure-instance-sync self) + (answer self)) + +(defaction ensure-instance-sync ((self mewa)) (when (modifiedp self) (let ((message (format nil "Record has been modified, Do you wish to save the changes?
~a" (print (modifications self))))) (case (call 'option-dialog @@ -304,8 +306,7 @@ attributes is an alist keyed on the attribute nreeame." (:cancel (cancel-save-instance self)) (:save - (save-instance self))))) - (answer self)) + (save-instance self)))))) diff --git a/src/mewa/slot-presentations.lisp b/src/mewa/slot-presentations.lisp index edc42fd..e0ddb79 100644 --- a/src/mewa/slot-presentations.lisp +++ b/src/mewa/slot-presentations.lisp @@ -119,7 +119,9 @@ (:default-initargs)) (defaction view-instance ((self component) instance &rest initargs) - (call-component (parent self) (apply #'mewa:make-presentation instance initargs))) + (call-component (parent self) (apply #'mewa:make-presentation instance initargs)) + ;; the viewed instance could have been changed/deleted, so we sync this instance + (meta-model:sync-instance (instance (parent self)))) (defmethod present-slot :around ((slot foreign-key-slot-presentation) instance) @@ -128,8 +130,8 @@ (cond ((editablep slot) (render) - (