viewOrigin fix (when list is set to nil while not shown);
authorClaus Gittinger <cg@exept.de>
Fri, 09 Mar 2001 20:09:23 +0100
changeset 1948 9ed8131d94bb
parent 1947 1e11b36633b2
child 1949 0d9451776275
viewOrigin fix (when list is set to nil while not shown); added scrollWhenUpdating flag.
DSVColumnView.st
--- 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 $'
 ! !