From 3c1a4c3128b3ad6b09fbb6bff62a5e0793926ca7 Mon Sep 17 00:00:00 2001 From: axtloss Date: Thu, 22 Sep 2022 18:43:40 +0200 Subject: [PATCH 1/3] Fix possible bad contrast in entry This stops users from "locking" themselves out when adding two colours with a very bad contrast --- data/resources/style.css | 7 ++++--- data/resources/ui/colour-entry.ui | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/data/resources/style.css b/data/resources/style.css index 030e5bc..6d99ed1 100644 --- a/data/resources/style.css +++ b/data/resources/style.css @@ -13,9 +13,9 @@ headerbar { background: @background_color; } -entry selection{ - color: @background_color; - background-color: @foreground_color; +.exclude-contrast{ + color: #000000; + background-color: #ffffff; } .fg-entry image.left{ @@ -50,3 +50,4 @@ popover.color-popover { popover.color-popover colorchooser overlay grid{ margin-left:-30px; } + diff --git a/data/resources/ui/colour-entry.ui b/data/resources/ui/colour-entry.ui index 509fe15..6e870db 100644 --- a/data/resources/ui/colour-entry.ui +++ b/data/resources/ui/colour-entry.ui @@ -7,8 +7,9 @@ color-select-symbolic True + -- GitLab From 77398785dace2ed53517d5bfd481e9afc55e30bd Mon Sep 17 00:00:00 2001 From: axtloss Date: Wed, 28 Sep 2022 22:00:42 +0200 Subject: [PATCH 2/3] Add color reset button This adds a button in the bottom right corner to reset the colours, also accessible with ctrl+z --- data/resources/style.css | 12 +++++++---- data/resources/ui/shortcuts.ui | 8 ++++++++ data/resources/ui/window.ui | 19 +++++++++++++++++ src/window.rs | 37 ++++++++++++++++++++++++++++------ 4 files changed, 66 insertions(+), 10 deletions(-) diff --git a/data/resources/style.css b/data/resources/style.css index 6d99ed1..0a1a5dd 100644 --- a/data/resources/style.css +++ b/data/resources/style.css @@ -13,9 +13,14 @@ headerbar { background: @background_color; } -.exclude-contrast{ - color: #000000; - background-color: #ffffff; +entry selection{ + color: @background_color; + background-color: @foreground_color; +} + +.color-exclude { + background-color: @foreground_color; + color: @inverted_color; } .fg-entry image.left{ @@ -50,4 +55,3 @@ popover.color-popover { popover.color-popover colorchooser overlay grid{ margin-left:-30px; } - diff --git a/data/resources/ui/shortcuts.ui b/data/resources/ui/shortcuts.ui index 4aa4dcf..4d7bfc9 100644 --- a/data/resources/ui/shortcuts.ui +++ b/data/resources/ui/shortcuts.ui @@ -18,6 +18,13 @@ win.reverse-colors + + + True + Reset Colors + win.reset-colors + + True @@ -39,3 +46,4 @@ + diff --git a/data/resources/ui/window.ui b/data/resources/ui/window.ui index d68e7ee..e76899e 100644 --- a/data/resources/ui/window.ui +++ b/data/resources/ui/window.ui @@ -88,6 +88,24 @@ + + + + + edit-undo-symbolic + 10 + 10 + end + end + win.reset-colors + + + + + + diff --git a/src/window.rs b/src/window.rs index a0d370c..028ac74 100644 --- a/src/window.rs +++ b/src/window.rs @@ -103,9 +103,14 @@ impl Window { imp.level_bar.set_contrast_level(contrast_level); imp.preview.set_contrast_level(contrast_level); + let mut inverted_colour = fg_colour; + inverted_colour.set_red(1.0-fg_colour.red()); + inverted_colour.set_blue(1.0-fg_colour.blue()); + inverted_colour.set_green(1.0-fg_colour.green()); let mut css = String::new(); css.push_str(&format!("@define-color background_color {};", bg_colour.to_string())); css.push_str(&format!("@define-color foreground_color {};", fg_colour.to_string())); + css.push_str(&format!("@define-color inverted_color {};", inverted_colour.to_string())); imp.sender.borrow().as_ref().unwrap().send(Action::ApplyStylesheet(css)).unwrap(); } @@ -135,24 +140,44 @@ impl Window { window.colour_changed(bg_colour, fg_colour); }); - let bg_handle = bg_entry.connect_changed(on_entry_changed.clone()); - let fg_handle = fg_entry.connect_changed(on_entry_changed); + let bg_handle_reverse = bg_entry.connect_changed(on_entry_changed.clone()); + let fg_handle_reverse = fg_entry.connect_changed(on_entry_changed.clone()); + let bg_handle_reset = bg_entry.connect_changed(on_entry_changed.clone()); + let fg_handle_reset = fg_entry.connect_changed(on_entry_changed); action!( self, "reverse-colors", clone!(@weak fg_entry, @weak bg_entry, @weak self as window => move |_, _| { - fg_entry.block_signal(&fg_handle); - bg_entry.block_signal(&bg_handle); + fg_entry.block_signal(&fg_handle_reverse); + bg_entry.block_signal(&bg_handle_reverse); let fg_colour = fg_entry.colour(); let bg_colour = bg_entry.colour(); fg_entry.set_colour(bg_colour); bg_entry.set_colour(fg_colour); - fg_entry.unblock_signal(&fg_handle); - bg_entry.unblock_signal(&bg_handle); + fg_entry.unblock_signal(&fg_handle_reverse); + bg_entry.unblock_signal(&bg_handle_reverse); window.colour_changed(fg_colour, bg_colour); }) ); +// + action!( + self, + "reset-colors", + clone!(@weak fg_entry, @weak bg_entry, @weak self as window => move |_, _| { + fg_entry.block_signal(&fg_handle_reset); + bg_entry.block_signal(&bg_handle_reset); + let fg_colour = fg_entry.colour(); + let iv_colour = gdk::RGBA::builder().red(1.0-fg_colour.red()).green(1.0-fg_colour.green()).blue(1.0-fg_colour.blue()).build(); + fg_entry.set_colour(fg_colour); + bg_entry.set_colour(iv_colour); + fg_entry.unblock_signal(&fg_handle_reset); + bg_entry.unblock_signal(&bg_handle_reset); + + window.colour_changed(iv_colour, fg_colour); + }) + ); } } + -- GitLab From 4863e13544aabe471695f89189f226407040f7e5 Mon Sep 17 00:00:00 2001 From: axtloss Date: Wed, 28 Sep 2022 22:16:02 +0200 Subject: [PATCH 3/3] Change color inversion to take up less code --- src/window.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/window.rs b/src/window.rs index 028ac74..be95016 100644 --- a/src/window.rs +++ b/src/window.rs @@ -103,10 +103,7 @@ impl Window { imp.level_bar.set_contrast_level(contrast_level); imp.preview.set_contrast_level(contrast_level); - let mut inverted_colour = fg_colour; - inverted_colour.set_red(1.0-fg_colour.red()); - inverted_colour.set_blue(1.0-fg_colour.blue()); - inverted_colour.set_green(1.0-fg_colour.green()); + let inverted_colour = gdk::RGBA::builder().red(1.0-fg_colour.red()).green(1.0-fg_colour.green()).blue(1.0-fg_colour.blue()).build(); let mut css = String::new(); css.push_str(&format!("@define-color background_color {};", bg_colour.to_string())); css.push_str(&format!("@define-color foreground_color {};", fg_colour.to_string())); @@ -161,7 +158,7 @@ impl Window { window.colour_changed(fg_colour, bg_colour); }) ); -// + action!( self, "reset-colors", @@ -180,4 +177,3 @@ impl Window { ); } } - -- GitLab