[squeak-dev] The Inbox: Morphic-ct.1621.mcz

Chris Muller asqueaker at gmail.com
Wed Jan 22 22:43:22 UTC 2020


Does this overload Cmd+s?

On Wed, Jan 22, 2020 at 4:25 AM Thiede, Christoph <
Christoph.Thiede at student.hpi.uni-potsdam.de> wrote:

> The "Character lf" hack works on Windows, but I'm not sure if this
> behavior is officially defined by the VM. I don't know how one could detect
> Ctrl + Enter else ...
>
> If you see any problems with solving this issue directly in
> TextMorph/Editor, we could also handle the event in FillInTheBlankMorph.
>
> Best,
> Christoph
>
> ------------------------------
> *Von:* Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im
> Auftrag von commits at source.squeak.org <commits at source.squeak.org>
> *Gesendet:* Mittwoch, 22. Januar 2020 11:21 Uhr
> *An:* squeak-dev at lists.squeakfoundation.org
> *Betreff:* [squeak-dev] The Inbox: Morphic-ct.1621.mcz
>
> Christoph Thiede uploaded a new version of Morphic to project The Inbox:
> http://source.squeak.org/inbox/Morphic-ct.1621.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-ct.1621
> Author: ct
> Time: 22 January 2020, 11:21:19.533972 am
> UUID: facc9fb6-e535-c04f-967c-5f2ae09733c6
> Ancestors: Morphic-cmm.1618
>
> Proposal: Use Ctrl + Enter to accept in every textmorph, even if
> acceptOnCR is disabled. Useful, for example, to answer a multiline request.
>
> =============== Diff against Morphic-cmm.1618 ===============
>
> 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 |
>          typedChar := aKeyboardEvent keyCharacter.
>
>          "Handle one-line input fields."
> +        (typedChar == Character lf or: [typedChar == Character cr and:
> [morph acceptOnCR]])
> -        (typedChar == Character cr and: [morph acceptOnCR])
>                  ifTrue: [^ true].
>
>          "Clear highlight for last opened parenthesis."
>          self clearParens.
>
>          "Handle line breaks and auto indent."
>          typedChar == Character cr ifTrue: [
>                  aKeyboardEvent controlKeyPressed
>                          ifTrue: [^ self normalCharacter: aKeyboardEvent].
>                  aKeyboardEvent shiftPressed
>                          ifTrue: [^ self lf: aKeyboardEvent].
>                  aKeyboardEvent commandKeyPressed
>                          ifTrue: [^ self crlf: aKeyboardEvent].
>                  ^ self crWithIndent: aKeyboardEvent].
>
>          "Handle indent/outdent with selected text block."
>          typedChar == Character tab ifTrue: [
>                  aKeyboardEvent shiftPressed
>                          ifTrue: [self outdent: aKeyboardEvent. ^ true]
>                          ifFalse: [self hasMultipleLinesSelected
>                                  ifTrue: [self indent: aKeyboardEvent. ^
> true]]].
>
>          honorCommandKeys := Preferences cmdKeysInText.
>
>          (honorCommandKeys 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].
>
>          "Enclose selection with brackets etc."
>          ((self class encloseSelection and: [self hasSelection]) and:
> [self enclose: aKeyboardEvent])
>                  ifTrue: [^ true].
>
>          "Automatically enclose paired characters such as brackets."
>          (self class autoEnclose and: [self autoEncloseFor: typedChar])
>                  ifTrue: [^ true].
>
>          "Even if no enclosing feature was used, highlight the matching
> bracket when closing one."
>          (')]}' includes: typedChar)
>                  ifTrue: [self blinkPrevParen: typedChar].
>
>          self normalCharacter: aKeyboardEvent.
>          ^ false!
>
> Item was changed:
>   ----- Method: TextMorphForEditView>>keyStroke: (in category 'event
> handling') -----
>   keyStroke: evt
>          | view |
>
>          editView deleteBalloon.
>          self editor model: editView model.  "For evaluateSelection"
>          view := editView.  "Copy into temp for case of a self-mutating
> doit"
> +        (evt keyCharacter = Character lf or: [acceptOnCR and: [evt
> keyCharacter = Character cr]])
> -        (acceptOnCR and: [evt keyCharacter = Character cr])
>                  ifTrue: [^ self editor accept].
>
>          view hasUserEdited: false.
>          super keyStroke: evt.
>          view scrollSelectionIntoView.
>
>          view hasUserEdited
>                  ifTrue: [       view textEdited: self contents].!
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200122/8f8b104a/attachment.html>


More information about the Squeak-dev mailing list