gtk: Change selected item style
based on https://material.io/design/interaction/states.html#selected
based on https://material.io/design/interaction/states.html#selected
by roundabout, Wednesday, 5 December 2018, 13:09:19 (1544015359), pushed by roundabout, Sunday, 11 May 2025, 13:22:30 (1746969750)
Author identity: nana-4 <hnmaigo@gmail.com>
61dc767de9928b6673f57cee2d899e07f19bb37a
// Misc colors
$primary_color: $google_blue_color;
$alt_primary_color: #7BAAF7;
$selected_overlay_color: rgba($primary_color, 0.32);
$link_color: $primary_color;
$visited_link_color: $purple_A200;
color: $fg_color;
}
row:selected &,
&:selected { @extend %nobg_selected_items; }
selection {
background-color: $primary_color;
color: $inverse_fg_color;
}
selection { @extend %selected_items; }
&:disabled {
color: $disabled_fg_color;
selection { @extend %selected_items:disabled; }
// selection { @extend %selected_items:disabled; }
headerbar &,
tab &,
}
}
@at-root %button_selected, row:selected & {
&:disabled {
background-color: $inverse_divider_color;
color: $inverse_disabled_secondary_fg_color;
}
@at-root %button_selected {
&.flat {
color: $inverse_secondary_fg_color;
border-left-color: $track_color; // this is actually the tree lines color,
border-top-color: $border_color; // while this is the grid lines color, better then nothing
&:selected { border-left-color: $inverse_track_color; }
// FIXME: Avoid transparency background-color being slightly darker
&:selected {
background-color: $base_color;
background-image: image($selected_overlay_color);
}
rubberband { @extend rubberband; } // to avoid borders being overridden by the previously set props
&:hover, &:active { color: $fg_color; }
&:disabled { color: $disabled_secondary_fg_color; }
&:selected {
color: $inverse_secondary_fg_color;
&:hover, &:active { color: $inverse_fg_color; }
&:disabled { color: $inverse_disabled_secondary_fg_color; }
}
}
&.progressbar { // progress bar in treeviews
border-bottom: $bar_size solid $primary_color;
box-shadow: none;
background-color: transparent;
&:selected { border-bottom-color: $inverse_fg_color; }
}
&.trough { // progress bar trough in treeviews
border-bottom: $bar_size solid $divider_color;
box-shadow: none;
background-color: transparent;
&:selected { border-bottom-color: $inverse_divider_color; }
}
header {
// &:only-child { margin: -12px; }
row:selected &:not(:checked):not(:indeterminate) {
color: $inverse_secondary_fg_color;
&:hover, &:active { color: $inverse_fg_color; }
&:disabled { color: $inverse_disabled_secondary_fg_color; }
}
popover & {
&, &:hover, &:focus, &:focus:hover, &:active, &:disabled {
transition: none; // FIXME: this is a workaround for a popover check/radio long transition issue
treeview.view radio {
padding: 0;
&:hover {
box-shadow: inset 0 0 0 9999px gtkalpha($fg_color, 0.08);
&:disabled { box-shadow: none; }
&:selected { box-shadow: inset 0 0 0 9999px gtkalpha($inverse_fg_color, 0.08); }
&:hover, &:selected {
box-shadow: none;
background-color: transparent;
}
& {
&:checked:disabled, &:indeterminate:disabled { color: $disabled_secondary_fg_color; }
}
&:selected {
color: $inverse_secondary_fg_color;
&:hover, &:active { color: $inverse_fg_color; }
&:disabled { color: $inverse_disabled_secondary_fg_color; }
&:checked, &:indeterminate { color: $primary_color; }
&:checked:disabled, &:indeterminate:disabled { color: $disabled_secondary_fg_color; }
}
}
treeview.view radio:checked {
&:hover, &:active { color: $fg_color; }
&:disabled { color: $disabled_secondary_fg_color; }
&:selected {
color: $inverse_secondary_fg_color;
&:hover, &:active { color: $inverse_fg_color; }
&:disabled { color: $inverse_disabled_secondary_fg_color; }
}
}
}
// dim the sidebar icons, see bug #786613 for details on this oddity
row {
image.sidebar-icon { color: $secondary_fg_color; }
&:selected image.sidebar-icon { color: $inverse_secondary_fg_color; }
}
placessidebar {
// will make the animation of the new bookmark row jump
> revealer { padding: 0 12px; }
&:selected { color: $inverse_fg_color; }
&:selected { color: $primary_color; }
&:disabled { color: $disabled_fg_color; }
&:dir(rtl) { padding-left: 2px; }
}
&:selected image.sidebar-icon { color: inherit; }
@at-root button.sidebar-button {
@extend %simple_flat_button;
@extend %small_button;
row:selected & { @extend %button_selected.flat; }
}
&.sidebar-placeholder-row {
&:drop(active):not(:disabled) {
box-shadow: inset 0 0 0 2px $primary_color;
&:selected {
// background-color: $primary_color;
// color: $inverse_fg_color;
}
}
}
}
// catch all extend :)
%selected_items {
background-color: $primary_color;
@at-root %nobg_selected_items, & {
color: $inverse_fg_color;
&:disabled { color: $inverse_disabled_fg_color; }
}
background-color: $selected_overlay_color;
}
.monospace { font-family: monospace; }
.nautilus-canvas-item.dim-label,
.nautilus-list-dim-label {
color: $secondary_fg_color;
&:selected { color: $inverse_secondary_fg_color; }
}
.nautilus-desktop.nautilus-canvas-item:not(:selected) {
.nautilus-desktop.nautilus-canvas-item {
// background-color: $panel_bg_color;
color: $inverse_fg_color;
text-shadow: $shadow_1;
&:selected {
background-color: transparent;
.icon-item-background { background-color: $primary_color; }
.icon-item-background { @extend %selected_items; }
}
}
.open-document-selector-path-label {
color: $secondary_fg_color;
font-size: smaller;
&:selected { color: $inverse_secondary_fg_color; }
}
.gedit-document-panel {
// tweak icons for treeviews
window.workbench treeview.image {
color: $secondary_fg_color;
&:selected { color: $inverse_secondary_fg_color; }
}
popover.popover-selector list {
/***********
* Synapse *
***********/
box.vertical > widget > widget:selected { background-color: $primary_color; }
box.vertical > widget > widget:selected { @extend %selected_items; }