Closed
Bug 5685
Opened 25 years ago
Closed 25 years ago
[PP][NATIVE-WIDGET]<input> background cannot be made transparent (which should be default)
Categories
(Core :: Layout: Form Controls, defect, P3)
Core
Layout: Form Controls
Tracking
()
VERIFIED
FIXED
M15
People
(Reporter: jsp, Assigned: kmcclusk)
References
Details
Maybe I'm missing something here, and I may have guessed wrong as to the appropriate component. I trust someone will tell me if so... I'm running Mozilla M4. The following trivial HTML displays a single radio button on a form with a gray background. According to my reading of the HTML 4.0 spec, all elements should by default have a transparent background. However, using apprunner, the button has a white square around it. <html> <body bgcolor=#c0c0c0> <form> <input type="radio" name="radio1" value="1"> </form> </body> </html> You'd think you could work around this by specifying a transparent background, but this results in a black background instead. Similar problems occur with <input type="image"> if the image has transparent regions. Probably related: if you assign a <label> to a radio button (probably other inputs as well), it has the same behavior. I can't reproduce any of this with the December Gecko release, for what that's worth.
Updated•25 years ago
|
Status: NEW → ASSIGNED
Target Milestone: M6
Comment 1•25 years ago
|
||
Looks like form element rendering is wrong.
My recollection about Gecko's behavior was incorrect. Radio button inputs and <label> behave the same as M4, but img inputs correctly display the background color in transparent regions.
Comment 3•25 years ago
|
||
On the Mac, radio buttons are drawn by a call to ::DrawOneControl, which is evidently erasing the whole rectangle to white. The appearance manager provides a way to install user defined functions that get called for various operations controls might perform, such as defining the background color used whenever a control draws. Here's a reference: http://developer.apple.com/techpubs/macos8/HumanInterfaceToolbox/ControlManager/0 If we attach a ControlUserPaneBackgroundUPP to the root control of each window (using SetControlData(rootControl, kControlEntireControl, kControlUserPaneBackgroundProcTag, sizeof(ControlUserPaneBackgroundUPP), &upp), then the function will be called to set up the proper background color for the control. Is this the only way to make this work? This also appears to be a problem on Win95.
Comment 4•25 years ago
|
||
On the Mac, radio buttons are drawn by a call to ::DrawOneControl, which is evidently erasing the whole rectangle to white. The appearance manager provides a way to install user defined functions that get called for various operations controls might perform, such as defining the background color used whenever a control draws. Here's a reference: http://developer.apple.com/techpubs/macos8/HumanInterfaceToolbox/ControlManager/0 If we attach a ControlUserPaneBackgroundUPP to the root control of each window (using SetControlData(rootControl, kControlEntireControl, kControlUserPaneBackgroundProcTag, sizeof(ControlUserPaneBackgroundUPP), &upp), then the function will be called to set up the proper background color for the control. Is this the only way to make this work? This also appears to be a problem on Win95.
Updated•25 years ago
|
OS: Windows NT → All
Hardware: PC → All
Comment 5•25 years ago
|
||
won't this go away when we use Ender for the text widgets?
Comment 6•25 years ago
|
||
But Ender won't affect form control backgrounds? I'd really like to see form controls drawn better; ever since 4.0, they've looked really messy.
Comment 7•25 years ago
|
||
Form controls will be gfx-rendered. That was our solution, no?
Comment 8•25 years ago
|
||
Correct. Bug #4764 ("Radio buttons display garbage around periphery") is assigned to me. This one, as well as a couple of other bugs, has been marked "[NATIVE- WIDGETS]" and I'll close them as Invalid as soon as we get rid of native widgets. Similarly, I have several bugs that are marked "[ENDER]". I used this method because QA and especially the i18n team wouldn't let me close them as Later.
Comment 9•25 years ago
|
||
Pierre, I assume you meant bug # 4767. These may in fact be related, but this bug also appears currently on Windows NT/95 with the included example.
Updated•25 years ago
|
Assignee: karnaze → kmcclusk
Comment 10•25 years ago
|
||
This will only be supported for gfx rendered form controls which will not include <input type=text> or <input type=textarea> until Ender is ready. Reassigning to Kevin. Pierre is alreay on the CC list.
Assignee | ||
Updated•25 years ago
|
Status: NEW → ASSIGNED
Assignee | ||
Updated•25 years ago
|
Target Milestone: M6 → M8
Assignee | ||
Comment 11•25 years ago
|
||
*** Bug 1405 has been marked as a duplicate of this bug. ***
Comment 12•25 years ago
|
||
I investigated this problem a little bit on the Mac. 1) Mac specific: I'll do an ::EraseRect() before the ::DrawOneControl() so that the background paints correctly if it is set to the proper color in Layout. 2) XP: if NEW_COMPOSITOR is enabled in nsViewManager.cpp, the entire widgetRect of the native control frames is clipped out of the visRegion when painting the background of the parent view. It means that if you have a dozen native controls on a gray background, the NEW_COMPOSITOR will paint a gray background with a dozen white holes in it before painting the controls themselves. 3) XP: The background of the buttons is properly painted, but not the background of radio buttons nor checkboxes which still appears as white. I could tell that the background was correctly set for buttons because on the Mac - unlike on other platforms - they are displayed as round rects, not square rects, and the pixels at the corner were correctly painted as gray. I looked a bit further and saw that the background color was set by nsButtonControlFrame::PostCreateWidget() when calling SetColors(). This call doesn't exist in nsRadioControlFrame nor nsCheckboxControlFrame. I added it but it did not help because by the time GetStyleData() is called inside SetColors(), the background color is white instead of gray. Maybe because, as suggested above, the background is not transparent for these controls. Hope this helps. Have fun with the rest.
Comment 13•25 years ago
|
||
Correction: The note #2 above means that if NEW_COMPOSITOR is enabled (and it is now), the native controls have the responsability to paint their own background. As a result, I'm not sure that making the background transparent will change anything. Maybe... if the transparency setting is used to initialize the color of a children according to the color of its parent.
Assignee | ||
Comment 14•25 years ago
|
||
*** Bug 7119 has been marked as a duplicate of this bug. ***
Assignee | ||
Updated•25 years ago
|
Summary: <input> background cannot be made transparent (which should be default) → [PP][NATIVE-WIDGET]<input> background cannot be made transparent (which should be default)
Target Milestone: M8 → M15
Assignee | ||
Comment 15•25 years ago
|
||
Marking as [PP][NATIVE-WIDGET] gfx-rendered form elements render with transparent backgrounds.
Comment 16•25 years ago
|
||
Moving all Widget Set bugs, past and present, to new HTML Form Controls component per request from karnaze. Widget Set component will be retired shortly.
Assignee | ||
Updated•25 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 17•25 years ago
|
||
Fixed by enabling gfx rendered form elements as of Aug 19, 1999 4:00PM. Will not fix for native widgets
Updated•25 years ago
|
Status: RESOLVED → VERIFIED
Comment 18•25 years ago
|
||
With the Sept 2 build with gfx enabled, the problem is fixed.
You need to log in
before you can comment on or make changes to this bug.
Description
•