@import "functions";
@import "global";

* {
	-GtkArrow-arrow-scaling: 0.5;
	-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;
	-GtkCheckButton-indicator-size: 16;
	-GtkCheckMenuItem-indicator-size: 14;
	-GtkExpander-expander-size: 8;
	-GtkMenu-horizontal-padding: 0;
	-GtkMenu-vertical-padding: 0;
	-GtkPaned-handle-size: 4;
	-GtkProgressBar-min-horizontal-bar-height: 12;
	-GtkProgressBar-min-vertical-bar-width: 12;
	-GtkRange-slider-width: 12;
	-GtkRange-stepper-spacing: 0;
	-GtkRange-trough-border: 0;
	-GtkRange-trough-under-steppers: 1;
	-GtkScrollbar-has-backward-stepper: false;
	-GtkScrollbar-has-forward-stepper: false;
	-GtkScrollbar-min-slider-length: 80;
	-GtkScrolledWindow-scrollbar-spacing: 0;
	-GtkScrolledWindow-scrollbars-within-bevel: 1;
	-GtkStatusbar-shadow-type: none;
	-GtkTextView-error-underline-color: $error_color;
	-GtkToolButton-icon-spacing: 6;
	-GtkToolItemGroup-expander-size: 8;
	-GtkTreeView-expander-size: 8;
	-GtkWindow-resize-grip-height: 0;
	-GtkWindow-resize-grip-width: 0;
	-WnckTasklist-fade-overlay-rect: 0;

	/* legacy stuff */
	-GtkWidget-focus-line-width: 1;
	-GtkWidget-focus-padding: 0;

	outline-color: alpha($selected_bg_color, 0.5);
	outline-style: dashed;
	outline-width: 1px;
	outline-offset: -2px;
	outline-radius: 2px;
}

/***************
 * base states *
 ***************/
%selected_items {
	&, &:focus {
		background-color: $selected_bg_color;
		color: $selected_fg_color;
	}
}

* {
	&:selected { @extend %selected_items; }

	&:insensitive,
	&:insensitive:insensitive { color: mix($fg_color, $bg_color, 0.50); }

	&:insensitive { -gtk-image-effect: dim; }

	&:hover { -gtk-image-effect: highlight;	}

	/* hyperlinks */
	-GtkHTML-link-color: $link_color;
	-GtkIMHtml-hyperlink-color: $link_color;
	-GtkWidget-link-color: $link_color;
	-GtkWidget-visited-link-color: $link_color;

	&:link, &:visited { color: $link_color; }
}

.background {
	background-color: $bg_color;
	color: $fg_color;

	&:backdrop {
		text-shadow: none;
		icon-shadow: none;
	}
}

.gtkstyle-fallback {
	background-color: $bg_color;
	color: $fg_color;

	&:prelight {
		background-color: shade($bg_color, 1.1);
		color: $fg_color;
	}

	&:active {
		background-color: shade($bg_color, 0.9);
		color: $fg_color;
	}

	&:insensitive {
		background-color: shade(shade($bg_color, 0.95), 1.05);
		color: mix($fg_color, $bg_color, 0.50);
	}

	&:selected { @extend %selected_items; }
}

GtkImage, GtkLabel, GtkBox, GtkGrid {
	&, &:insensitive { background-color: transparent; }
}

GtkLabel {
	&.separator {
		color: $fg_color;

		@extend .dim-label;
	}

	&:selected { @extend %selected_items; }

	&:insensitive { color: mix($fg_color, $bg_color, 0.50); }
}

.dim-label {
	opacity: 0.5;
	text-shadow: none;
}

.view {
	color: $text_color;
	background-color: $base_color;

	&:selected { @extend %selected_items; }
}

.rubberband {
	border: 1px solid $selected_bg_color;
	background-color: alpha($selected_bg_color, 0.2);
}

/* used by GtkScrolledWindow, shown when content is touch-dragged past boundaries. */
.overshoot { background-color: alpha($selected_bg_color, 0.2); }

GtkAssistant {
	.sidebar {
		background-color: $base_color;
		border-top: 1px solid border_normal($base_color);

		&:dir(ltr) { border-right: 1px solid border_normal($base_color); }
		&:dir(rtl) { border-left: 1px solid border_normal($base_color); }

		GtkLabel {
			padding: $spacing ($spacing * 2);

			&.highlight { background-color: mix($bg_color, $fg_color, 0.80); }
		}
	}

	&.csd .sidebar { border-top-style: none; }
}

GtkTextView {
	/* this will get overridden by .view, needed by gedit line numbers */
	background-color: mix($bg_color, $base_color, 0.50);
}


GtkFlowBox .grid-child {
	padding: 3px;
	border-radius: 3px;

	&:selected {
		@extend %selected_items;

		outline-offset: -2px;
	}
}

/*********************
 * spinner animation *
 *********************/
@keyframes spin {
	to { -gtk-icon-transform: rotate(1turn); }
}

.spinner {
	background-image: none;
	background-color: blue;
	opacity: 0; // non spinning spinner makes no sense

	-gtk-icon-source: -gtk-icontheme("process-working-symbolic");

	&:active {
		opacity: 1;
		animation: spin 1s linear infinite;

		&:insensitive { opacity: 0.5; }
	}
}