--- a/UIPainterView.st Sun May 10 12:56:49 2009 +0200
+++ b/UIPainterView.st Sun May 10 12:58:19 2009 +0200
@@ -295,6 +295,7 @@
viewsToRemove size == 1 ifTrue:[
|subviews index|
+ newSelection components notEmptyOrNil ifTrue:[ self halt ].
subviews := newSelection subViews.
subviews size > 1 ifTrue:[
@@ -1616,26 +1617,29 @@
!
generateWindowSpec
- |spec|
+ |spec addToSpec|
spec := OrderedCollection new.
- self subViews do:[:aView|
- |vSpec|
-
- "/ care for wrapped views ...
- vSpec := self fullSpecFor:aView.
- vSpec isNil ifTrue:[
- aView subViews size == 1 ifTrue:[
- vSpec := self fullSpecFor:(aView subViews first).
- ]
+ addToSpec :=
+ [:aView|
+ |vSpec|
+
+ "/ care for wrapped views ...
+ vSpec := self fullSpecFor:aView.
+ vSpec isNil ifTrue:[
+ aView subViews size == 1 ifTrue:[
+ vSpec := self fullSpecFor:(aView subViews first).
+ ]
+ ].
+ vSpec isNil ifTrue:[
+ self warn:'Oops - could not create spec for some view'
+ ].
+ spec add:vSpec
].
- vSpec isNil ifTrue:[
- self warn:'Oops - could not create spec for some view'
- ].
- spec add:vSpec
- ].
-
+
+ self subViews do:addToSpec.
+ self components do:addToSpec.
spec := treeView generateFullSpecForComponents:spec named:methodName.
^ spec
!
@@ -2037,43 +2041,47 @@
|wasClipped sel hColor bg|
selectionHiddenLevel == 0 ifTrue:[
- sel := treeView selection.
- (sel size > 1 and:
- [(treeView model list at: sel first) contents view == aComponent])
- ifTrue: [
- hColor := handleMasterColor
- ] ifFalse:[
- bg := aComponent viewBackground.
- bg isColor ifTrue:[
- bg brightness < 0.5 ifTrue:[
- hColor := handleColorWhite
- ] ifFalse:[
- hColor := handleColorBlack
- ]
- ] ifFalse:[
- hColor := handleColorBlack
- ]
- ].
-
- self paint:hColor.
-
- (wasClipped := clipChildren) ifTrue:[
- self clippedByChildren:(clipChildren := false).
- ].
-
- self handlesOf:aComponent do:[:aRectangle :what| |l t w h|
- l := aRectangle left + 1.
- t := aRectangle top + 1.
- w := aRectangle width - 2.
- h := aRectangle height - 2.
-
- what == #view ifTrue:[self displayRectangleX:l y:t width:w height:h]
- ifFalse:[self fillRectangleX:l y:t width:w height:h]
- ].
-
- wasClipped ifTrue:[
- self clippedByChildren:(clipChildren := true).
- ]
+ sel := treeView selection.
+ (sel size > 1 and: [(treeView model list at: sel first) contents view == aComponent])
+ ifTrue: [
+ hColor := handleMasterColor
+ ] ifFalse:[
+ bg := aComponent viewBackground.
+ bg isColor ifTrue:[
+ bg brightness < 0.5 ifTrue:[
+ hColor := handleColorWhite
+ ] ifFalse:[
+ hColor := handleColorBlack
+ ]
+ ] ifFalse:[
+ hColor := handleColorBlack
+ ]
+ ].
+
+ self paint:hColor.
+
+ (wasClipped := clipChildren) ifTrue:[
+ self clippedByChildren:(clipChildren := false).
+ ].
+
+ self handlesOf:aComponent do:[:aRectangle :what|
+ |l t w h|
+
+ l := aRectangle left + 1.
+ t := aRectangle top + 1.
+ w := aRectangle width - 2.
+ h := aRectangle height - 2.
+
+ what == #view ifTrue:[
+ self displayRectangleX:l y:t width:w height:h
+ ] ifFalse:[
+ self fillRectangleX:l y:t width:w height:h
+ ]
+ ].
+
+ wasClipped ifTrue:[
+ self clippedByChildren:(clipChildren := true).
+ ]
]
"Modified: / 6.12.2001 / 00:00:16 / cg"
@@ -2135,9 +2143,12 @@
|view prop|
view := super findObjectAt:aPoint.
+ view isNil ifTrue:[^ nil].
+
"/ stupid check, if I know about this view
prop := self propertyOfView:view.
prop notNil ifTrue:[^ prop view].
+self halt.
^ nil
!
@@ -2367,44 +2378,48 @@
].
"/ remember view<->spec associations to tree
- aBuilder componentCreationHook:[:aView :aSpec :builder|
- |newProperty copyOfSpec nameOfSpec beforeIndex|
-
- (viewPosition notNil and:[aSpecification == aSpec]) ifTrue:[
- subviewToRealize := aView.
-
- [ (subviewToRealize notNil and:[subviewToRealize superView ~~ aFrame]) ] whileTrue:[
- subviewToRealize := subviewToRealize superView.
+ aBuilder
+ componentCreationHook:[:aView :aSpec :builder|
+ |newProperty copyOfSpec nameOfSpec beforeIndex|
+
+ (viewPosition notNil and:[aSpecification == aSpec]) ifTrue:[
+ subviewToRealize := aView.
+
+ [ (subviewToRealize notNil and:[subviewToRealize superView ~~ aFrame]) ] whileTrue:[
+ subviewToRealize := subviewToRealize superView.
+ ].
+ subviewToRealize notNil ifTrue:[
+ beforeIndex := viewPosition.
+ aFrame changeSequenceOrderFor:subviewToRealize to:viewPosition.
+ ].
].
- subviewToRealize notNil ifTrue:[
- beforeIndex := viewPosition.
- aFrame changeSequenceOrderFor:subviewToRealize to:viewPosition.
+
+ newProperty := ViewProperty new.
+ copyOfSpec := aSpec copy.
+ newProperty spec:copyOfSpec.
+ newProperty view:aView.
+
+ "/ break refs to child-specs
+ "/ (not needed, as we keep the child info in the view hierarchy)
+ copyOfSpec class supportsSubComponents ifTrue:[
+ copyOfSpec component:nil
].
+
+ nameOfSpec := copyOfSpec name.
+
+ (nameOfSpec isNil or:[(self propertyOfName:nameOfSpec) notNil]) ifTrue:[
+ copyOfSpec name:(nameOfSpec := self uniqueNameFor:copyOfSpec)
+ ].
+ aView name:nameOfSpec.
+ treeView addProperty:newProperty beforeIndex:beforeIndex.
].
- newProperty := ViewProperty new.
- copyOfSpec := aSpec copy.
- newProperty spec:copyOfSpec.
- newProperty view:aView.
-
- "/ break refs to child-specs
- "/ (not needed, as we keep the child info in the view hierarchy)
- copyOfSpec class supportsSubComponents ifTrue:[
- copyOfSpec component:nil
- ].
-
- nameOfSpec := copyOfSpec name.
-
- (nameOfSpec isNil or:[(self propertyOfName:nameOfSpec) notNil]) ifTrue:[
- copyOfSpec name:(self uniqueNameFor:copyOfSpec)
- ].
- treeView addProperty:newProperty beforeIndex:beforeIndex.
- ].
newView := aSpecification buildViewWithLayoutFor:aBuilder in:aFrame.
subviewToRealize notNil ifTrue:[
subviewToRealize realize.
+ aFrame components notEmptyOrNil ifTrue:[ self halt ].
aFrame subViews from:(viewPosition + 1 ) do:[:v|
v shown ifTrue:[v raise]
].
@@ -2423,6 +2438,7 @@
(mySpec notNil and:[mySpec class supportsSubComponents]) ifTrue:[
(aView subViews notNil) ifTrue:[
+ aView components notEmptyOrNil ifTrue:[ self halt ].
aView subViews do:[:aSubView||spec|
spec := self fullSpecFor:aSubView.
spec notNil ifTrue:[
@@ -2539,28 +2555,28 @@
|props name|
aSpec class == WindowSpec ifTrue:[
- ^ treeView canvasSpec:aSpec
+ ^ treeView canvasSpec:aSpec
].
self singleSelection notNil ifTrue:[
- self withSelectionHiddenDo:[
- self transaction:#specification selectionDo:[:aView|
- props := self propertyOfView:aView.
- name := (aSpec name) withoutSeparators.
-
- name = props name ifFalse:[
- (self propertyOfName:name) notNil ifTrue:[
- name := props name
- ]
- ].
-
- aSpec name:name.
- self createUndoSpecModify:props.
- self rebuildView:aView fromSpec:aSpec withBuilder:nil.
- props spec:(aSpec copy).
- treeView propertyChanged:props.
- ]
- ]
+ self withSelectionHiddenDo:[
+ self transaction:#specification selectionDo:[:aView|
+ props := self propertyOfView:aView.
+ name := (aSpec name) withoutSeparators.
+
+ (name = props name) ifFalse:[
+ (self propertyOfName:name) notNil ifTrue:[
+ name := props name
+ ]
+ ].
+
+ aSpec name:name.
+ self createUndoSpecModify:props.
+ self rebuildView:aView fromSpec:aSpec withBuilder:nil.
+ props spec:(aSpec copy).
+ treeView propertyChanged:props.
+ ]
+ ]
]
"Modified: / 30.10.2001 / 13:59:45 / cg"