On Feb 26, 2008, at 2:24 AM, Abdelrazak Younes wrote:

Bennett Helm wrote:
On Feb 25, 2008, at 3:18 PM, Abdelrazak Younes wrote:
Concerning arranging tabs: can't this be done instead by dragging and dropping the tabs -- both to change the order within a window and to move a tab from one window to a different window?

Sure, every thing's possible and drag&drop would be nice. Maybe for 1.7 :-)
In the short term, then, perhaps an alternative would work for you: a new lfun to open the last-closed document. Then you could close a document in one window, switch to another window, and invoke this function. (Perhaps there could be a stack of last- closed documents this would apply to.) That I think is better from a UI model than invisible yet still open documents.

Isn't that what we have already with the "File->Open recent" menu?
...

But it's not an lfun is it? So no quick keybinding (which might be useful)? (I guess I'm forgetting that on Linux/Windows it's standard to access menus with the keyboard. But an lfun bound to <shift>F4, say, would be much faster to do repeatedly than <alt>F R 1 ... or whatever it is, especially if you implemented a last-in first-out stack.)

So you are advocating to not let the user able to effectively close a child buffer if its master is still open? I don't say this is a bad idea but we have to think a bit more about this. Especially since a child document can have multiple master depending on which master is current.
I'm not sure whether we're understanding each other here, so let me try again. My thought is that *users* should understand documents to be either open (and so visible in the UI) or closed (and so not visible). That is, from the user's perspective there shouldn't be a 1/2-way state of being open but invisible. From the *developer's* perspective, however, documents can be in a third state -- "loaded" (as I called it) into memory so that their labels are available for cross-references, etc.

Yes, that's exactly what I understood from you. But you are mixing two things. This third "loaded" state is user oriented; from a developer's perspective a document is opened or it is not. The user will notice that this document is "loaded" because of label, toc, etc.

I guess we're largely in agreement here, just using different language. Nonetheless, I do think the language matters from the user's perspective -- see below.

Now what's the difference between "loaded" and "open but invisible"? -- "Open but invisible" implies a certain status in relation to the user experience. Thus, open but invisible documents can have changes that are unsaved or can be saved in a sessions file; "loaded" documents as I understand them cannot: the user should be completely unaware that a document can be in such an intermediate state, and so its being in that state should have no discernible effects on the user experience. So, I think users should be able to *close* child documents even while the master document is still open; they would remain "loaded" and so in this sense would be available to even multiple master documents that are still open. (This is not quite how you've described my proposal.)

But that's what I understood :-)

OK, I propose then that hidden document are *always* in a saved state. Or at least that we ask the user if he wants to save the about-to-be-hidden document (like a child document).

Yes -- I think this is the important point: hidden docs should be saved. (I'd also say: hidden docs shouldn't affect the sessions file and so shouldn't be automatically opened on a relaunch.) Nonetheless, as I said, I do think the language used in the UI is important here -- and naturally I like my language better. ;)

One key question is: why should it be possible for a user to close a document instead of hiding it? Is there ever going to be a case, for example, when I'd want to close a child document and thereby make it *unavailable* to a still open master document? If not, then I think it makes better sense from the user's perspective not to confuse matters with a distinction that doesn't make a difference, and so we should stick with the language the user already knows: documents are either opened or closed.

Of course, you think the distinction between open and hidden documents makes a difference when it comes to manipulating the arrangement of tabs in open windows. But -- to put it uncharitably -- I don't think we should expect all users to learn a new way to interact with documents just to buy some time for developers to implement a proper solution to the problem of arranging tabs. (I'm putting that uncharitably hoping either to convince you (!) or to demonstrate clearly what my misunderstanding of the usefulness of hidden documents is.)

But imagine that a "loaded" document is changed by an external process, what should we do? Ask the user if he wants to load a document?

Good question. I would say -- in line with my claims about how UI language matters -- that if the user hasn't explicitly opened a document, he or she shouldn't be pestered with questions of whether it should be reloaded or not. Rather, in such a case LyX should always use the most recent saved copy for typesetting and labels.

...
Oh your suggestions make sense, I don't deny that. But I am not sure I want to degrade the advanced user experience because newbies are subject to panic :-)
I agree: we should not degrade user experience for anyone. If my suggestions above wouldn't be satisfactory for advanced users, perhaps it would be possible to have a (hidden?) preference to turn on the "hide document" button. That would give you what you want but also make it hard for novices to encounter a feature that could cause them problems.

Before going the preference way, let's see first if we can compromise on a few items.

How close are we to a compromise? Does the suggestion of an lfun for a last-in first-out stack for opening recent files give you what you want for organizing documents in windows? (Or what am I not understanding?)

...
2. Closing the last window causes LyX to exit. This should not happen on Mac.

This is related to a bugzilla entry about unique instance. How would you exit LyX on Mac.
Only by direct user request: LyX > Quit or <Cmd>Q.

This is not too difficult to achieve but the implication are not obvious for Windows and X11 platforms.
Can't this be done only on Mac?

I'd rather do it on all platforms and provide a setting to switch this feature off. Maybe...

That's fine by me.

Thanks, by the way, for your careful attention to this.

Bennett

Reply via email to