Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.766.mcz ==================== Summary ==================== Name: Morphic-mt.766 Author: mt Time: 27 February 2015, 2:05:26.066 pm UUID: 1c861e43-3cbf-2649-bd3e-22d1d3d88803 Ancestors: Morphic-mt.765 Several cosmetic fixes considering dockingbar morphs and menu morphs. #roundedMenuCorners is now a pragma-style preference. Several magic numbers could be removed. =============== Diff against Morphic-mt.765 =============== Item was changed: ----- Method: DockingBarItemMorph>>adjacentTo (in category 'selecting') ----- adjacentTo + + | roundedCornersOffset | + roundedCornersOffset := MenuMorph roundedMenuCorners + ifTrue: [Morph preferredCornerRadius negated] + ifFalse: [0]. + - owner isFloating + ifTrue: [^ {self bounds bottomLeft + (roundedCornersOffset @ 4)}]. - ifTrue: [^ {self bounds bottomLeft + (4 @ 4)}]. owner isAdheringToTop + ifTrue: [^ {self bounds bottomLeft + (roundedCornersOffset @ 4)}]. - ifTrue: [^ {self bounds bottomLeft + (4 @ 4)}]. owner isAdheringToLeft + ifTrue: [^ {self bounds topRight + (roundedCornersOffset @ 4)}]. - ifTrue: [^ {self bounds topRight + (4 @ 4)}]. owner isAdheringToBottom + ifTrue: [^ {self bounds topLeft + (roundedCornersOffset @ 4)}]. - ifTrue: [^ {self bounds topLeft + (4 @ 4)}]. owner isAdheringToRight + ifTrue: [^ {self bounds topLeft + (roundedCornersOffset @ -4)}]. + ^ {self bounds bottomLeft + (roundedCornersOffset @ 5)}! - ifTrue: [^ {self bounds topLeft + (4 @ -4)}]. - ^ {self bounds bottomLeft + (3 @ 5)}! Item was changed: ----- Method: DockingBarMorph>>activeSubmenu: (in category 'control') ----- activeSubmenu: aSubmenu activeSubMenu isNil ifFalse: [activeSubMenu delete]. activeSubMenu := aSubmenu. aSubmenu isNil ifTrue: [^ self]. activeSubMenu updateMenu. activeSubMenu selectItem: nil event: nil. MenuIcons decorateMenu: activeSubMenu. activeSubMenu activatedFromDockingBar: self; - borderColor: self borderColor; beSticky; resistsRemoval: true; removeMatchString! Item was changed: ----- Method: DockingBarMorph>>updateColor (in category 'private - layout') ----- updateColor "private - update the receiver's color" | fill | + self autoGradient ifFalse: [ + self color ~= originalColor ifTrue: [self color: originalColor]. + ^ self]. - self autoGradient - ifFalse: [^ self]. "" fill := GradientFillStyle ramp: self gradientRamp. "" fill origin: self topLeft. self isVertical ifTrue: [fill direction: self width @ 0] ifFalse: [fill direction: 0 @ self height]. "" self fillStyle: fill! Item was changed: ----- Method: MenuItemMorph>>adjacentTo (in category 'selecting') ----- adjacentTo + ^{ self outerBounds topRight. self bounds topLeft }! - ^{ self bounds topRight + (10 @ 0). self bounds topLeft }! Item was changed: AlignmentMorph subclass: #MenuMorph instanceVariableNames: 'defaultTarget selectedItem stayUp popUpOwner activeSubMenu' + classVariableNames: 'CloseBoxImage GradientMenu PushPinImage RoundedMenuCorners' - classVariableNames: 'CloseBoxImage GradientMenu PushPinImage' poolDictionaries: '' category: 'Morphic-Menus'! !MenuMorph commentStamp: '<historical>' prior: 0! Instance variables: defaultTarget <Object> The default target for creating menu items selectedItem <MenuItemMorph> The currently selected item in the receiver stayUp <Boolean> True if the receiver should stay up after clicks popUpOwner <MenuItemMorph> The menu item that automatically invoked the receiver, if any. activeSubMenu <MenuMorph> The currently active submenu.! Item was changed: ----- Method: MenuMorph class>>gradientMenu: (in category 'preferences') ----- gradientMenu: aBoolean GradientMenu := aBoolean. + SystemProgressMorph reset. + + "Update docking bars and their sub-menus." + ActiveWorld mainDockingBars do: [:bar | + bar + autoGradient: aBoolean; + updateColor]. + TheWorldMainDockingBar updateInstances.! - SystemProgressMorph reset.! Item was added: + ----- Method: MenuMorph class>>roundedMenuCorners (in category 'preferences') ----- + roundedMenuCorners + + <preference: 'roundedMenuCorners' + category: #menus + description: 'Whether morphic menus should have rounded corners.' + type: #Boolean> + ^ RoundedMenuCorners ifNil: [true]! Item was added: + ----- Method: MenuMorph class>>roundedMenuCorners: (in category 'preferences') ----- + roundedMenuCorners: aBoolean + + RoundedMenuCorners := aBoolean. + SystemProgressMorph reset. + TheWorldMainDockingBar updateInstances.! Item was changed: ----- Method: MenuMorph>>addStayUpIcons (in category 'construction') ----- addStayUpIcons | title closeBox pinBox titleBarArea titleString | title := submorphs detect: [:ea | ea hasProperty: #titleString] ifNone: [self setProperty: #needsTitlebarWidgets toValue: true. ^ self]. closeBox := SystemWindowButton new target: self; actionSelector: #delete; labelGraphic: self class closeBoxImage; color: Color transparent; extent: 14 @ 16; borderWidth: 0. pinBox := SystemWindowButton new target: self; actionSelector: #stayUp:; arguments: {true}; labelGraphic: self class pushPinImage; color: Color transparent; extent: 16 @ 16; borderWidth: 0. Preferences noviceMode ifTrue: [closeBox setBalloonText: 'close this menu'. pinBox setBalloonText: 'keep this menu up']. titleBarArea := AlignmentMorph newRow vResizing: #shrinkWrap; layoutInset: 3; color: Preferences menuTitleColor; addMorphBack: closeBox; addMorphBack: title; addMorphBack: pinBox. title color: Color transparent. titleString := title findDeepSubmorphThat: [:each | each respondsTo: #font: ] ifAbsent: [StringMorph contents: String empty]. titleString font: Preferences windowTitleFont. + self wantsRoundedCorners - Preferences roundedMenuCorners ifTrue: [titleBarArea useRoundedCorners]. self addMorphFront: titleBarArea. titleBarArea setProperty: #titleString toValue: (title valueOfProperty: #titleString). title removeProperty: #titleString. self setProperty: #hasTitlebarWidgets toValue: true. self removeProperty: #needsTitlebarWidgets. self removeStayUpItems! Item was changed: ----- Method: MenuMorph>>initialize (in category 'initialization') ----- initialize super initialize. bounds := 0 @ 0 corner: 40 @ 10. self setDefaultParameters. self listDirection: #topToBottom. self hResizing: #shrinkWrap. self vResizing: #shrinkWrap. defaultTarget := nil. selectedItem := nil. stayUp := false. + popUpOwner := nil.! - popUpOwner := nil. - - Preferences roundedMenuCorners - ifTrue: [self useRoundedCorners]. - ! Item was changed: ----- Method: MenuMorph>>popUpAdjacentTo:forHand:from: (in category 'control') ----- popUpAdjacentTo: rightOrLeftPoint forHand: hand from: sourceItem + "Present this menu at the given point under control of the given hand." + + | tryToPlace selectedOffset rightPoint leftPoint | - "Present this menu at the given point under control of the given - hand." - | tryToPlace selectedOffset | hand world startSteppingSubmorphsOf: self. popUpOwner := sourceItem. + self fullBounds. + self updateColor. + - self updateColor. "ensure layout is current" selectedOffset := (selectedItem ifNil: [self items first]) position - self position. tryToPlace := [:where :mustFit | | delta | self position: where - selectedOffset. delta := self fullBoundsInWorld amountToTranslateWithin: sourceItem worldBounds. (delta x = 0 or: [mustFit]) ifTrue: [delta = (0 @ 0) ifFalse: [self position: self position + delta]. sourceItem owner owner addMorphFront: self. ^ self]]. + rightPoint := rightOrLeftPoint first + ((self layoutInset + self borderWidth) @ 0). + leftPoint := rightOrLeftPoint last - ((self layoutInset + self borderWidth + self width) @ 0). + tryToPlace + value: rightPoint value: false; + value: leftPoint value: false; + value: rightPoint value: true.! - tryToPlace value: rightOrLeftPoint first value: false; - value: rightOrLeftPoint last - (self width @ 0) value: false; - value: rightOrLeftPoint first value: true! Item was changed: ----- Method: MenuMorph>>setTitleParametersFor: (in category 'initialization') ----- setTitleParametersFor: aMenuTitle | menuTitleColor menuTitleBorderColor | + self wantsRoundedCorners - Preferences roundedMenuCorners ifTrue: [aMenuTitle useRoundedCorners]. menuTitleColor := Preferences menuColorFromWorld ifTrue: [self color darker] ifFalse: [Preferences menuTitleColor]. menuTitleBorderColor := Preferences menuAppearance3d ifTrue: [#inset] ifFalse: [Preferences menuColorFromWorld ifTrue: [self color darker muchDarker] ifFalse: [Preferences menuTitleBorderColor]]. aMenuTitle setColor: menuTitleColor borderWidth: Preferences menuTitleBorderWidth borderColor: menuTitleBorderColor; vResizing: #shrinkWrap; wrapCentering: #center; cellPositioning: #topCenter; layoutInset: 0. ! Item was added: + ----- Method: MenuMorph>>wantsRoundedCorners (in category 'rounding') ----- + wantsRoundedCorners + + ^ self class roundedMenuCorners or: [super wantsRoundedCorners]! 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 - Preferences roundedMenuCorners ifTrue: [self useRoundedCorners]. self borderWidth: Preferences menuBorderWidth. Preferences menuAppearance3d ifTrue: [ self borderStyle: BorderStyle thinGray. 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>>updatePreferences (in category 'initializing') ----- updatePreferences "Temporary method to update system-wide preferences" 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 setPreference: #roundedMenuCorners toValue: false. - (Preferences preferenceAt: #roundedMenuCorners) defaultValue: 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. ! Item was changed: ----- Method: TheWorldMainDockingBar>>createDockingBar (in category 'construction') ----- createDockingBar "Create a docking bar from the receiver's representation" | dockingBar | dockingBar := DockingBarMorph new adhereToTop; color: Preferences menuColor; gradientRamp: self gradientRamp; + autoGradient: MenuMorph gradientMenu; - autoGradient: ColorTheme current dockingBarAutoGradient; borderWidth: 0. self fillDockingBar: dockingBar. self labelIfNeeded: dockingBar. ^ dockingBar! Item was changed: (PackageInfo named: 'Morphic') postscript: '(Preferences dictionaryOfPreferences at: #alternativeWindowBoxesLook) defaultValue: false. "Force SystemProgressMorph to be reset" SystemProgressMorph initialize; reset. "Initialize the key bindings and menus" Editor initialize. "Retain scrollBar look now that the pref actually does something" Preferences enable: #gradientScrollBars. "apply the new icons" MenuIcons initializeIcons. TheWorldMainDockingBar updateInstances. "Cleanup old-style preferences here. Remove before new release." + Preferences removePreference: #gradientMenu. "Now in MenuMorph." + Preferences removePreference: #roundedMenuCorners. "Now in MenuMorph."'! - Preferences removePreference: #gradientMenu. "Now in MenuMorph."'! |
Free forum by Nabble | Edit this page |