win32: Use a separate css file for xp

Only vista and later has e.g. the menu theme parts
This commit is contained in:
Alexander Larsson 2012-03-13 15:13:17 +01:00
parent 68880e9a35
commit 95a903d020
6 changed files with 754 additions and 734 deletions

View File

@ -954,7 +954,9 @@ gtk_extra_sources = \
gen-paper-names.c \
gtkstatusicon-quartz.c \
gtk.symbols \
gtk-win32-base.css \
gtk-win32.css \
gtk-win32-xp.css \
gtkversion.h.in \
gtkmarshalers.list \
fallback-c89.c

733
gtk/gtk-win32-base.css Normal file
View File

@ -0,0 +1,733 @@
@define-color bg_color -gtk-win32-color(button, 15);
@define-color text_color -gtk-win32-color(button, 18);
@define-color base_color #fff;
@define-color selected_bg_color -gtk-win32-color(button, 13);
@define-color selected_fg_color -gtk-win32-color(button, 14);
@define-color info_fg_color rgb (181, 171, 156);
@define-color info_bg_color rgb (252, 252, 189);
@define-color warning_fg_color rgb (173, 120, 41);
@define-color warning_bg_color rgb (250, 173, 61);
@define-color question_fg_color rgb (97, 122, 214);
@define-color question_bg_color rgb (138, 173, 212);
@define-color error_fg_color rgb (166, 38, 38);
@define-color error_bg_color rgb (237, 54, 54);
GtkWindow,
GtkViewport {
background-color: @bg_color;
}
* {
color: -gtk-win32-color(button, 18);
-GtkWidget-link-color: -gtk-win32-color(button, 26);
-GtkWidget-visited-link-color: -gtk-win32-color(button, 26);
border-color: shade (@bg_color, 0.6);
}
GtkFrame {
border-width: 2px;
border-style: solid;
background-color: transparent;
border-image: -gtk-win32-theme-part(button, 4 1) 2 2 2 2 stretch;
}
*:insensitive {
color: -gtk-win32-color(button, 17);
}
*:selected,
*:selected:focus {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.info {
background-color: @info_bg_color;
color: @info_fg_color;
}
.warning {
background-color: @warning_bg_color;
color: @warning_fg_color;
}
.question {
background-color: @question_bg_color;
color: @question_fg_color;
}
.error {
background-color: @error_bg_color;
color: @error_fg_color;
}
.highlight {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.light-area-focus {
color: #000;
}
.dark-area-focus {
color: #fff;
}
.view {
border-width: 0;
border-radius: 0;
background-color: @base_color;
color: @text_color;
}
.view:selected {
background-color: shade (@bg_color, 0.9);
color: @fg_color;
}
.view:selected:focused {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.tooltip {
background-color: -gtk-win32-color(button, 24);
color: -gtk-win32-color(button, 23);
border-width: 1px;
border-style: solid;
}
.tooltip * {
color: -gtk-win32-color(button, 23);
}
GtkAssistant .sidebar .highlight {
font: bold;
color: -gtk-win32-color(button, 9);
}
/* Buttons */
.button {
color: -gtk-win32-color(button, 18);
background-color: transparent;
background-image: -gtk-win32-theme-part(button, 1 1);
border-width: 0;
-GtkWidget-focus-line-width: 1;
-GtkWidget-focus-padding: 3;
-GtkButton-interior-focuse: true;
padding: 3px;
}
.button:insensitive {
background-image: -gtk-win32-theme-part(button, 1 4);
}
.button:focused {
background-image: -gtk-win32-theme-part(button, 1 5);
}
.button:prelight, .button:prelight:focused {
background-image: -gtk-win32-theme-part(button, 1 2);
color: #000000;
}
.button:active, .button:active:focused, .button:active:focused:prelight {
background-image: -gtk-win32-theme-part(button, 1 3);
}
/* Check buttons */
.check {
background-color: transparent;
background-image: -gtk-win32-theme-part(button, 3 1);
border-width: 0;
}
.check:insensitive {
background-image: -gtk-win32-theme-part(button, 3 4);
}
.check:prelight {
background-image: -gtk-win32-theme-part(button, 3 2);
}
.check:active {
background-image: -gtk-win32-theme-part(button, 3 5);
}
.check:active:insensitive {
background-image: -gtk-win32-theme-part(button, 3 8);
}
.check:active:prelight {
background-image: -gtk-win32-theme-part(button, 3 6);
}
.check:inconsistent {
background-image: -gtk-win32-theme-part(button, 3 9);
}
.check:inconsistent:insensitive {
background-image: -gtk-win32-theme-part(button, 3 12);
}
.check:inconsistent:prelight {
background-image: -gtk-win32-theme-part(button, 3 10);
}
/* Radio buttons */
.radio {
background-color: transparent;
background-image: -gtk-win32-theme-part(button, 2 1);
border-width: 0;
}
.radio:insensitive {
background-image: -gtk-win32-theme-part(button, 2 4);
}
.radio:prelight {
background-image: -gtk-win32-theme-part(button, 2 2);
}
.radio:active {
background-image: -gtk-win32-theme-part(button, 2 5);
}
.radio:active:insensitive {
background-image: -gtk-win32-theme-part(button, 2 8);
}
.radio:active:prelight {
background-image: -gtk-win32-theme-part(button, 2 6);
}
.radio:inconsistent {
background-image: -gtk-win32-theme-part(button, 2 1, over (2 5, 0.3));
}
.radio:inconsistent:insensitive {
background-image: -gtk-win32-theme-part(button, 2 4, over (2 8, 0.3));
}
.radio:inconsistent:prelight {
background-image: -gtk-win32-theme-part(button, 2 4, over(2 6, 0.3));
}
/* Scrollbars */
/* TODO: Win32 has different concept for upper and lower trough, we
don't use this atm */
.scrollbar {
background-color: transparent;
-GtkRange-trough-border: 0;
-GtkRange-arrow-scaling: 0.0;
-GtkRange-slider-width: -gtk-win32-size(scrollbar, 3);
}
.scrollbar.vertical {
-GtkRange-slider-width: -gtk-win32-size(scrollbar, 2);
}
.scrollbar.button.bottom {
background-image: -gtk-win32-theme-part(scrollbar, 1 5);
}
.scrollbar.button.bottom:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 6);
}
.scrollbar.button.bottom:active,
.scrollbar.button.bottom:active:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 7);
}
.scrollbar.button.bottom:insensitive {
background-image: -gtk-win32-theme-part(scrollbar, 1 8);
}
.scrollbar.button.top {
background-image: -gtk-win32-theme-part(scrollbar, 1 1);
}
.scrollbar.button.top:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 2);
}
.scrollbar.button.top:active,
.scrollbar.button.top:active:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 3);
}
.scrollbar.button.top:insensitive {
background-image: -gtk-win32-theme-part(scrollbar, 1 4);
}
.scrollbar.button.left {
background-image: -gtk-win32-theme-part(scrollbar, 1 9);
}
.scrollbar.button.left:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 10);
}
.scrollbar.button.left:active,
.scrollbar.button.left:active:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 11);
}
.scrollbar.button.left:insensitive {
background-image: -gtk-win32-theme-part(scrollbar, 1 12);
}
.scrollbar.button.right {
background-image: -gtk-win32-theme-part(scrollbar, 1 13);
}
.scrollbar.button.right:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 14);
}
.scrollbar.button.right:active,
.scrollbar.button.right:active:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 15);
}
.scrollbar.button.right:insensitive {
background-image: -gtk-win32-theme-part(scrollbar, 1 16);
}
.scrollbar.trough {
border-width: 0;
background-image: -gtk-win32-theme-part(scrollbar, 2 1, over (4 1));
}
.scrollbar.trough.vertical {
border-width: 0;
background-image: -gtk-win32-theme-part(scrollbar, 2 1, over (6 1));
}
.scrollbar.slider {
border-width: 0;
background-image: -gtk-win32-theme-part(scrollbar, 2 1, over (8 1));
}
.scrollbar.slider:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 2 2, over (8 2));
}
.scrollbar.slider.vertical {
background-image: -gtk-win32-theme-part(scrollbar, 3 1, over (9 1));
}
.scrollbar.slider.vertical:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 3 2, over (9 2));
}
/* Entry */
/* TODO: For entries with set_has_frame FALSE we should use 'edit, 3 1', not
sure how to select for this though */
.entry {
background-color: black;
border-width: 0;
background-image: -gtk-win32-theme-part(edit, 1 1);
padding: 3px;
}
.entry:insensitive {
background-image: -gtk-win32-theme-part(edit, 1 4);
}
.entry:prelight {
background-image: -gtk-win32-theme-part(edit, 1 4);
}
/* Spinbuttons */
.spinbutton.button,
.spinbutton.button:focused {
background-color: transparent;
border-width: 1px 1px 0 0;
border-style: none;
background-image: -gtk-win32-theme-part(spin, 1 1);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button:prelight,
.spinbutton.button:prelight:focused {
background-image: -gtk-win32-theme-part(spin, 1 2);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button:active,
.spinbutton.button:active:prelight {
background-image: -gtk-win32-theme-part(spin, 1 3);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button:insensitive {
background-image: -gtk-win32-theme-part(spin, 1 4);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button.bottom,
.spinbutton.button.bottom:focused {
border-width: 0 1px 1px 0;
background-image: -gtk-win32-theme-part(spin, 2 1);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button.bottom:prelight,
.spinbutton.button.bottom:prelight:focused {
background-image: -gtk-win32-theme-part(spin, 2 2);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button.bottom:active,
.spinbutton.button.bottom:active:prelight {
background-image: -gtk-win32-theme-part(spin, 2 3);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button.bottom:insensitive {
background-image: -gtk-win32-theme-part(spin, 2 4);
color: rgba(0, 0, 0, 0);
}
/* Ranges */
/* TODO: The trough is not quite right, it covers everything,
but in win32 the slider 'sticks out' on the sides of the
trough */
.scale {
background-color: transparent;
-GtkScale-value-spacing: 0;
-GtkScale-slider-length: 9;
-GtkRange-slider-width: 20;
-GtkRange-trough-border: 0;
}
.scale.trough {
border-style: none;
border-width: 0;
background-image: -gtk-win32-theme-part(trackbar, 1 1, margins (2 0 2 0));
}
.scale.trough.vertical {
background-image: -gtk-win32-theme-part(trackbar, 1 1, margins (0 2 0 2));
}
.scale.slider {
background-color: transparent;
border-width: 0;
color: rgba(0,0,0,0);
background-image: -gtk-win32-theme-part(trackbar, 3 1);
}
.scale.slider:prelight {
background-image: -gtk-win32-theme-part(trackbar, 3 2);
}
.scale.slider:active,
.scale.slider:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 3 3);
}
.scale.slider:focus {
background-image: -gtk-win32-theme-part(trackbar, 3 4);
}
.scale.slider:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 3 5);
}
.scale.slider.vertical {
background-image: -gtk-win32-theme-part(trackbar, 6 1);
}
.scale.slider.vertical:prelight {
background-image: -gtk-win32-theme-part(trackbar, 6 2);
}
.scale.slider.vertical:active,
.scale.slider.vertical:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 6 3);
}
.scale.slider.vertical:focus {
background-image: -gtk-win32-theme-part(trackbar, 6 4);
}
.scale.slider.vertical:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 6 5);
}
.scale.slider.scale-has-marks-below {
background-image: -gtk-win32-theme-part(trackbar, 4 1);
}
.scale.slider.scale-has-marks-below:prelight {
background-image: -gtk-win32-theme-part(trackbar, 4 2);
}
.scale.slider.scale-has-marks-below:active,
.scale.slider.scale-has-marks-below:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 4 3);
}
.scale.slider.scale-has-marks-below:focus {
background-image: -gtk-win32-theme-part(trackbar, 4 4);
}
.scale.slider.scale-has-marks-below:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 4 5);
}
.scale.slider.scale-has-marks-below.vertical {
background-image: -gtk-win32-theme-part(trackbar, 8 1);
}
.scale.slider.scale-has-marks-below.vertical:prelight {
background-image: -gtk-win32-theme-part(trackbar, 8 2);
}
.scale.slider.scale-has-marks-below.vertical:active,
.scale.slider.scale-has-marks-below.vertical:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 8 3);
}
.scale.slider.scale-has-marks-below.vertical:focus {
background-image: -gtk-win32-theme-part(trackbar, 8 4);
}
.scale.slider.scale-has-marks-below.vertical:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 8 5);
}
.scale.slider.scale-has-marks-above {
background-image: -gtk-win32-theme-part(trackbar, 5 1);
}
.scale.slider.scale-has-marks-above:prelight {
background-image: -gtk-win32-theme-part(trackbar, 5 2);
}
.scale.slider.scale-has-marks-above:active,
.scale.slider.scale-has-marks-above:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 5 3);
}
.scale.slider.scale-has-marks-above:focus {
background-image: -gtk-win32-theme-part(trackbar, 5 4);
}
.scale.slider.scale-has-marks-above:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 5 5);
}
.scale.slider.scale-has-marks-above.vertical {
background-image: -gtk-win32-theme-part(trackbar, 7 1);
}
.scale.slider.scale-has-marks-above.vertical:prelight {
background-image: -gtk-win32-theme-part(trackbar, 7 2);
}
.scale.slider.scale-has-marks-above.vertical:active,
.scale.slider.scale-has-marks-above.vertical:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 7 3);
}
.scale.slider.scale-has-marks-above.vertical:focus {
background-image: -gtk-win32-theme-part(trackbar, 7 4);
}
.scale.slider.scale-has-marks-above.vertical:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 7 5);
}
/* Progress bars */
GtkProgressBar {
background-color: transparent;
padding: 0;
}
GtkProgressBar.trough {
border-width: 0;
background-image: -gtk-win32-theme-part(progress, 1 1);
}
GtkProgressBar.progressbar,
GtkEntry.progressbar {
border-width: 0;
background-image: -gtk-win32-theme-part(progress, 5 1);
}
GtkProgressBar.progressbar.pulse,
GtkEntry.progressbar.pulse {
background-color: transparent;
background-image: -gtk-win32-theme-part(progress, 8 1);
}
GtkProgressBar.trough.vertical {
background-image: -gtk-win32-theme-part(progress, 2 1);
}
.progressbar.vertical {
background-image: -gtk-win32-theme-part(progress, 6 1);
}
.progressbar.pulse.vertical {
background-image: -gtk-win32-theme-part(progress, 10 1);
}
/* Combobox */
GtkComboBox.combobox-entry .button {
background-color: transparent;
border-width: 0;
background-image: -gtk-win32-theme-part(combobox, 1 1);
color: rgba(0, 0, 0, 0);
}
GtkComboBox.combobox-entry .button:prelight,
GtkComboBox.combobox-entry .button:focused,
GtkComboBox.combobox-entry .button:prelight:focused {
background-image: -gtk-win32-theme-part(combobox, 1 2);
}
GtkComboBox.combobox-entry .button:active,
GtkComboBox.combobox-entry .button:active:focused,
GtkComboBox.combobox-entry .button:active:prelight,
GtkComboBox.combobox-entry .button:active:focused:prelight {
background-image: -gtk-win32-theme-part(combobox, 1 3);
}
GtkComboBox.combobox-entry .button:insensitive {
background-image: -gtk-win32-theme-part(combobox, 1 4);
}
/* Notebook */
.notebook {
background-color: #ffffff;
border-width: 1px 1px 1px 1px;
border-style: solid;
background-origin: padding-box;
background-clip: border-box;
background-image: -gtk-win32-theme-part(tab, 9 1, margins(-1 -3 -2 -1));
border-image: -gtk-win32-theme-part(tab, 9 1, margins(0 -2 -1 0)) 1 1 1 1 repeat;
-GtkNotebook-tab-overlap: 1;
-GtkNotebook-tab-curvature: 0;
}
.notebook tab {
border-width: 0;
background-image: -gtk-win32-theme-part(tab, 1 1);
padding: 0px 4px 0px 4px;
}
.notebook tab.left, .notebook tab.right {
padding: 4px 0px 4px 0px;
}
.notebook tab:active {
background-image: -gtk-win32-theme-part(tab, 1 3, margins(0 0 -1 0));
}
.notebook tab:active.top {
padding: 0px 4px 2px 4px;
}
.notebook tab:active.bottom {
padding: 0px 4px 2px 4px;
}
.notebook tab:active.right {
padding: 4px 0px 4px 2px;
}
.notebook tab:active.left {
padding: 4px 2px 4px 0px;
}
/* Toolbar */
.toolbar {
background-color: transparent;
border-width: 0;
background-image: -gtk-win32-theme-part(rebar, 6 1);
}
.toolbar .button,
.toolbar .button:focused {
background-color: transparent;
background-image: -gtk-win32-theme-part(toolbar, 1 1);
}
.toolbar .button:prelight,
.toolbar .button:prelight:focused {
background-image: -gtk-win32-theme-part(toolbar, 1 2);
}
.toolbar .button:active {
background-image: -gtk-win32-theme-part(toolbar, 1 3);
}
.toolbar .button:active:prelight {
background-image: -gtk-win32-theme-part(toolbar, 1 6);
}
.toolbar .button:insensitive {
background-image: -gtk-win32-theme-part(toolbar, 1 4);
}
/* Column headers */
column-header .button,
column-header .button:focus {
background-color: transparent;
border-width: 0;
background-image: -gtk-win32-theme-part(header, 1 1);
}
column-header .button:prelight,
column-header .button:prelight:focus {
background-image: -gtk-win32-theme-part(header, 1 2);
}
column-header .button:active,
column-header .button:active:prelight,
column-header .button:active:focus,
column-header .button:active:prelight:focus {
background-image: -gtk-win32-theme-part(header, 1 3);
}
GtkSwitch {
font: bold condensed 10;
color: -gtk-win32-color(button, 18);
}
GtkSwitch.slider {
padding: 4px;
background-color: transparent;
background-image: -gtk-win32-theme-part(scrollbar, 2 1, over (8 1));
border-width: 0;
}
GtkSwitch.trough:insensitive {
background-image: -gtk-win32-theme-part(button, 1 4);
}
GtkSwitch.trough {
background-image: -gtk-win32-theme-part(button, 1 1);
}
GtkSwitch.trough:active {
background-image: -gtk-win32-theme-part(button, 1 2);
}

1
gtk/gtk-win32-xp.css Normal file
View File

@ -0,0 +1 @@
@import url("gtk-win32-base.css");

View File

@ -1,592 +1,4 @@
@define-color bg_color -gtk-win32-color(button, 15);
@define-color text_color -gtk-win32-color(button, 18);
@define-color base_color #fff;
@define-color selected_bg_color -gtk-win32-color(button, 13);
@define-color selected_fg_color -gtk-win32-color(button, 14);
@define-color info_fg_color rgb (181, 171, 156);
@define-color info_bg_color rgb (252, 252, 189);
@define-color warning_fg_color rgb (173, 120, 41);
@define-color warning_bg_color rgb (250, 173, 61);
@define-color question_fg_color rgb (97, 122, 214);
@define-color question_bg_color rgb (138, 173, 212);
@define-color error_fg_color rgb (166, 38, 38);
@define-color error_bg_color rgb (237, 54, 54);
GtkWindow,
GtkViewport {
background-color: @bg_color;
}
* {
color: -gtk-win32-color(button, 18);
-GtkWidget-link-color: -gtk-win32-color(button, 26);
-GtkWidget-visited-link-color: -gtk-win32-color(button, 26);
border-color: shade (@bg_color, 0.6);
}
GtkFrame {
border-width: 2px;
border-style: solid;
background-color: transparent;
border-image: -gtk-win32-theme-part(button, 4 1) 2 2 2 2 stretch;
}
*:insensitive {
color: -gtk-win32-color(button, 17);
}
*:selected,
*:selected:focus {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.info {
background-color: @info_bg_color;
color: @info_fg_color;
}
.warning {
background-color: @warning_bg_color;
color: @warning_fg_color;
}
.question {
background-color: @question_bg_color;
color: @question_fg_color;
}
.error {
background-color: @error_bg_color;
color: @error_fg_color;
}
.highlight {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.light-area-focus {
color: #000;
}
.dark-area-focus {
color: #fff;
}
.view {
border-width: 0;
border-radius: 0;
background-color: @base_color;
color: @text_color;
}
.view:selected {
background-color: shade (@bg_color, 0.9);
color: @fg_color;
}
.view:selected:focused {
background-color: @selected_bg_color;
color: @selected_fg_color;
}
.tooltip {
background-color: -gtk-win32-color(button, 24);
color: -gtk-win32-color(button, 23);
border-width: 1px;
border-style: solid;
}
.tooltip * {
color: -gtk-win32-color(button, 23);
}
GtkAssistant .sidebar .highlight {
font: bold;
color: -gtk-win32-color(button, 9);
}
/* Buttons */
.button {
color: -gtk-win32-color(button, 18);
background-color: transparent;
background-image: -gtk-win32-theme-part(button, 1 1);
border-width: 0;
-GtkWidget-focus-line-width: 1;
-GtkWidget-focus-padding: 3;
-GtkButton-interior-focuse: true;
padding: 3px;
}
.button:insensitive {
background-image: -gtk-win32-theme-part(button, 1 4);
}
.button:focused {
background-image: -gtk-win32-theme-part(button, 1 5);
}
.button:prelight, .button:prelight:focused {
background-image: -gtk-win32-theme-part(button, 1 2);
color: #000000;
}
.button:active, .button:active:focused, .button:active:focused:prelight {
background-image: -gtk-win32-theme-part(button, 1 3);
}
/* Check buttons */
.check {
background-color: transparent;
background-image: -gtk-win32-theme-part(button, 3 1);
border-width: 0;
}
.check:insensitive {
background-image: -gtk-win32-theme-part(button, 3 4);
}
.check:prelight {
background-image: -gtk-win32-theme-part(button, 3 2);
}
.check:active {
background-image: -gtk-win32-theme-part(button, 3 5);
}
.check:active:insensitive {
background-image: -gtk-win32-theme-part(button, 3 8);
}
.check:active:prelight {
background-image: -gtk-win32-theme-part(button, 3 6);
}
.check:inconsistent {
background-image: -gtk-win32-theme-part(button, 3 9);
}
.check:inconsistent:insensitive {
background-image: -gtk-win32-theme-part(button, 3 12);
}
.check:inconsistent:prelight {
background-image: -gtk-win32-theme-part(button, 3 10);
}
/* Radio buttons */
.radio {
background-color: transparent;
background-image: -gtk-win32-theme-part(button, 2 1);
border-width: 0;
}
.radio:insensitive {
background-image: -gtk-win32-theme-part(button, 2 4);
}
.radio:prelight {
background-image: -gtk-win32-theme-part(button, 2 2);
}
.radio:active {
background-image: -gtk-win32-theme-part(button, 2 5);
}
.radio:active:insensitive {
background-image: -gtk-win32-theme-part(button, 2 8);
}
.radio:active:prelight {
background-image: -gtk-win32-theme-part(button, 2 6);
}
.radio:inconsistent {
background-image: -gtk-win32-theme-part(button, 2 1, over (2 5, 0.3));
}
.radio:inconsistent:insensitive {
background-image: -gtk-win32-theme-part(button, 2 4, over (2 8, 0.3));
}
.radio:inconsistent:prelight {
background-image: -gtk-win32-theme-part(button, 2 4, over(2 6, 0.3));
}
/* Scrollbars */
/* TODO: Win32 has different concept for upper and lower trough, we
don't use this atm */
.scrollbar {
background-color: transparent;
-GtkRange-trough-border: 0;
-GtkRange-arrow-scaling: 0.0;
-GtkRange-slider-width: -gtk-win32-size(scrollbar, 3);
}
.scrollbar.vertical {
-GtkRange-slider-width: -gtk-win32-size(scrollbar, 2);
}
.scrollbar.button.bottom {
background-image: -gtk-win32-theme-part(scrollbar, 1 5);
}
.scrollbar.button.bottom:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 6);
}
.scrollbar.button.bottom:active,
.scrollbar.button.bottom:active:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 7);
}
.scrollbar.button.bottom:insensitive {
background-image: -gtk-win32-theme-part(scrollbar, 1 8);
}
.scrollbar.button.top {
background-image: -gtk-win32-theme-part(scrollbar, 1 1);
}
.scrollbar.button.top:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 2);
}
.scrollbar.button.top:active,
.scrollbar.button.top:active:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 3);
}
.scrollbar.button.top:insensitive {
background-image: -gtk-win32-theme-part(scrollbar, 1 4);
}
.scrollbar.button.left {
background-image: -gtk-win32-theme-part(scrollbar, 1 9);
}
.scrollbar.button.left:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 10);
}
.scrollbar.button.left:active,
.scrollbar.button.left:active:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 11);
}
.scrollbar.button.left:insensitive {
background-image: -gtk-win32-theme-part(scrollbar, 1 12);
}
.scrollbar.button.right {
background-image: -gtk-win32-theme-part(scrollbar, 1 13);
}
.scrollbar.button.right:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 14);
}
.scrollbar.button.right:active,
.scrollbar.button.right:active:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 1 15);
}
.scrollbar.button.right:insensitive {
background-image: -gtk-win32-theme-part(scrollbar, 1 16);
}
.scrollbar.trough {
border-width: 0;
background-image: -gtk-win32-theme-part(scrollbar, 2 1, over (4 1));
}
.scrollbar.trough.vertical {
border-width: 0;
background-image: -gtk-win32-theme-part(scrollbar, 2 1, over (6 1));
}
.scrollbar.slider {
border-width: 0;
background-image: -gtk-win32-theme-part(scrollbar, 2 1, over (8 1));
}
.scrollbar.slider:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 2 2, over (8 2));
}
.scrollbar.slider.vertical {
background-image: -gtk-win32-theme-part(scrollbar, 3 1, over (9 1));
}
.scrollbar.slider.vertical:prelight {
background-image: -gtk-win32-theme-part(scrollbar, 3 2, over (9 2));
}
/* Entry */
/* TODO: For entries with set_has_frame FALSE we should use 'edit, 3 1', not
sure how to select for this though */
.entry {
background-color: black;
border-width: 0;
background-image: -gtk-win32-theme-part(edit, 1 1);
padding: 3px;
}
.entry:insensitive {
background-image: -gtk-win32-theme-part(edit, 1 4);
}
.entry:prelight {
background-image: -gtk-win32-theme-part(edit, 1 4);
}
/* Spinbuttons */
.spinbutton.button,
.spinbutton.button:focused {
background-color: transparent;
border-width: 1px 1px 0 0;
border-style: none;
background-image: -gtk-win32-theme-part(spin, 1 1);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button:prelight,
.spinbutton.button:prelight:focused {
background-image: -gtk-win32-theme-part(spin, 1 2);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button:active,
.spinbutton.button:active:prelight {
background-image: -gtk-win32-theme-part(spin, 1 3);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button:insensitive {
background-image: -gtk-win32-theme-part(spin, 1 4);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button.bottom,
.spinbutton.button.bottom:focused {
border-width: 0 1px 1px 0;
background-image: -gtk-win32-theme-part(spin, 2 1);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button.bottom:prelight,
.spinbutton.button.bottom:prelight:focused {
background-image: -gtk-win32-theme-part(spin, 2 2);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button.bottom:active,
.spinbutton.button.bottom:active:prelight {
background-image: -gtk-win32-theme-part(spin, 2 3);
color: rgba(0, 0, 0, 0);
}
.spinbutton.button.bottom:insensitive {
background-image: -gtk-win32-theme-part(spin, 2 4);
color: rgba(0, 0, 0, 0);
}
/* Ranges */
/* TODO: The trough is not quite right, it covers everything,
but in win32 the slider 'sticks out' on the sides of the
trough */
.scale {
background-color: transparent;
-GtkScale-value-spacing: 0;
-GtkScale-slider-length: 9;
-GtkRange-slider-width: 20;
-GtkRange-trough-border: 0;
}
.scale.trough {
border-style: none;
border-width: 0;
background-image: -gtk-win32-theme-part(trackbar, 1 1, margins (2 0 2 0));
}
.scale.trough.vertical {
background-image: -gtk-win32-theme-part(trackbar, 1 1, margins (0 2 0 2));
}
.scale.slider {
background-color: transparent;
border-width: 0;
color: rgba(0,0,0,0);
background-image: -gtk-win32-theme-part(trackbar, 3 1);
}
.scale.slider:prelight {
background-image: -gtk-win32-theme-part(trackbar, 3 2);
}
.scale.slider:active,
.scale.slider:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 3 3);
}
.scale.slider:focus {
background-image: -gtk-win32-theme-part(trackbar, 3 4);
}
.scale.slider:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 3 5);
}
.scale.slider.vertical {
background-image: -gtk-win32-theme-part(trackbar, 6 1);
}
.scale.slider.vertical:prelight {
background-image: -gtk-win32-theme-part(trackbar, 6 2);
}
.scale.slider.vertical:active,
.scale.slider.vertical:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 6 3);
}
.scale.slider.vertical:focus {
background-image: -gtk-win32-theme-part(trackbar, 6 4);
}
.scale.slider.vertical:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 6 5);
}
.scale.slider.scale-has-marks-below {
background-image: -gtk-win32-theme-part(trackbar, 4 1);
}
.scale.slider.scale-has-marks-below:prelight {
background-image: -gtk-win32-theme-part(trackbar, 4 2);
}
.scale.slider.scale-has-marks-below:active,
.scale.slider.scale-has-marks-below:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 4 3);
}
.scale.slider.scale-has-marks-below:focus {
background-image: -gtk-win32-theme-part(trackbar, 4 4);
}
.scale.slider.scale-has-marks-below:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 4 5);
}
.scale.slider.scale-has-marks-below.vertical {
background-image: -gtk-win32-theme-part(trackbar, 8 1);
}
.scale.slider.scale-has-marks-below.vertical:prelight {
background-image: -gtk-win32-theme-part(trackbar, 8 2);
}
.scale.slider.scale-has-marks-below.vertical:active,
.scale.slider.scale-has-marks-below.vertical:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 8 3);
}
.scale.slider.scale-has-marks-below.vertical:focus {
background-image: -gtk-win32-theme-part(trackbar, 8 4);
}
.scale.slider.scale-has-marks-below.vertical:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 8 5);
}
.scale.slider.scale-has-marks-above {
background-image: -gtk-win32-theme-part(trackbar, 5 1);
}
.scale.slider.scale-has-marks-above:prelight {
background-image: -gtk-win32-theme-part(trackbar, 5 2);
}
.scale.slider.scale-has-marks-above:active,
.scale.slider.scale-has-marks-above:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 5 3);
}
.scale.slider.scale-has-marks-above:focus {
background-image: -gtk-win32-theme-part(trackbar, 5 4);
}
.scale.slider.scale-has-marks-above:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 5 5);
}
.scale.slider.scale-has-marks-above.vertical {
background-image: -gtk-win32-theme-part(trackbar, 7 1);
}
.scale.slider.scale-has-marks-above.vertical:prelight {
background-image: -gtk-win32-theme-part(trackbar, 7 2);
}
.scale.slider.scale-has-marks-above.vertical:active,
.scale.slider.scale-has-marks-above.vertical:prelight:active {
background-image: -gtk-win32-theme-part(trackbar, 7 3);
}
.scale.slider.scale-has-marks-above.vertical:focus {
background-image: -gtk-win32-theme-part(trackbar, 7 4);
}
.scale.slider.scale-has-marks-above.vertical:insensitive {
background-image: -gtk-win32-theme-part(trackbar, 7 5);
}
/* Progress bars */
GtkProgressBar {
background-color: transparent;
padding: 0;
}
GtkProgressBar.trough {
border-width: 0;
background-image: -gtk-win32-theme-part(progress, 1 1);
}
GtkProgressBar.progressbar,
GtkEntry.progressbar {
border-width: 0;
background-image: -gtk-win32-theme-part(progress, 5 1);
}
GtkProgressBar.progressbar.pulse,
GtkEntry.progressbar.pulse {
background-color: transparent;
background-image: -gtk-win32-theme-part(progress, 8 1);
}
GtkProgressBar.trough.vertical {
background-image: -gtk-win32-theme-part(progress, 2 1);
}
.progressbar.vertical {
background-image: -gtk-win32-theme-part(progress, 6 1);
}
.progressbar.pulse.vertical {
background-image: -gtk-win32-theme-part(progress, 10 1);
}
@import url("gtk-win32-base.css");
/* Menus */
@ -685,147 +97,3 @@ GtkProgressBar.trough.vertical {
background-image: -gtk-win32-theme-part(menu, 11 2);
border-width: 0;
}
/* Combobox */
GtkComboBox.combobox-entry .button {
background-color: transparent;
border-width: 0;
background-image: -gtk-win32-theme-part(combobox, 1 1);
color: rgba(0, 0, 0, 0);
}
GtkComboBox.combobox-entry .button:prelight,
GtkComboBox.combobox-entry .button:focused,
GtkComboBox.combobox-entry .button:prelight:focused {
background-image: -gtk-win32-theme-part(combobox, 1 2);
}
GtkComboBox.combobox-entry .button:active,
GtkComboBox.combobox-entry .button:active:focused,
GtkComboBox.combobox-entry .button:active:prelight,
GtkComboBox.combobox-entry .button:active:focused:prelight {
background-image: -gtk-win32-theme-part(combobox, 1 3);
}
GtkComboBox.combobox-entry .button:insensitive {
background-image: -gtk-win32-theme-part(combobox, 1 4);
}
/* Notebook */
.notebook {
background-color: #ffffff;
border-width: 1px 1px 1px 1px;
border-style: solid;
background-origin: padding-box;
background-clip: border-box;
background-image: -gtk-win32-theme-part(tab, 9 1, margins(-1 -3 -2 -1));
border-image: -gtk-win32-theme-part(tab, 9 1, margins(0 -2 -1 0)) 1 1 1 1 repeat;
-GtkNotebook-tab-overlap: 1;
-GtkNotebook-tab-curvature: 0;
}
.notebook tab {
border-width: 0;
background-image: -gtk-win32-theme-part(tab, 1 1);
padding: 0px 4px 0px 4px;
}
.notebook tab.left, .notebook tab.right {
padding: 4px 0px 4px 0px;
}
.notebook tab:active {
background-image: -gtk-win32-theme-part(tab, 1 3, margins(0 0 -1 0));
}
.notebook tab:active.top {
padding: 0px 4px 2px 4px;
}
.notebook tab:active.bottom {
padding: 0px 4px 2px 4px;
}
.notebook tab:active.right {
padding: 4px 0px 4px 2px;
}
.notebook tab:active.left {
padding: 4px 2px 4px 0px;
}
/* Toolbar */
.toolbar {
background-color: transparent;
border-width: 0;
background-image: -gtk-win32-theme-part(rebar, 6 1);
}
.toolbar .button,
.toolbar .button:focused {
background-color: transparent;
background-image: -gtk-win32-theme-part(toolbar, 1 1);
}
.toolbar .button:prelight,
.toolbar .button:prelight:focused {
background-image: -gtk-win32-theme-part(toolbar, 1 2);
}
.toolbar .button:active {
background-image: -gtk-win32-theme-part(toolbar, 1 3);
}
.toolbar .button:active:prelight {
background-image: -gtk-win32-theme-part(toolbar, 1 6);
}
.toolbar .button:insensitive {
background-image: -gtk-win32-theme-part(toolbar, 1 4);
}
/* Column headers */
column-header .button,
column-header .button:focus {
background-color: transparent;
border-width: 0;
background-image: -gtk-win32-theme-part(header, 1 1);
}
column-header .button:prelight,
column-header .button:prelight:focus {
background-image: -gtk-win32-theme-part(header, 1 2);
}
column-header .button:active,
column-header .button:active:prelight,
column-header .button:active:focus,
column-header .button:active:prelight:focus {
background-image: -gtk-win32-theme-part(header, 1 3);
}
GtkSwitch {
font: bold condensed 10;
color: -gtk-win32-color(button, 18);
}
GtkSwitch.slider {
padding: 4px;
background-color: transparent;
background-image: -gtk-win32-theme-part(scrollbar, 2 1, over (8 1));
border-width: 0;
}
GtkSwitch.trough:insensitive {
background-image: -gtk-win32-theme-part(button, 1 4);
}
GtkSwitch.trough {
background-image: -gtk-win32-theme-part(button, 1 1);
}
GtkSwitch.trough:active {
background-image: -gtk-win32-theme-part(button, 1 2);
}

View File

@ -3,6 +3,8 @@
<gresource prefix="/org/gtk/libgtk">
<file alias="Raleigh.css">gtk-default.css</file>
<file>gtk-win32.css</file>
<file>gtk-win32-xp.css</file>
<file>gtk-win32-base.css</file>
<file alias="cursor/dnd-ask.png">cursor_dnd_ask.png</file>
<file alias="cursor/dnd-link.png">cursor_dnd_link.png</file>
<file alias="cursor/dnd-none.png">cursor_dnd_none.png</file>

View File

@ -45,6 +45,10 @@
#include "quartz/gdkquartz.h"
#endif
#ifdef GDK_WINDOWING_WIN32
#include <windows.h>
#endif
#undef GDK_DEPRECATED
#undef GDK_DEPRECATED_FOR
#define GDK_DEPRECATED
@ -327,6 +331,14 @@ gtk_settings_class_init (GtkSettingsClass *class)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
guint result;
#ifdef G_OS_WIN32
OSVERSIONINFO version;
BOOL version_res;
memset (&version, 0, sizeof (version));
version.dwOSVersionInfoSize = sizeof (version);
version_res = GetVersionEx (&version);
#endif
gobject_class->finalize = gtk_settings_finalize;
gobject_class->get_property = gtk_settings_get_property;
@ -408,7 +420,9 @@ gtk_settings_class_init (GtkSettingsClass *class)
P_("Theme Name"),
P_("Name of theme to load"),
#ifdef G_OS_WIN32
"gtk-win32",
(version_res && version.dwMajorVersion >= 6) ?
"gtk-win32" :
"gtk-win32-xp",
#else
"Raleigh",
#endif