Comment 8 for bug 136660

Revision history for this message
Alexander Jones (alex-weej) wrote :

What I did:

The draw_rounded_window method was being used to make a path for the yellow background, this was unnecessary. I dropped it and flood filled the background with yellow.

The draw_rounded_window method was being called with some offsets to sketch out the path for an inside stroke. The arrow's anchoring point would not be adjusted. As a result, the stroke was wrong on the arrow, and the stroke sort of tilts on the top edge of any notification with arrows. It's a sucky way of doing an inside stroke anyway given that the outside edge may or may not be bilevel. (You can see bits of grey (background) creeping outside of the stroke in the corners of the old renderings.) I solved this by removing the offset and stroking with 2 pixels instead of 1. This creates a 1 pixel inside stroke and a 1 pixel outside stroke. The outside stroke is removed in one of two ways:

If the window is composited, it then applies an alpha mask of the outline shape using Cairo's DEST_IN operator. The bilevel mask is then used for input shaping only.

If the window is not composited, the bilevel mask is used for input and visual shaping, meaning that effectively the outside edge of the strokes is non-antialiased while the inside edge is.

Hurrah!