Inconsistent behavior in Objects tool: bug or feature?
Scott Wallace
scott.wallace at squeakland.org
Wed Oct 24 21:47:58 UTC 2001
Ned,
If the "systemWindowEmbedOK" preference is set to false, dropping of
windows is different from the dropping of naked morphs, and that's
the distinction you're seeing here.
When "systemWindowEmbedOK" is false, dropping a system window is
*never* interpreted as an attempt to deposit the window *into*
another object. Thus, the logic of seeing whether the putative
container *would accept* the drop is never triggered. In this
regime, all windows belong directly to the World, and all window
drops are always allowed and always result in returning ownership of
the window from the Hand to the World, and what's underneath the
cursor upon drop doesn't come into it.
If, on the other hand, you set "systemWindowEmbedOK" to be true, it
makes a System Window willing to get dropped into any container that
it gets released over and that would have it. So now, if you drop it
over something that rejects attempted drops, the logic to reject the
drop kicks in.
This is all a bit *arcane*, but I would argue that there is a
reasonable consistency to it. In a windowing-on-the-desktop system
(systemWindowEmbedOK = false,) it does not make sense to reject any
window drop, because all window releases drop to the desktop. In a
windows-are-just-like-other-morphs system, it makes sense to accept
or reject window drops just like you accept or reject drops of any
other morphs.
This is all a bit *nasty*, I agree, but we have certain expectations
about "window" dNd that are different from our other dNd
expectations, and it is those windowing expectations that are
serviced when you have that systemWindowEmbedOK preference set to
false.
In practice, I think most uses of morphic are either
more-or-less-purely window-based, or more-or-less-purely naked-morph
based, so the dissonance where the two metaphors clash is
comparatively infrequent.
There, I've now said roughly the same thing enough different ways
that I've *almost* convinced myself that this is reasonable!
-- Scott
PS: To state it yet *another* way: the same "inconsistency" can be
seen in the Mac Finder (for example,) for the same reasons:
If you release a *document icon* over a write-protected folder, the
drop is interpreted as an attempt to place the document into the
folder, and since that attempt is not allowed here, the drop is
actively rejected.
If you release an open *window* over a write-protected folder, the
drop is interpreted as a window positioning that has no implications
for filing, and hence there is no rejection.
At 10:02 AM -0700 10/24/01, Ned Konz wrote:
>Right now, there are two different kinds of behavior in the Objects tool when
>you release an object over the Objects tool itself (like if you just click a
>thumbnail):
>
>* SystemWindow derivatives (like everything in the Tools category) stay where
>you dropped them, on top of the Objects tool.
>
>* Other Morphs slide back to the Objects tool and disappear.
>
>It looks like rejectDroppedMorph: isn't being called for the SystemWindows,
>but I haven't really looked into this.
>
>Is this inconsistent behavior desired?
>
>--
>Ned Konz
More information about the Squeak-dev
mailing list
|