[squeak-dev] The Inbox: Morphic-klc.1297.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Mar 11 08:38:02 UTC 2017
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-klc.1297.mcz
==================== Summary ====================
Name: Morphic-klc.1297
Author: klc
Time: 11 March 2017, 2:37:49.702033 am
UUID: d85f7001-40cf-9a47-8b99-e0905a154364
Ancestors: Morphic-mt.1296
Update Swiki link to point to current site in class comment.
=============== Diff against Morphic-mt.1296 ===============
Item was changed:
Object subclass: #Morph
instanceVariableNames: 'bounds owner submorphs fullBounds color extension'
classVariableNames: 'IndicateKeyboardFocus PreferredCornerRadius UseSoftDropShadow'
poolDictionaries: ''
category: 'Morphic-Kernel'!
+ !Morph commentStamp: 'KLC 3/10/2017 15:50' 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://wiki.squeak.org/squeak/30.
- !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 changed:
----- Method: ScrollBar>>scrollPageInit: (in category 'scrolling') -----
scrollPageInit: evt
evt redButtonPressed ifFalse: [^ self].
self resetTimer.
self setNextDirectionFromEvent: evt.
self scrollBarAction: #doScrollByPage.
self startStepping.!
Item was changed:
----- Method: TheWorldMainDockingBar>>listWindowsOn: (in category 'submenu - windows') -----
listWindowsOn: menu
| windows |
windows := self allVisibleWindows sorted: [:winA :winB |
((winA model isNil or: [winB model isNil]) or: [winA model name = winB model name])
ifTrue: [winA label < winB label]
ifFalse: [winA model name < winB model name]].
windows ifEmpty: [
menu addItem: [ :item |
item
contents: 'No Windows' translated;
isEnabled: false ] ].
windows do: [ :each |
menu addItem: [ :item |
item
contents: (self windowMenuItemLabelFor: each);
+ icon: ((each model respondsTo: #windowColorToUse)
+ ifTrue: [self colorIcon: each model windowColorToUse]
+ ifFalse: [self colorIcon: each color]);
- icon: (each model ifNotNil: [self colorIcon: each model windowColorToUse]);
target: each;
selector: #comeToFront;
subMenuUpdater: self
selector: #windowMenuFor:on:
arguments: { each };
action: [ each beKeyWindow; expand ] ] ].
menu
addLine;
add: 'Close all windows' target: self selector: #closeAllWindowsUnsafe;
addItem: [:item | item
contents: 'Close all windows without changes';
target: self;
icon: MenuIcons smallBroomIcon;
selector: #closeAllWindows];
add: 'Close all windows but workspaces' target: self selector: #closeAllWindowsButWorkspaces.!
More information about the Squeak-dev
mailing list
|