On Wed, Aug 26, 2009 at 12:06 PM, Alex Milowski<[email protected]> wrote:
> In certain MathML constructs (e.g. mfenced) there are a number of child
> elements that make up the construct and need to be rendered.  Any text
> between those child elements should be ignored.  In fact, non-whitespace
> text in the wrong place is most certainly incorrect but something
> that can be recovered from.
>
> I don't want to remove the text from the DOM nodes but I need to
> keep the RenderText instances from being created or displayed.  What
> is the correct way to do this?
>
> I've been trying to handle this in the renderer but it seems like that
> is really too late.  I though about changing the attach method to exclude
> such ignorable text.

Here's what works but it feels like a hack:

                RenderBlock* none = new (renderArena()) RenderBlock(document());
                RefPtr<RenderStyle> newStyle = RenderStyle::create();
                newStyle->inheritFrom(style());
                newStyle->setDisplay(INLINE_BLOCK);
                newStyle->setMaxWidth(Length(0,Fixed));
                newStyle->setMaxHeight(Length(0,Fixed));
                newStyle->setOverflowX(OHIDDEN);
                newStyle->setOverflowY(OHIDDEN);
                none->setStyle(newStyle.release());
                RenderBlock::addChild(none, beforeChild);
                none->addChild(child);

I basically create an inline block with zero width and height and then
set the overflow to hidden.


-- 
--Alex Milowski
"The excellence of grammar as a guide is proportional to the paucity of the
inflexions, i.e. to the degree of analysis effected by the language
considered."

Bertrand Russell in a footnote of Principles of Mathematics
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to