W32: Fix listbox selection

* Makes listbox background white instead of default grey
* Uses gradients or W32 theme parts to draw sexy selection/prelight
  rectangle instead of changing selected/prelighted item background
* Removes blanket button text color, allowing buttons to inherit
  text color from their parents. Non-normal buttons DO get specific
  text color though. This partially fixes text color propagation from
  listbox rows to their children.

https://bugzilla.gnome.org/show_bug.cgi?id=727244
This commit is contained in:
Руслан Ижбулатов 2014-03-28 12:50:51 +00:00
parent c2b4891854
commit e229cff8de
3 changed files with 68 additions and 3 deletions

View File

@ -123,7 +123,6 @@ GtkAssistant .sidebar .highlight {
/* Buttons */
.button {
color: -gtk-win32-color(button, 18);
background-color: transparent;
background-image: -gtk-win32-theme-part(button, 1 1);
border-width: 0;
@ -143,11 +142,12 @@ GtkAssistant .sidebar .highlight {
.button:prelight, .button:prelight:focused {
background-image: -gtk-win32-theme-part(button, 1 2);
color: #000000;
color: @text_color;
}
.button:active, .button:active:focused, .button:active:focused:prelight {
background-image: -gtk-win32-theme-part(button, 1 3);
color: @text_color;
}
/* Check buttons */
@ -858,7 +858,7 @@ column-header .button:active:prelight:focus {
GtkSwitch {
font: bold condensed 10;
color: -gtk-win32-color(button, 18);
color: @text_color;
}
GtkSwitch.slider {
@ -1326,3 +1326,8 @@ GtkPopover > .view,
GtkPopover > .toolbar {
background-color: transparent;
}
/* Listbox */
.list {
background-color: -gtk-win32-color(listbox, 5);
}

View File

@ -123,3 +123,42 @@ GtkProgressBar.progressbar {
.notebook tab:active.left {
padding: 4px 1px 4px 4px;
}
/* Listbox */
/* This is roughly similar to what Vista+ theme draws. The reason for using
this instead of changing background-color to @selection_bg_color is that
blanket "* { color: @text_color; }" style overrides ".list-row:selected {
color: @selected_fg_color; }", causing labels and widgets in list rows to have
black (not white) text over blue background. Fixing that requires overhauling
the whole theme to put narrow "color: @text_color" style everywhere, to be
able to remove the blanket style.
And the reason for not using appropriate W32 theme part is that the appropriate
W32 theme part does not exist in XP theme. */
.list-row:prelight {
background-image: -gtk-gradient (linear,
0 0, 0 1,
color-stop(0, rgb(253, 254, 255)),
color-stop(1, rgb(237, 245, 255)));
box-shadow: inset -1px -1px 0px rgba (128, 128, 255, 0.5), inset 1px 1px 0px rgba (128, 128, 255, 0.5);
}
.list-row:selected {
/* Override *:selected {} blanket style, keeping the background - bright
and the text - dark */
background-color: transparent;
color: @text_color;
background-image: -gtk-gradient (linear,
0 0, 0 1,
color-stop(0, rgb(236, 244, 255)),
color-stop(1, rgb(208, 230, 255)));
box-shadow: inset -1px -1px 0px rgba (128, 128, 255, 0.5), inset 1px 1px 0px rgba (128, 128, 255, 0.5);
}
.list-row:selected:prelight {
background-image: -gtk-gradient (linear,
0 0, 0 1,
color-stop(0, rgb(221, 236, 255)),
color-stop(1, rgb(194, 220, 255)));
box-shadow: inset -1px -1px 0px rgba (128, 128, 255, 0.5), inset 1px 1px 0px rgba (128, 128, 255, 0.5);
}

View File

@ -317,3 +317,24 @@
/* Make active tab "stick out" left by padding it more at the right */
padding-right: 4px;
}
/* Listbox */
/* We're cheating here, using part 6 (listview header group),
because part 1 (listview item) is empty for some reason */
.list-row:prelight {
background-image: -gtk-win32-theme-part(listview, 6 10);
}
.list-row:selected {
/* Override *:selected {} blanket style, keeping the background - bright
and the text - dark */
background-color: transparent;
color: @text_color;
background-image: -gtk-win32-theme-part(listview, 6 11);
}
.list-row:selected:prelight {
background-image: -gtk-win32-theme-part(listview, 6 12);
}