numix-gtk-theme/gtk-3.0/scss/widgets/_button.scss

349 lines
8.5 KiB
SCSS
Raw Normal View History

2014-11-23 17:06:45 +00:00
/*********
! Buttons
**********/
2014-07-05 19:54:53 +00:00
2015-05-31 16:56:05 +00:00
$shadow_strength: .3;
2014-12-14 11:47:14 +00:00
@include exports("button_extends") {
%button {
2015-05-31 16:20:35 +00:00
padding: $spacing ($spacing + 2px);
2014-07-05 19:54:53 +00:00
border-width: 1px;
2014-12-14 11:47:14 +00:00
border-style: solid;
2014-07-05 19:54:53 +00:00
border-radius: $roundness;
2015-05-31 16:20:35 +00:00
transition: 150ms ease;
2014-12-14 11:47:14 +00:00
outline-color: transparent;
2014-12-14 11:47:14 +00:00
-GtkWidget-focus-padding: 1;
-GtkWidget-focus-line-width: 0;
2015-05-31 16:20:35 +00:00
&:focus, &:hover, &:active { transition: none; }
2014-07-05 19:54:53 +00:00
}
2014-12-20 11:38:26 +00:00
%linked_middle {
border-radius: 0;
border-left-style: none;
border-right-style: solid;
&:dir(rtl) {
border-radius: 0; // needed when including %linked_middle:dir(rtl)
border-right-style: none;
border-left-style: solid
}
}
2014-12-14 11:47:14 +00:00
%linked_button {
2014-07-05 19:54:53 +00:00
border-width: 1px;
2014-12-14 11:47:14 +00:00
border-style: solid;
border-radius: 0;
border-right-style: none;
border-left-style: none;
2014-12-14 11:47:14 +00:00
&:first-child {
border-width: 1px;
border-radius: $roundness;
border-left-style: solid;
border-right-style: none;
2014-12-14 11:47:14 +00:00
border-top-right-radius: 0;
border-bottom-right-radius: 0;
&:dir(rtl) {
border-left-style: none;
border-right-style: solid;
}
}
2014-07-05 19:54:53 +00:00
2014-12-14 11:47:14 +00:00
&:last-child {
border-width: 1px;
border-radius: $roundness;
border-left-style: none;
border-right-style: solid;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
&:dir(rtl) {
border-left-style: solid;
border-right-style: none;
}
}
&:only-child, &:first-child:only-child {
border-width: 1px;
border-style: solid;
border-radius: $roundness;
}
2014-07-05 19:54:53 +00:00
}
2014-12-13 14:17:53 +00:00
}
@mixin linked_button($bg) {
@extend %linked_button;
2015-05-31 16:56:05 +00:00
box-shadow: inset -1px 0 border_normal(rgba(0,0,0,.12)),
2015-05-31 16:20:35 +00:00
0 1px 2px -1px alpha($dark_shadow, .12 + $shadow_strength);
2014-07-05 19:54:53 +00:00
&:focus, &:hover {
2015-05-31 16:56:05 +00:00
box-shadow: inset -1px 0 border_focus(rgba(0,0,0,.12)),
2015-05-31 16:20:35 +00:00
0 1px 2px -1px alpha($dark_shadow, .32 + $shadow_strength);
}
2014-07-05 19:54:53 +00:00
&:active, &:active:hover,
2014-11-23 17:06:45 +00:00
&:active:focus, &:active:hover:focus,
&:checked, &:checked:hover,
&:checked:focus, &:checked:hover:focus {
2015-05-31 16:56:05 +00:00
box-shadow: inset -1px 0 border_active(rgba(0,0,0,.12)),
2015-05-31 16:20:35 +00:00
inset 0 1px alpha($dark_shadow, .07),
2014-12-13 14:17:53 +00:00
inset 0 -1px alpha($dark_shadow, .05);
2014-07-05 19:54:53 +00:00
}
2015-05-31 16:20:35 +00:00
&:insensitive { box-shadow: inset -1px 0 shade($bg, .8); }
&:last-child, &:only-child { box-shadow: 0 1px 2px -1px alpha($dark_shadow, .12 + $shadow_strength); }
&:last-child:hover, &:only-child:hover { box-shadow: 0 1px 2px -1px alpha($dark_shadow, .32 + $shadow_strength); }
2014-07-05 19:54:53 +00:00
&:insensitive:last-child, &:insensitive:only-child,
&:active:insensitive:last-child, &:active:insensitive:only-child,
&:checked:insensitive:last-child, &:checked:insensitive:only-child { box-shadow: none; }
2014-07-05 19:54:53 +00:00
2015-05-31 16:20:35 +00:00
&:active:last-child, &:active:last-child:focus, &:active:last-child:hover, &:active:last-child:hover:focus,
&:checked:last-child, &:checked:last-child:focus, &:checked:last-child:hover, &:checked:last-child:hover:focus, {
box-shadow: inset 0 1px alpha($dark_shadow, .07),
inset -1px 0 alpha($dark_shadow, .06);
}
&:active:only-child, &:active:only-child:focus, &:active:only-child:hover, &:active:only-child:hover:focus,
&:checked:only-child, &:checked:only-child:focus, &:checked:only-child:hover, &:checked:only-child:hover:focus {
box-shadow: inset 1px 0 alpha($dark_shadow, .06),
inset 0 1px alpha($dark_shadow, .07),
inset -1px 0 alpha($dark_shadow, .06);
2014-07-05 19:54:53 +00:00
}
}
@mixin button($bg, $fg) {
2014-12-13 14:17:53 +00:00
@extend %button;
2015-05-31 16:56:05 +00:00
@include linear-gradient(shade($bg, 1.3));
@include border(rgba(0,0,0,.12));
2014-07-05 19:54:53 +00:00
color: $fg;
2015-05-31 16:20:35 +00:00
box-shadow: 0 1px 2px -1px alpha($dark_shadow, .12 + $shadow_strength);
2015-05-31 16:56:05 +00:00
border-color: alpha($bg, 0);
2014-07-05 19:54:53 +00:00
2015-05-31 16:20:35 +00:00
&.flat {
2015-05-31 16:56:05 +00:00
border-color: alpha($bg, 0);
background-color: alpha($bg, 0);
2015-05-31 16:20:35 +00:00
background-image: none;
box-shadow: none;
2014-07-05 19:54:53 +00:00
}
2014-12-13 14:35:09 +00:00
&, &.flat {
&:focus, &:hover {
2015-05-31 16:56:05 +00:00
@include linear-gradient(shade($bg, 1.4));
2014-12-13 14:35:09 +00:00
2015-05-31 16:56:05 +00:00
border-color: alpha($bg, 0);
2015-05-31 16:20:35 +00:00
box-shadow: 0 1px 2px -1px alpha($dark_shadow, .32 + $shadow_strength);
2014-12-13 14:35:09 +00:00
}
2015-05-31 16:20:35 +00:00
&:active, &:checked {
@include linear-gradient(shade($bg, .9), to top);
2014-12-13 14:35:09 +00:00
2015-05-31 16:20:35 +00:00
color: $fg;
box-shadow: inset 1px 0 alpha($dark_shadow, .06),
inset 0 1px alpha($dark_shadow, .07),
inset -1px 0 alpha($dark_shadow, .06),
2014-12-13 14:35:09 +00:00
inset 0 -1px alpha($dark_shadow, .05);
}
2015-05-31 16:20:35 +00:00
&:active:insensitive, &:checked:insensitive {
2014-12-13 14:35:09 +00:00
@include linear-gradient(shade($bg, .8));
2014-07-05 19:54:53 +00:00
2015-05-31 16:20:35 +00:00
color: $fg;
2014-12-13 14:35:09 +00:00
box-shadow: none;
}
2015-05-31 16:20:35 +00:00
&:insensitive:insensitive {
@if (lightness($bg) > 50) {
@include linear-gradient(shade($bg, .95));
} @else {
@include linear-gradient(alpha($bg, .3));
}
color: mix($bg, $fg, .5);
box-shadow: none;
}
2014-07-05 19:54:53 +00:00
}
&.separator, .separator {
2014-12-13 14:35:09 +00:00
border: 1px solid currentColor;
2014-12-19 21:53:56 +00:00
color: shade($bg, ($contrast + .1));
2014-07-05 19:54:53 +00:00
&:insensitive { color: shade($bg, .85); }
}
}
@include exports("button") {
2015-05-31 16:20:35 +00:00
* {
-GtkButton-child-displacement-x: 0;
-GtkButton-child-displacement-y: 0;
-GtkButton-default-border: 0;
-GtkButton-image-spacing: 0;
-GtkButton-inner-border: 1;
-GtkButton-interior-focus: true;
-GtkButtonBox-child-min-height: 24;
-GtkButtonBox-child-internal-pad-y: 1;
-GtkToolButton-icon-spacing: 6;
}
%close_button {
border: 1px solid transparent;
background-color: transparent;
background-image: none;
box-shadow: none;
&:focus, &:hover {
2015-05-31 16:20:35 +00:00
border: 1px solid alpha(black, .3);
background-color: alpha(white, .2);
background-image: none;
box-shadow: none;
}
&:active, &:checked, &:active:hover, &:checked:hover {
2015-05-31 16:20:35 +00:00
border: 1px solid alpha(black, .3);
background-color: alpha(black, .1);
background-image: none;
box-shadow: none;
}
}
.button {
@include button($bg_color, $fg_color);
2014-07-05 19:54:53 +00:00
&.default { @include button($selected_bg_color, $selected_fg_color); }
2014-12-08 20:08:40 +00:00
2015-05-31 16:20:35 +00:00
&.linked, .linked & { @include linked_button(shade($bg_color, 1.2)); }
2014-12-13 14:17:53 +00:00
2014-12-08 20:08:40 +00:00
.spinbutton & {
2015-05-31 16:20:35 +00:00
color: mix($text_color, $base_color, .4);
2014-12-13 14:17:53 +00:00
padding: $spacing ($spacing * 2);
border: none;
2014-12-08 20:08:40 +00:00
border-radius: 0;
border-style: none;
background-color: transparent;
background-image: none;
2015-05-31 16:20:35 +00:00
box-shadow: inset 1px 0 shade($base_color, .9);
2014-12-08 20:08:40 +00:00
&:insensitive {
2015-05-31 16:20:35 +00:00
color: mix($text_color, $base_color, .7);
box-shadow: inset 1px 0 shade($base_color, .85);
2014-12-08 20:08:40 +00:00
}
&:active, &:checked, &:hover { color: $text_color; }
&:first-child {
border-radius: $roundness 0 0 $roundness;
box-shadow: none;
}
&:last-child { border-radius: 0 $roundness $roundness 0; }
2015-05-31 16:20:35 +00:00
&:dir(rtl) { box-shadow: inset -1px 0 shade($base_color, .9); }
2014-12-08 20:08:40 +00:00
}
.spinbutton.vertical & {
2015-05-31 16:20:35 +00:00
border: 1px solid shade($bg_color, .8);
2014-12-14 11:47:14 +00:00
border-radius: $roundness;
background-color: shade($bg_color, 1.08);
background-image: none;
color: $fg_color;
box-shadow: none;
2014-12-08 20:08:40 +00:00
&:hover {
2015-05-31 16:20:35 +00:00
border-color: shade($bg_color, .7);
2014-12-19 21:53:56 +00:00
background-color: shade($bg_color, 1.1);
2014-12-08 20:08:40 +00:00
background-image: none;
}
&:active, &:checked {
2015-05-31 16:20:35 +00:00
border-color: shade($bg_color, .8);
background-color: shade($bg_color, .95);
2014-12-08 20:08:40 +00:00
background-image: none;
}
&:active:hover, &:checked:hover {
2015-05-31 16:20:35 +00:00
border-color: shade($bg_color, .7);
2014-12-08 20:08:40 +00:00
}
2015-05-31 16:20:35 +00:00
&:focus, &:hover:focus, &:active:focus, &:active:hover:focus { border-color: shade($bg_color, .7); }
2014-12-08 20:08:40 +00:00
&:insensitive {
2015-05-31 16:20:35 +00:00
border-color: shade($bg_color, .85);
background-color: shade($bg_color, .9);
2014-12-08 20:08:40 +00:00
background-image: none;
}
&:first-child {
border-width: 1px;
border-bottom-width: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
&:last-child {
border-width: 1px;
border-top-width: 0;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
}
.spinbutton.vertical.entry {
border-width: 1px;
border-style: solid;
border-radius: 0;
}
}
}
2014-12-20 11:38:26 +00:00
/******************
! ComboBoxes *
*******************/
@include exports("combobox") {
GtkComboBox {
> .button {
padding: ($spacing - 2px) ($spacing + 1px);
2015-05-31 16:20:35 +00:00
-GtkComboBox-arrow-scaling: .5;
2014-12-20 11:38:26 +00:00
-GtkComboBox-shadow-type: none;
}
&.combobox-entry {
.entry, .button { @extend %linked_button; }
}
.separator {
/* always disable separators */
-GtkWidget-wide-separators: true;
-GtkWidget-horizontal-separator: 0;
-GtkWidget-vertical-separator: 0;
border-style: none;
}
}
.linked > GtkComboBox {
> .button {
// the combo is a composite widget so the way we do button linked doesn't
// work, special case needed. See
// https://bugzilla.gnome.org/show_bug.cgi?id=733979
&:dir(ltr) { @extend %linked_middle; } // specificity bump
&:dir(rtl) { @extend %linked_middle:dir(rtl); }
}
&:first-child > .button { @extend %linked_button:first-child; }
&:last-child > .button { @extend %linked_button:last-child; }
&:only-child > .button { @extend %linked_button:only-child; }
}
}