Having played with my proof-of-concept for tab-modal file selection 
(etc.) sheets (CL: <http://codereview.chromium.org/164547>), I think 
it's time for a draft design document. I'd especially appreciate 
feedback from the UI people. Here goes....

Definitions:
A tab-specific dialog box or sheet ("dialog" for short) is a dialog 
which is entirely restricted to a single tab and does not impair the 
function of other tabs. In particular, one can still select or create 
other tabs, and browse "normally" in them. We actually need to 
distinguish between two types of tab-specific dialogs (justification below):
(1) Explicitly user-activated dialogs, such as open/save/print; call 
these (fully) tab-modal dialogs.
(2) Dialogs caused by content, such as download (carpet-bombing) 
blocking/http auth login; call these content-modal dialogs.

Justification for distinction:
Since in case (2) the user did not explicitly choose to have the dialog 
displayed, the user should be able to get rid of it easily, e.g., by 
navigating away or by closing the tab. A risk of not allowing these 
things (navigation or tab closure) while a content-modal dialog is up is 
that a site with nasty contents might be able to constantly cause such 
dialogs to appear, without the user being able to get away from that 
site. In case (1), the user specifically wanted the dialog, and 
shouldn't be able to accidentally navigate away or change the contents 
of the tab under the dialog.

Differences in behaviour between (1) and (2):
(1) A tab-modal dialog impairs all function in its tab until it is 
dismissed. In particular, navigation should be disabled. For example, 
one should not be able to use a bookmark to change the page contents 
while a save or print dialog is up. To indicate that things are 
disabled, the tool/bookmark-bar should appear fully disabled.
(2) A content-modal dialog impairs only interaction with the web 
contents in the tab until it is dismissed (implicit is that it impairs 
saving and printing of the contents of that tab). It can be dismissed by 
navigating to another page, by closing the tab, or in the usual way 
(OK/Cancel/whatever).
We want to play down the differences. The behaviour of either should be 
obvious to the user, and what the user wants and expects.

UI issues/questions:
(a) When a tab-modal dialog is up, should the Page menu still be active? 
(Probably not.) The Wrench menu? (Well, it's in the toolbar, so no. But, 
on Windows and Linux, you don't have a global application menu bar, so 
yes? I've gone with "no" on Mac. Note that if the answer is "yes" for 
the Page menu, then most of its contents would have to be disabled!)
(b) Should a tab-modal (e.g., open/save/print) dialog impair tab 
closure? Since the user chose to do something, probably yes. A different 
answer would be "no" for open, but "yes" for save/print -- but this adds 
complication and breaks consistency.
(c) If "yes" for (b), how should this be indicated to the user? What 
should happen to the tab-close button (on each tab)? Maybe instead of a 
normal hover highlight, the tab-close button should get a red highlight 
or something like that?
(d) If "yes" for (b), what should the behaviour be upon attempted window 
closure? We could disable it completely (ugh -- too mysterious). Better, 
perhaps just select a tab with a tab-modal dialog showing? Which one if 
there are more than one? By z-order (i.e., selected first, then 
left-to-right)? Should it do so before closing any tabs (including the 
ones which can be closed), or should it close some/all of the tabs which 
can be closed?
(e) (Mac) Where should a tab-modal sheet hang from? The bottom of the 
tool/bookmark-bar? This is aesthetically right, and should be okay since 
we visually indicate that the toolbar is disabled. [N.B. Not yet 
implemented.]

Probably, there were other things, but I don't remember right now.

- Trung

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: [email protected] 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to