From 460aa64c58b6b12d49b132b7c4df0eadf0070e34 Mon Sep 17 00:00:00 2001 From: Lapo Calamandrei Date: Thu, 11 Feb 2016 18:27:25 +0100 Subject: [PATCH] Adwaita: animate check and radios --- gtk/theme/Adwaita/_common.scss | 31 ++++++++++++++++++++++ gtk/theme/Adwaita/gtk-contained-dark.css | 33 +++++++++++++++++++++++- gtk/theme/Adwaita/gtk-contained.css | 33 +++++++++++++++++++++++- 3 files changed, 95 insertions(+), 2 deletions(-) diff --git a/gtk/theme/Adwaita/_common.scss b/gtk/theme/Adwaita/_common.scss index 9892e3f00a..4a2dc2319c 100644 --- a/gtk/theme/Adwaita/_common.scss +++ b/gtk/theme/Adwaita/_common.scss @@ -2300,6 +2300,7 @@ radio { -gtk-icon-shadow: none; color: inherit; border-color: currentColor; + animation: none; } } } @@ -2320,6 +2321,36 @@ radio { -gtk-recolor(url("assets/dash-symbolic.symbolic.png"))); } } +// let's animate things +@keyframes check_check { + from { -gtk-icon-transform: translate(6px, -3px) rotate(-45deg) scaleY(0.2) rotate(45deg) scaleX(0); } + to { -gtk-icon-transform: unset; } +} + +@keyframes check_radio { + from { -gtk-icon-transform: scale(0); } + to { -gtk-icon-transform: unset; } +} + +@keyframes check_indeterminate { + from { -gtk-icon-transform: scale(0, 1); } + to { -gtk-icon-transform: unset; } +} + +check:not(:indeterminate):checked { animation: check_check 400ms; } + +radio:not(:indeterminate):checked { animation: check_radio 400ms; } + +check:indeterminate:checked:active, radio:indeterminate:checked { animation: check_indeterminate 400ms; } + +// no animations in menus +menu menuitem { + check:not(:indeterminate):checked, + radio:not(:indeterminate):checked, + check:indeterminate:checked:active, + radio:indeterminate:checked { animation: none; } +} + /************ * GtkScale * diff --git a/gtk/theme/Adwaita/gtk-contained-dark.css b/gtk/theme/Adwaita/gtk-contained-dark.css index cfc20dff1a..687a82ce45 100644 --- a/gtk/theme/Adwaita/gtk-contained-dark.css +++ b/gtk/theme/Adwaita/gtk-contained-dark.css @@ -2870,7 +2870,8 @@ radio { box-shadow: none; -gtk-icon-shadow: none; color: inherit; - border-color: currentColor; } + border-color: currentColor; + animation: none; } check { border-radius: 3px; } @@ -2886,6 +2887,36 @@ radio { radio:indeterminate { -gtk-icon-source: image(-gtk-recolor(url("assets/dash-symbolic.svg")), -gtk-recolor(url("assets/dash-symbolic.symbolic.png"))); } +@keyframes check_check { + from { + -gtk-icon-transform: translate(6px, -3px) rotate(-45deg) scaleY(0.2) rotate(45deg) scaleX(0); } + to { + -gtk-icon-transform: unset; } } +@keyframes check_radio { + from { + -gtk-icon-transform: scale(0); } + to { + -gtk-icon-transform: unset; } } +@keyframes check_indeterminate { + from { + -gtk-icon-transform: scale(0, 1); } + to { + -gtk-icon-transform: unset; } } +check:not(:indeterminate):checked { + animation: check_check 400ms; } + +radio:not(:indeterminate):checked { + animation: check_radio 400ms; } + +check:indeterminate:checked:active, radio:indeterminate:checked { + animation: check_indeterminate 400ms; } + +menu menuitem check:not(:indeterminate):checked, +menu menuitem radio:not(:indeterminate):checked, +menu menuitem check:indeterminate:checked:active, +menu menuitem radio:indeterminate:checked { + animation: none; } + /************ * GtkScale * ************/ diff --git a/gtk/theme/Adwaita/gtk-contained.css b/gtk/theme/Adwaita/gtk-contained.css index dfd27bf2f2..a1907954e4 100644 --- a/gtk/theme/Adwaita/gtk-contained.css +++ b/gtk/theme/Adwaita/gtk-contained.css @@ -3003,7 +3003,8 @@ radio { box-shadow: none; -gtk-icon-shadow: none; color: inherit; - border-color: currentColor; } + border-color: currentColor; + animation: none; } check { border-radius: 3px; } @@ -3019,6 +3020,36 @@ radio { radio:indeterminate { -gtk-icon-source: image(-gtk-recolor(url("assets/dash-symbolic.svg")), -gtk-recolor(url("assets/dash-symbolic.symbolic.png"))); } +@keyframes check_check { + from { + -gtk-icon-transform: translate(6px, -3px) rotate(-45deg) scaleY(0.2) rotate(45deg) scaleX(0); } + to { + -gtk-icon-transform: unset; } } +@keyframes check_radio { + from { + -gtk-icon-transform: scale(0); } + to { + -gtk-icon-transform: unset; } } +@keyframes check_indeterminate { + from { + -gtk-icon-transform: scale(0, 1); } + to { + -gtk-icon-transform: unset; } } +check:not(:indeterminate):checked { + animation: check_check 400ms; } + +radio:not(:indeterminate):checked { + animation: check_radio 400ms; } + +check:indeterminate:checked:active, radio:indeterminate:checked { + animation: check_indeterminate 400ms; } + +menu menuitem check:not(:indeterminate):checked, +menu menuitem radio:not(:indeterminate):checked, +menu menuitem check:indeterminate:checked:active, +menu menuitem radio:indeterminate:checked { + animation: none; } + /************ * GtkScale * ************/