Closed Bug 115526 Opened 23 years ago Closed 13 years ago

clipping and border drawing need ConditionRect

Categories

(Core :: Web Painting, defect, P1)

x86
Linux
defect

Tracking

()

RESOLVED WORKSFORME
Future

People

(Reporter: dbaron, Assigned: dbaron)

References

(Blocks 1 open bug)

Details

(Whiteboard: [patch])

Attachments

(2 files, 3 obsolete files)

Clipping and border drawing need to pass through ConditionRect, at least on
Linux.  See attached testcase, which should show a really tall BODY element with
border, background, and clipping in the same place.  The background is right,
but the border and clipping are wrong.

Other platforms should be tested as well.
Status: NEW → ASSIGNED
*** Bug 123146 has been marked as a duplicate of this bug. ***
The duplicate shows problems with dashed border drawing code as well.
*** Bug 128649 has been marked as a duplicate of this bug. ***
Target Milestone: --- → mozilla1.0
*** Bug 134533 has been marked as a duplicate of this bug. ***
I haven't tested this yet, and there's also an "XXX" comment about a bug I
already know it has.
That's still not quite right, even when I changed the patch like this:

48c48
< @@ -1037,23 +1039,77 @@
---
> @@ -1037,23 +1039,80 @@
105c105,107
< +        // XXX What if we're out-of-bounds on a different side?!
---
> +        // XXX What if we're out-of-bounds on a different side?!  (Note
> +        // also that ConditionPoint might divide by zero in such a
> +        // case.)
116a119
> +      prevConditioned = PR_FALSE;
Target Milestone: mozilla1.0 → mozilla1.1beta
Target Milestone: mozilla1.1beta → mozilla1.2alpha
*** Bug 167936 has been marked as a duplicate of this bug. ***
Severity: normal → major
Priority: -- → P1
Target Milestone: mozilla1.2alpha → Future
*** Bug 171917 has been marked as a duplicate of this bug. ***
Attached patch perhaps a better patch (obsolete) — Splinter Review
This seems to work, except for some invalidation problems on borders that may
or may not be in this area of the code.  (They probably are, though.)
Attachment #78151 - Attachment is obsolete: true
Blocks: 188201
Blocks: 188675
*** Bug 188675 has been marked as a duplicate of this bug. ***
The patch for bug 86249 will probably fix many of the border-related symptoms of
this bug.
The testcase looks worse in Firefox 0.8 and Mozilla 1.6 than in Mozilla 1.5. I
don't know how the clipped part is supposed to look, but in Mozilla 1.5 the
yellow area is nicely contained within the green frame all the way down.

In Firefox 0.8 and Mozilla 1.6 however, the yellow spills over the bottom green
border.
Blocks: 244837
Blocks: 158633
Blocks: 252241
Blocks: 148056
There is still a problem with the yellow overflowing the bottom of the rectangle.

Seen in Mozilla 1.8a3/Linux and Netscape 7.2/Linux.
Comment #14 applies to 1.8a5 as well.

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8a5) Gecko/20041121
I see no improvement in 1.8a6.

Given that this bug has the highest Priority (P1), has major Severity, and
blocks a number of other bugs, I think it ought to be fixed in Mozilla 1.8.
Thus, I'm nominating this bug to block the 1.8b release.
Flags: blocking1.8b?
too late for 1.8b, transferring nomination to 1.8b2
Flags: blocking1.8b?
Flags: blocking1.8b2?
Flags: blocking1.8b-
For the record: the testcase shows no visible improvement in Mozilla 1.8b.
Component: Layout → GFX: Gtk
Blocks: 286898
The last five comments have all been of no help whatsoever.  Please stop adding
non-technical comments to this bug.  If you continue, I won't be able to find
the actually useful comments within them and will be less likely to fix the bug.
We probably only want ConditionRect to be used on GTK1. GTK2 should already be
OK, in theory.

You probably want a typedef for nsAutoBuffer<GdkPoint,8>.
too late for beta2 - try for next milestone
Flags: blocking1.8b3?
Flags: blocking1.8b2?
Flags: blocking1.8b2-
Flags: blocking1.8b3? → blocking1.8b3-
David, now that gfx/src/gtk/ has been removed on trunk, is this bug/patch
still relevant for trunk?
Product: Core → Core Graveyard
I am not clear on what the correct rendering of the test case ought to have been, but since we no longer support Gtk1, I'm inclined to think this is no longer relevant.  But I'm not going to yank a bug out from under dbaron. :)  It can moulder in the proper component till he gets around to it again.
Component: GFX: Gtk → Layout: View Rendering
Product: Core Graveyard → Core
QA Contact: chrispetersen → layout.view-rendering
Attached file testcase
attachment 61907 [details] updated for changes to CSS 'overflow' propagation rules for HTML and BODY.
Attachment #61907 - Attachment is obsolete: true
Yeah, I no longer see any problems with the testcase (though I recall we still did have problems in the early cairo days).
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Resolution: --- → WORKSFORME
Do you think it's worth checking in a reftest?
Component: Layout: View Rendering → Layout: Web Painting
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: