[haiku-bugs] Re: [Haiku] #4127: [Deskbar] shows "Tracker Status" if you hide tracker's window

  • From: "leavengood" <trac@xxxxxxxxxxxx>
  • Date: Sat, 11 Aug 2012 04:05:09 -0000

#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.

Other related posts: