Skip to content

Commit 3336e1e

Browse files
committed
improve ToListDisabledSelectionElementEventHandler
1 parent f15af53 commit 3336e1e

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

src/Toplo-Widget-List/ToListDisabledSelectionElementEventHandler.class.st

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
Class {
22
#name : #ToListDisabledSelectionElementEventHandler,
33
#superclass : #ToListSelectionElementEventHandler,
4+
#instVars : [
5+
'postponeCommand',
6+
'touchedIndexes'
7+
],
48
#category : #'Toplo-Widget-List-Selection-Element'
59
}
610

@@ -10,6 +14,13 @@ ToListDisabledSelectionElementEventHandler >> eventsToHandle [
1014
^ super eventsToHandle , { ToListDisabledSelectionChangedEvent }
1115
]
1216

17+
{ #category : #nil }
18+
ToListDisabledSelectionElementEventHandler >> initialize [
19+
20+
super initialize.
21+
touchedIndexes := OrderedCollection new
22+
]
23+
1324
{ #category : #'element handlers' }
1425
ToListDisabledSelectionElementEventHandler >> listDisabledSelectionChangedEvent: anEvent [
1526

@@ -20,10 +31,16 @@ ToListDisabledSelectionElementEventHandler >> listDisabledSelectionChangedEvent:
2031
listElement selectionMode makeDisabledUnselectable ifTrue: [
2132
listElement selecter deselectInterval: int ] ].
2233

23-
listElement postponeAction: [
24-
anEvent appliedCommand indexes do: [ :idx |
34+
touchedIndexes addAll: anEvent appliedCommand indexes.
35+
postponeCommand ifNotNil: [ ^ self ].
36+
postponeCommand := ToListDataSourceActionCommand new.
37+
postponeCommand action: [
38+
touchedIndexes do: [ :idx |
2539
(listElement layoutPositionsRange includes: idx) ifTrue: [
2640
listElement dataSource notifyItemsChanged: (idx to: idx) ] ].
2741
listElement requestUpdateSelectionMode:
28-
listElement primarySelectionMode ]
42+
listElement primarySelectionMode.
43+
postponeCommand := nil.
44+
touchedIndexes reset ].
45+
listElement postponeCommand: postponeCommand
2946
]

0 commit comments

Comments
 (0)