viewOrigin fix (when list is set to nil while not shown);
added scrollWhenUpdating flag.
--- a/DSVColumnView.st Thu Mar 08 15:44:42 2001 +0100
+++ b/DSVColumnView.st Fri Mar 09 20:09:23 2001 +0100
@@ -968,7 +968,8 @@
list := OrderedCollection new:(aList size).
aList do:[:el| list add:el ].
] ifFalse:[
- list := nil
+ list := nil.
+ viewOrigin := 0 @ 0.
].
self beDependentOfRows:makeDependent.
@@ -978,8 +979,6 @@
selectionHasChanged ifTrue:[
self selectionChanged.
].
-
-
! !
!DSVColumnView methodsFor:'accessing-visibility'!
@@ -1135,7 +1134,8 @@
y0 < viewOrigin y ifTrue:[
self originWillChange.
- viewOrigin y:(yD + viewOrigin y).
+ viewOrigin := viewOrigin x @ (yD + viewOrigin y).
+ "/ viewOrigin y:(yD + viewOrigin y).
self originChanged:(0 @ yD).
].
@@ -1159,7 +1159,6 @@
self invalidateX:margin y:y0 width:width - margin - margin height:dH.
].
self contentsChanged.
-
!
addFirst:aRow
@@ -1264,7 +1263,8 @@
(noRedraw := y1 <= oY) ifFalse:[dY := y0 - oY]
ifTrue:[dY := dY negated].
self originWillChange.
- viewOrigin y:(dY + oY).
+ viewOrigin := viewOrigin x @ (dY + oY).
+ "/ viewOrigin y:(dY + oY).
self originChanged:(0 @ dY).
] ifFalse:[
noRedraw := y0 > (height + viewOrigin y)
@@ -1288,7 +1288,6 @@
self invalidateX:margin y:y0 width:width - margin - margin height:(height - y0).
].
self contentsChanged.
-
!
removeIndex:aRowNr
@@ -2031,14 +2030,14 @@
y := self maxViewOriginY.
viewOrigin y > y ifTrue:[
- self scrollTo:(viewOrigin x @ y)
+ scrollWhenUpdating ~~ false ifTrue:[
+ self scrollTo:(viewOrigin x @ y)
+ ]
] ifFalse:[
self updateEditViewOrigin.
]
].
super contentsChanged
-
-
!
doubleClicked
@@ -2756,6 +2755,7 @@
(y ~~ 0 or:[x ~~ 0]) ifTrue:[
self originWillChange.
+
viewOrigin := 0 @ 0.
preferredExtent := nil.
self originChanged:(x negated @ y negated).
@@ -3461,5 +3461,5 @@
!DSVColumnView class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/DSVColumnView.st,v 1.120 2001-03-08 14:44:42 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/DSVColumnView.st,v 1.121 2001-03-09 19:09:23 cg Exp $'
! !