#FEATURE by cg
authorClaus Gittinger <cg@exept.de>
Fri, 25 Nov 2016 09:19:37 +0100
changeset 5364 bd510ef455fc
parent 5363 4e25de452cea
child 5365 6430b9987a67
child 5366 64470c9be16e
#FEATURE by cg class: ImageEditView comment/format in: #saveMethod changed: #saveMethodAs preserve the method category when saving as
ImageEditView.st
--- a/ImageEditView.st	Fri Nov 25 08:45:13 2016 +0100
+++ b/ImageEditView.st	Fri Nov 25 09:19:37 2016 +0100
@@ -2672,6 +2672,9 @@
 !
 
 saveMethod
+    "save the image as a resource method.
+     Return true if ok; false if not"
+
     (resourceSelector trimBlanks notEmptyOrNil and:[ resourceClass isBehavior ]) ifFalse: [
         ^ self saveMethodAs.
     ].
@@ -2718,7 +2721,7 @@
                 in:resourceClass class
                 selector:resourceSelector.
 
-            "/ flush cache images in the Icon class (kludge)
+            "/ flush cached images in the Icon class (kludge)
             Icon flushCachedIcons.
             self clearModified.
 
@@ -2728,18 +2731,31 @@
     ^ true
 
     "Modified: / 31-01-2011 / 18:28:06 / cg"
+    "Modified (comment): / 25-11-2016 / 08:48:44 / cg"
 !
 
 saveMethodAs
     "ask for method/selector; save the image there.
      Return true if saved, false if not"
 
-    |className classAndSelector|
-
+    |className classAndSelector
+     previousClass previousCategory previousSelector
+     previousMethod newMethod ok|
+
+    previousSelector := self resourceSelector.
     className := self resourceClassName.
     className isEmptyOrNil ifTrue:[
         className := LastSaveClass
     ].
+    (className notEmptyOrNil and:[previousSelector notNil]) ifTrue:[
+        previousClass := Smalltalk classNamed:className.
+        previousClass notNil ifTrue:[
+            previousMethod := previousClass class compiledMethodAt:previousSelector.
+            previousMethod notNil ifTrue:[
+                previousCategory := previousMethod category.
+            ]
+        ]
+    ].
 
     self withWaitCursorDo:[
         classAndSelector := ResourceSelectionBrowser
@@ -2754,7 +2770,18 @@
     resourceClass := classAndSelector methodClass.
     resourceSelector := classAndSelector methodSelector.
 
-    ^ self saveMethod
+    ok := self saveMethod.
+    ok ifTrue:[
+        previousCategory notNil ifTrue:[
+            newMethod := resourceClass class compiledMethodAt:resourceSelector asSymbol.
+            newMethod notNil ifTrue:[
+                newMethod category:previousCategory.
+            ]
+        ]
+    ].
+    ^ ok
+
+    "Modified: / 25-11-2016 / 09:17:22 / cg"
 ! !
 
 !ImageEditView methodsFor:'printing'!