On Tuesday 2006-04-25 10:31 -0500, Boris Zbarsky wrote:
> L. David Baron wrote:
> >And probably it shouldn't ever be NS_INTRINSICSIZE for form controls
> >either, since they have block-like stuff on the inside.
> 
> Right, that's what I ran into.  Right now what I'm doing for buttons is in 
> their Reflow method I do:
> 
>   nsHTMLReflowState reflowState(aReflowState);
>   if (reflowState.mComputedWidth == NS_INTRINSICSIZE) {
>     nscoord prefWidth = GetPrefWidth(aReflowState.rendContext);
>     nscoord availWidth = reflowState.availableWidth -
>       reflowState.mComputedBorderPadding.LeftRight() -
>       reflowState.mComputedMargin.LeftRight();
>     availWidth = PR_MAX(0, availWidth);
>     reflowState.mComputedWidth = PR_MIN(prefWidth, availWidth);
>   }
> 
> and then use that reflowState thereafter.  This does lead to slightly weird 
> results when a button with a bunch of text comes at the end of a line, but 
> no weirder than what we do now, and using the CB computed width instead of 
> availableWidth wouldn't play nice with floats, as far as I can tell.
> 
> I just realized I should probably take PR_MAX(GetMinWidth, the stuff 
> above), actually, which makes it look awfully like shrink-wrap width for 
> blocks.  I guess that makes sense.

Yep.

> I guess I could try to push that logic up into the reflow state; something
> along those lines should be relevant for buttons, text inputs, and
> textareas, right?

Yes, although it's a little less interesting for other form controls
where min-width == pref-width (at least in the absence of percentage
widths).

-David

-- 
L. David Baron                                <URL: http://dbaron.org/ >
           Technical Lead, Layout & CSS, Mozilla Corporation
_______________________________________________
dev-tech-layout mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-layout

Reply via email to