[squeak-dev] The Trunk: Morphic-mt.1931.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Mar 11 09:03:26 UTC 2022


Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1931.mcz

==================== Summary ====================

Name: Morphic-mt.1931
Author: mt
Time: 11 March 2022, 10:03:20.148495 am
UUID: b4055ef5-466d-604e-be51-2affcbba4e6a
Ancestors: Morphic-mt.1930

Improves compromise for keyboard shortcuts in TextEditor and SmalltalkTextEditor regarding [CMD]+[0..9]:
- [1..5] No TextFontChange anymore in TextEditor bc. incompatible with scale factor and TrueType fonts
- [1..4] still argument name insert in SmalltalkEditor
- [5] opens emphasis menu (was [6])
- [6..9] add typical emphases: #bold #italic #underlined #struckOut
- No #narrow anymore (was [8])
- [0] still removes those emphases
- No support for US-only [=/-] anymore; was used for text kern +/- 1

Note that [CTRL]+[0..9] is not affected by this change.

=============== Diff against Morphic-mt.1930 ===============

Item was changed:
  ----- Method: SmalltalkEditor>>changeEmphasis: (in category 'editing keys') -----
  changeEmphasis: characterStream
+ 	"Change emphasis without styling if necessary. NOTE THAT [cmd]+[1..4] will insert the name of the method argument number n."
+ 	
- 	"Change emphasis without styling if necessary"
  	self styler ifNil: [^super changeEmphasis: characterStream].
  	^ self styler evaluateWithoutStyling: [super changeEmphasis: characterStream].!

Item was changed:
  ----- Method: TextEditor class>>initializeCmdKeyShortcuts (in category 'keyboard shortcut tables') -----
  initializeCmdKeyShortcuts
  	"Initialize the (unshifted) command-key (or alt-key) shortcut table."
  
  	"NOTE: if you don't know what your keyboard generates, use Sensor kbdTest"
  
  	"TextEditor initialize"
  
  	| cmdMap cmds |
  	cmdMap := Array new: 256 withAll: #noop:.		"use temp in case of a crash"
  	cmdMap at: 1 + 1 put: #cursorHome:.				"home key"
  	cmdMap at: 4 + 1 put: #cursorEnd:.				"end key"
  	cmdMap at: 8 + 1 put: #backspace:.				"ctrl-H or delete key"
  	cmdMap at: 11 + 1 put: #cursorPageUp:.			"page up key"
  	cmdMap at: 12 + 1 put: #cursorPageDown:.		"page down key"
  	cmdMap at: 13 + 1 put: #crWithIndent:.			"cmd-Return"
  	cmdMap at: 27 + 1 put: #offerMenuFromEsc:.		"escape key"
  	cmdMap at: 28 + 1 put: #cursorLeft:.				"left arrow key"
  	cmdMap at: 29 + 1 put: #cursorRight:.				"right arrow key"
  	cmdMap at: 30 + 1 put: #cursorUp:.				"up arrow key"
  	cmdMap at: 31 + 1 put: #cursorDown:.				"down arrow key"
  	cmdMap at: 32 + 1 put: #selectWord:.				"space bar key"
  	cmdMap at: 127 + 1 put: #forwardDelete:.		"del key"
  			
+ 	'0123456789' 
- 	'0123456789-=' 
  		do: [:char | cmdMap at: char asciiValue + 1 put: #changeEmphasis:].
  	
  	cmds := #($a #selectAll: $c #copySelection: $e #exchange: $f #find: $g #findAgain: $j #doAgain: $k #offerFontMenu: $u #align: $v #paste: $w #backWord: $x #cut: $y #swapChars: $z #undo:).
  	1 to: cmds size
  		by: 2
  		do: [:i | cmdMap at: (cmds at: i) asciiValue + 1 put: (cmds at: i + 1)].
  		
  	cmdActions := cmdMap!

Item was changed:
  ----- Method: TextEditor>>changeEmphasis: (in category 'editing keys') -----
  changeEmphasis: aKeyboardEvent 
  	"Change the emphasis of the current selection or prepare to accept characters with the change in emphasis. Emphasis change amounts to a font change.  Keeps typeahead."
  
+ 	"[cmd]+[0..9]"
- 	"control 0..9 -> 0..9"
  
  	| keyCode attribute oldAttributes index thisSel colors extras |
+ 	keyCode := ('0123456789' indexOf: aKeyboardEvent keyCharacter ifAbsent: [1]) - 1.
- 	keyCode := ('0123456789-=' indexOf: aKeyboardEvent keyCharacter ifAbsent: [1]) - 1.
  	oldAttributes := paragraph text attributesAt: self pointIndex.
  	thisSel := self selection.
  
+ 	"mt: Index-based font changes are not compatible with variable point sizes in text styles. Make room for other shortcuts.
+ 	(keyCode between: 1 and: 5) ifTrue: [attribute := TextFontChange fontNumber: keyCode]."
- 	"Decipher keyCodes for Command 0-9..."
- 	(keyCode between: 1 and: 5) 
- 		ifTrue: [attribute := TextFontChange fontNumber: keyCode].
  
+ 	keyCode = 5 
- 	keyCode = 6 
  		ifTrue: [
  			colors := #(#black #magenta #red #yellow #green #blue #cyan #white).
  			extras := self emphasisExtras.
+ 			index := Project uiManager chooseFrom: colors , #('choose color...' ), extras.
- 			index := UIManager default chooseFrom:colors , #('choose color...' ), extras
- 						lines: (Array with: colors size + 1).
  			index = 0 ifTrue: [^true].
  			index <= colors size 
  				ifTrue: [attribute := TextColor color: (Color perform: (colors at: index))]
  				ifFalse: [
  					index := index - colors size - 1.	"Re-number!!!!!!"
  					index = 0 
  						ifTrue: [attribute := self chooseColor]
  						ifFalse:[^self handleEmphasisExtra: index with: aKeyboardEvent]	"handle an extra"]].
+ 	(keyCode between: 6 and: 9) 
- 	(keyCode between: 7 and: 11) 
  		ifTrue: [
  			aKeyboardEvent shiftPressed 
+ 				ifTrue: [ "Cannot be reached bc. method entry is #keyCharacter based and thus dependent on keyboard layout."
+ 					keyCode = 6 ifTrue: [attribute := TextKern kern: -1].
+ 					keyCode = 7 ifTrue: [attribute := TextKern kern: 1]]
- 				ifTrue: [
- 					keyCode = 10 ifTrue: [attribute := TextKern kern: -1].
- 					keyCode = 11 ifTrue: [attribute := TextKern kern: 1]]
  				ifFalse: [
+ 					attribute := TextEmphasis
+ 						perform: (#(#bold #italic #underlined #struckOut) at: keyCode - 5).
+ 					oldAttributes
- 					attribute := TextEmphasis 
- 								perform: (#(#bold #italic #narrow #underlined #struckOut) at: keyCode - 6).
- 					oldAttributes 
  						do: [:att | (att dominates: attribute) ifTrue: [attribute turnOff]]]].
  	keyCode = 0 ifTrue: [attribute := TextEmphasis normal].
  	attribute ifNotNil: [
  		thisSel size = 0
  			ifTrue: [
  				"only change emphasisHere while typing"
  				self insertTypeAhead.
  				emphasisHere := Text addAttribute: attribute toArray: oldAttributes ]
  			ifFalse: [
  				self replaceSelectionWith: (thisSel asText addAttribute: attribute) ]].
  	^true!



More information about the Squeak-dev mailing list