Opened 7 years ago

Last modified 4 years ago

#8923 assigned bug

[Deskbar] Auto-raise does not work correctly when covered by a window

Reported by: x-ist Owned by: nobody
Priority: normal Milestone: R1
Component: Applications/Deskbar Version: R1/Development
Keywords: Auto-raise Cc: edglex
Blocked By: Blocking: #9746
Has a Patch: no Platform: All

Description (last modified by diver)

This is hrev44584.

  1. Drag the Deskbar to the lower screen edge.
  2. Enable Auto-raise.
  3. Open a window, e.g. a Tracker window
  4. Move the window such that it covers the Deskbar beyond the lower screen edge
  5. Hover the mouse down the window to the screen edge carefully without hovering over the Deskbar.
  6. Deskbar is NOT raised.
  7. Now hover over the Deskbar (not necessarily the edge)
  8. Now hover the mouse again down the window to the screen edge carefully without hovering over the Deskbar.
  9. This time it's raised.

Change History (7)

comment:1 Changed 7 years ago by edglex

I've seen other odd behaviour with deskbar auto-raise that I thought would make sense to add to this ticket.

If you have the deskbar set to auto-raise and put a window partialy covering it, when you click on that window in a place where the window is covering the deskbar, the deskbar auto-raises. However it doesn't always do this, only most of the time.

This is annoying since I tend to work with the deskbar in its default position and windows maximised. In this way when I move the mouse to the upper-right corner the deskbar auto-raises and I can use it to e.g. change workspace with the workspace applet (in the deskbar tray) or change application. However if I click in that area where the deskbar is covered by a window then the deskbar appears and I cant see what I'm doing. Currently I'm using auto-hide instead, but it's not as nice.

comment:2 Changed 7 years ago by edglex

Cc: edglex added

comment:3 Changed 7 years ago by x-ist

The issue was introduced by hrev44113. Enabling/disabling reception of mouse events is made dependent on the state of the transit parameter:

if (transit == B_ENTERED_VIEW && EventMask() == 0)
	SetEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY);

and

if (transit == B_EXITED_VIEW || transit == B_OUTSIDE_VIEW)
	SetEventMask(0);

That apparently excludes the case when the Deskbar is covered by other windows at the screen edge, effectively preventing auto-raise. @anevilyak: Do you see an alternative to that solution without reintroducing the bugs it solved?

comment:4 Changed 7 years ago by diver

Description: modified (diff)
Owner: changed from axeld to anevilyak
Status: newassigned

comment:5 in reply to:  3 Changed 7 years ago by anevilyak

Replying to x-ist:

That apparently excludes the case when the Deskbar is covered by other windows at the screen edge, effectively preventing auto-raise. @anevilyak: Do you see an alternative to that solution without reintroducing the bugs it solved?

Not easily, since it's already quite the balancing act to support all the disparate modes we have. Furthermore, that would reintroduce some other problematic behavior of auto-raise which isn't currently resolvable with our existing API to my knowledge (Deskbar would then auto-raise over apps that are deliberately full-screen such as watching a movie in MediaPlayer). I wouldn't have time to look into it before BG anyways.

comment:6 Changed 6 years ago by anevilyak

Blocking: 9746 added

comment:7 Changed 4 years ago by anevilyak

Owner: changed from anevilyak to nobody
Note: See TracTickets for help on using tickets.