[squeak-dev] The Trunk: Morphic-nice.558.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Aug 3 16:23:22 UTC 2011
Nicolas Cellier uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-nice.558.mcz
==================== Summary ====================
Name: Morphic-nice.558
Author: nice
Time: 3 August 2011, 6:22:02.488 pm
UUID: 236ff443-b885-4221-ac18-c426d6bb5424
Ancestors: Morphic-ul.557
ParagraphEditor is an old st-80 class implemented for a polling UI via the use of sensor inst. var..
TextMorphEditor is a glue that enable using a ParagraphEditor in an event driven morphic world.
There was a hack for feeding a sensor fake with morphic events.
This hack was located in TextMorph.
When 100% morphic Cuis-designed TextEditor was introduced in Squeak-trunk, it was made sensor-dependent instead of sensor-less and purely event driven. This should not be so.
This version moves the hack where in belongs to, in TextMorphEditor>>fakeSensorWithEvent:
It also temporarily duplicates it in TextEditor, in the interim before we remove it's sensor inst. var..
NOTE 1: the hack did also previously apply to #mouseUp: #mouseDown: #mouseUp: events.
It does not anymore because I saw no use to it.
If I'm wrong, correct it by sending (self fakeSensorWithEvent: anEvent) in the TextMorphEditor implementation of these messages.
NOTE2: the change does not change the behaviour of MVC projects. Keyboard typing still "works" (cough...)
=============== Diff against Morphic-ul.557 ===============
Item was changed:
----- Method: PluggableTextMorph>>keyStroke: (in category 'event handling') -----
keyStroke: evt
+ "A keystroke was hit while the receiver had keyboard focus. Pass the keystroke on to my textMorph, and and also, if I have an event handler, pass it on to that handler"
- "A keystroke was hit while the receiver had keyboard focus. Pass the keywtroke on to my textMorph, and and also, if I have an event handler, pass it on to that handler"
textMorph keyStroke: evt.
self eventHandler ifNotNil:
[self eventHandler keyStroke: evt fromMorph: self].
!
Item was added:
+ ----- Method: TextEditor>>keyStroke: (in category 'events') -----
+ keyStroke: anEvent
+ "Temporary hack to handle keyboard events thru sensor"
+
+ self sensor: (KeyboardBuffer new startingEvent: anEvent).
+ self readKeyboard!
Item was changed:
----- Method: TextMorph>>handleInteraction:fromEvent: (in category 'editing') -----
handleInteraction: interactionBlock fromEvent: evt
"Perform the changes in interactionBlock, noting any change in selection
and possibly a change in the size of the paragraph (ar 9/22/2001 - added for TextPrintIts)"
- "Also couple ParagraphEditor to Morphic keyboard events"
| oldEditor oldParagraph oldText |
- self editor sensor: (KeyboardBuffer new startingEvent: evt).
oldEditor := editor.
oldParagraph := paragraph.
oldText := oldParagraph text copy.
self selectionChanged. "Note old selection"
interactionBlock value.
(oldParagraph == paragraph) ifTrue:[
"this will not work if the paragraph changed"
editor := oldEditor. "since it may have been changed while in block"
].
self selectionChanged. "Note new selection"
(oldText = paragraph text and: [ oldText runs = paragraph text runs ])
ifFalse:[ self updateFromParagraph ].
self setCompositionWindow.!
Item was changed:
----- Method: TextMorph>>keyStroke: (in category 'event handling') -----
keyStroke: evt
"Handle a keystroke event."
self resetBlinkCursor. "don't blink during type-in"
ToolSet
codeCompletionAround: [
evt keyValue = 13 ifTrue: [ "CR - check for special action"
self crAction ifNotNil: [ :action |
"Note: Code below assumes that this was some
input field reacting on CR. Break the keyboard
focus so that the receiver can be safely deleted."
evt hand newKeyboardFocus: nil.
^action valueWithEnoughArguments: { evt } ] ].
+ self handleInteraction: [ editor keyStroke: evt ] fromEvent: evt.
- self handleInteraction: [ editor readKeyboard ] fromEvent: evt.
"self updateFromParagraph."
super keyStroke: evt "sends to keyStroke event handler, if any" ]
textMorph: self
keyStroke: evt!
Item was added:
+ ----- Method: TextMorphEditor>>fakeSensorWithEvent: (in category 'typing support') -----
+ fakeSensorWithEvent: anEvent
+ "Pass the event to a polling-friendly-sensor-fake so that old st-80 code shall still work"
+ self sensor: (KeyboardBuffer new startingEvent: anEvent).!
Item was added:
+ ----- Method: TextMorphEditor>>keyStroke: (in category 'events') -----
+ keyStroke: anEvent
+ self fakeSensorWithEvent: anEvent.
+ self readKeyboard.
+ self storeSelectionInParagraph!
More information about the Squeak-dev
mailing list
|