Fix: Icons - context menu overlap in linux #1099
Some checks failed
CI / build (push) Has been cancelled

This commit is contained in:
alstjr7375 2025-06-30 00:39:30 +09:00
parent 42a6a09f32
commit 911c3f524b
7 changed files with 123 additions and 40 deletions

54
css/leptonChrome.css generated
View file

@ -1226,8 +1226,11 @@
width: unset !important;
}
.menu-iconic-left .menu-iconic-icon,
.menu-iconic-left .menu-icon,
menuitem[type="checkbox"] .menu-iconic-icon,
menuitem[type="radio"] .menu-iconic-icon {
menuitem[type="checkbox"] .menu-icon,
menuitem[type="radio"] .menu-iconic-icon,
menuitem[type="radio"] .menu-icon {
appearance: none !important;
}
}
@ -1256,7 +1259,8 @@
}
}
@media (-moz-gtk-csd-available) {
menuitem[checked="true"] > .menu-iconic-left {
menuitem[checked="true"] > .menu-iconic-left,
menuitem[checked="true"] > .menu-icon {
-moz-context-properties: fill, fill-opacity !important;
fill: currentColor !important;
fill-opacity: var(--menu-icon-opacity) !important;
@ -1286,7 +1290,7 @@
@media (-moz-gtk-csd-available) {
menupopup {
/* Disable the default appearance so we can override the native styling. */
appearance: none !important !important;
appearance: none !important;
/* Prevent any background or border around the outside of the shadow. */
background-color: transparent !important;
border: none !important;
@ -1369,13 +1373,15 @@
}
}
@media (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic > .menu-iconic-left {
#context-navigation > .menuitem-iconic > .menu-iconic-left,
#context-navigation > .menuitem-iconic > .menu-icon {
margin: 0 !important;
padding: 0 !important;
}
}
@media (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic > .menu-icon {
width: var(--menuitem-min-width) !important;
height: 32px !important;
padding: 8px 1em !important;
@ -1383,7 +1389,8 @@
}
}
@media (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-icon {
background-color: var(--menuitem-hover-background-color) !important;
}
}
@ -1391,7 +1398,8 @@
#context-navigation
> .menuitem-iconic[_moz-menuactive="true"][disabled="true"]
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
#context-navigation > .menuitem-iconic[_moz-menuactive="true"][disabled="true"] > .menu-icon {
background-color: transparent !important;
}
}
@ -12026,7 +12034,9 @@
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
#main-menubar > menu {
-moz-appearance: none !important; /* Linux: menulist */
}
@ -12377,6 +12387,9 @@
--context-menu-background-padding-default: 6px;
--context-menu-text-padding: 21px;
}
.menu-icon {
display: unset !important;
}
}
/* Padding - Mac */
@media -moz-pref("layout.css.osx-font-smoothing.enabled") {
@ -15378,8 +15391,11 @@
width: unset !important;
}
.menu-iconic-left .menu-iconic-icon,
.menu-iconic-left .menu-icon,
menuitem[type="checkbox"] .menu-iconic-icon,
menuitem[type="radio"] .menu-iconic-icon {
menuitem[type="checkbox"] .menu-icon,
menuitem[type="radio"] .menu-iconic-icon,
menuitem[type="radio"] .menu-icon {
appearance: none !important;
}
}
@ -15408,7 +15424,8 @@
}
}
@media (-moz-bool-pref: "userChrome.theme.non_native_menu") and (-moz-gtk-csd-available) {
menuitem[checked="true"] > .menu-iconic-left {
menuitem[checked="true"] > .menu-iconic-left,
menuitem[checked="true"] > .menu-icon {
-moz-context-properties: fill, fill-opacity !important;
fill: currentColor !important;
fill-opacity: var(--menu-icon-opacity) !important;
@ -15438,7 +15455,7 @@
@media (-moz-bool-pref: "userChrome.theme.non_native_menu") and (-moz-gtk-csd-available) {
menupopup {
/* Disable the default appearance so we can override the native styling. */
appearance: none !important !important;
appearance: none !important;
/* Prevent any background or border around the outside of the shadow. */
background-color: transparent !important;
border: none !important;
@ -15521,13 +15538,15 @@
}
}
@media (-moz-bool-pref: "userChrome.theme.non_native_menu") and (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic > .menu-iconic-left {
#context-navigation > .menuitem-iconic > .menu-iconic-left,
#context-navigation > .menuitem-iconic > .menu-icon {
margin: 0 !important;
padding: 0 !important;
}
}
@media (-moz-bool-pref: "userChrome.theme.non_native_menu") and (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic > .menu-icon {
width: var(--menuitem-min-width) !important;
height: 32px !important;
padding: 8px 1em !important;
@ -15535,7 +15554,8 @@
}
}
@media (-moz-bool-pref: "userChrome.theme.non_native_menu") and (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-icon {
background-color: var(--menuitem-hover-background-color) !important;
}
}
@ -15543,7 +15563,8 @@
#context-navigation
> .menuitem-iconic[_moz-menuactive="true"][disabled="true"]
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
#context-navigation > .menuitem-iconic[_moz-menuactive="true"][disabled="true"] > .menu-icon {
background-color: transparent !important;
}
}
@ -27544,7 +27565,9 @@
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
#main-menubar > menu {
-moz-appearance: none !important; /* Linux: menulist */
}
@ -27904,6 +27927,9 @@
--context-menu-background-padding-default: 6px;
--context-menu-text-padding: 21px;
}
.menu-icon {
display: unset !important;
}
}
@media (not (-moz-bool-pref: "userChrome.icon.disabled")) and (-moz-bool-pref: "userChrome.icon.menu") and (-moz-bool-pref: "layout.css.osx-font-smoothing.enabled") {
:root {

View file

@ -1449,8 +1449,11 @@
width: unset !important;
}
.menu-iconic-left .menu-iconic-icon,
.menu-iconic-left .menu-icon,
menuitem[type="checkbox"] .menu-iconic-icon,
menuitem[type="radio"] .menu-iconic-icon {
menuitem[type="checkbox"] .menu-icon,
menuitem[type="radio"] .menu-iconic-icon,
menuitem[type="radio"] .menu-icon {
appearance: none !important;
}
}
@ -1479,7 +1482,8 @@
}
}
@media (-moz-gtk-csd-available) {
menuitem[checked="true"] > .menu-iconic-left {
menuitem[checked="true"] > .menu-iconic-left,
menuitem[checked="true"] > .menu-icon {
-moz-context-properties: fill, fill-opacity !important;
fill: currentColor !important;
fill-opacity: var(--menu-icon-opacity) !important;
@ -1509,7 +1513,7 @@
@media (-moz-gtk-csd-available) {
menupopup {
/* Disable the default appearance so we can override the native styling. */
appearance: none !important !important;
appearance: none !important;
/* Prevent any background or border around the outside of the shadow. */
background-color: transparent !important;
border: none !important;
@ -1592,13 +1596,15 @@
}
}
@media (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic > .menu-iconic-left {
#context-navigation > .menuitem-iconic > .menu-iconic-left,
#context-navigation > .menuitem-iconic > .menu-icon {
margin: 0 !important;
padding: 0 !important;
}
}
@media (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic > .menu-icon {
width: var(--menuitem-min-width) !important;
height: 32px !important;
padding: 8px 1em !important;
@ -1606,7 +1612,8 @@
}
}
@media (-moz-gtk-csd-available) {
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-icon {
background-color: var(--menuitem-hover-background-color) !important;
}
}
@ -1614,7 +1621,8 @@
#context-navigation
> .menuitem-iconic[_moz-menuactive="true"][disabled="true"]
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
#context-navigation > .menuitem-iconic[_moz-menuactive="true"][disabled="true"] > .menu-icon {
background-color: transparent !important;
}
}
@ -12508,7 +12516,9 @@
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
#main-menubar > menu {
-moz-appearance: none !important; /* Linux: menulist */
}
@ -13043,6 +13053,9 @@
--context-menu-background-padding-default: 6px;
--context-menu-text-padding: 21px;
}
.menu-icon {
display: unset !important;
}
}
/* Padding - Mac */
@supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {

34
css/leptonContent.css generated
View file

@ -3318,7 +3318,9 @@
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon {
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon {
-moz-appearance: none !important; /* Linux: menulist */
}
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
@ -3434,6 +3436,9 @@
--context-menu-background-padding-default: 6px;
--context-menu-text-padding: 21px;
}
.menu-icon {
display: unset !important;
}
/* Contextmenu Checkbox Unset */
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu) menuitem[type="checkbox"] {
margin-inline: 0 !important;
@ -3441,13 +3446,19 @@
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]
> .menu-icon {
margin-inline-end: 0 !important;
}
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]:not([checked="true"])
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]:not([checked="true"])
> .menu-icon {
border: none !important;
background-color: unset !important;
}
@ -7165,7 +7176,9 @@
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon {
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon {
-moz-appearance: none !important; /* Linux: menulist */
}
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
@ -7277,6 +7290,9 @@
--context-menu-background-padding-default: 6px;
--context-menu-text-padding: 21px;
}
.menu-icon {
display: unset !important;
}
/* Contextmenu Checkbox Unset */
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu) menuitem[type="checkbox"] {
margin-inline: 0 !important;
@ -7284,13 +7300,19 @@
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]
> .menu-icon {
margin-inline-end: 0 !important;
}
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]:not([checked="true"])
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]:not([checked="true"])
> .menu-icon {
border: none !important;
background-color: unset !important;
}

View file

@ -3321,7 +3321,9 @@
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]),
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon {
menupopup menuitem:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-iconic-left > .menu-iconic-icon,
menupopup menu:not([type="checkbox"][checked="true"], [type="radio"]) > .menu-icon {
-moz-appearance: none !important; /* Linux: menulist */
}
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
@ -3573,6 +3575,9 @@
--context-menu-background-padding-default: 6px;
--context-menu-text-padding: 21px;
}
.menu-icon {
display: unset !important;
}
/* Contextmenu Checkbox Unset */
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu) menuitem[type="checkbox"] {
margin-inline: 0 !important;
@ -3580,13 +3585,19 @@
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]
> .menu-icon {
margin-inline-end: 0 !important;
}
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]:not([checked="true"])
> .menu-iconic-left
> .menu-iconic-icon {
> .menu-iconic-icon,
menupopup:is(#placesContext, #placesColumnsContext, #downloadsContextMenu)
menuitem[type="checkbox"]:not([checked="true"])
> .menu-icon {
border: none !important;
background-color: unset !important;
}

View file

@ -41,7 +41,7 @@ $_initialMenus: selector.append(
$_checkMenu
);
$_initialMenus: $_initialMenus + "," +
selector.nest($_initialMenus, "> .menu-iconic-left > .menu-iconic-icon");
selector.nest($_initialMenus, "> .menu-iconic-left > .menu-iconic-icon, > .menu-icon");
@mixin _initial_menus() {
-moz-appearance: none !important; /* Linux: menulist */
}
@ -192,6 +192,9 @@ $_initialMenus: $_initialMenus + "," +
// https://github.com/mozilla/gecko-dev/blob/e54707888510dec75db59a170b287d1db031505a/toolkit/themes/linux/global/menu.css#L103
--context-menu-text-padding: 21px;
}
.menu-icon {
display: unset !important;
}
}
@mixin _layout_init_linux() {
padding-inline-start: 3px;

View file

@ -61,10 +61,12 @@ $_placesPopupSetMenus: selector.nest(
/* Contextmenu Checkbox Unset */
#{$_placesPopupSet} menuitem[type="checkbox"] {
margin-inline: 0 !important;
> .menu-iconic-left > .menu-iconic-icon {
> .menu-iconic-left > .menu-iconic-icon,
> .menu-icon {
margin-inline-end: 0 !important;
}
&:not([checked="true"]) > .menu-iconic-left > .menu-iconic-icon {
&:not([checked="true"]) > .menu-iconic-left > .menu-iconic-icon,
&:not([checked="true"]) > .menu-icon {
border: none !important;
background-color: unset !important;
}

View file

@ -100,7 +100,8 @@
menuitem[type="radio"] {
appearance: none !important; /* to override more specific selectors above. */
width: unset !important;
.menu-iconic-icon {
.menu-iconic-icon,
.menu-icon {
appearance: none !important;
}
}
@ -128,7 +129,8 @@
checkboxes and radio buttons because the native drawing we use on other
Windows versions looks pretty bad with the Win10 styles, so for now we'll
insert a generic checkmark icon for both types. */
menuitem[checked="true"] > .menu-iconic-left {
menuitem[checked="true"] > .menu-iconic-left,
menuitem[checked="true"] > .menu-icon {
-moz-context-properties: fill, fill-opacity !important;
fill: currentColor !important;
fill-opacity: var(--menu-icon-opacity) !important;
@ -157,7 +159,7 @@
//-- Global - Menu Popup -----------------------------------------------------
menupopup {
/* Disable the default appearance so we can override the native styling. */
appearance: none !important !important;
appearance: none !important;
/* Prevent any background or border around the outside of the shadow. */
background-color: transparent !important;
@ -233,23 +235,27 @@
background-color: transparent !important;
}
#context-navigation > .menuitem-iconic > .menu-iconic-left {
#context-navigation > .menuitem-iconic > .menu-iconic-left,
#context-navigation > .menuitem-iconic > .menu-icon {
margin: 0 !important;
padding: 0 !important;
}
/* override styles from shared/contextmenu.inc.css */
#context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic > .menu-icon {
width: var(--menuitem-min-width) !important;
height: 32px !important;
padding: 8px 1em !important;
margin: 0 !important;
}
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic[_moz-menuactive="true"] > .menu-icon {
background-color: var(--menuitem-hover-background-color) !important; // -moz-menuhover
}
#context-navigation > .menuitem-iconic[_moz-menuactive="true"][disabled="true"] > .menu-iconic-left > .menu-iconic-icon {
#context-navigation > .menuitem-iconic[_moz-menuactive="true"][disabled="true"] > .menu-iconic-left > .menu-iconic-icon,
#context-navigation > .menuitem-iconic[_moz-menuactive="true"][disabled="true"] > .menu-icon {
background-color: transparent !important;// -moz-menuhoverdisabled
}