From 684a12d416e46954ef26d7595b0881576a40130b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Blizni=C4=8Denko?= Date: Sat, 23 Nov 2024 17:33:58 +0100 Subject: [PATCH] Only deselect removed element, not all --- repository/OpenPonk-Core/OPController.class.st | 12 +++++++++--- .../OpenPonk-Core/OPDiagramController.class.st | 6 ++++++ .../OpenPonk-Core/OPElementController.class.st | 17 +++++++++++++++++ .../OpenPonk-Spec/OPDiagramExplorer.class.st | 14 +++++--------- .../OPDiagramRemoveFigureCommand.class.st | 2 -- 5 files changed, 37 insertions(+), 14 deletions(-) diff --git a/repository/OpenPonk-Core/OPController.class.st b/repository/OpenPonk-Core/OPController.class.st index 8da8c8f9..f82b6520 100644 --- a/repository/OpenPonk-Core/OPController.class.st +++ b/repository/OpenPonk-Core/OPController.class.st @@ -128,6 +128,12 @@ OPController >> elementsToShowInside [ ^ #( ) ] +{ #category : 'as yet unclassified' } +OPController >> ensureDeselected [ + + self subclassResponsibility +] + { #category : 'accessing' } OPController >> ensureDiagramElement [ @@ -329,7 +335,7 @@ OPController >> removeFigure [ deprecated: 'Use #removeDiagramElement instead' transformWith: '`@receiver removeFigure' -> '`@receiver removeDiagramElement'. - self diagramController deselectAll. + self ensureDeselected. self figure remove ] @@ -337,7 +343,7 @@ OPController >> removeFigure [ OPController >> removeFromDiagramController [ self diagramController ifNil: [ ^ self ]. - self diagramController deselectAll. + self ensureDeselected. self diagramController removeController: self ] @@ -358,7 +364,7 @@ OPController >> removeModelElement: aModelElement [ { #category : 'destruction' } OPController >> removeRender [ - self diagramController deselectAll. + self ensureDeselected. self diagramElement removeRender ] diff --git a/repository/OpenPonk-Core/OPDiagramController.class.st b/repository/OpenPonk-Core/OPDiagramController.class.st index a87682f2..a3ef494a 100644 --- a/repository/OpenPonk-Core/OPDiagramController.class.st +++ b/repository/OpenPonk-Core/OPDiagramController.class.st @@ -353,6 +353,12 @@ OPDiagramController >> ensureControllerFor: aModel [ ^ controller ] +{ #category : 'as yet unclassified' } +OPDiagramController >> ensureDeselected [ + + self deselectAll +] + { #category : 'accessing' } OPDiagramController >> figureAdded: aFigure [ diff --git a/repository/OpenPonk-Core/OPElementController.class.st b/repository/OpenPonk-Core/OPElementController.class.st index 1f7dea2a..41d9ff98 100644 --- a/repository/OpenPonk-Core/OPElementController.class.st +++ b/repository/OpenPonk-Core/OPElementController.class.st @@ -89,6 +89,23 @@ OPElementController >> diagramElementClass [ ^ self subclassResponsibility ] +{ #category : 'as yet unclassified' } +OPElementController >> ensureDeselected [ + + | roassalShape | + self isRendered ifFalse: [ ^ self ]. + roassalShape := self roassalShape. + roassalShape isSelectable ifFalse: [ ^ self ]. + roassalShape isSelected ifFalse: [ ^ self ]. + roassalShape propertyAt: OPRSSelectable ifPresent: [ :selectable | + selectable clicked: roassalShape by: (RSMouseLeftClick new + controlKeyPressed: true; + canvas: roassalShape canvas; + shape: roassalShape; + position: roassalShape position; + yourself) ] +] + { #category : 'accessing' } OPElementController >> ensureDiagramElement [ diff --git a/repository/OpenPonk-Spec/OPDiagramExplorer.class.st b/repository/OpenPonk-Spec/OPDiagramExplorer.class.st index 5def8ff2..76d61f5e 100644 --- a/repository/OpenPonk-Spec/OPDiagramExplorer.class.st +++ b/repository/OpenPonk-Spec/OPDiagramExplorer.class.st @@ -52,7 +52,6 @@ OPDiagramExplorer >> hideDependentFor: aDataElement [ { #category : 'actions' } OPDiagramExplorer >> hideElement: element [ - diagramController deselectAll. element = diagramController model ifTrue: [ diagramController hideAllElements ] ifFalse: [ diagramController hideModelFromDiagram: element ]. @@ -61,9 +60,8 @@ OPDiagramExplorer >> hideElement: element [ { #category : 'actions' } OPDiagramExplorer >> hideElements: elements [ - diagramController deselectAll. - elements - do: [ :each | diagramController hideModelFromDiagram: each ]. + + elements do: [ :each | diagramController hideModelFromDiagram: each ]. diagramController canvas signalUpdate ] @@ -88,7 +86,6 @@ OPDiagramExplorer >> showDependentFor: aModelObject [ OPDiagramExplorer >> showElement: aModelObject [ | existingCtrl ctrl | - self diagramController deselectAll. aModelObject = diagramController model ifTrue: [ ^ diagramController showAllElements ]. diagramController disableRefresh. @@ -107,19 +104,18 @@ OPDiagramExplorer >> showElements: aCollectionOfModelObjects [ | ctrls existingCtrls | aCollectionOfModelObjects ifEmpty: [ ^ self ]. - self diagramController deselectAll. diagramController disableRefresh. existingCtrls := aCollectionOfModelObjects asArray - collect: [ :each | + collect: [ :each | diagramController controllerForModel: each ifNone: [ nil ] ] thenSelect: [ :each | each isNotNil ]. - ctrls := (aCollectionOfModelObjects sorted: [ :a :b | + ctrls := (aCollectionOfModelObjects sorted: [ :a :b | self adapters dependsTypeOf: b on: a - in: diagramController model ]) collect: [ :each | + in: diagramController model ]) collect: [ :each | diagramController showWithoutDependentInDiagramModel: each ]. diagramController enableRefresh ] diff --git a/repository/OpenPonk-Spec/OPDiagramRemoveFigureCommand.class.st b/repository/OpenPonk-Spec/OPDiagramRemoveFigureCommand.class.st index 564ffd9b..dfd5a88c 100644 --- a/repository/OpenPonk-Spec/OPDiagramRemoveFigureCommand.class.st +++ b/repository/OpenPonk-Spec/OPDiagramRemoveFigureCommand.class.st @@ -105,8 +105,6 @@ OPDiagramRemoveFigureCommand >> executeWithConfirmation [ OPDiagramRemoveFigureCommand >> executeWithoutConfirmation [ | allShown | - diagramController deselectAll. - allShown := self showDependentAndReturnOriginallyShown. figures do: [ :each |