#UI_ENHANCEMENT
class: VariablePanelController
comment/format in: #buttonMotion:x:y:
changed:
#checkedHandleMovementX:y:
#doResize
changed to allow resizing up to zero size
(avoid the ugly 1-pixel leftover of a small view)
--- a/VariablePanelController.st Thu Oct 08 09:05:35 2015 +0200
+++ b/VariablePanelController.st Fri Oct 09 11:39:40 2015 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 1995 by Claus Gittinger
All Rights Reserved
@@ -11,6 +13,8 @@
"
"{ Package: 'stx:libwidg' }"
+"{ NameSpace: Smalltalk }"
+
Controller subclass:#VariablePanelController
instanceVariableNames:'movedHandle prevPos clickPos saveCursor startResizing resizeMode
opaqueResizing'
@@ -57,7 +61,7 @@
"mouse-button was moved while pressed;
clear prev handleBar and draw handle bar at new position
"
- |nextPos layout entered hindex handle|
+ |nextPos layout entered handle|
state == 0 ifTrue:[
movedHandle notNil ifTrue:[
@@ -70,12 +74,6 @@
handle := self detectHandleIndexAt:bx y:by.
handle isNil ifTrue:[^ self].
-"/
-"/ hindex ~~ handle ifTrue:[
-"/ self pointerLeave:0.
-"/ handle := hindex.
-"/ ].
-"/ handle isNil ifTrue:[^ self].
"check entering click button ...."
layout := view snapLayoutAt:handle.
@@ -109,7 +107,6 @@
"RESIZING"
"compute new position ...."
-
nextPos := self checkedHandleMovementX:bx y:by.
"/ nextPos = prevPos ifTrue:[
"/ ^ self
@@ -344,8 +341,8 @@
"/ movedHandle == (subViews size-1) ifTrue:[
"/ max := max - barHeight + 2.
"/ ] ifFalse:[
- max := max - halfBarHeight + 1.
- barHeight odd ifTrue:[ max := max - 1 ].
+ max := max - halfBarHeight "+ 1".
+ true "barHeight odd" ifTrue:[ max := max - 1 ].
"/ ].
movedHandle == (subViews size-1) ifTrue:[
@@ -415,7 +412,7 @@
"perform the resize
"
|aboveView belowView aboveIndex belowIndex newRelPos subViews isVertical
- newCorner newOrigin halfBarHg|
+ newCorner newOrigin halfBarHg aboveInvisible belowInvisible|
"undo the last invert"
(resizeMode == #active and:[opaqueResizing not]) ifTrue:[
@@ -431,29 +428,41 @@
subViews := view subViews.
aboveView := subViews at:aboveIndex.
belowView := subViews at:belowIndex.
- halfBarHg := view barHeight + 1 // 2.
+ halfBarHg := (view barHeight + 1) // 2.
+ aboveInvisible := belowInvisible := false.
- isVertical ifFalse:[
+ isVertical ifTrue:[
"X complains badly if you try to create/resize a view with a dimension <= 0
"
- prevPos - halfBarHg == aboveView left ifTrue:[prevPos := prevPos + 1].
+ prevPos - halfBarHg == aboveView top ifTrue:[
+ prevPos := prevPos + 1.
+ aboveInvisible := true.
+ ].
+
+ newRelPos := (prevPos / view height) asFloat.
+ newCorner := aboveView relativeCorner x @ newRelPos.
+ newOrigin := belowView relativeOrigin x @ newRelPos.
+ ] ifFalse:[
+ "X complains badly if you try to create/resize a view with a dimension <= 0
+ "
+ prevPos - halfBarHg == aboveView left ifTrue:[
+ prevPos := prevPos + 1.
+ aboveInvisible := true.
+ ].
newRelPos := (prevPos / view width) asFloat.
newCorner := newRelPos @ aboveView relativeCorner y.
newOrigin := newRelPos @ belowView relativeOrigin y.
- ] ifTrue:[
- "X complains badly if you try to create/resize a view with a dimension <= 0
- "
- prevPos - halfBarHg == aboveView top ifTrue:[prevPos := prevPos + 1].
-
- newRelPos := (prevPos / view height) asFloat.
- newCorner := aboveView relativeCorner x @ newRelPos.
- newOrigin := belowView relativeOrigin x @ newRelPos.
].
view lockRedraw.
aboveView relativeCorner:newCorner.
belowView relativeOrigin:newOrigin.
+ aboveInvisible ifTrue:[
+ aboveView realized ifTrue:[ aboveView unmap ].
+ ] ifFalse:[
+ aboveView realized ifFalse:[ aboveView map ].
+ ].
prevPos > clickPos ifTrue:[ "above view grows"
view resizeSubviewsFrom:aboveIndex to:belowIndex.
@@ -463,7 +472,7 @@
view unlockRedraw.
prevPos := isVertical ifTrue:[aboveView bottom] ifFalse:[aboveView right].
- prevPos := prevPos + (view barHeight + 1 // 2).
+ prevPos := prevPos + halfBarHg.
!
doSnapPressedX:x y:y
@@ -555,7 +564,8 @@
!VariablePanelController class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg/VariablePanelController.st,v 1.41 2009-09-15 21:18:05 cg Exp $'
+ ^ '$Header$'
! !
+