#4127: [Deskbar] shows "Tracker Status" if you hide tracker's window ------------------------------------+---------------------------- Reporter: diver | Owner: axeld Type: bug | Status: reopened Priority: normal | Milestone: R1 Component: Applications/Deskbar | Version: R1/Development Resolution: | Keywords: gci2011 Blocked By: | Blocking: 4206 Has a Patch: 0 | Platform: All ------------------------------------+---------------------------- Comment (by leavengood): x-ist, you don't quite have it right, but you were on the right track ;) This is essentially impossible to fix with the current handling of the window_info.show_hide_level. It is set to 1 if the window is hidden within the app_server, and 0 if not. But when the window is minimized, it is also hidden. But this is different than the hiding within BWindow, which is based on fShowLevel. When fShowLevel becomes zero or less (by calling Hide()), the window is hidden, and when it becomes 1 or more (by calling Show()) the window is shown. IsHidden() in BWindow is then simply fShowLevel <= 0. The window being minimized is a completely different boolean state. I'm not sure why the show_hide_level is done this way, not only is it completely opposite of fShowLevel, it is barely representative of it. Now where all this meshes with this bug in the Deskbar is the logic for showing windows: it is based on the window feel (as shown by x-ist above), but also on the show_hide_level and is_mini, which is a boolean in window_info indicating whether a window is minimized. The Deskbar logic is to add the window to the list if show_hide_level <= 0 (the window is showing) OR is_mini is true (the window is minimized.) Well guess what? If you minimize a hidden window it then passes this test (since it is then hidden and minimized). But if you take out the check for is_mini, then minimized windows are never shown, because they are also hidden (within the app_server, but not in BWindow.) And of course taking out the check for hidden always shows hidden windows. So for this to really be fixed, the show_hide_level in the app_server needs to match fShowLevel in BWindow. This will also then make show_hide_level not a weird backwards variable. -- Ticket URL: <http://dev.haiku-os.org/ticket/4127#comment:10> Haiku <http://dev.haiku-os.org> Haiku - the operating system.