diff options
author | Alexander Larsson <alexl@redhat.com> | 2012-03-13 15:13:17 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2012-03-13 15:14:36 +0100 |
commit | 95a903d020163ffc94e9ba1d4ffd1c33e3c4a51a (patch) | |
tree | 9ff651aa306a66c5349e57e981c4c65c1cee9526 /gtk | |
parent | 68880e9a35eb792b78aeb6a68d2ad1099960562e (diff) | |
download | gtk+-95a903d020163ffc94e9ba1d4ffd1c33e3c4a51a.tar.gz |
win32: Use a separate css file for xp
Only vista and later has e.g. the menu theme parts
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/Makefile.am | 2 | ||||
-rw-r--r-- | gtk/gtk-win32-base.css | 733 | ||||
-rw-r--r-- | gtk/gtk-win32-xp.css | 1 | ||||
-rw-r--r-- | gtk/gtk-win32.css | 734 | ||||
-rw-r--r-- | gtk/gtk.gresource.xml | 2 | ||||
-rw-r--r-- | gtk/gtksettings.c | 16 |
6 files changed, 754 insertions, 734 deletions
diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 41e42d5b28..e40232edb9 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -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 diff --git a/gtk/gtk-win32-base.css b/gtk/gtk-win32-base.css new file mode 100644 index 0000000000..d9a8e6e0a0 --- /dev/null +++ b/gtk/gtk-win32-base.css @@ -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);
+}
\ No newline at end of file diff --git a/gtk/gtk-win32-xp.css b/gtk/gtk-win32-xp.css new file mode 100644 index 0000000000..65965b0f04 --- /dev/null +++ b/gtk/gtk-win32-xp.css @@ -0,0 +1 @@ +@import url("gtk-win32-base.css"); diff --git a/gtk/gtk-win32.css b/gtk/gtk-win32.css index 3b78c93d28..c3a216e9af 100644 --- a/gtk/gtk-win32.css +++ b/gtk/gtk-win32.css @@ -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); -}
\ No newline at end of file diff --git a/gtk/gtk.gresource.xml b/gtk/gtk.gresource.xml index cabb173d6a..15af2f6265 100644 --- a/gtk/gtk.gresource.xml +++ b/gtk/gtk.gresource.xml @@ -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> diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c index 04926f4e62..2e17430fcb 100644 --- a/gtk/gtksettings.c +++ b/gtk/gtksettings.c @@ -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 |