[squeak-dev] Case sensitive "source with it" works in MVC but not in Morphic, what to do?

David T. Lewis lewis at mail.msen.com
Mon May 13 14:36:02 UTC 2013


On Mon, May 13, 2013 at 12:42:19PM +0200, Bert Freudenberg wrote:
> 
> On 2013-05-13, at 02:48, David T. Lewis <lewis at mail.msen.com> wrote:
> 
> > On Fri, May 10, 2013 at 09:38:28AM -0400, Bob Arning wrote:
> >> Maybe, but what's happening here is in MenuItemMorph:
> >> 
> >> mouseDown: evt
> >>    "Handle a mouse down event. Menu items get activated when the mouse 
> >> is over them."
> >> 
> >>    evt shiftPressed ifTrue: [ ^super mouseDown: evt ].  "enable label 
> >> editing"
> >>    evt hand newMouseFocus: owner. "Redirect to menu for valid transitions"
> >>    owner selectItem: self event: evt
> >> 
> >> I see this code as far back as squeak 3.2 with a 10/10/2000 date and 
> >> Andreas's initials. If you comment out the first line, you get the 
> >> behavior David was looking for. It would be interesting to know who 
> >> might be using this feature.
> >> 
> >> Cheers,
> >> Bob
> > 
> > Aha! I suspect that no one is using that feature at all.
> 
> I use it: shift-click followed by CMD-E is the quickest way to look at the implementation behind a menu item. OTOH, a morphic halo menu entry might be more appropriate for that function.
> 

I see no straightforward way to eliminate the conflict between conflict
between usage of shift state for Morphic, versus usage of shift state to
control case sensitive search.

Adding menu items for the case sensitive searching works fine, though I'm
afraid that it would make the menus too cluttered. Basically it would
change menus from this:

    #-.
    {'selectors containing it (W)' translated.    #methodNamesContainingIt}.
    {'method strings with it (E)' translated.     #methodStringsContainingit}.
    {'method source with it' translated.          #methodSourceContainingIt}.
    {'class names containing it' translated.      #classNamesContainingIt}.
    {'class comments with it' translated.         #classCommentsContainingIt}.
    {'change sets with it' translated.            #browseChangeSetsWithSelector}.
    #-.

to something that might look more like this:

    #-.
    {'selectors containing it (W)' translated.    #methodNamesContainingIt}.
    {'method strings with it' translated.         #methodStringsContainingit}.
    {'method strings with it matching case (E)' translated.  #methodStringsMatchCaseContainingit}.
    {'method source with it' translated.          #methodSourceContainingIt}.
    {'method source with it matching case' translated.        #methodSourceMatchCaseContainingIt}.
    {'class names containing it' translated.      #classNamesContainingIt}.
    {'class comments with it' translated.         #classCommentsContainingIt}.
    {'class comments with it matching case' translated.       #classCommentsMatchCaseContainingIt}.
    {'change sets with it' translated.            #browseChangeSetsWithSelectorMatchingCase}.
    #-.

So maybe a different approach is better. Perhaps we could leave menus and
shift key handling as they are, and accept the conflict in Morphic, but add
some additional hot key support. Currently <alt>E will invoke case-sensitive
"method strings with it". We could add definitions for other functions, such as:

    <alt>E => case-sensitive method strings with it
    <alt>e => non-case-sensitive method strings with it
    <alt>S => case-sensitive method source with it
    <alt>s => non-case-sensitive method source with it

and the menu might look like this:

    #-.
    {'selectors containing it (W)' translated.      #methodNamesContainingIt}.
    {'method strings with it (e) (E) ' translated.  #methodStringsContainingit}.
    {'method source with it (s) (S)' translated.    #methodSourceContainingIt}.
    {'class names containing it' translated.        #classNamesContainingIt}.
    {'class comments with it' translated.           #classCommentsContainingIt}.
    {'change sets with it' translated.              #browseChangeSetsWithSelectorMatchingCase}.
    #-.

Just a thought.

Dave

 


More information about the Squeak-dev mailing list