The Trunk: System-mt.1101.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: System-mt.1101.mcz

commits-2
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1101.mcz

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

Name: System-mt.1101
Author: mt
Time: 25 September 2019, 10:39:08.307838 am
UUID: c829ba68-0ccb-d34e-aa5a-9a8fe3496e25
Ancestors: System-mt.1100

Fixes #beTopProject, but disconnects visual project-viewer hierarchy from actual project tree. As backup project, avoid cycling between two broken project kinds but only follow project parents.

=============== Diff against System-mt.1100 ===============

Item was changed:
  ----- Method: Project class>>tryOtherProjectForRecovery: (in category 'error recovery') -----
  tryOtherProjectForRecovery: errorMessage
  "Try entering the parent project if it uses a different user interface. We determine this by comparing the project's class."
 
  | safeProject nextProject |
  nextProject := Project current.
  safeProject := nil.
  "Search parent projects for one of a different type"
  [safeProject notNil or: [nextProject isTopProject]] whileFalse: [
  nextProject := nextProject parent.
  (Project current isKindOf: nextProject class)
  ifFalse: [safeProject := nextProject]].
+
+ "September 2019 --- Do not cycle between Morphic and MVC if both break."
  "No suitable parent project found, search all projects for any one of different type."
+ "safeProject ifNil: [Smalltalk garbageCollect.
- safeProject ifNil: [Smalltalk garbageCollect.
  safeProject := Project allSubInstances
+ detect: [:proj | (proj isKindOf: Project current class) not] ifNone: []]."
+
- detect: [:proj | (proj isKindOf: Project current class) not] ifNone: []].
  safeProject ifNotNil: [:p |
  p enterForEmergencyRecovery.
  "Active process will usually suspend after this."].
  !

Item was changed:
  ----- Method: Project>>beTopProject (in category 'sub-projects & hierarchy') -----
  beTopProject
 
+ | previousTop |
  self isTopProject ifTrue: [^ self].
 
+ previousTop := self class topProject.
+
  self parent deletingProject: self. "Just remove views and refs to me."
+ self addProject: previousTop. "The current top project will be my child now."
+ self setParent: self. "I am the new top project."!
- self addProject: self class topProject.
- self setParent: self.!

Item was changed:
  ----- Method: Project>>setParent: (in category 'sub-projects & hierarchy') -----
  setParent: newParent
 
- "Notify the current parent to discard views and other references. Avoids deleting that project later if the former parent is deleted. You can only have one parent anyway.."
- (self parent isKindOf: Project) ifTrue: [
- self parent ~= newParent ifTrue: [self parent deletingProject: self].
- ].
-
  parentProject := newParent.
  nextProject := previousProject := nil.!