TabView.st
changeset 345 9886fd1c2608
parent 343 dd49faa984ce
child 346 698695a95a8c
--- a/TabView.st	Thu Apr 03 19:38:32 1997 +0200
+++ b/TabView.st	Thu Apr 03 20:24:33 1997 +0200
@@ -634,7 +634,7 @@
 showSelected
     "draw current selection as selected
     "
-    |tab list size savOrg savExt expSel savIns setIns newExt ctr x1 x2|
+    |leftExtX rightExtX vspace tab list size savOrg savExt expSel savIns setIns newExt ctr x1 x2 nOrg|
 
     list := self list.
     size := list size.
@@ -642,28 +642,41 @@
     (selection notNil and:[self shown and:[size ~~ 0]]) ifFalse:[
         ^ self
     ].
-    tab      := list at:selection.
-    savOrg   := tab origin.
-    savExt   := tab extent.
-    savIns   := tab inset.
-    expSel   := tabStyle at:#expandSelection.
-    newExt   := savExt + (expSel x@0).
+    tab       := list at:selection.
+    savOrg    := tab origin.
+    savExt    := tab extent.
+    savIns    := tab inset.
+    expSel    := tabStyle at:#expandSelection.
+    rightExtX := expSel x.
 
-    (tabStyle at:#vspace) == 0 ifTrue:[setIns := 0]
-                              ifFalse:[setIns := savIns].
+    (vspace := tabStyle at:#vspace) == 0 ifTrue:[
+        leftExtX := rightExtX := rightExtX//2.
+        setIns := 0
+    ] ifFalse:[
+        leftExtX := 0.
+        setIns   := savIns
+    ].
 
-    x1  := savOrg x.
+    newExt := savExt + ((leftExtX + rightExtX)@0).
+    nOrg   := savOrg - ( leftExtX @ (expSel y)).
+
+    (x1 := nOrg x) < 0 ifTrue:[
+        newExt x:(newExt x + x1).
+        nOrg x:0.
+        x1 := 0.
+    ].
+
     ctr := self extent x.
     (x2  := x1 + newExt x) > ctr ifTrue:[
         x2 := ctr - x1.
         newExt x:x2.
     ].
 
-    tab origin:(savOrg - (0 @ (expSel y))) extent:newExt inset:setIns.
+    tab origin:nOrg extent:newExt inset:setIns.
     tab redraw:true.
     tab origin:savOrg extent:savExt inset:savIns.
 
-    (selection < lastIdInFirstLine or:[(tabStyle at:#hspace) ~~ 0]) ifTrue:[
+    (selection < lastIdInFirstLine or:[vspace ~~ 0]) ifTrue:[
         ctr := selection + 1.
 
         ctr to:size do:[:i||tX1 tX2 draw|
@@ -681,11 +694,10 @@
             ]
         ]
     ]
-
 ! !
 
 !TabView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg2/TabView.st,v 1.1 1997-04-03 17:34:45 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg2/TabView.st,v 1.2 1997-04-03 18:24:33 ca Exp $'
 ! !