the end of smartInspect

Scott Wallace Scott.Wallace at disney.com
Fri Jan 14 23:04:15 UTC 2000


I'm happy to announce the death of the much-criticized "smartInspect" feature.

The motivation behind "smartInspect" is illustrated by the following scenario:

You're in an inspector, and in its inspect-list you've selected an 
item whose value is a one-element array.   You want to get your hands 
on that lone element.

Classic Smalltalk inspector logic requires that you go through the 
intermediate step of getting an inspector for the array object, and 
only from that intermediate inspector can you then get the inspector 
on the value you're really interested in.  Thus, you double the 
number of windows involved and the number of menu "inspect" requests.

The "smartInspect" logic collapsed those steps, so that when, in an 
inspector, you asked to inspect a one-element collection, you went 
straight to an inspector on that single element, skipping the 
intermediate step.

However, as Bert Freudenberg and Bob Arning and others have pointed 
out more than once, the naive logic of #smartInspect could get in the 
way -- and sometimes could be downright wrong -- when the collection 
being looked at is, for example, a String consisting of one 
character, or a Semaphore.

And others will argue, with undeniable merit and virtue, that they'd 
prefer to have absolute consistency rather than put up with anything 
that tries to streamline their workflow by being "smart".
 
So I now offer -- in two updates to 2.8a which should find their way 
into the external update stream soon enough (#1786 "listDblClick" and 
#1788 "inspectElement") -- the following remedies for this situation:

(1)  The "inspect" menu item in an inspector will now always trigger 
a plain inspect, never a "smartInspect".  The #smartInspect selector 
is everywhere removed.

(2)  When the selection in an inspect-list is a suitable kind of 
Collection, a new item, "inspect element...", will now appear in the 
inspect-list menu, which allows you to inspect any chosen element of 
the collection without needing first to open an intermediate 
inspector on the collection object itself.  The interaction here 
strives to be accommodating:
   [a]  If the selection has only one element, that lone element is inspected.
   [b]  If the selection has a small number of elements, a simple pop-up of the
           potential indices is presented, inviting you to choose
           which element to inspect.
   [c]  If the selection has many elements, you are prompted for the
           index of the element you wish to inspect, which you must type in.

(3)  A quick double-click on an item in an inspect-list will now 
launch an inspector on that item.  This is a feature long requested 
by Chris Norton and others, and was one of the more beloved features 
of old Digitalk Smalltalk/V.  The implementation here is based on 
code sent around by Bob Arning a couple of months ago.  This new 
feature reduces the pain involved in opening longer chains of 
inspectors, because you won't need to fish for "inspect" items in 
menus.

The first two changes apply equally to morphic and to mvc, but the 
double-click-to-inspect feature is strictly morphic.

   -- Scott


At 1:53 PM +0100 1/14/00, Bert Freudenberg wrote:
>On Fri, 14 Jan 2000, Stephane Ducasse wrote:
>
> > when I inspected #(-) the element is a Character !!!!!!!
> > I checked #(a) is not an array with the symbol #a but the character a
>
>It's not. Sadly enough, but you're not the first one biten by
>smartInspect.
>...
>Yes, we definetly need to get rid of smartInspect - we need to be able to
>trust inspectors.
>
>HTH,
>
>  -Bert-





More information about the Squeak-dev mailing list