Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1029.mcz ==================== Summary ==================== Name: System-mt.1029 Author: mt Time: 24 May 2018, 11:33:34.473783 am UUID: 1e5f5805-6530-4bf9-a93b-dc6bca992319 Ancestors: System-mt.1028 Fixes the bug with entering/leaving projects that change the display depth. =============== Diff against System-mt.1028 =============== Item was added: + ----- Method: Project>>displayDepth (in category 'accessing') ----- + displayDepth + ^ displayDepth! Item was changed: ----- Method: Project>>enter:revert:saveForRevert: (in category 'enter') ----- enter: returningFlag revert: revertFlag saveForRevert: saveForRevert "Install my ChangeSet, Transcript, and scheduled views as current globals. If returningFlag is true, we will return to the project from whence the current project was entered; don't change its previousProject link in this case. If saveForRevert is true, save the ImageSegment of the project being left. If revertFlag is true, make stubs for the world of the project being left. If revertWithoutAsking is true in the project being left, then always revert." | leavingProject forceRevert response seg | self isIncompletelyLoaded ifTrue: [^ self loadFromServer: true]. self isCurrentProject ifTrue: [^ self]. EmergencyRecoveryRequested := false. "normal project entry clears recursion guard" forceRevert := false. CurrentProject rawParameters ifNil: [revertFlag ifTrue: [^ self inform: 'nothing to revert to' translated]] ifNotNil: [saveForRevert ifFalse: [ forceRevert := CurrentProject projectParameters at: #revertWithoutAsking ifAbsent: [false]]]. forceRevert not & revertFlag ifTrue: [ response := (UIManager default chooseFrom: { 'Revert to saved version' translated. 'Cancel' translated. } title: 'Are you sure you want to destroy this Project\ and revert to an older version?\\(From the parent project, click on this project''s thumbnail.)' translated withCRs) = 1. response ifFalse: [^ self]]. revertFlag | forceRevert ifTrue: [seg := CurrentProject projectParameters at: #revertToMe ifAbsent: [ ^ self inform: 'nothing to revert to' translated]] ifFalse: [ CurrentProject makeThumbnail. returningFlag == #specialReturn ifTrue: [ProjectHistory forget: CurrentProject. "this guy is irrelevant" Project forget: CurrentProject] ifFalse: [ProjectHistory remember: CurrentProject]]. (revertFlag | saveForRevert | forceRevert) ifFalse: [ (Preferences valueOfFlag: #projectsSentToDisk) ifTrue: [ self inform: 'Project serialization via image segments\does not work at the moment. Disabling the\preference #projectsSentToDisk now...' withCRs. Preferences disable: #projectsSentToDisk. "self storeToMakeRoom"]]. "Update display depth for leaving and entring project." CurrentProject displayDepth: Display depth. displayDepth == nil ifTrue: [displayDepth := Display depth]. self installNewDisplay: Display extent depth: displayDepth. returningFlag == #specialReturn ifTrue: [ CurrentProject removeChangeSetIfPossible. "keep this stuff from accumulating" nextProject := nil ] ifFalse: [ returningFlag ifTrue: [nextProject := CurrentProject] ifFalse: [previousProject := CurrentProject]. ]. CurrentProject world triggerEvent: #aboutToLeaveWorld. CurrentProject abortResourceLoading. CurrentProject finalExitActions: self. CurrentProject saveState. "********** SWITCHING CURRENT PROJECT **********" leavingProject := CurrentProject. CurrentProject := self. ProjectHistory remember: self. "********** SWITCHING CURRENT PROJECT **********" self loadState. self finalEnterActions: leavingProject. self addDeferredUIMessage: [self startResourceLoading]. self world triggerEvent: #aboutToEnterWorld. "Save project for revert." saveForRevert ifTrue: [ Smalltalk garbageCollect. "let go of pointers" leavingProject storeSegment. "result :=" leavingProject world isInMemory ifTrue: ['Can''t seem to write the project.'] ifFalse: [leavingProject projectParameters at: #revertToMe put: leavingProject world xxxSegment shallowCopy]. 'Project written.']. "original is for coming back in and continuing." revertFlag | forceRevert ifTrue: [ seg shallowCopy revert]. "non-cloned one is for reverting again later" self removeParameter: #exportState. "Now that everything is set up, we can show zoom animation." + (self showZoom and: [leavingProject displayDepth = self displayDepth]) - self showZoom ifTrue: [self displayZoom: leavingProject parent ~~ self "Entering?"] ifFalse: [self restore]. "Update processes at last." self scheduleProcessForEnter. leavingProject terminateProcessForLeave. ! Item was changed: ----- Method: Project>>installNewDisplay:depth: (in category 'initialization') ----- installNewDisplay: extent depth: depth "When entering a new project, install a new Display if necessary." + Display setExtent: extent depth: depth. + Display beDisplay.! - ^Display setExtent: extent depth: depth! |
Free forum by Nabble | Edit this page |