[squeak-dev] The Trunk: Morphic-dtl.366.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Feb 27 16:54:24 UTC 2010
David T. Lewis uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-dtl.366.mcz
==================== Summary ====================
Name: Morphic-dtl.366
Author: dtl
Time: 27 February 2010, 11:49:57.312 am
UUID: a1f4b02f-798f-46da-b8df-4a4167f1df36
Ancestors: Morphic-ar.365
Implement #resetDisplay, #setAsBackground: and #handledFatalDrawingError: to reduce use of #isMorphic.
Use Project>>handleFatalDrawingError: in PasteUpMorph and WorldState.
=============== Diff against Morphic-ar.365 ===============
Item was changed:
----- Method: WorldState>>handleFatalDrawingError: (in category 'update cycle') -----
handleFatalDrawingError: errMsg
"Handle a fatal drawing error."
+ self flag: #toRemove. "Implementation moved to Project, but are there external packages with senders?"
+ Project current handleFatalDrawingError: errMsg
+ !
- Smalltalk isMorphic ifFalse:[^self error: errMsg]. "Can still handle it from MVC"
- Display deferUpdates: false. "Just in case"
- self primitiveError: errMsg.
-
- "Hm... we should jump into a 'safe' worldState here, but how do we find it?!!"!
Item was changed:
----- Method: WorldState>>displayWorldSafely: (in category 'update cycle') -----
displayWorldSafely: aWorld
"Update this world's display and keep track of errors during draw methods."
[aWorld displayWorld] ifError: [:err :rcvr |
"Handle a drawing error"
| errCtx errMorph |
errCtx := thisContext.
[
errCtx := errCtx sender.
"Search the sender chain to find the morph causing the problem"
[errCtx notNil and:[(errCtx receiver isMorph) not]]
whileTrue:[errCtx := errCtx sender].
"If we're at the root of the context chain then we have a fatal drawing problem"
+ errCtx ifNil:[^Project current handleFatalDrawingError: err].
- errCtx ifNil:[^self handleFatalDrawingError: err].
errMorph := errCtx receiver.
"If the morph causing the problem has already the #drawError flag set,
then search for the next morph above in the caller chain."
errMorph hasProperty: #errorOnDraw
] whileTrue.
errMorph setProperty: #errorOnDraw toValue: true.
"Install the old error handler, so we can re-raise the error"
rcvr error: err.
].!
Item was added:
+ ----- Method: MorphicProject>>setAsBackground: (in category 'utilities') -----
+ setAsBackground: aForm
+ "Set aForm as a background image."
+
+ | world newColor |
+ world := self currentWorld.
+ newColor := InfiniteForm with: aForm.
+ aForm rememberCommand:
+ (Command new cmdWording: 'set background to a picture' translated;
+ undoTarget: world selector: #color: argument: world color;
+ redoTarget: world selector: #color: argument: newColor).
+ world color: newColor
+ !
Item was added:
+ ----- Method: MorphicProject>>resetDisplay (in category 'display') -----
+ resetDisplay
+ "Bring the display to a usable state after handling primitiveError."
+
+ World install "init hands and redisplay"!
Item was changed:
----- Method: PasteUpMorph>>handleFatalDrawingError: (in category 'world state') -----
handleFatalDrawingError: errMsg
"Handle a fatal drawing error."
+ self flag: #toRemove. "Implementation moved to Project, but are there external packages with senders?"
+ Project current handleFatalDrawingError: errMsg
+ !
- Smalltalk isMorphic ifFalse:[^self error: errMsg]. "Can still handle it from MVC"
- Display deferUpdates: false. "Just in case"
- self primitiveError: errMsg.
-
- "Hm... we should jump into a 'safe' worldState here, but how do we find it?!!"!
Item was added:
+ ----- Method: MorphicProject>>handleFatalDrawingError: (in category 'utilities') -----
+ handleFatalDrawingError: errMsg
+ "Handle a fatal drawing error."
+
+ Display deferUpdates: false. "Just in case"
+ self primitiveError: errMsg
+
+ "Hm... we should jump into a 'safe' worldState here, but how do we find it?!!"!
More information about the Squeak-dev
mailing list
|