[Ipe-discuss] UI-update

Norbert Zeh nzeh at cs.dal.ca
Tue Nov 29 04:50:08 CET 2011

Otfried Cheong [2011.11.29 1100 +0900]:
> On 11/29/2011 02:48 AM, Troels Sørensen wrote:
> > I don't think that the active layer should have any influence on what
> > can be deleted.  Imagine your text-editor saying "You cannot delete this
> > line; that's where your cursor is".  There are two situations to
> > consider here:
> > 1) The layer to be deleted is active in the current view: the user
> > already has focus on the layer-frame, and can see what is going on.
> > 2) The layer to be deleted is active in another view: the user has to
> > change to that view for it to even matter.  It seems unlikely that the
> > user will remember what layer was active on that view, but not be able
> > to remember that it was deleted.
> You make it sound as if the active layer was of no consequence.  Of 
> course the user shouldn't need to remember it - that's what we have the 
> computer for.  But users expect that when they return to a view later 
> and add material to it, it will appear at the right spot in the view 
> sequence.  If you silently change the active layer, you break this behavior.
> I don't see any situation where a user would willingly delete a layer 
> that is active in another view unless they actually intended to delete 
> that view at the same time.  So Ipe could ask "Layer 'beta' is the 
> active layer of view 3, do you wish to delete this view?" - but I doubt 
> anybody would really want to answer "Yes" to this.  The natural response 
> would be to go to view 3 and double-check.  So I think just showing the 
> message "Layer 'beta' is the active layer of view 3 and cannot be 
> deleted" is sufficient.

I tend to disagree.  In all my workflows, the active layer is an inherently
ephemeral concept.  I make sure that, while I'm working on a given page/view,
I'm actually drawing on the correct layer.  Once I'm done working on a given
page/view and switch to a different view, the layer that was active while I was
working on it loses its importance completely.

This may be a consequence of how I use Ipe, usually drawing everything into one
layer initially and then, once everything is laid out right, splitting things
out into separate layers to allow incremental views.

Even in a workflow where one would go back and forth between different views of
the same page frequently (e.g., to move objects between the active layers of
these views), I would of course be pretty annoyed if the active layer changed
while I'm doing this.  Once I'm done with this task, on the other hand, the
active layers for the involved views once again lose their meaning.

More importantly, I think the concept of a layer as a container for a certain
set of objects is more important than the concept of an *active* layer.  Once
the user decides that they really want a given layer, including the objects in
this layer, gone, it does not matter at all any more whether this layer was
active in some view, most likely as a left-over from some previous editing task
in that view.  And once the layer is gone from the view, if the user
subsequently wants to add objects to this view, these objects obviously have to
go into a different layer, so pretty much any layer is fair game as the new
active layer of this view.

Now, as for the ability to delete non-empty layers: in my opinion the right
solution is somewhere in the middle between the two radical opinions you and
Troels expressed.  Allowing the user to delete layers that have objects in them
without warning may be dangerous because this may destroy objects that took
hours to draw.  (This is of course assuming that a deleted layer cannot simply
be restored using an Undo operation.)  On the other hand, a rather natural
workflow is to have one layer as a scratchpad to temporarily hold objects, hold
some shapes to be duplicated and placed on the "real" layers, etc.  Once I'm
done putting the page and all its views together, I may want to get rid of this
scratchpad even if it's non-empty.  Thus, if Undo can fully restore an
accidentally deleted layer, I'm with Troels.  If this is too difficult to
support (e.g., because the Undo object would get excessively large), then I
think the right compromise would be to pop up a warning telling the user they
are about to delete a non-empty layer, an operation which cannot be undone.
They can then choose whether this is really what they intended.


More information about the Ipe-discuss mailing list