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

Mateusz Grotek unoduetre at poczta.onet.pl
Mon Aug 17 18:56:07 UTC 2015


> I am trying to understand what you mean. Since I'm talking about 2
> concurrent Morphs, I implemented your remarks like this:
> 
> 
> MainConsole demoButtonClicked
> 	morph := ModelConsole new.
> 	self modelConsole: morph. "handshake"
> 	collapsedMorph := self myPackageCollapse.
> 	morph mainConsole: self. "handshake"
> 	morph collapsedConsole: collapsedMorph. "handshake"
> 
> ModelConsole xButtonClicked
> 	| collapsedMorph expandedMorph |
> 	"close all running Modelprocessors"
> 	"	to be defined!	"
> 	"close own Modelprocessor"
> 	self mainConsole isNil
> 		ifFalse: [
> 			expandedMorph := self mainConsole.
> 			collapsedMorph := self collapsedConsole.
> 			"uncollapse MainConsole"
> 			collapsedMorph collapseOrExpand.
> 			"release handshakes"
> 			expandedMorph modelConsole: nil.
> 			self mainConsole: nil].
> 	"Close ModelConsole"
> 	^self currentWorld removeMorph: self
> 
> This really solves the problem, *except* for the following situation:
> Step 1: open the MainConsole
> Step 2: MainConsole > demoButtonClicked: the ModelConsole opens, the
> MainConsole collapses
> *Step 3*: click on the - sign of the collapsed MainConsole to  
> uncollapse it
> *Step 4*: MainConsole > minimizeButtonClicked: to collapse it again
> Step 5: ModelConsole > xButtonClicked: the ModelConsole closes, the
> MainConsole opens, *but* an artefact of the collapsed MainConsole  
> stays on
> the screen.
> .....
> Step 6: click on the - sign of the artefact and it disappears .....
> Step 7: MainConsole > exitButtonClicked: the MainConsole closes.
> ..... or:
> Step 6: MainConsole > exitButtonClicked: the MainConsole closes but  
> the
> artefact stays *as active *MainConsole
> Step 7: click on the - sign of the collapsed MainConsole to  
> uncollapse it
> Step 8: MainConsole > exitButtonClicked: the MainConsole closes.
> 
> Were:
> MainConsole > exitButtonClicked
> 	^self currentWorld removeMorph: self
> 
> and:
> MainConsole > minimizeButtonClicked
> 	^self collapse
> 
> So, much better but not perfect ......
> 
> 

Hi,

It's hard to tell what is wrong without interacting with your code. If  
you can put your code to SqueakSource3 then I or someone else might be  
able to help you. The only suggestion that comes to my mind by looking  
at the example above is that you can not only remove your console  
morph, but also the CollapsedMorph. Besides that, imho it's better to  
use the self delete, than to do things like self currentWorld  
removeMorph: self. In this way you can just do: morph delete.  
collapsedMorph delete. Nevertheless it's just a wild guess and I cannot  
tell anything without interacting with your app.

Best wishes,
Mateusz



More information about the Beginners mailing list