Karl Ramberg uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/MorphicExtras-kfr.249.mcz
==================== Summary ====================
Name: MorphicExtras-kfr.249
Author: kfr
Time: 31 December 2018, 9:35:25.929461 pm
UUID: 6205084e-5509-5840-a32a-1346e335ff5e
Ancestors: MorphicExtras-pre.248
Make TextOnCurve work again. Bounds in TextOnCurve are computed differently than in NewParagraph
=============== Diff against MorphicExtras-pre.248 ===============
Item was added:
+ ----- Method: TextOnCurve>>adjustRightX (in category 'private') -----
+ adjustRightX
+ "No-op for this class. TextOnCurve have computes bounds differently"!
David T. Lewis uploaded a new version of Chronology-Core to project The Trunk:
http://source.squeak.org/trunk/Chronology-Core-dtl.17.mcz
==================== Summary ====================
Name: Chronology-Core-dtl.17
Author: dtl
Time: 15 December 2018, 6:44:08.809994 pm
UUID: 9d9b49d4-46f4-496f-bfd1-70fdb1641e43
Ancestors: Chronology-Core-dtl.16
Bootstrap UTCDateAndTime, step 2 of 5
Start using LXDateAndTime instead of DateAndTime.
Change instance creation in DateAndTime to create LXDateAndTime instances instead.
In the postscript, have all DateAndTime instances become LXDateAndTime.
=============== Diff against Chronology-Core-dtl.16 ===============
Item was changed:
----- Method: DateAndTime class>>fromSeconds: (in category 'smalltalk-80') -----
fromSeconds: seconds
"Answer a DateAndTime since the Squeak epoch: 1 January 1901"
+ ^ LXDateAndTime fromSeconds: seconds
+ " | integerSeconds nanos |
- | integerSeconds nanos |
integerSeconds := seconds truncated.
integerSeconds = seconds
ifTrue: [nanos := 0]
ifFalse: [nanos := (seconds - integerSeconds * NanosInSecond) asInteger].
^ self basicNew
ticks: (Array
with: SqueakEpoch
with: integerSeconds
with: nanos)
+ offset: self localOffset"!
- offset: self localOffset!
Item was changed:
----- Method: DateAndTime class>>julianDayNumber:offset: (in category 'squeak protocol') -----
+ julianDayNumber: anInteger offset: aDuration
+ ^ LXDateAndTime julianDayNumber: anInteger offset: aDuration
+ " ^ self basicNew
+ ticks: anInteger days ticks
+ offset: aDuration ;
+ yourself"!
- julianDayNumber: anInteger offset: aDuration
-
- ^self basicNew
- setJdn: anInteger
- seconds: 0
- nano: 0
- offset: aDuration!
Item was changed:
----- Method: DateAndTime class>>now (in category 'ansi protocol') -----
now
+
+ ^LXDateAndTime now.
+ " [ | timeArray |
+ timeArray := self primPosixMicrosecondClockWithOffset.
+ ^ self utcMicroseconds: timeArray first offset: timeArray second]
+ on: Error
+ do: [ ""Use old style primitive support""
+ ^self nowWithOffset: self localOffset]"!
- | clockAndOffset |
- clockAndOffset := self clock localMicrosecondClockWithOffset.
- (self automaticTimezone and:
- [self localOffset asSeconds ~= clockAndOffset second])
- ifTrue: [self localOffset: (Duration seconds: clockAndOffset second)].
- ^self now: clockAndOffset first offset: self localOffset!
Item was changed:
----- Method: DateAndTime class>>year:month:day:hour:minute:second:nanoSecond:offset: (in category 'squeak protocol') -----
year: year month: month day: day hour: hour minute: minute second: second nanoSecond: nanoCount offset: offset
"Return a DateAndTime"
+ ^ LXDateAndTime year: year month: month day: day hour: hour minute: minute second: second nanoSecond: nanoCount offset: offset
+ " | monthIndex daysInMonth p q r s julianDayNumber |
- | monthIndex daysInMonth p q r s julianDayNumber |
monthIndex := month isInteger ifTrue: [month] ifFalse: [Month indexOfMonth: month].
daysInMonth := Month
daysInMonth: monthIndex
forYear: year.
day < 1 ifTrue: [self error: 'day may not be zero or negative'].
day > daysInMonth ifTrue: [self error: 'day is after month ends'].
p := (monthIndex - 14) quo: 12.
q := year + 4800 + p.
r := monthIndex - 2 - (12 * p).
s := (year + 4900 + p) quo: 100.
julianDayNumber :=
( (1461 * q) quo: 4 ) +
( (367 * r) quo: 12 ) -
( (3 * s) quo: 4 ) +
( day - 32075 ).
^self basicNew
setJdn: julianDayNumber
seconds: hour * 60 + minute * 60 + second
nano: nanoCount
offset: offset;
+ yourself"!
- yourself!
Item was added:
+ ----- Method: LXDateAndTime>>floor (in category 'squeak protocol') -----
+ floor
+ "Answer a copy with magnitude rounded down to the nearest whole second"
+ ^self class
+ utcMicroseconds: utcMicroseconds - (utcMicroseconds \\ 1000000)
+ offset: localOffsetSeconds!
Item was changed:
----- Method: TimeStamp class>>current (in category 'squeak protocol') -----
current
+ ^self now!
- | ts ticks |
- ts := super now asTimeStamp.
- ticks := ts ticks.
- ticks at: 3 put: 0.
- ts ticks: ticks offset: ts offset.
- ^ ts
- !
Item was removed:
- ----- Method: TimeStamp class>>now (in category 'ansi protocol') -----
- now
- "Answer the current date and time as a TimeStamp."
-
- ^self current!
Item was changed:
----- Method: Timespan class>>defaultOffset (in category 'configuring') -----
defaultOffset
+ "Timespans created in the context of an offset will start in that offset. When no context is available, the defaultOffset for Timespans must be zero. For example, two ways to make a Date for today:
+ Date today. 'start is midnight at offset zero. Will compare successfully to other Date today results.'
+ DateAndTime now asDate. 'In this case, the start is midnight of the local time-zone. It can only compare equally to Dates of its time-zone.'"
+ ^ Duration zero!
- "Timespans created in the context of an offset will start in that offset. When no context is available, the defaultOffset for Timespans must be nil. For example, two ways to make a Date for today:
- Date today. 'start is midnight without offset. Will compare successfully to other Date today results.'
- DateAndTime now asDate. 'In this case, the start is midnight of the local time-zone. It can only compare equally to Dates of its time-zone or Dates without timezone.'"
- ^ nil!
Item was changed:
+ (PackageInfo named: 'Chronology-Core') postscript: '"Convert all instances of DateAndTime and TimeStamp to the equivalent LXDateAndTime and LXTimeStamp."
- (PackageInfo named: 'Chronology-Core') postscript: '"Ensure that the object history mark process uses DateAndTime>>floor rather than an earlier implementation that relied on a named instance variable."
+ | oldInstances newInstances |
+ Smalltalk garbageCollect.
+ oldInstances := DateAndTime allInstances, TimeStamp allInstances.
+ newInstances := oldInstances collect: [ :each |
+ each class == DateAndTime
+ ifTrue: [ each asLXDateAndTime ]
+ ifFalse: [ each asLXTimeStamp ] ].
+ oldInstances elementsForwardIdentityTo: newInstances.
+ Smalltalk garbageCollect.
+
+ "Ensure that the object history mark process uses DateAndTime>>floor rather than an earlier implementation that relied on a named instance variable."
+
Smalltalk at: #ObjectHistory ifPresent: [ :cls | cls current restartMarkProcess ].
'!
Patrick Rein uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-pre.840.mcz
==================== Summary ====================
Name: Tools-pre.840
Author: pre
Time: 27 December 2018, 10:03:04.287503 pm
UUID: 192f0561-821d-a347-a550-e12bbd53b360
Ancestors: Tools-pre.839
Fixes two defects in the FileContentsBrowser. One prevented the browsing of methods in changessets whose classes are not present. The other is a dnu error due to an, seemingly, overlooked old message send. (http://bugs.squeak.org/view.php?id=7615)
=============== Diff against Tools-pre.839 ===============
Item was changed:
----- Method: FileContentsBrowser>>changeMessageCategories: (in category 'other') -----
changeMessageCategories: aString
"The characters in aString represent an edited version of the the message
categories for the selected class. Update this information in the system
and inform any dependents that the categories have been changed. This
message is invoked because the user had issued the categories command
and edited the message categories. Then the user issued the accept
command."
self classOrMetaClassOrganizer changeFromString: aString.
- self unlock.
self editClass.
self selectClassNamed: selectedClassName.
^ true!
Item was added:
+ ----- Method: FileContentsBrowser>>hasClassSelected (in category 'class list') -----
+ hasClassSelected
+ ^ selectedClassName notNil !
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1471.mcz
==================== Summary ====================
Name: Morphic-mt.1471
Author: mt
Time: 18 December 2018, 11:21:12.919815 am
UUID: c1ce3517-3c9e-9944-b3ca-cdd244a220c2
Ancestors: Morphic-pre.1470
Fixes the resize-behavior of our world main docking bar.
=============== Diff against Morphic-pre.1470 ===============
Item was added:
+ ----- Method: DockingBarMorph>>removedMorph: (in category 'submorphs-add/remove') -----
+ removedMorph: aMorph
+ "If this docking bar accepts dropped morphs, it will grow automatically due to its layout policy. Unfortunately, it will not shrink after the removal of any submorph because of the shrinkWrap-spaceFill combination in the vertical axis. To enforce a proper layout update, we can set the docking-bar's extent to a minimum because it fill automatically grow to fit its current contents. Consider this a workaround until we have a better layout policy."
+
+ self flag: #workaround.
+ self extent: 1@1.!