Tobias Pape uploaded a new version of XML-Parser to project The Trunk:
http://source.squeak.org/trunk/XML-Parser-topa.39.mcz
==================== Summary ====================
Name: XML-Parser-topa.39
Author: topa
Time: 9 June 2016, 3:16:16.924836 pm
UUID: 33e09f13-48b9-47a4-809f-f309fb228dd2
Ancestors: XML-Parser-topa.38
fix typo
=============== Diff against XML-Parser-topa.38 ===============
Item was changed:
----- Method: XMLDOMParser class>>serviceExplore (in category 'file reader services') -----
serviceExplore
^ SimpleServiceEntry
provider: [:fullName |
(FileStream readOnlyFileNamed: fullName do:
[:file | self parseDocumentFrom: file useNamespaces: true]) explore]
label: 'explore XML'
selector: #value:
+ description: 'read and parse the file and explore its XML structure'
- description: 'read and partse the file and explore its XML structure'
buttonLabel: 'explore'!
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1171.mcz
==================== Summary ====================
Name: Morphic-mt.1171
Author: mt
Time: 9 June 2016, 3:10:58.946908 pm
UUID: 6747743c-ceec-3940-897f-9dc223e4ce04
Ancestors: Morphic-bf.1170
Fixes a regression in the keyboard shortcuts for the world main docking bar.
On Mac OS platforms, recent VMs do not generate correct key-down events but still correct key-stroke events. On Windows platforms, VMs do only generate key-down events for some CTRL modifier combinations, especially numbers, but then no key-strokes. Linux is fine, I guess.
=============== Diff against Morphic-bf.1170 ===============
Item was changed:
----- Method: DockingBarMorph>>filterEvent:for: (in category 'events-processing') -----
filterEvent: aKeyboardEvent for: anObject
"Provide keyboard shortcuts."
| index itemToSelect |
+
-
- aKeyboardEvent isKeyDown "No #isKeystroke to improve compatibility for all platforms."
- ifFalse: [^ aKeyboardEvent].
-
aKeyboardEvent controlKeyPressed
ifFalse: [^ aKeyboardEvent].
+
+ (aKeyboardEvent isKeyDown or: [aKeyboardEvent isKeystroke]) "We also need #keyDown for Windows platforms because CTRL+X does not trigger key strokes there..."
+ ifFalse: [^ aKeyboardEvent].
+
-
"Search field."
aKeyboardEvent keyCharacter = $0
ifTrue: [
self searchBarMorph ifNotNil: [ :morph |
morph model activate: aKeyboardEvent in: morph ].
^ aKeyboardEvent ignore "hit!!"].
"Select menu items."
(aKeyboardEvent keyValue
between: $1 asciiValue
and: $9 asciiValue)
ifFalse: [^ aKeyboardEvent].
index := aKeyboardEvent keyValue - $1 asciiValue + 1.
itemToSelect := (self submorphs select: [ :each |
each isKindOf: DockingBarItemMorph ])
at: index
ifAbsent: [^ aKeyboardEvent].
self activate: aKeyboardEvent.
self
selectItem: itemToSelect
event: aKeyboardEvent.
^ aKeyboardEvent ignore "hit!!"!
tim Rowledge uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-tpr.343.mcz
==================== Summary ====================
Name: Graphics-tpr.343
Author: tpr
Time: 8 June 2016, 3:42:29.069288 pm
UUID: 8d4d3260-cfd3-420d-b83e-486e998c5512
Ancestors: Graphics-tpr.342
Add the most trivial beginnings of a unix/x11 host window proxy - just enough to run tests to demonstrate that the plugin needs work
=============== Diff against Graphics-tpr.342 ===============
Item was added:
+ HostWindowProxy subclass: #UnixX11WindowProxy
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Graphics-External-Ffenestri'!
Item was added:
+ ----- Method: UnixX11WindowProxy class>>isActiveHostWindowProxyClass (in category 'as yet unclassified') -----
+ isActiveHostWindowProxyClass
+ "Am I active?"
+ ^Smalltalk platformName = 'unix' !
Item was added:
+ ----- Method: UnixX11WindowProxy>>defaultWindowType (in category 'window decorations') -----
+ defaultWindowType!
tim Rowledge uploaded a new version of Graphics to project The Trunk:
http://source.squeak.org/trunk/Graphics-tpr.342.mcz
==================== Summary ====================
Name: Graphics-tpr.342
Author: tpr
Time: 8 June 2016, 10:22:17.667271 am
UUID: ef647385-8d46-494e-93b4-e3df81b23313
Ancestors: Graphics-topa.341
When scaling a Form via WarpBlt class>>#rotate:degrees:center:scaleBy:smoothing: the scaling factor seems to have been left out in the calculation of the returned offset. This meant that Scratch sprites did Bad Things at times.
The only non-Scratch client I could find for this method is SketchMorph, but that ignores the returned offset anyway; thus it seems reasonable to makes things work ok for Scratch.
=============== Diff against Graphics-topa.341 ===============
Item was changed:
----- Method: WarpBlt class>>rotate:degrees:center:scaleBy:smoothing: (in category 'form rotation') -----
+ rotate: srcForm degrees: angleInDegrees center: rotationCenter scaleBy: scalePoint smoothing: cellSize
+ "Rotate the given Form angleInDegrees about the given rotationCenter and scale its width and height by x and y of the given scale
+ point. Smooth using the given cell size, an integer between 1 and 3, where 1 means no smoothing.
+ Return a pair where the first element is the rotated Form and the second is the position offset required to align the center of the rotated Form with that of the original.
+ Note that the dimensions of the resulting Form generally differ from those of the original."
+ | srcRect srcCenter radians dstOrigin dstCorner p dstRect inverseScale quad dstForm warpSrc newRotationPoint oldOffset |
- rotate: srcForm degrees: angleInDegrees center: aPoint scaleBy: scalePoint smoothing: cellSize
- "Rotate the given Form the given number of degrees about the given center and scale its width and height by x and y of the given scale point. Smooth using the given cell size, an integer between 1 and 3, where 1 means no smoothing. Return a pair where the first element is the rotated Form and the second is the position offset required to align the center of the rotated Form with that of the original. Note that the dimensions of the resulting Form generally differ from those of the original."
-
- | srcRect center radians dstOrigin dstCorner p dstRect inverseScale quad dstForm newCenter warpSrc |
srcRect := srcForm boundingBox.
+ srcCenter := srcRect center.
- center := srcRect center.
radians := angleInDegrees degreesToRadians.
+ dstOrigin := dstCorner := srcCenter.
+ srcRect corners
+ do: [:corner |
+ "find the limits of a rectangle that just encloses the rotated
+ original; in general, this rectangle will be larger than the
+ original (e.g., consider a square rotated by 45 degrees)"
+ p := (corner - srcCenter scaleBy: scalePoint) + srcCenter.
+ p := (p rotateBy: radians about: srcCenter) rounded.
+ dstOrigin := dstOrigin min: p.
+ dstCorner := dstCorner max: p].
- dstOrigin := dstCorner := center.
- srcRect corners do: [:corner |
- "find the limits of a rectangle that just encloses the rotated
- original; in general, this rectangle will be larger than the
- original (e.g., consider a square rotated by 45 degrees)"
- p := ((corner - center) scaleBy: scalePoint) + center.
- p := (p rotateBy: radians about: center) rounded.
- dstOrigin := dstOrigin min: p.
- dstCorner := dstCorner max: p].
-
"rotate the enclosing rectangle back to get the source quadrilateral"
dstRect := dstOrigin corner: dstCorner.
+ inverseScale := 1.0 / scalePoint x @ (1.0 / scalePoint y).
+ quad := dstRect innerCorners
+ collect: [:corner |
+ p := corner rotateBy: radians negated about: srcCenter.
+ (p - srcCenter scaleBy: inverseScale) + srcCenter].
- inverseScale := (1.0 / scalePoint x)(a)(1.0 / scalePoint y).
- quad := dstRect innerCorners collect: [:corner |
- p := corner rotateBy: radians negated about: center.
- ((p - center) scaleBy: inverseScale) + center].
"make a Form to hold the result and do the rotation"
warpSrc := srcForm.
+ srcForm isColorForm
+ ifTrue: [warpSrc := Form extent: srcForm extent depth: 16.
+ srcForm displayOn: warpSrc.
+ dstForm := Form extent: dstRect extent depth: 16
+ "use 16-bit depth to allow smoothing"]
+ ifFalse: [dstForm := srcForm species extent: dstRect extent depth: srcForm depth].
- (srcForm isColorForm)
- ifTrue: [
- cellSize > 1 | true "ar 12/27/2001: Always enable - else sketches won't work"
- ifTrue: [
- warpSrc := Form extent: srcForm extent depth: 16.
- srcForm displayOn: warpSrc.
- dstForm := Form extent: dstRect extent depth: 16] "use 16-bit depth to allow smoothing"
- ifFalse: [
- dstForm := srcForm species extent: dstRect extent depth: srcForm depth]]
- ifFalse: [
- dstForm := srcForm species extent: dstRect extent depth: srcForm depth].
-
(WarpBlt toForm: dstForm)
sourceForm: warpSrc;
colorMap: (warpSrc colormapIfNeededFor: dstForm);
+ cellSize: cellSize;
+ combinationRule: Form paint;
+ copyQuad: quad toRect: dstForm boundingBox.
- cellSize: cellSize; "installs a new colormap if cellSize > 1"
- combinationRule: Form paint;
- copyQuad: quad toRect: dstForm boundingBox.
+ "installs a new colormap if cellSize > 1"
+ dstForm isColorForm
+ ifTrue: [dstForm colors: srcForm colors copy].
+
+ oldOffset := rotationCenter - srcCenter truncated * scalePoint.
+ newRotationPoint := dstForm extent / 2.0 + (oldOffset rotateBy: radians about: 0 @ 0).
+
+ ^ Array with: dstForm with: newRotationPoint - rotationCenter!
- (dstForm isColorForm) ifTrue: [dstForm colors: srcForm colors copy].
- newCenter := (center rotateBy: radians about: aPoint) truncated.
- ^ Array with: dstForm with: dstRect origin + (newCenter - center)
- !
Bert Freudenberg uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-bf.1170.mcz
==================== Summary ====================
Name: Morphic-bf.1170
Author: bf
Time: 8 June 2016, 6:15:43.393011 pm
UUID: 907aecf3-845e-4669-bb24-fd11a542d21f
Ancestors: Morphic-cmm.1169
Deal with "old" events having nil in wasIgnored
=============== Diff against Morphic-cmm.1169 ===============
Item was changed:
----- Method: UserInputEvent>>wasIgnored (in category 'accessing') -----
wasIgnored
+ ^ wasIgnored == true!
- ^ wasIgnored!
Chris Muller uploaded a new version of Installer-Core to project The Trunk:
http://source.squeak.org/trunk/Installer-Core-cmm.405.mcz
==================== Summary ====================
Name: Installer-Core-cmm.405
Author: cmm
Time: 7 June 2016, 7:05:42.768795 pm
UUID: 303433fc-132f-4759-87e1-b66fe4c09553
Ancestors: Installer-Core-cmm.404
Allow any repository to be conveniently overridden with a single default #local directory repository via:
Installer
overrideRepository: #squeaksource
with: #local
Useful for building images without network connection, or for developing new versions or running customized versions of certain packages.
=============== Diff against Installer-Core-cmm.404 ===============
Item was changed:
Object subclass: #Installer
instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel currentRepository'
classVariableNames: 'InstallerBindings IsSetToTrapErrors Repositories SkipLoadingTests ValidationBlock'
poolDictionaries: ''
category: 'Installer-Core'!
+ Installer class
+ instanceVariableNames: 'localRepository'!
!Installer commentStamp: 'kph 3/30/2009 01:29' prior: 0!
Documentation now available at http://installer.pbwiki.com/Installer
useFileIn - flag to load source.st rather than using Monticello!
+ Installer class
+ instanceVariableNames: 'localRepository'!
Item was added:
+ ----- Method: Installer class>>local (in category 'repositories') -----
+ local
+ ^ self localRepository!
Item was added:
+ ----- Method: Installer class>>localRepository (in category 'repository-overrides') -----
+ localRepository
+ ^ localRepository ifNil: [ Installer monticello directory: FileDirectory default / 'mc' ]!
Item was added:
+ ----- Method: Installer class>>localRepository: (in category 'repository-overrides') -----
+ localRepository: aMCRepository
+ localRepository := aMCRepository!
Item was added:
+ ----- Method: Installer class>>useLocalRepository (in category 'repository-overrides') -----
+ useLocalRepository
+ self overrideRemoteRepostoriesWith: #local!
Chris Muller uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-cmm.1169.mcz
==================== Summary ====================
Name: Morphic-cmm.1169
Author: cmm
Time: 7 June 2016, 6:34:59.086637 pm
UUID: b7aecab3-80da-402a-b8ed-1731c010ecd7
Ancestors: Morphic-tpr.1168
- Fix Cmd-Escape to close the *top* window, not the one under the hand.
- Introduce new global hot-key Cmd-` (tilde) to bring the window under the hand to the front.
Note that window under the hand can now be closed quickly via Cmd-[Tilde] + Cmd-[Escape].
=============== Diff against Morphic-tpr.1168 ===============
Item was added:
+ ----- Method: SystemWindow class>>bringWindowUnderHandToFront (in category 'top window') -----
+ bringWindowUnderHandToFront
+ "This only works when All Windows Active is enabled."
+ (self windowsIn: World) do: [ : each | each isLookingFocused ifTrue: [ ^ each beKeyWindow ]]!
Item was added:
+ ----- Method: SystemWindow class>>deleteTopWindow (in category 'top window') -----
+ deleteTopWindow
+ TopWindow ifNotNil: [ TopWindow delete ]!
Item was changed:
----- Method: SystemWindow>>filterEvent:for: (in category 'events') -----
filterEvent: aKeyboardEvent for: anObject
"Provide keyboard shortcuts."
aKeyboardEvent isKeystroke
ifFalse: [^ aKeyboardEvent].
aKeyboardEvent commandKeyPressed ifTrue: [
aKeyboardEvent keyCharacter caseOf: {
[$\] -> [self class sendTopWindowToBack].
+ [Character escape] -> [self class deleteTopWindow].
+ [$`] -> [self class bringWindowUnderHandToFront].
- [Character escape] -> [self delete].
} otherwise: [^ aKeyboardEvent "no hit"].
^ aKeyboardEvent ignore "hit!!"].
aKeyboardEvent controlKeyPressed ifTrue: [
aKeyboardEvent keyCharacter caseOf: {
[Character escape] -> [self world findWindow: aKeyboardEvent].
} otherwise: [^ aKeyboardEvent "no hit"].
^ aKeyboardEvent ignore "hit!!"].
^ aKeyboardEvent "no hit"!