[Newbies] How to reopen a collapsed Morph from another Morph?

Mateusz Grotek unoduetre at poczta.onet.pl
Thu Aug 13 21:37:51 UTC 2015


Hi and welcome to the Squeak world!

If you check the implementation of Morph>>collapse method, it is the  
following (in Squeak 4.5):
collapse
   CollapsedMorph new beReplacementFor: self

The problem is the method returning self instead of returning the  
CollapsedMorph.
You can either modify the method (discouraged), add your own method to  
the Morph class (remember to use the star prefix in the protocol name,  
and to use the proper name to assign it to a proper package), or just  
use the content of the method directly in your code.

My preferred way to do it would be adding a method to the Morph class.  
Let me assume the class category of my package is MyPackage. Just add  
the protocol *MyPackage with the method:
myPackageCollapse
   ^ collapsedMorph new beReplacementFor: self.

Now you can do:
|morph collapsedMorph|
morph := Morph new.
"collapse it"
collapsedMorph := morph collapse.
"uncollapse it"
collapsedMorph collapseOrExpand.

Best wishes,
Mateusz


More information about the Beginners mailing list