The Trunk: Morphic-mt.1275.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.1275.mcz

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

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

Name: Morphic-mt.1275
Author: mt
Time: 13 August 2016, 1:53:31.042735 pm
UUID: a619070a-afa4-844f-b11f-27b54d59c771
Ancestors: Morphic-mt.1274

Due to the previous fix, restore the original keyboard focus again when dismissing the pop-up menu.

=============== Diff against Morphic-mt.1274 ===============

Item was changed:
  Morph subclass: #MenuMorph
+ instanceVariableNames: 'defaultTarget selectedItem stayUp popUpOwner activeSubMenu originalFocusHolder'
- instanceVariableNames: 'defaultTarget selectedItem stayUp popUpOwner activeSubMenu'
  classVariableNames: 'CloseBoxImage CloseBoxImageFlat CloseBoxImageGradient GradientMenu MenuBorderColor MenuBorderWidth MenuColor MenuLineColor MenuSelectionColor MenuTitleBorderColor MenuTitleBorderWidth MenuTitleColor PushPinImage RoundedMenuCorners'
  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>>deactivate: (in category 'events') -----
  deactivate: evt
 
  "If a stand-alone menu, just delete it"
  popUpOwner ifNil: [
+ self deleteIfPopUp: evt.
- self delete.
  ^true ].
  "If a sub-menu, then deselect, and return focus to outer menu"
  self selectItem: nil event: evt.
  evt hand newMouseFocus: popUpOwner owner.
  evt hand newKeyboardFocus: popUpOwner owner!

Item was changed:
  ----- Method: MenuMorph>>deleteIfPopUp: (in category 'control') -----
  deleteIfPopUp: evt
  "Remove this menu from the screen if stayUp is not true. If it is a submenu, also remove its owning menu."
 
  stayUp ifFalse: [self topRendererOrSelf delete].
  (popUpOwner notNil) ifTrue: [
  popUpOwner isSelected: false.
  popUpOwner deleteIfPopUp: evt].
+ evt ifNotNil: [
+ evt hand releaseMouseFocus: self.
+ originalFocusHolder ifNotNil: [
+ evt hand newKeyboardFocus: originalFocusHolder.
+ originalFocusHolder := nil]].!
- evt ifNotNil:[evt hand releaseMouseFocus: self].!

Item was changed:
  ----- Method: MenuMorph>>popUpAt:forHand:in:allowKeyboard: (in category 'control') -----
  popUpAt: aPoint forHand: hand in: aWorld allowKeyboard: aBoolean
  "Present this menu at the given point under control of the given
  hand."
  | evt |
  aWorld submorphs
  select: [:each | (each isKindOf: MenuMorph)
  and: [each stayUp not]]
  thenCollect: [:menu | menu delete].
  self items isEmpty
  ifTrue: [^ self].
  MenuIcons decorateMenu: self.
  (self submorphs
  select: [:m | m isKindOf: UpdatingMenuItemMorph])
  do: [:m | m updateContents].
  "precompute width"
  self
  positionAt: aPoint
  relativeTo: (selectedItem
  ifNil: [self items first])
  inWorld: aWorld.
  aWorld addMorphFront: self.
  "Acquire focus for valid pop up behavior"
  hand newMouseFocus: self.
  aBoolean
+ ifTrue: [
+ originalFocusHolder := hand keyboardFocus.
+ hand newKeyboardFocus: self.
- ifTrue: [hand newKeyboardFocus: self.
  self showKeyboardHelp].
  evt := hand lastEvent.
  (evt isKeyboard
  or: [evt isMouse
  and: [evt anyButtonPressed not]])
  ifTrue: ["Select first item if button not down"
  self moveSelectionDown: 1 event: evt
  "Select first item if button not down"].
  self updateColor.
  self changed!

Item was changed:
  ----- Method: MenuMorph>>stayUp: (in category 'accessing') -----
  stayUp: aBoolean
 
  stayUp := aBoolean.
+ aBoolean ifTrue: [ self removeStayUpBox ].
+ originalFocusHolder := nil. "Not needed anymore."!
- aBoolean ifTrue: [ self removeStayUpBox ].!