The Trunk: Morphic-mt.766.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Morphic-mt.766.mcz

commits-2
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."'!