Closed Bug 312194 Opened 19 years ago Closed 18 years ago

Label of open menu should move down and right in Windows Classic

Categories

(Firefox :: Menus, defect)

x86
Windows 98
defect
Not set
trivial

Tracking

()

RESOLVED FIXED

People

(Reporter: hitchhiker89, Unassigned)

References

Details

Attachments

(1 file)

User-Agent:       Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8b5) Gecko/20051011 Firefox/1.4.1
Build Identifier: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.8b5) Gecko/20051011 Firefox/1.4.1

When using Classic theme on Windows, the label for an open menu should move 1
pixel down and to the right but doesn't since the patch for bug 243078 (native
theme rendering) was checked in.

Reproducible: Always

Steps to Reproduce:
1.Open Firefox in a pre-XP version of Windows or in XP with Windows Classic
turned on
2.Open a menu

Actual Results:  
Menu label does not move.

Expected Results:  
Label should move 1 pixel down and to the right.
Blocks: 243078
Version: unspecified → 1.5 Branch
But can you make it only affect XP Classic, and not Luna or any other themes
that don't have this behavior?  If not, this can't be taken.  This is an issue
James plans to fix on trunk, not branch...
As Joshua correctly stated, this will be fixed on trunk only, due to the 
massive complexity involved in making this only apply in *some* cases.

As such, this bug is really just a dup of bug 243078.
mozilla/toolkit/themes/winstripe/global/menu.css has code for Classic theme - 
could the css I attached (or something similar) be put in there as a partial 
fix?
You don't understand, the margins apply *always*. The CSS in that file is NOT 
just for Classic - it is for any theme. The -moz-appearance property overrides 
the background and border only.
So if a transparent border was used instead of a margin, could it be overridden
for non-Classic themes?

.menubar-text {
   -moz-margin-start: 4px !important;
   -moz-margin-end: 3px !important;
   padding-top: 0px;
   padding-bottom: 2px;
   border: 1px solid transparent;
}

menubar > menu[_moz-menuactive="true"][open="true"] > .menubar-text {
   border-top-width: 2px;
   border-bottom-width: 0px;
   border-left-width: 2px;
   border-right-width: 0px;
}
That is actually a rather neat idea, however, I should point out the -moz-
appearance only overrides the CSS stuff I mentioned on the element it is set 
on. This means it only overrides stuff on the menu/menuitem, not the .menubar-
text child element.

It has reminded me that I could do a similar trick with the real border on the 
item itself (Gecko supports multiple coloured borders, so it could be 2px and 
half solid half transparent).

I'll see what I can come up with after sorting the regressions caused by the 
rush of bug 243078 (I'm not sure drivers are willing to get a fix for this 
particular issue in, but we'll see).
Status: UNCONFIRMED → NEW
Ever confirmed: true
(In reply to comment #7)
> It has reminded me that I could do a similar trick with the real border on the 
> item itself (Gecko supports multiple coloured borders, so it could be 2px and 
> half solid half transparent).

I did think of that, but I couldn't find/remember the code for that (or if I'd
just imagined it!). Obviously the other regressions are far more important than
this but at least we've found a way to fix it now.
This (in menu.css) seems to do it:

/* ::::: menu/menuitems in menubar ::::: */

menubar > menu {
  border: 2px solid transparent;
}
menubar > menu[_moz-menuactive="true"],
menubar > menu[_moz-menuactive="true"][open="true"] {
  color: -moz-MenuBarHoverText;
}
menubar > menu[_moz-menuactive="true"] {
  -moz-border-top-colors: ThreeDHighlight transparent;
  -moz-border-left-colors: ThreeDHighlight transparent;
  -moz-border-right-colors: ThreeDShadow transparent;
  -moz-border-bottom-colors: ThreeDShadow transparent;
}
menubar > menu[_moz-menuactive="true"][open="true"] {
  border-top-width: 3px;
  border-left-width: 3px;
  border-right-width: 1px;
  border-bottom-width: 1px;
  -moz-border-top-colors: ThreeDShadow transparent;
  -moz-border-left-colors: ThreeDShadow transparent;
  -moz-border-right-colors: ThreeDHighlight;
  -moz-border-bottom-colors: ThreeDHighlight;
}

/* ..... internal content .... */

.menubar-left {
  color: inherit;
}

.menubar-text {
  -moz-margin-start: 6px !important;
  -moz-margin-end: 6px !important;
  padding-top: 0px;
  padding-bottom: 2px;
  color: inherit;
}

Unfortunately I'm not able to create patches and I don't know what, if anything,
 would need to be changed to stop this from breaking non-Classic themes.
Version: 1.5 Branch → Trunk
Fixed by bug 313388. It shouldn't get regressed by bug 337771, but keep an eye out. :)
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: