The "persistent"/"persistant"=true prop arg in PropInputSetting was meant to be a quick implementation of setting the same value of a prop as the previous inserting same class Snapper.
Example:
The "persistent"/"persistant" logic is also happening while stretching Snappers which makes no sense according to the original intent. Therefore "persistent"/"persistant" will now be executed only in insert animation (Previously happening to all animation properties).
The single label previously used for split views has been replaced with separate labels for horizontal and vertical layouts. This allows each split-view option to be clearly identified in the user interface.
The legacy contextual view-switch toolbar models have been removed as part of the split-view toolbar update.
Split views now support both horizontal and vertical layouts. The split-view API has been updated so that horizontal consistently means views stacked top/bottom and vertical means views arranged left/right.
Resetting item tags on a TaggableSnapper now handles each part's user-modified Ind. Tag explicitly. If resetting those tags would change the keys of existing part adjustments, CET identifies the affected article codes and asks whether the adjustments should be preserved.
The $twoViewsMenuLabel resource has been removed. Use $horizontalViewsMenuLabel or $verticalViewsMenuLabel according to the layout.
Legacy 2D and 3D toolbar model classes were removed, and split-view switching now requires an explicit layout orientation.
The following class has been removed as part of Removal of Legacy 2D and 3D Contextual View-Switch Toolbar Models effort:
Removed: public class ContextualMultiViewSettingsModel extends ViewSettingsToolbarModel Removed: public class ContextualMultiPopupViewSettingsModel extends ViewSettingsToolbarModel Removed: public class Contextual2DViewSettingsModel extends ViewSettingsToolbarModel
actualSwitchToSplitView() now requires the desired orientation:
Old: actualSwitchToSplitView() New: actualSwitchToSplitView(multiViewState.horizontal); // 2D above 3D New: actualSwitchToSplitView(multiViewState.vertical); // 2D left of 3D
The following class has been removed as part of Removal of Legacy 2D and 3D Contextual View-Switch Toolbar Models effort:
Removed: Contextual3DViewSettingsModel
View changes should instead be initiated through MultiViewArea.switchState(..) or actualSwitchToSplitView(..) as appropriate.
Split-view enum values and divider fields were updated to support distinct horizontal and vertical layouts, while deprecated view states were removed.
Previously, the existing top/bottom layout was represented by multiViewState.vertical, which caused confusion about whether the name described the divider or the arrangement of the views. The naming has now been standardized and any code using multiViewState.vertical for the original top/bottom layout must be updated to multiViewState.horizontal. If the desired view state is left/right, then multiViewState.vertical should be used.
The existing split-view enum and divider field were renamed to identify them explicitly as horizontal-layout interfaces:
Old: drawingViewType.viewSplit New: drawingViewType.viewHorizontalSplit Old: MultiViewArea.dragDivider New: MultiViewArea.horizontalDragDivider
Use the new drawingViewType.viewVerticalSplit value and MultiViewArea.verticalDragDivider field when working with the left/right layout.
The following deprecated multiViewState enum values have been removed and have no direct replacement:
Removed: multiViewState.verticalPaper2D Removed: multiViewState.verticalPaper3D Removed: multiViewState.vertical3D Removed: multiViewState.horizontal3D
Combined functions of the name spaceVolumeUpdateObjects. Use the function spaceVolumeUpdateObjects(Snapper z, vector u, SnapperFilter filter=null, bool undoable=true, Snapper{} visited=new Snapper{}, bool force=false) that has an additional SnapperFilter filter=null argument.
Old: public void spaceVolumeUpdateObjects(Snapper z, vector u, bool undoable=true, Snapper{} visited=new Snapper{}, bool force=false) { spaceVolumeUpdateObjects(z, u, filter=null, undoable=undoable, visited=visited, force=force); Old: public void spaceVolumeUpdateObjects(Snapper z, vector u, SnapperFilter filter, bool undoable=true, Snapper{} visited=new Snapper{}, bool force=false) { New: public void spaceVolumeUpdateObjects(Snapper z, vector u, SnapperFilter filter=null, bool undoable=true, Snapper{} visited=new Snapper{}, bool force=false) { }
The following public interfaces have been added:
Added: extend public Part[] Snapper.rawParts() Added: extend public bool Snapper.resetPartItemTagInfos() Added: public bool TaggableSnapper.resetPartItemTagInfos() Added: public int askUserAdjustedPartMigration(Part[] adjustedParts)
Snapper.resetPartItemTagInfos() returns true by default. Custom snappers can override it to perform their own part-tag reset preparation or return false to cancel the surrounding item-tag reset.
Crash isolation has been improved for parent-child snapper hierarchies.
Previously, when a child snapper crashed, only that child was converted into an ExceptionProxySnapper. During restoration, the child snapper could be restored independently and attempt to enter the space without its parent, causing CET to crash because child snappers cannot exist directly in a space.snappers.
To prevent this, the runtime now quarantines the root parent whenever any snapper in the hierarchy crashes. This ensures the entire parent-child hierarchy is isolated and later restored together.
As a result:
ExceptionProxySnapper.Before calling isolateCrashingSnapper(..), the runtime now resolves the crashing snapper's root parent, ensuring parent-child hierarchies are quarantined first before restoring them as one ExceptionProxySnapper.
cm/core/ExceptionProxySnapper.cmcm/core/stream/load.cmcm/core/space.cmcm/core/view2D.cmcm/core/view3D.cmcm/core/snapAlternative.cmFor more implementation details, refer to this merge request !44030.
The single split-view resource label has been replaced with separate labels for horizontal and vertical split layouts:
Old: $twoViewsMenuLabel New: $horizontalViewsMenuLabel New: $verticalViewsMenuLabel
The meanings of the remaining split multiViewState values are now orientation-based:
multiViewState.horizontal displays the 2D view above the 3D view.multiViewState.vertical displays the 2D view to the left of the 3D view.Review conditionals that use these values even if they still compile. Also review any code that persists or exchanges their integer representations: horizontal is now 3, while vertical remains 2 but represents the left/right layout.
TaggableSnapper.resetItemTags() now calls resetPartItemTagInfos() before removing displayed item tags. The reset is canceled if that hook returns false.
For adjusted parts with user-modified Ind. Tags, the default implementation asks the user whether to preserve adjustments. Choosing Yes migrates each adjustment to the key produced by the default tag; choosing No resets the tags without migrating adjustments; closing the prompt cancels the entire reset. User tag information unrelated to the snapper's raw parts is no longer cleared as a side effect.
PsLayoutEditLabelDialog is now fixed sizeChanged PsLayoutEditLabelDialog to be a fixed size now.
Space now exposes the overridable method isElevationSpace(), which returns false by default. Custom elevation-space implementations should override it to return true. Dimension view-visibility editing uses this method to distinguish elevation spaces from ordinary spaces.