[squeak-dev] The Trunk: Morphic-cmm.986.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri May 29 21:08:40 UTC 2015
Chris Muller uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-cmm.986.mcz
==================== Summary ====================
Name: Morphic-cmm.986
Author: cmm
Time: 29 May 2015, 4:07:48.693 pm
UUID: a448eb5a-ab1f-4acc-9c76-ebdaac144d58
Ancestors: Morphic-cmm.984, Morphic-mt.985
- Merged cmm.984.
- Auto Enclose fixes.
=============== Diff against Morphic-mt.985 ===============
Item was changed:
----- Method: Morph>>handlesMouseMove: (in category 'event handling') -----
handlesMouseMove: anEvent
"Do I want to receive mouseMove: when the hand passes over the receiver? Rules say that by default a morph gets #mouseMove iff
* the hand is not dragging anything,
+ and some button is down,
+ and the receiver is the current mouse focus."
+ self eventHandler ifNotNil: [^ self eventHandler handlesMouseMove: anEvent].
anEvent hand hasSubmorphs ifTrue: [ ^ false ].
(anEvent anyButtonPressed and: [ anEvent hand mouseFocus == self ]) ifFalse: [ ^ false ].
^ true!
Item was added:
+ ----- Method: TextEditor>>autoEncloseFor: (in category 'typing support') -----
+ autoEncloseFor: typedChar
+ "Answer whether typeChar was handled by auto-enclosure. Caller should call normalCharacter if not."
+ | openers closers |
+ openers := '([{'.
+ closers := ')]}'.
+ (closers includes: typedChar)
+ ifTrue:
+ [ | pos |
+ self blinkPrevParen: typedChar.
+ ((pos := self indexOfNextNonwhitespaceCharacter) notNil and: [ (paragraph string at: pos) = typedChar ])
+ ifTrue:
+ [ (paragraph string at: pos) = typedChar ifTrue:
+ [ self
+ moveCursor: [ : position | position + pos - pointBlock stringIndex + 1 ]
+ forward: true
+ select: false ].
+ ^ true ]
+ ifFalse: [ ^ false ] ].
+ (self class autoEnclose and: [ openers includes: typedChar ]) ifTrue:
+ [ self
+ addString: (closers at: (openers indexOf: typedChar)) asString ;
+ insertTypeAhead ;
+
+ moveCursor: [ : position | position - 1 ]
+ forward: false
+ select: false.
+ ^ false ].
+ ^ false!
Item was changed:
----- Method: TextEditor>>dispatchOnKeyboardEvent: (in category 'typing support') -----
dispatchOnKeyboardEvent: aKeyboardEvent
"Carry out the action associated with this character, if any. Type-ahead is passed so some routines can flush or use it."
+ | honorCommandKeys typedChar |
- | honorCommandKeys openers closers result typedChar |
((typedChar := aKeyboardEvent keyCharacter) == Character cr and: [ morph acceptOnCR ]) ifTrue:
[ self closeTypeIn.
^ true ].
self clearParens.
aKeyboardEvent keyValue = 13 ifTrue:
[ aKeyboardEvent controlKeyPressed ifTrue: [ ^ self normalCharacter: aKeyboardEvent ].
aKeyboardEvent shiftPressed ifTrue: [ ^ self lf: aKeyboardEvent ].
aKeyboardEvent commandKeyPressed ifTrue: [ ^ self crlf: aKeyboardEvent ].
^ self crWithIndent: aKeyboardEvent ].
((honorCommandKeys := Preferences cmdKeysInText) and: [ typedChar = Character enter ]) ifTrue: [ ^ self dispatchOnEnterWith: aKeyboardEvent ].
"Special keys overwrite crtl+key combinations - at least on Windows. To resolve this
conflict, assume that keys other than cursor keys aren't used together with Crtl."
((self class specialShiftCmdKeys includes: aKeyboardEvent keyValue) and: [ aKeyboardEvent keyValue < 27 ]) ifTrue: [ ^ aKeyboardEvent controlKeyPressed
ifTrue:
[ self
perform: (self class shiftCmdActions at: aKeyboardEvent keyValue + 1)
with: aKeyboardEvent ]
ifFalse:
[ self
perform: (self class cmdActions at: aKeyboardEvent keyValue + 1)
with: aKeyboardEvent ] ].
"backspace, and escape keys (ascii 8 and 27) are command keys"
((honorCommandKeys and: [ aKeyboardEvent commandKeyPressed ]) or: [ self class specialShiftCmdKeys includes: aKeyboardEvent keyValue ]) ifTrue: [ ^ aKeyboardEvent shiftPressed
ifTrue:
[ self
perform: (self class shiftCmdActions at: aKeyboardEvent keyValue + 1)
with: aKeyboardEvent ]
ifFalse:
[ self
perform: (self class cmdActions at: aKeyboardEvent keyValue + 1)
with: aKeyboardEvent ] ].
"the control key can be used to invoke shift-cmd shortcuts"
(honorCommandKeys and: [ aKeyboardEvent controlKeyPressed ]) ifTrue: [ ^ self
perform: (self class shiftCmdActions at: aKeyboardEvent keyValue + 1)
with: aKeyboardEvent ].
+ self class autoEnclose
+ ifTrue: [ (self autoEncloseFor: typedChar) ifFalse: [ self normalCharacter: aKeyboardEvent ] ]
+ ifFalse: [ self normalCharacter: aKeyboardEvent ].
+ ^ false!
- openers := '([{'.
- closers := ')]}'.
- (closers includes: typedChar)
- ifTrue:
- [ self blinkPrevParen: typedChar.
- self nextNonwhitespaceCharacter = typedChar
- ifTrue:
- [ self moveCursor: [ : position | position + 1 ] forward: true select: false.
- ^ false ]
- ifFalse: [ result := self normalCharacter: aKeyboardEvent ] ]
- ifFalse: [ result := self normalCharacter: aKeyboardEvent ].
- (self class autoEnclose and: [ openers includes: typedChar ]) ifTrue:
- [ self
- addString: (closers at: (openers indexOf: typedChar)) asString ;
- insertTypeAhead ;
-
- moveCursor:
- [ : position | position - 1 ]
- forward: false
- select: false ].
- ^ result!
Item was added:
+ ----- Method: TextEditor>>indexOfNextNonwhitespaceCharacter (in category 'private') -----
+ indexOfNextNonwhitespaceCharacter
+ pointBlock stringIndex
+ to: paragraph string size
+ do:
+ [ : n | | char | (char := paragraph string at: n) isSeparator ifFalse: [ ^ n ] ].
+ ^ nil!
Item was removed:
- ----- Method: TextEditor>>nextNonwhitespaceCharacter (in category 'private') -----
- nextNonwhitespaceCharacter
- pointBlock stringIndex
- to: paragraph string size
- do:
- [ : n | | char | (char := paragraph string at: n) isSeparator ifFalse: [ ^ char ] ].
- ^ nil!
More information about the Squeak-dev
mailing list
|