This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
The new windowing specification does not talk about closing tabs via keyboard shorts. The editor's behavior is: CTRL-F4
Sorry, submitted too early. Repeating: dev build 200312151900 The new windowing specification does not talk about closing tabs via keyboard shortcuts. The editor's behavior is: CTRL-F4: closes the current tab or, if no tabs remain, closes the current window I like this behavior as it is consistent with the old windowing system's UI (easy to remember shortcut). The problem is that the VCS, OUTPUT WINDOW systems do not make use of this scheme. For them, CTRL-F4 closes the current window regardless of the number of open tabs and there is no keyboard shortcut for closing those tabs (as far as I know). I propose we modify the current windowing specification to state: CTRL-F4: closes the current tab or, if no tabs remain, closes the current window.
Correction: I meant to say, CTRL-F4: closes the current tab *and* if the last tab is closed, the window it closed as well.
It is by design. Output view TopComponent has inner tabs which are not tabs of window system (like editor tabs in source editor). Assigning to Jano to define proper shortcut to close inner tab in Output view. See also issue #37288 where it is mentioned too (but it is different issue so I keep this issue for missing kb shortcut).
FWIW I also feel that Ctrl-F4 should close the current tab, not hide the whole window. It may be "as designed" but the design only makes sense to the implementor of the window system. As a user it is very confusing why some tabs behave one way and other behave completely differently. See also issue #37323.
I (obviously) agree with Jesse. Marek, this problem is not specific to the Output View. <my 2 cents> We need to modify the windowing specification such that the same keyboard shortcut can be used to close tabs no matter where they show up. Output Window, VCS Window, Explorer and other windows all have tabs and the end-user expecs them all to behave the same way. The old behavior was consistent with Windows, OS/2 and I believe also Linux keyboard shortcuts. I see no reason to change it. </my 2 cents>
Jano this should be solved somehow soon. So I increase priority to P2. As you can see this design creates confusion among users. They feel that inner tabs of Output view are part of winsys and that they should behave the same way as winsys tabs do.
Of course it should be mentioned on nbui to see what others think... preferably people who have not read the winsys design document. :-)
Any movement on this issue? It's been a month since we last heard anything. BTW: I had brought up the issue of closing tabs using CTRL-F4 on nbui a while back but no one replied.
This is a bit complicated issue. The new windowing system design considers everything inside a window to be out of winsys scope. This is the case of output tabs and that is why Ctrl-F4 doesn't work there as you would expect. I admit that maybe it was not the correct design decision, mostly because currently we have two windows containing nested tabs - Output and VCS Output, and in the future we might have Refactoring window with nested tabs and maybe more. (the nested tabs might turn out to be a special UI pattern used in our IDE) For NB 3.6, I would focus on solving acessibility issue which means defining a special shortcut which would close the output tab. Trying to go with other solution affecting the behavior of main menu items (like Close Window) might be risky. I propose following shortcuts for Output window and VCS Output window actions: ------ Discard Output Tab [Ctrl-Delete] Discard All Output Tabs [Ctrl-Shift-Delete] ------
Jan, I think using any other shortcut keys is a waste of time when we already know what shortcut keys the user expects to use. This is a big usability problem many users will complain about so lets just fix it right. I understand it would require us to modify the behavior of CLOSE WINDOW but frankly most users don't know or care about "close window". To them, a tab *is* a window. They want Netbeans to behave like any other native application on their system and native applications all use CTRL-F4 to close tabs.
Passing back to Jano - I don't know how to handle such contradictions. Everything looks soooo easy from outside internet. Jano, I did tell you that inner tabs must look completely different then other tabs, or users will complain as always :-(
David, Please elaborate for my sake: what are inner tabs and why do they require different behavior from normal tabs?
Because inner tabs *really are* something completely different even from user perspective. They can't be dragged out, dropped in, they don't have menu actions for opening, they can't fly separate in SDI, they are not selectible using Documents dialog, Ctrl+Tab etc. In short, they are private, unique things that belong to output window only and never elsewhere. Unfortunately, they look similar as regular tabs, so users are tempted to think that the same set of actions could apply. I think correct solution would be to differentiate inner tabs even more visually (to be clear that there are serious behavioral differencies) and yes, provide Ctrl+F4 as their closing mechanism. However, how will we differentiate non-closable inner tabs such as form palette items, in future nested editor tabs etc.????
David, I think that in the case where you have non-closable inner tabs.. well.. you shouldn't have any. Can't you find a reasonable behavior for what happens when someone closes the form tab? Previous behavior would close the form + source code tabs together if either one was closed. I understand your concern regarding not allowing inner tabs to be dragged around; although I wonder: why not? What do we actually gain by restricting the user from doing this? I think that whomever implied that all tabs should be "selectible using Documents dialog, Ctrl+Tab etc" made a design-level mistake. In my eyes, as a developer as well as a user, winsys should dictate the behavior of *all* tabs (CTRL-F4, dragable, etc) however specific instances of tabs (editor tabs, output-window tabs) may extend upon this basic behavior and add things like showing up in CTRL-TAB, document listing, etc.
Gili, I tried to offer some explanation, but apparently this raised only more questions, so I give up, as this is wasted time, I'm not able to explain things better anyway. I'm not the right person to talk about winsys design anyway, so I'll leave it for Jano. Just a sidenote - never ever implement a feature on "why not?" basis. This is the way to hell and netbeans already face this. "why yes" and simplification, this is the way to go.
David, On the "why yes" issue, I would normally agree with you except in this case I know why yes: the users assume that any tab will act like any other tab. On the Jano issue, is Jano a person or a group of people? I haven't seen any feedback from him/them on this issue at all. Are they away? Did we maybe not CC them on it?
Jano is the name of person :-) And he already commented, see above: Additional Comments From Jan Rojcek 2004-02-06 08:13 PST --- He will comment more for sure, but he is very busy, so be patient. (you know, explain our thoughts to all internet is a bit time expensive..oh God how I love close source :-) OK I'm joking.
Gili, you raised some very good points. I understand your concern about not having a simple way of controlling tabs in output window. The problem is that the inner tabs has not been intended to be handled be windowing system. Changing this fact (even by providing just a simple shortcut Ctrl-F4, which means modifying behavior of windowing system action) is a risk that we can't afford to take for 3.6. Therefor I proposed a compromise solution, which would solve the keyboard accessibility by providing special shortcuts for closing the inner tabs. So, lets solve this high priority a11y issue by implementing Ctrl-DEL shortcuts and open a P3 issue asking for solving the inconsistency in tabs behavior. Would that work?
I would modify the solution - try first to implement Ctrl+F4 closing inner tab and only if we fail then settle on Ctrl+Del. Btw, I believe long term solution is to try simplify output window and similar ones. IntelliJ for example uses output tree to get rid of such problems.
Agreed with David.
Taking this issue. *Should* be simple to implement - just add our own action bound to CTRL-F4 in the output window pane component; if there is no component, then the winsys action should be delegated to. Setting priority to P3 - nothing is throwing exceptions or extremely broken here, just inconvenient.
Fixed in trunk, as part of fix of issue 37288. Ctrl-F4 will now close a tab if present; if no tabs, will close the output window.
Note that the behavior when there is only one tab (i.e. no visible tab row) is inconsistent: it "closes" the Output Window, which as I have mentioned elsewhere, has the completely counterintuitive behavior of not actually closing any tabs in it, but simply hiding the window temporarily. I.e. if you have three tabs A, B, and C open in the output window, none of which you want, and you select C and press Ctrl-F4 three times, C will be closed, then B (leaving A open but tabless), then A. But now if you do something causing a different tab to open (D), the output window will reappear in tabbed mode - with A and D open! Subtle but aggravating; you tried to close A, after all.
Easy to fix, and needs to be anyway: The action should also be mapped from the tabbed pane.
Fixed in trunk. [fix to close tab when focus is on the tabbed pane] Checking in src/org/netbeans/core/output/OutputView.java; /cvs/core/output/src/org/netbeans/core/output/OutputView.java,v <-- OutputView .java new revision: 1.17; previous revision: 1.16 done [fix to close last component before closing tab] Checking in src/org/netbeans/core/output/OutputTabInner.java; /cvs/core/output/src/org/netbeans/core/output/OutputTabInner.java,v <-- Output TabInner.java new revision: 1.21; previous revision: 1.20 done Checking in src/org/netbeans/core/output/OutputView.java; /cvs/core/output/src/org/netbeans/core/output/OutputView.java,v <-- OutputView .java new revision: 1.18; previous revision: 1.17 done Processing log script arguments... Mailing the commit message to cvs@core.netbeans.org (from tboudreau@netbeans.org )
verified in [nb_dev](200406291800)