Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
6077538
This changes the usage of allLiterals to literals, which returns the …
codeZeilen May 5, 2021
32a5943
Updates version to load of Refactoring package
codeZeilen May 5, 2021
51513c3
Revert "Updates version to load of Refactoring package"
codeZeilen May 5, 2021
d9096e1
Updates name of default branch in shield.
codeZeilen May 5, 2021
719f38c
Bumps the version for the refactoring browser
codeZeilen May 5, 2021
e7cc809
Arbitrary change to trigger CI
codeZeilen Nov 16, 2021
42ded99
Merge pull request #87 from hpi-swa-teaching/main
codeZeilen Nov 16, 2021
d561ce9
fix deprecation
LinqLover Dec 10, 2024
14fbf86
ci: add squeak60
LinqLover Dec 10, 2024
5cac442
ci: disable squeak53, squeak52
LinqLover Dec 10, 2024
f360e73
Accelerate loading of plugins by using observer pattern instead of #a…
LinqLover Dec 19, 2024
d85ac62
Accelerates test running by >800% and fixes progress reporting
LinqLover Dec 19, 2024
ef9e79d
add app menu with self-updating, feedback reporting, and modern about…
LinqLover Dec 19, 2024
0055042
fix preference type
LinqLover Dec 19, 2024
05ec97a
remove accidental dependency on tdb
LinqLover Dec 19, 2024
0ce6899
fix self-update: wrong project name
LinqLover Dec 19, 2024
7f28b08
migrate preferences to squeak6.x
LinqLover Dec 19, 2024
fe825c1
refactor SwaLint class>>install and remove old access to preference
LinqLover Dec 19, 2024
734db2d
fix type slip during preference migration
LinqLover Dec 20, 2024
7753372
fix + refactor dialogs; reintroduce overview pyramid morph
LinqLover Dec 20, 2024
8750c72
reenable overview pyramid metric
LinqLover Dec 20, 2024
636c461
extract SLTestData>>key
LinqLover Dec 20, 2024
7baaa9a
fix typos in tests
LinqLover Dec 20, 2024
4ba21fc
add option to browse tests
LinqLover Dec 20, 2024
99ded7a
complements 7753372
LinqLover Dec 20, 2024
6d21f64
prepare summary results to contain variables or classes
LinqLover Dec 20, 2024
837d387
add first version of swalint browser
LinqLover Dec 20, 2024
d0d2e8a
register SwaLintBrowser in baseline
LinqLover Dec 20, 2024
d643c0c
fix fatal missing block in special message
LinqLover Dec 20, 2024
e32e711
register SwaLintBrowser in baseline (this time for real)
LinqLover Dec 20, 2024
132538e
browser: add missing menu extension; add squeak60 compat fixes
LinqLover Dec 20, 2024
5d15830
browser: add missing extension method (Symbol>>cull:cull:)
LinqLover Dec 20, 2024
40a3163
result dialog: hide overview pyarmid morph if not selected
LinqLover Dec 20, 2024
2c67ff2
browser: map overview pyramid metric
LinqLover Dec 20, 2024
6600ae8
browser: disable assertions when debug mode is off
LinqLover Dec 20, 2024
7735673
baseline: use latest version of RefactoringBrowser
LinqLover Dec 20, 2024
c356931
baseline/self-update: use latest version of RefactoringBrowser
LinqLover Dec 20, 2024
47d34d2
browser: browse test always browse test data
LinqLover Dec 20, 2024
1290f1e
overview pyramid: add high-dpi support, minor refactoring
LinqLover Dec 21, 2024
2749605
result dialog: refactor overview pyramid integration, add pane splitt…
LinqLover Dec 21, 2024
5d187c9
display overview pyramid in browser
LinqLover Dec 21, 2024
4ac0b31
result printing: display variables of summary, remove redundant #asSt…
LinqLover Dec 21, 2024
bb3559e
remove unused instvar
LinqLover Dec 21, 2024
17d6efd
browser: <SWA critical> -> <SWA starting points>
LinqLover Dec 21, 2024
194f146
browser. hide date and author filters until implemented
LinqLover Dec 21, 2024
ef1a98e
browser: show titles of long tests in tooltip
LinqLover Dec 21, 2024
34da7f6
browser: add "copy test name" + keyboard shortcuts to tree menu
LinqLover Dec 21, 2024
fae36b7
browser: hide error results unless displaying all tests
LinqLover Dec 21, 2024
5449f02
browser: indicate out-of-sync messages, make target label more compact
LinqLover Dec 21, 2024
f1351f9
browser: convenient scroll down to first selected items when opening
LinqLover Dec 21, 2024
3b379c2
browser: restore linebreaks in test text
LinqLover Dec 21, 2024
136723f
fix linting of meta trait methods
LinqLover Dec 22, 2024
04a4c49
result dialog: fix updating of results when using "select all" et al.…
LinqLover Dec 22, 2024
36987c1
browser: improve support for removing methods
LinqLover Dec 22, 2024
7cfca4c
browser: add select all/inversion/none menus to target chooser lists
LinqLover Dec 22, 2024
7b98533
browser: refactor aspectDependencies, accelerate class list in target…
LinqLover Dec 22, 2024
d943b5e
browser: refactor aspectDependencies, accelerate class list in target…
LinqLover Dec 22, 2024
a5745a2
fix up trait debugging
LinqLover Dec 22, 2024
b30b6bb
browser target chooser: minor refactoring
LinqLover Dec 22, 2024
a53150f
result dialog: click on group title to toggle group selection
LinqLover Dec 22, 2024
faeecde
dialogs: fix browse-it/senders/implementors by not overriding #enviro…
LinqLover Dec 22, 2024
4d99c4c
browser: fix opening
LinqLover Jan 4, 2025
2ae7315
browser: support browing test categories
LinqLover Jan 4, 2025
9a96a39
browser: improve copying of test/category names
LinqLover Jan 4, 2025
87ddf57
browser: revise description of cat <SWA starting points>
LinqLover Jan 4, 2025
f231439
browser: speed up ui with caches
LinqLover Jan 4, 2025
e174efc
self-update: add missing method
LinqLover Jan 4, 2025
e6c68dc
complements faeecde
LinqLover Jan 4, 2025
e06c7d9
overview pyramid: handle empty case
LinqLover Jan 4, 2025
09a9ecf
world menu: add legacy note to code critics tool entry
LinqLover Jan 4, 2025
004d2ca
fix + refactor debugMode
LinqLover Jan 4, 2025
c9dacf2
restore missing accessor after renaming from faeecde
LinqLover Jan 4, 2025
0b81332
add migration script for 09a9ecf
LinqLover Jan 4, 2025
dfd716f
manually fix litter in FileTree serialized methods (debugMode)
LinqLover Jan 4, 2025
6dfe7cc
Merge remote-tracking branch 'origin/develop' into develop
LinqLover Jan 4, 2025
cf68afe
fix oversight from preference migration
LinqLover Jan 4, 2025
3f47142
ci: disable matrix fail-fast
LinqLover Jan 4, 2025
632dac7
really fix preference accessor
LinqLover Jan 4, 2025
52217bd
fix slips in several hidden tests
LinqLover Jan 4, 2025
6381e9a
browser: fix + document test node path surrogates
LinqLover Jan 4, 2025
bb0d991
further simplify debugMode state mgmt
LinqLover Jan 4, 2025
885502d
browser: fix type-to-filter in test tree
LinqLover Jan 4, 2025
d921a09
recategorize
LinqLover Jan 4, 2025
5adf648
fix typos in some test descriptions
LinqLover Jan 4, 2025
d101d9f
test LiteralArrayContainsDot
LinqLover Jan 4, 2025
a4023d5
fix method clean sourcing -> avoid false positives in dotAfterReturn
LinqLover Jan 5, 2025
efede1b
recategorize tests
LinqLover Jan 5, 2025
05d02ec
browser: revise two tests
LinqLover Jan 5, 2025
6e2c9fd
browser: fix a few slips
LinqLover Jan 5, 2025
641b309
add suspiciousAuthorInitials test
LinqLover Jan 5, 2025
3186ccf
result dialog: fix browsing of single class-side methods
LinqLover Jan 5, 2025
99b6172
accelerate running + browsing tests for many objects
LinqLover Jan 5, 2025
07c9bf6
fix typo
LinqLover Jan 5, 2025
d6f0d58
browser: disable spacer in control bar without filters
LinqLover Jan 5, 2025
99d36f2
browser: honor balloonHelpInMessageLists preference again
LinqLover Jan 5, 2025
af18f78
handle empty case in some metric tests
LinqLover Jan 5, 2025
7aec196
test noClassComments: simplify + fix result value
LinqLover Jan 9, 2025
41dc144
browser: integrate in system browser menus only when unshifted
LinqLover Oct 3, 2025
1b02228
browser: add "delete from results" command to message list; replace i…
LinqLover Oct 3, 2025
edfd863
fix testNoClassComment
LinqLover Oct 3, 2025
79fe1ab
browser: set (scaled) initial extent of target chooser
LinqLover Oct 3, 2025
1d5459e
fix slip in fetchSuperClassVariables from 136723fea8508ff756d379a024c…
LinqLover Oct 4, 2025
fbd781f
eliminate autogenerated preference accessors
LinqLover Oct 4, 2025
4b1ca7d
minor refactoring of global state in tests
LinqLover Oct 4, 2025
73f7374
recategorize
LinqLover Oct 4, 2025
87d37a5
ci: try running on older versions with macos instead of ubuntu
LinqLover Oct 5, 2025
02c5e44
Merge origin/develop into develop
LinqLover Oct 6, 2025
a82ef25
fix compatibility issue for squeak52
LinqLover Oct 6, 2025
f03a560
eliminate another user of an autogenerated preference accessor
LinqLover Oct 6, 2025
a3ad424
remove redundant override in MorphicToolBuilder
LinqLover Oct 6, 2025
7377085
tests: mark SLSmallLintPlugInTest>>#testLiteralArrayContainsDot as ex…
LinqLover Oct 6, 2025
46b3da4
bump version number
LinqLover Oct 6, 2025
246d05f
ci: merge changes from develop.yml into main.yml
LinqLover Oct 6, 2025
df32e84
Merge origin/develop into develop
LinqLover Oct 6, 2025
90ac40a
readme: fix typos
LinqLover Oct 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
78 changes: 78 additions & 0 deletions .git-s-metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
GSMetadata {
#version : 1,
#mappers : OrderedCollection [
GSCypressMapper {
#version : 1,
#package : MCPackage {
#name : 'BaselineOfSwaLint'
},
#path : FSAbsolutePath [
'packages'
]
},
GSCypressMapper {
#version : 1,
#package : MCPackage {
#name : 'SwaLint-Core'
},
#path : FSAbsolutePath [
'packages'
]
},
GSCypressMapper {
#version : 1,
#package : MCPackage {
#name : 'SwaLint-PlugIns'
},
#path : FSAbsolutePath [
'packages'
]
},
GSCypressMapper {
#version : 1,
#package : MCPackage {
#name : 'SwaLint-Preferences'
},
#path : FSAbsolutePath [
'packages'
]
},
GSCypressMapper {
#version : 1,
#package : MCPackage {
#name : 'SwaLint-Slime-Grease'
},
#path : FSAbsolutePath [
'packages'
]
},
GSCypressMapper {
#version : 1,
#package : MCPackage {
#name : 'SwaLint-Slime-Seaside'
},
#path : FSAbsolutePath [
'packages'
]
},
GSCypressMapper {
#version : 1,
#package : MCPackage {
#name : 'SwaLint-Tests'
},
#path : FSAbsolutePath [
'packages'
]
},
GSCypressMapper {
#version : 1,
#package : MCPackage {
#name : 'SwaLintBrowser'
},
#path : FSAbsolutePath [
'packages'
]
}
],
#name : 'SwaLint'
}
17 changes: 11 additions & 6 deletions .github/workflows/develop.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: allTests
on:
push:
on:
push:
branches-ignore:
- main
pull_request:
Expand All @@ -14,21 +14,26 @@ jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# Select platform(s)
os: [ ubuntu-latest ]
os: [ macos-latest ] # ubuntu-latest does not work with Squeak 5.x VMs
# Select compatible Smalltalk image(s)
smalltalk: [Squeak64-trunk, Squeak64-5.3, Squeak64-5.2]
smalltalk:
- Squeak64-trunk
- Squeak64-6.0
- Squeak64-5.3
- Squeak64-5.2
name: ${{ matrix.smalltalk }} on ${{ matrix.os }}
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: hpi-swa/setup-smalltalkCI@v1
with:
smalltalk-image: ${{ matrix.smalltalk }}
env:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: smalltalkci -s ${{ matrix.smalltalk }}
timeout-minutes: 15
env:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
16 changes: 10 additions & 6 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: mainTests
on:
push:
on:
push:
branches:
- main
pull_request:
Expand All @@ -16,19 +16,23 @@ jobs:
strategy:
matrix:
# Select platform(s)
os: [ ubuntu-latest ]
os: [ macos-latest ] # ubuntu-latest does not work with Squeak 5.x VMs
# Select compatible Smalltalk image(s)
smalltalk: [Squeak64-5.3, Squeak64-5.2]
smalltalk:
- Squeak64-trunk
- Squeak64-6.0
- Squeak64-5.3
- Squeak64-5.2
name: ${{ matrix.smalltalk }} on ${{ matrix.os }}
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
- uses: hpi-swa/setup-smalltalkCI@v1
with:
smalltalk-image: ${{ matrix.smalltalk }}
env:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: smalltalkci -s ${{ matrix.smalltalk }}
timeout-minutes: 15
env:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
9 changes: 0 additions & 9 deletions .squot

This file was deleted.

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ There are two ways of installing the latest release. You can either use a SAR fi
#### SAR file
Go to the [latest release of SwaLint](https://github.com/hpi-swa-teaching/SwaLint/releases/latest), download the .sar file, drag and drop it into your image and choose "install SAR".

#### Metaclleo
#### Metacello
1. Make sure you have [metacello](https://github.com/Metacello/metacello) installed.
2. Load the project with (it might ask you to click "Proceed" several times):
```Smalltalk
Expand All @@ -33,7 +33,7 @@ Go to the [latest release of SwaLint](https://github.com/hpi-swa-teaching/SwaLin

### Latest develop version

#### Metaclleo
#### Metacello
1. Make sure you have [metacello](https://github.com/Metacello/metacello) installed.
2. Load the project with (it might ask you to click "Proceed" several times):
```Smalltalk
Expand Down
5 changes: 0 additions & 5 deletions packages/BaselineOfSwaLint.package/.squot-contents

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ baseline: spec
"Requirements"
spec
project: 'RefactoringBrowser' with: [
spec
spec
className: 'ConfigurationOfRefactoringBrowser';
versionString: #'stable';
loads: #('Core' );
repository: 'http://www.squeaksource.com/MetacelloRepository' ];
loads: #('Core');
repository: 'http://www.squeaksource.com/MetacelloRepository'];
project: 'Grease' with: [
spec
className: 'ConfigurationOfGrease';
Expand All @@ -32,20 +32,30 @@ baseline: spec
package: 'SwaLint-PlugIns' with: [ spec requires: 'SwaLint-Core' ];
package: 'SwaLint-Slime-Grease' with: [spec requires: #('SwaLint-PlugIns' 'Grease')];
package: 'SwaLint-Slime-Seaside' with: [spec requires: #('SwaLint-PlugIns' 'Seaside3')];
package: 'SwaLint-Tests' with: [ spec requires: #('SwaLint-Core' 'SwaLint-PlugIns') ].
package: 'SwaLint-Tests' with: [ spec requires: #('SwaLint-Core' 'SwaLint-PlugIns') ];
package: 'SwaLintBrowser' with: [ spec requires: #('SwaLint-Core' 'SwaLint-PlugIns') ].
spec
group: 'default' with: #('PlugIns');
group: 'default' with: #('PlugIns' 'Browser');
group: 'portability' with: #('PlugIns' 'SwaLint-Slime-Grease');
group: 'web' with: #('portability' 'SwaLint-Slime-Seaside');
group: 'Core' with: #('SwaLint-Core');
group: 'All' with: #('Tests' 'web');
group: 'PlugIns' with: #('SwaLint-PlugIns');
group: 'Tests' with: #('SwaLint-Tests')].
group: 'Tests' with: #('SwaLint-Tests');
group: 'Browser' with: #('SwaLintBrowser')].
spec for: #'squeak6.x' do: [
spec
project: 'RefactoringBrowser' with: [
spec
className: 'ConfigurationOfRefactoringBrowser';
versionString: '3.2';
loads: #('Core');
repository: 'http://www.squeaksource.com/MetacelloRepository']].
spec for: #'pharo' do: [
spec
package: 'PreferenceBrowser';
package: 'SwaLint-Preferences' with: [spec requires: 'PreferenceBrowser']].
spec for: #'pharo1.2.x' do: [
spec
preLoadDoIt: #preLoadPharo200;
postLoadDoIt: #postLoadPharo200].
postLoadDoIt: #postLoadPharo200].
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
self-updating
installDependencies
"Install most important dependencies. Metacello>>#get is not recursive."

Metacello new
configuration: 'RefactoringBrowser';
version: '3.2';
get;
load: #('Core').
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
projectClass

^ (self environment classNamed: #MetacelloCypressBaselineProject) ifNil: [super projectClass]
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@
"class" : {
},
"instance" : {
"baseline:" : "fn 5/18/2018 12:54",
"postLoad" : "BD 6/16/2018 18:09" } }
"baseline:" : "ct 12/20/2024 05:20",
"installDependencies" : "ct 12/20/2024 05:20",
"postLoad" : "BD 6/16/2018 18:09",
"projectClass" : "ct 5/26/2021 15:29" } }
4 changes: 0 additions & 4 deletions packages/SwaLint-Core.package/.squot-contents

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ initialization
addCalcMorphWith: aString to: aMorph at: yPosition

| calcmorph |
calcmorph := TextMorph new contents: aString.
calcmorph := (TextMorph new contents: aString) lock.
aMorph addMorph: calcmorph.
calcmorph position: ((aMorph position x)-(calcmorph width)-5)@yPosition.
calcmorph position: ((aMorph position x)-(calcmorph width)-5 px)@yPosition.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ initialization
addNameMorphWith: aString to: aMorph at: yPosition

| namemorph |
namemorph := (TextMorph new contents: aString).
namemorph := (TextMorph new contents: aString) lock.
aMorph addMorph: namemorph.
namemorph position: ((aMorph position x)+5)@yPosition.
namemorph position: ((aMorph position x)+5 px)@yPosition.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ initialization
addResultMorphWith: aString to: aMorph at: yPosition

| resultmorph |
resultmorph := (TextMorph new contents: aString).
resultmorph := (TextMorph new contents: aString) lock.
aMorph addMorph: resultmorph.
resultmorph position: ((aMorph position x)+(aMorph width)-(resultmorph width)-5)@yPosition.
resultmorph position: ((aMorph position x)+(aMorph width)-(resultmorph width)-5 px)@yPosition.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
"class" : {
},
"instance" : {
"addCalcMorphWith:to:at:" : "NA 7/31/2015 21:18",
"addNameMorphWith:to:at:" : "NA 7/31/2015 21:16",
"addResultMorphWith:to:at:" : "NA 7/31/2015 21:18",
"addCalcMorphWith:to:at:" : "ct 12/21/2024 19:02",
"addNameMorphWith:to:at:" : "ct 12/21/2024 19:01",
"addResultMorphWith:to:at:" : "ct 12/21/2024 19:02",
"buildDictionary" : "NH 7/28/2015 13:31",
"setupContainerMorphWith:at:" : "BD 6/29/2018 12:45",
"xOffset" : "NH 7/28/2015 13:44",
"yOffset" : "NH 7/28/2015 13:44" } }
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ initialization
addCalcMorphWith: aString to: aMorph at: yPosition

| calcmorph |
calcmorph := TextMorph new contents: aString.
calcmorph := (TextMorph new contents: aString) lock.
aMorph addMorph: calcmorph.
calcmorph position: ((aMorph position x)+(aMorph width)+5)@yPosition.
calcmorph position: ((aMorph position x)+(aMorph width)+5 px)@yPosition.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ initialization
addNameMorphWith: aString to: aMorph at: yPosition

| namemorph |
namemorph := (TextMorph new contents: aString).
namemorph := (TextMorph new contents: aString) lock.
aMorph addMorph: namemorph.
namemorph position: ((aMorph position x)+(aMorph width)-(namemorph width)-5)@yPosition.
namemorph position: ((aMorph position x)+(aMorph width)-(namemorph width)-5 px)@yPosition.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ initialization
addResultMorphWith: aString to: aMorph at: yPosition

| resultmorph |
resultmorph := (TextMorph new contents: aString).
resultmorph := (TextMorph new contents: aString) lock.
aMorph addMorph: resultmorph.
resultmorph position: ((aMorph position x)+5)@yPosition.
resultmorph position: ((aMorph position x)+5 px)@yPosition.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
"class" : {
},
"instance" : {
"addCalcMorphWith:to:at:" : "NA 7/31/2015 21:25",
"addNameMorphWith:to:at:" : "NA 7/31/2015 21:27",
"addResultMorphWith:to:at:" : "NA 7/31/2015 21:24",
"addCalcMorphWith:to:at:" : "ct 12/21/2024 19:02",
"addNameMorphWith:to:at:" : "ct 12/21/2024 19:02",
"addResultMorphWith:to:at:" : "ct 12/21/2024 19:02",
"buildDictionary" : "NH 7/28/2015 13:45",
"setupContainerMorphWith:at:" : "BD 6/29/2018 12:46",
"xOffset" : "NH 7/28/2015 13:47",
"yOffset" : "NH 7/28/2015 14:22" } }
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ initialization
addNameMorphWith: aString to: aMorph at: yPosition

| namemorph |
namemorph := (TextMorph new contents: aString).
namemorph := (TextMorph new contents: aString) lock.
aMorph addMorph: namemorph.
namemorph position: ((aMorph position x)+5)@yPosition.
namemorph position: ((aMorph position x)+5 px)@yPosition.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ initialization
addResultMorphWith: aString to: aMorph at: yPosition

| resultmorph |
resultmorph := (TextMorph new contents: aString).
resultmorph := (TextMorph new contents: aString) lock.
aMorph addMorph: resultmorph.
resultmorph position: ((aMorph position x)+(aMorph width)-(resultmorph width)-5)@yPosition.
resultmorph position: ((aMorph position x)+(aMorph width)-(resultmorph width)-5 px)@yPosition.
Loading