[squeak-dev] The Trunk: Morphic-mt.825.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Apr 6 12:24:11 UTC 2015


Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.825.mcz

==================== Summary ====================

Name: Morphic-mt.825
Author: mt
Time: 6 April 2015, 2:23:39.657 pm
UUID: 689afaee-4732-ab48-8ab8-f950131ccb24
Ancestors: Morphic-mt.824

Soft drop shadows introduced and *disabled* by default. Cache added to shadow drawing (including regular/sharp shadows), which will be updated on extent updates.

This commit also cleans-up some shadow-related code.

Note: This does not change the way hand morphs compute their drop shadows when dragging morphs around! There always have been two seprate concepts for drop shadows.

=============== Diff against Morphic-mt.824 ===============

Item was changed:
  ----- Method: FillInTheBlankMorph>>setDefaultParameters (in category 'initialization') -----
  setDefaultParameters
  	"change the receiver's appareance parameters"
  
  	| colorFromMenu worldColor menuColor |
  
  	colorFromMenu := Preferences menuColorFromWorld
  									and: [Display depth > 4
  									and: [(worldColor := self currentWorld color) isColor]].
  
  	menuColor := colorFromMenu
  						ifTrue: [worldColor luminance > 0.7
  										ifTrue: [worldColor mixed: 0.85 with: Color black]
  										ifFalse: [worldColor mixed: 0.4 with: Color white]]
  						ifFalse: [Preferences menuColor].
  
  	self color: menuColor.
  	self borderWidth: Preferences menuBorderWidth.
  
  	Preferences menuAppearance3d ifTrue: [
  		self borderStyle: BorderStyle thinGray.
+ 		self hasDropShadow: true.
+ 		
+ 		self useSoftDropShadow
+ 			ifFalse: [
+ 				self
+ 					shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
+ 					shadowOffset: 1 @ 1]
+ 			ifTrue: [
+ 				self
+ 					shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.01);
+ 					shadowOffset: (10 at 8 corner: 10 at 12) ]
- 		self
- 			addDropShadow;
- 			shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
- 			shadowOffset: 1 @ 1
  	]
  	ifFalse: [
  		| menuBorderColor |
  		menuBorderColor := colorFromMenu
  										ifTrue: [worldColor muchDarker]
  										ifFalse: [Preferences menuBorderColor].
  		self borderColor: menuBorderColor.
  	].
  
  
  	self layoutInset: 3.
  !

Item was changed:
  ----- Method: MenuMorph>>setDefaultParameters (in category 'initialization') -----
  setDefaultParameters
  	"change the receiver's appareance parameters"
  
  	| colorFromMenu worldColor menuColor |
  	
  	colorFromMenu := Preferences menuColorFromWorld
  									and: [Display depth > 4
  									and: [(worldColor := self currentWorld color) isColor]].
  
  	menuColor := colorFromMenu
  						ifTrue: [worldColor luminance > 0.7
  										ifTrue: [worldColor mixed: 0.85 with: Color black]
  										ifFalse: [worldColor mixed: 0.4 with: Color white]]
  						ifFalse: [Preferences menuColor].
  
  	self color: menuColor.
  	self borderWidth: Preferences menuBorderWidth.
  
  	Preferences menuAppearance3d ifTrue: [
  		self borderStyle: BorderStyle thinGray.
+ 		self hasDropShadow: true.
+ 		
+ 		self useSoftDropShadow
+ 			ifFalse: [
+ 				self
+ 					shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
+ 					shadowOffset: 1 @ 1]
+ 			ifTrue: [
+ 				self
+ 					shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.01);
+ 					shadowOffset: (10 at 8 corner: 10 at 12) ]
- 		self
- 			addDropShadow;
- 			shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
- 			shadowOffset: 1 @ 1
  	]
  	ifFalse: [
  		| menuBorderColor |
  		menuBorderColor := colorFromMenu
  										ifTrue: [worldColor muchDarker]
  										ifFalse: [Preferences menuBorderColor].
  		self borderColor: menuBorderColor.
  	].
  
  
  	self layoutInset: 3.
  !

Item was changed:
  Object subclass: #Morph
  	instanceVariableNames: 'bounds owner submorphs fullBounds color extension'
+ 	classVariableNames: 'PreferredCornerRadius UseSoftDropShadow'
- 	classVariableNames: 'PreferredCornerRadius'
  	poolDictionaries: ''
  	category: 'Morphic-Kernel'!
  
  !Morph commentStamp: 'efc 2/26/2003 20:01' prior: 0!
  A Morph (from the Greek "shape" or "form") is an interactive graphical object. General information on the Morphic system can be found at http://minnow.cc.gatech.edu/squeak/30. 
  
  Morphs exist in a tree, rooted at a World (generally a PasteUpMorph). The morphs owned by a morph are its submorphs. Morphs are drawn recursively; if a Morph has no owner it never gets drawn. To hide a Morph and its submorphs, set its #visible property to false using the #visible: method. 
  
  The World (screen) coordinate system is used for most coordinates, but can be changed if there is a TransformMorph somewhere in the owner chain. 
  
  My instance variables have accessor methods (e.g., #bounds, #bounds:). Most users should use the accessor methods instead of using the instance variables directly.
  
  Structure:
  instance var 	Type 			Description 
  bounds 			Rectangle 		A Rectangle indicating my position and a size that will enclose 									me. 
  owner 			Morph		 	My parent Morph, or nil for the top-level Morph, which is a
   				or nil			world, typically a PasteUpMorph.
  submorphs 		Array 			My child Morphs. 
  fullBounds 		Rectangle 		A Rectangle minimally enclosing me and my submorphs. 
  color 			Color 			My primary color. Subclasses can use this in different ways. 
  extension 		MorphExtension Allows extra properties to be stored without adding a
  				or nil  				storage burden to all morphs. 
  
  By default, Morphs do not position their submorphs. Morphs may position their submorphs directly or use a LayoutPolicy to automatically control their submorph positioning.
  
  Although Morph has some support for BorderStyle, most users should use BorderedMorph if they want borders.!

Item was added:
+ ----- Method: Morph class>>useSoftDropShadow (in category 'preferences') -----
+ useSoftDropShadow
+ 
+ 	<preference: 'Use Soft Drop Shadow'
+ 		categoryList: #(Morphic windows menus performance)
+ 		description: 'If drop shadows are enabled, this preference will switch between hard and soft shadows. Soft shadows are more expensive.'
+ 		type: #Boolean>
+ 	^ UseSoftDropShadow ifNil: [ false ]!

Item was added:
+ ----- Method: Morph class>>useSoftDropShadow: (in category 'preferences') -----
+ useSoftDropShadow: aBoolean
+ 
+ 	UseSoftDropShadow = aBoolean ifTrue: [^ self].
+ 	UseSoftDropShadow := aBoolean.
+ 	
+ 	SystemWindow refreshAllWindows.
+ 	SystemProgressMorph reset.
+ 	TheWorldMainDockingBar updateInstances.!

Item was changed:
  ----- Method: Morph>>addDropShadow (in category 'drop shadows') -----
  addDropShadow
  
- 	self hasDropShadow ifTrue:[^self].
- 	self changed.
  	self hasDropShadow: true.
+ 		
+ 	self useSoftDropShadow
+ 		ifFalse: [
+ 			self
+ 				shadowOffset: 3 at 3;
+ 				shadowColor: (Color black alpha: 0.5)]
+ 		ifTrue: [
+ 			self
+ 				shadowOffset: (10 at 8 corner: 10 at 12);
+ 				shadowColor: (Color black alpha: 0.01)].!
- 	self shadowOffset: 3 at 3.
- 	self layoutChanged.
- 	self changed.!

Item was changed:
  ----- Method: Morph>>drawDropShadowOn: (in category 'drawing') -----
  drawDropShadowOn: aCanvas
+ 	"Rectangular shadow with support for rounded corners."
+ 	
+ 	| shadowBounds |
+ 	shadowBounds := self shadowOffset isRectangle
+ 		ifTrue: [self bounds outsetBy: self shadowOffset]
+ 		ifFalse: [self bounds translateBy: (self shadowOffset negated max: 0 at 0)].
+ 	
+ 	"Only redraw the shadow if the shadow area is affected."
+ 	((aCanvas clipRect intersects: shadowBounds) and: [((self bounds insetBy: (self wantsRoundedCorners ifFalse: [0] ifTrue: [self class preferredCornerRadius])) containsRect: aCanvas clipRect) not])
+ 		ifTrue: [
+ 			(self hasProperty: #dropShadow)
+ 				ifFalse: [self updateDropShadowCache].
+ 			aCanvas
+ 				translucentImage: (self valueOfProperty: #dropShadow)
+ 				at: shadowBounds topLeft].!
- 
- 	aCanvas 
- 		translateBy: self shadowOffset 
- 		during: [ :shadowCanvas |
- 			(shadowCanvas isVisible: self bounds) ifTrue: [
- 				self wantsRoundedCorners
- 					ifTrue: [shadowCanvas fillRoundRect: self bounds radius: self class preferredCornerRadius fillStyle: self shadowColor]
- 					ifFalse: [shadowCanvas fillRectangle: self bounds fillStyle: self shadowColor]]].
- !

Item was changed:
  ----- Method: Morph>>expandFullBoundsForDropShadow: (in category 'drawing') -----
  expandFullBoundsForDropShadow: aRectangle
  	"Return an expanded rectangle for an eventual drop shadow"
  	| delta box |
  
+ 	self shadowOffset isRectangle
+ 		ifTrue: [^ aRectangle outsetBy: self shadowOffset].
+ 
  	box := aRectangle.
  	delta := self shadowOffset.
  	box := delta x >= 0 
  		ifTrue:[box right: aRectangle right + delta x]
  		ifFalse:[box left: aRectangle left + delta x].
  	box := delta y >= 0
  		ifTrue:[box bottom: aRectangle bottom + delta y]
  		ifFalse:[box top: aRectangle top + delta y].
  	^box!

Item was changed:
  ----- Method: Morph>>extent: (in category 'geometry') -----
  extent: aPoint
  
  	(bounds extent closeTo: aPoint) ifTrue: [^ self].
  	self changed.
  	bounds := (bounds topLeft extent: aPoint) rounded.
+ 	self removeProperty: #dropShadow.
  	self layoutChanged.
  	self changed.
  !

Item was changed:
  ----- Method: Morph>>hasDropShadow: (in category 'drop shadows') -----
  hasDropShadow: aBool
+ 
+ 	self hasDropShadow = aBool ifTrue: [^ self].
+ 	self changed.
  	aBool
  		ifTrue:[self setProperty: #hasDropShadow toValue: true]
+ 		ifFalse:[self removeProperty: #hasDropShadow].
+ 		
+ 	self layoutChanged.
+ 	self changed.!
- 		ifFalse:[self removeProperty: #hasDropShadow]!

Item was changed:
  ----- Method: Morph>>shadowColor: (in category 'drop shadows') -----
  shadowColor: aColor
+ 	self shadowColor = aColor ifTrue: [^ self].
+ 	self setProperty: #shadowColor toValue: aColor.
+ 	self removeProperty: #dropShadow.
+ 	self changed.!
- 	self shadowColor = aColor ifFalse:[self changed].
- 	self setProperty: #shadowColor toValue: aColor.!

Item was changed:
  ----- Method: Morph>>shadowOffset: (in category 'drop shadows') -----
  shadowOffset: aPoint
  	"Set the current shadow offset"
  
+ 	self shadowOffset = aPoint ifTrue: [^ self].
+ 	self changed.
+ 
  	(aPoint isNil or: [ aPoint isZero ])
  		ifTrue:[self removeProperty: #shadowOffset]
+ 		ifFalse:[self setProperty: #shadowOffset toValue: aPoint].
+ 
+ 	self layoutChanged.
+ 	self changed.!
- 		ifFalse:[self setProperty: #shadowOffset toValue: aPoint].!

Item was added:
+ ----- Method: Morph>>updateDropShadowCache (in category 'drawing') -----
+ updateDropShadowCache
+ 
+ 	| shadowBounds offset form canvas drawBlock localBounds mask maskCanvas |
+ 	shadowBounds := self shadowOffset isRectangle
+ 		ifTrue: [0 at 0 corner: (self bounds outsetBy: self shadowOffset) extent]
+ 		ifFalse: [0 at 0 corner: self extent + self shadowOffset abs].
+ 	offset := self shadowOffset isRectangle
+ 		ifTrue: [0 at 0]
+ 		ifFalse: [self shadowOffset max: 0 at 0].
+ 	localBounds := self shadowOffset isRectangle
+ 		ifTrue: [self shadowOffset topLeft extent: self extent]
+ 		ifFalse: [(self shadowOffset negated max: 0 at 0) extent: self extent].
+ 		
+ 	form := Form extent: shadowBounds extent depth: Display depth.
+ 	canvas := form getCanvas.
+ 
+ 	drawBlock := self useSoftDropShadow
+ 		ifFalse: [
+ 			[:c | self wantsRoundedCorners
+ 					ifTrue: [c fillRoundRect: localBounds radius: self class preferredCornerRadius fillStyle: self shadowColor]
+ 					ifFalse: [c fillRectangle: localBounds fillStyle: self shadowColor]]]
+ 		ifTrue: [
+ 			[:c | self wantsRoundedCorners
+ 					ifTrue: [0 to: 9 do: [:i |
+ 						c
+ 							fillRoundRect: (shadowBounds insetBy: i)
+ 							radius: (self class preferredCornerRadius max: 20) -i
+ 							fillStyle: (self shadowColor alpha: self shadowColor alpha * (i+1))]]
+ 					ifFalse: [0 to: 9 do: [:i | 
+ 						c
+ 							fillRoundRect: (shadowBounds insetBy: i) radius: 20-i
+ 							fillStyle: (self shadowColor alpha: self shadowColor alpha * (i+1))]]]].
+ 			
+ 	canvas 
+ 		translateBy: offset
+ 		during: [ :shadowCanvas | drawBlock value: shadowCanvas].
+ 
+ 	"Support transparent morph colors without having the shadow to shine through.."
+ 	mask := Form extent: shadowBounds extent depth: Display depth.
+ 	maskCanvas := mask getCanvas.
+ 	self wantsRoundedCorners
+ 		ifTrue: [maskCanvas fillRoundRect: (localBounds insetBy: self borderWidth) radius: self class preferredCornerRadius fillStyle: Color black]
+ 		ifFalse: [maskCanvas fillRectangle: (localBounds insetBy: self borderWidth) fillStyle: Color black].
+ 	mask
+ 		displayOn: form
+ 		at: 0 at 0
+ 		rule: Form erase.
+ 	
+ 	self setProperty: #dropShadow toValue: form.!

Item was added:
+ ----- Method: Morph>>useSoftDropShadow (in category 'drop shadows') -----
+ useSoftDropShadow
+ 
+ 	^ self
+ 		valueOfProperty: #useSoftDropShadow
+ 		ifAbsent: [self class useSoftDropShadow]!

Item was added:
+ ----- Method: Morph>>useSoftDropShadow: (in category 'drop shadows') -----
+ useSoftDropShadow: aBooleanOrNil
+ 
+ 	aBooleanOrNil
+ 		ifNil: [self removeProperty: #useSoftDropShadow]
+ 		ifNotNil: [self setProperty: #useSoftDropShadow toValue: aBooleanOrNil].!

Item was changed:
  ----- Method: SystemProgressMorph>>setDefaultParameters (in category 'initialization') -----
  setDefaultParameters
  	"change the receiver's appareance parameters"
  
  	| colorFromMenu worldColor menuColor |
  
  	colorFromMenu := Preferences menuColorFromWorld
  									and: [Display depth > 4
  									and: [(worldColor := self currentWorld color) isColor]].
  
  	menuColor := colorFromMenu
  						ifTrue: [worldColor luminance > 0.7
  										ifTrue: [worldColor mixed: 0.85 with: Color black]
  										ifFalse: [worldColor mixed: 0.4 with: Color white]]
  						ifFalse: [Preferences menuColor].
  
  	self color: menuColor.
  	
  	MenuMorph roundedMenuCorners
  		ifTrue: [self useRoundedCorners].
  	self borderWidth: Preferences menuBorderWidth.
  
  	Preferences menuAppearance3d ifTrue: [
  		self borderStyle: BorderStyle thinGray.
+ 		self hasDropShadow: true.
+ 		
+ 		self useSoftDropShadow
+ 			ifFalse: [
+ 				self
+ 					shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
+ 					shadowOffset: 1 @ 1]
+ 			ifTrue: [
+ 				self
+ 					shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.01);
+ 					shadowOffset: (10 at 8 corner: 10 at 12) ]
- 		self
- 			addDropShadow;
- 			shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
- 			shadowOffset: 1 @ 1
  	]
  	ifFalse: [
  		| menuBorderColor |
  		menuBorderColor := colorFromMenu
  										ifTrue: [worldColor muchDarker]
  										ifFalse: [Preferences menuBorderColor].
  		self borderColor: menuBorderColor.
  	].
  
  	self
  		updateColor: self
  		color: self color
  		intensity: 1.!

Item was changed:
  ----- Method: SystemWindow class>>refreshAllWindows (in category 'initializing') -----
  refreshAllWindows
  	"If there is some prominent UI change, use this method to update all open windows."
  	
+ 	SystemWindow allSubInstances do: [:w |
+ 		w
+ 			setDefaultParameters;
+ 			refreshWindowColor].!
- 	SystemWindow allSubInstances do: [:w | w refreshWindowColor].!

Item was changed:
  ----- Method: SystemWindow class>>updatePreferences (in category 'initializing') -----
  updatePreferences
  	"Temporary method to update system-wide preferences"
+ 	Preferences installNormalWindowColors.
- 	Preferences setPreference: #defaultWindowColor toValue: (Color veryVeryLightGray muchLighter).
- 	(Preferences preferenceAt: #defaultWindowColor) defaultValue: (Color veryVeryLightGray muchLighter).
  
  	Preferences setPreference: #menuAppearance3d toValue: true.
  	(Preferences preferenceAt: #menuAppearance3d) defaultValue: true.
  
  	Preferences setPreference: #menuColorFromWorld toValue: false.
  	(Preferences preferenceAt: #menuColorFromWorld) defaultValue: false.
  
  	MenuMorph roundedMenuCorners: false.
  
  	Preferences setParameter: #menuColor to: (Color gray: 0.9).
  	Preferences setParameter: #menuTitleColor to: (Color transparent).
  	Preferences setParameter: #menuTitleBorderWidth to: 0.
  	Preferences setParameter: #defaultWorldColor to: (Color gray: 0.25).
  
  	Preferences setPreference: #showSplitterHandles toValue: false.
  	(Preferences preferenceAt: #showSplitterHandles) defaultValue: true.
  
  	Preferences setPreference: #showSharedFlaps toValue: false.
  	(Preferences preferenceAt: #showSharedFlaps) defaultValue: false.
  
- 	Preferences installBrightWindowColors.
- 
  	CornerGripMorph drawCornerResizeHandles: false.
  	FillInTheBlankMorph roundedDialogCorners: true.
  
  	LazyListMorph
  		listSelectionColor: LazyListMorph listSelectionColor;
  		listSelectionTextColor: Color black.
  	PluggableButtonMorph roundedButtonCorners: true.
  	SystemWindow
  		clickOnLabelToEdit: false;
  		doubleClickOnLabelToExpand: true;
  		moveMenuButtonRight: true;
+ 		hideExpandButton: false.!
- 		hideExpandButton: false.
- !

Item was changed:
  ----- Method: SystemWindow>>activateWindow (in category 'top window') -----
  activateWindow
  	"Bring me to the front and make me able to respond to mouse and keyboard.
  	Was #activate (sw 5/18/2001 23:20)"
  
  	| oldTop outerMorph sketchEditor pal |
+ 	self hasDropShadow: Preferences menuAppearance3d.
+ 	
  	outerMorph := self topRendererOrSelf.
  	outerMorph owner ifNil: [^ self "avoid spurious activate when drop in trash"].
  	oldTop := TopWindow.
  	oldTop = self ifTrue: [^self].
  	TopWindow := self.
  	oldTop ifNotNil: [oldTop passivate].
  	outerMorph owner firstSubmorph == outerMorph
  		ifFalse: ["Bring me (with any flex) to the top if not already"
  				outerMorph owner addMorphFront: outerMorph].
  	self submorphsDo: [:m | m unlock].
  
  	label ifNotNil: [label color: Color black].
  
  	self undimWindowButtons.
  	labelArea ifNotNil: [labelArea submorphsDo: [:m | m unlock; show]].
  	self
  		setStripeColorsFrom: self paneColorToUse;
  		adoptPaneColor: self paneColorToUse.
  	
  	self isCollapsed ifFalse:
  		[model modelWakeUpIn: self.
  		self positionSubmorphs.
  		labelArea ifNil: [self adjustBorderUponActivationWhenLabeless]].
  
  	(sketchEditor := self extantSketchEditor) ifNotNil:
  		[sketchEditor comeToFront.
  		(pal := self world findA: PaintBoxMorph) ifNotNil:
  			[pal comeToFront]].
  
  	self updatePaneColors.!

Item was changed:
  ----- Method: SystemWindow>>initialize (in category 'initialization') -----
  initialize
  	"Initialize a system window. Add label, stripes, etc., if desired"
  
  	super initialize.
  
  	self layoutPolicy: ProportionalLayout new.
  
  	self initializeLabelArea.				
  	self addCornerGrips.
+ 	self setDefaultParameters.
  
- 	Preferences menuAppearance3d ifTrue: [
- 		self
- 			addDropShadow;
- 			shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.333);
- 			shadowOffset: 1 at 1].
- 
  	allowReframeHandles := true.
  	isCollapsed := false.
  	activeOnlyOnTop := true.
  	paneMorphs := Array new.
  	mustNotClose := false.
  	updatablePanes := Array new.!

Item was changed:
  ----- Method: SystemWindow>>justDroppedInto:event: (in category 'geometry') -----
  justDroppedInto: aMorph event: anEvent
+ 
+ 	self hasDropShadow: (self isActive and: [Preferences menuAppearance3d]).
+ 
  	isCollapsed
  		ifTrue: [self position: ((self position max: 0 at 0) grid: 8 at 8).
  				collapsedFrame := self bounds]
  		ifFalse: [fullFrame := self bounds.
  				TopWindow ~~ self ifTrue: [self activate]].
  	^super justDroppedInto: aMorph event: anEvent!

Item was changed:
  ----- Method: SystemWindow>>passivate (in category 'top window') -----
  passivate
  	"Make me unable to respond to mouse and keyboard"
  
  	label ifNotNil: [label color: Color darkGray].
  
+ 	self hasDropShadow: false.
  	self paneColorToUseWhenNotActive in: [:c |
  			self
  				setStripeColorsFrom: c;
  				adoptPaneColor: c]. 
  
  	model modelSleep.
  
  	self lockInactivePortions
  !

Item was added:
+ ----- Method: SystemWindow>>setDefaultParameters (in category 'initialization') -----
+ setDefaultParameters
+ 
+ 	Preferences menuAppearance3d ifTrue: [
+ 		self hasDropShadow: self isActive.
+ 		
+ 		self useSoftDropShadow
+ 			ifTrue: [	
+ 				self
+ 					shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.01);
+ 					shadowOffset: (10 at 8 corner: 10 at 12)]
+ 			ifFalse: [
+ 				self
+ 					shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.333);
+ 					shadowOffset: 1 at 1] ].
+ 	self changed.!

Item was changed:
  ----- Method: SystemWindow>>setWindowColor: (in category 'colors handling') -----
  setWindowColor: incomingColor
  	| existingColor aColor |
  	incomingColor ifNil: [^ self].  "it happens"
+ 	aColor := incomingColor.
- 	aColor := incomingColor asNontranslucentColor.
  	(aColor = ColorPickerMorph perniciousBorderColor 
  		or: [aColor = Color black]) ifTrue: [^ self].
  	existingColor := self paneColorToUse.
  	existingColor ifNil: [^ Beeper beep].
  	self paneColor: aColor.
  	self setStripeColorsFrom: aColor.
  	self changed.!

Item was changed:
  ----- Method: SystemWindow>>startDragFromLabel: (in category 'events') -----
  startDragFromLabel: evt
  	"When label events are active, we need to pass dragging to the window explicitely
  	 The window only recognizes a drag with an offset of more than 3 pixels"
  	
  	self isSticky ifTrue: [^ self].
  	self fastFramingOn 
  		ifTrue: [self doFastFrameDrag: evt cursorPoint]
+ 		ifFalse: [
+ 			self hasDropShadow: false.
+ 			evt hand grabMorph: self topRendererOrSelf]
- 		ifFalse: [evt hand grabMorph: self topRendererOrSelf]
  !

Item was changed:
  ----- Method: UserDialogBoxMorph>>initialize (in category 'initialization') -----
  initialize
  
  	| titleRow cc |
  	super initialize.
  	self color: Color white.
  	self listDirection: #topToBottom; wrapCentering: #center;
  		hResizing: #shrinkWrap; vResizing: #shrinkWrap.
  	self layoutInset: -1 @ -1; cellInset: 5 at 5.
  	self borderStyle: BorderStyle thinGray.
+ 	self useRoundedCorners.
+ 	self hasDropShadow: true.
+ 	self useSoftDropShadow
+ 		ifFalse: [
+ 			self
+ 				shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
+ 				shadowOffset: 1 @ 1]
+ 		ifTrue: [
+ 			self
+ 				shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.01);
+ 				shadowOffset: (10 at 8 corner: 10 at 12)].
- 	self
- 		useRoundedCorners;
- 		addDropShadow;
- 		shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
- 		shadowOffset: 1 @ 1.
  
  	cc := Color gray: 0.8.
  	titleRow := AlignmentMorph newRow.
  	titleRow hResizing: #spaceFill; vResizing: #shrinkWrap.
  	titleRow useRoundedCorners.
  	titleRow borderStyle: BorderStyle thinGray.
  	titleRow layoutInset: (2 at 5 corner: (2@ (5 + Morph preferredCornerRadius))).
  	titleRow color: cc.
  	titleRow fillStyle: self titleGradient.
  
  	titleMorph := StringMorph new.
  	titleMorph emphasis: 1.
  	titleRow addMorph: titleMorph.
  	labelMorph := TextMorph new.
  	labelMorph margins: 5 at 5.
  	labelMorph lock.
  	buttonRow := AlignmentMorph newRow vResizing: #shrinkWrap.
  	buttonRow hResizing: #shrinkWrap; layoutInset: 5 at 5; cellInset: 5 at 5.
  	buttonRow color: Color transparent.
  	self 
  		addMorphBack: titleRow ;
  		addMorphBack: labelMorph ;
+ 		addMorphBack: buttonRow.
- 		addMorphBack: buttonRow ;
- 		addDropShadow.
  	keyMap := Dictionary new!



More information about the Squeak-dev mailing list