[squeak-dev] The Trunk: Morphic-bf.618.mcz

Chris Muller asqueaker at gmail.com
Sat Apr 14 18:36:54 UTC 2012


Awesome!  Thanks Bert!

On Fri, Apr 13, 2012 at 6:34 PM,  <commits at source.squeak.org> wrote:
> Bert Freudenberg uploaded a new version of Morphic to project The Trunk:
> http://source.squeak.org/trunk/Morphic-bf.618.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-bf.618
> Author: bf
> Time: 13 April 2012, 4:34:16.297 pm
> UUID: 0ab6bc05-3abd-458f-8af2-fc9d6c42d769
> Ancestors: Morphic-eem.617
>
> Fix keyboard filtering in PluggableListMorphOfMany (e.g., the TestRunner's class list)
>
> =============== Diff against Morphic-eem.617 ===============
>
> Item was changed:
>  ----- Method: PluggableListMorph>>update: (in category 'updating') -----
>  update: aSymbol
>        "Refer to the comment in View|update:."
>        aSymbol == getListSelector ifTrue:
>                [ self updateList.
>                ^ self ].
>        aSymbol == getIndexSelector ifTrue:
>                [ | uiIndex modelIndex |
>                uiIndex := self uiIndexFor: (modelIndex := self getCurrentSelectionIndex).
>                self selectionIndex:
>                        (uiIndex = 0
>                                ifTrue:
>                                        [ "The filter is preventing us from selecting the item we want - remove it."
> +                                       (modelIndex > 0 and: [list notNil and: [list size > 0]]) ifTrue: [ self removeFilter ].
> -                                       (list notNil and: [list size > 0]) ifTrue: [ self removeFilter ].
>                                        modelIndex ]
>                                ifFalse: [ uiIndex ]).
>                ^ self ]!
>
> Item was changed:
>  ----- Method: PluggableListMorphOfMany>>itemSelectedAmongMultiple: (in category 'model access') -----
>  itemSelectedAmongMultiple: index
> +       ^self listSelectionAt: (self modelIndexFor: index)!
> -       ^self listSelectionAt: index!
>
> Item was changed:
>  ----- Method: PluggableListMorphOfMany>>mouseDown: (in category 'event handling') -----
>  mouseDown: event
> +       | oldIndex oldVal row index |
> -       | oldIndex oldVal row |
>        event yellowButtonPressed ifTrue: [^ self yellowButtonActivity: event shiftPressed].
>        row := self rowAtLocation: event position.
>
>        row = 0 ifTrue: [^super mouseDown: event].
> +       index := self modelIndexFor: row.
>
>        model okToChange ifFalse: [^ self].  "No change if model is locked"
>
>        "Set meaning for subsequent dragging of selection"
> +       dragOnOrOff := (self listSelectionAt: index) not.
> -       dragOnOrOff := (self listSelectionAt: row) not.
>        oldIndex := self getCurrentSelectionIndex.
>        oldIndex ~= 0 ifTrue: [oldVal := self listSelectionAt: oldIndex].
>
>        "Set or clear new primary selection (listIndex)"
>        dragOnOrOff
> +               ifTrue: [self changeModelSelection: index]
> -               ifTrue: [self changeModelSelection: (self modelIndexFor: row)]
>                ifFalse: [self changeModelSelection: 0].
>
>        "Need to restore the old one, due to how model works, and set new one."
>        oldIndex ~= 0 ifTrue: [self listSelectionAt: oldIndex put: oldVal].
> +       self listSelectionAt: index put: dragOnOrOff.
> -       self listSelectionAt: row put: dragOnOrOff.
>        "event hand releaseMouseFocus: aMorph."
> + !
> -       "aMorph changed"!
>
> Item was changed:
>  ----- Method: PluggableListMorphOfMany>>mouseMove: (in category 'event handling') -----
>  mouseMove: event
>        "The mouse has moved, as characterized by the event provided.  Adjust the scrollbar, and alter the selection as appropriate"
>
> +       | oldIndex oldVal row index |
> -       | oldIndex oldVal row |
>        event position y < self top
>                ifTrue:
>                        [scrollBar scrollUp: 1.
>                        row := self rowAtLocation: scroller topLeft + (1 @ 1)]
>                ifFalse:
>                        [row := event position y > self bottom
>                                ifTrue:
>                                        [scrollBar scrollDown: 1.
>                                        self rowAtLocation: scroller bottomLeft + (1 @ -1)]
>                                ifFalse: [ self rowAtLocation: event position]].
>        row = 0 ifTrue: [^super mouseDown: event].
> +       index := self modelIndexFor: row.
>
>        model okToChange ifFalse: [^self].      "No change if model is locked"
>
>        dragOnOrOff ifNil:
>                        ["Was not set at mouse down, which means the mouse must have gone down in an area where there was no list item"
> +                       dragOnOrOff := (self listSelectionAt: index) not].
> -                       dragOnOrOff := (self listSelectionAt: row) not].
>
>        "Set meaning for subsequent dragging of selection"
>        oldIndex := self getCurrentSelectionIndex.
>        oldIndex ~= 0 ifTrue: [oldVal := self listSelectionAt: oldIndex].
>
>        "Set or clear new primary selection (listIndex)"
>        dragOnOrOff
> +               ifTrue: [self changeModelSelection: index]
> -               ifTrue: [self changeModelSelection: (self modelIndexFor: row)]
>                ifFalse: [self changeModelSelection: 0].
>
>        "Need to restore the old one, due to how model works, and set new one."
>        oldIndex ~= 0 ifTrue: [self listSelectionAt: oldIndex put: oldVal].
> +       self listSelectionAt: index put: dragOnOrOff.
> + !
> -       self listSelectionAt: row put: dragOnOrOff.
> -       row changed!
>
>


More information about the Squeak-dev mailing list