Opened 12 years ago

Closed 5 years ago

Last modified 5 years ago

#8923 closed bug (fixed)

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

Reported by: x-ist Owned by: jscipione
Priority: normal Milestone: R1/beta2
Component: Applications/Deskbar Version: R1/Development
Keywords: Auto-raise Cc: edglex
Blocked By: Blocking: #9746
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 (11)

comment:1 by edglex, 12 years ago

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 by edglex, 12 years ago

Cc: edglex added

comment:3 by x-ist, 12 years ago

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 by diver, 12 years ago

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

in reply to:  3 comment:5 by anevilyak, 12 years ago

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 by anevilyak, 12 years ago

Blocking: 9746 added

comment:7 by anevilyak, 10 years ago

Owner: changed from anevilyak to nobody

comment:8 by jscipione, 5 years ago

Owner: changed from nobody to jscipione

I have reproduced this issue and have a fix.

comment:9 by pulkomandy, 5 years ago

Fix merged in hrev53818.

comment:10 by pulkomandy, 5 years ago

Resolution: fixed
Status: assignedclosed

comment:11 by nielx, 5 years ago

Milestone: R1R1/beta2

Assign tickets with status=closed and resolution=fixed within the R1/beta2 development window to the R1/beta2 Milestone

Note: See TracTickets for help on using tickets.