11Class {
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' }
1425ToListDisabledSelectionElementEventHandler >> 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