Set accent color in DwellClick and PointerLocator (#909)

This commit is contained in:
Daniel Foré 2020-08-26 15:44:01 -07:00 committed by GitHub
parent bba97d4654
commit 03fae35d74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 13 deletions

View File

@ -393,5 +393,26 @@ namespace Gala {
public static int get_ui_scaling_factor () {
return Meta.Backend.get_backend ().get_settings ().get_ui_scaling_factor ();
}
private static Gtk.StyleContext selection_style_context = null;
public static Gdk.RGBA get_theme_accent_color () {
if (selection_style_context == null) {
var dummy_label = new Gtk.Label ("");
unowned Gtk.StyleContext label_style_context = dummy_label.get_style_context ();
var widget_path = label_style_context.get_path ().copy ();
widget_path.iter_set_object_name (-1, "selection");
selection_style_context = new Gtk.StyleContext ();
selection_style_context.set_path (widget_path);
selection_style_context.set_parent (label_style_context);
}
return (Gdk.RGBA) selection_style_context.get_property (
Gtk.STYLE_PROPERTY_BACKGROUND_COLOR,
Gtk.StateFlags.NORMAL
);
}
}
}

View File

@ -17,7 +17,6 @@
namespace Gala {
public class DwellClickTimer : Clutter.Actor, Clutter.Animatable {
private const string BACKGROUND_COLOR = "#64baff";
private const double BACKGROUND_OPACITY = 0.7;
private const uint BORDER_WIDTH_PX = 1;
@ -57,11 +56,6 @@ namespace Gala {
queue_redraw ();
});
var rgba = Gdk.RGBA ();
rgba.parse (BACKGROUND_COLOR);
stroke_color = new Cairo.Pattern.rgb (rgba.red, rgba.green, rgba.blue);
fill_color = new Cairo.Pattern.rgba (rgba.red, rgba.green, rgba.blue, BACKGROUND_OPACITY);
interface_settings = new GLib.Settings ("org.gnome.desktop.interface");
scaling_factor = InternalUtils.get_ui_scaling_factor ();
@ -100,6 +94,12 @@ namespace Gala {
}
public override void paint (Clutter.PaintContext context) {
var rgba = InternalUtils.get_theme_accent_color ();
/* Don't use alpha from the stylesheet to ensure contrast */
stroke_color = new Cairo.Pattern.rgb (rgba.red, rgba.green, rgba.blue);
fill_color = new Cairo.Pattern.rgba (rgba.red, rgba.green, rgba.blue, BACKGROUND_OPACITY);
var radius = int.min (cursor_size / 2, cursor_size / 2);
var end_angle = START_ANGLE + angle;

View File

@ -21,9 +21,8 @@ namespace Gala {
private const int HEIGHT_PX = 300;
private const int ANIMATION_TIME_MS = 300;
private const uint BORDER_WIDTH_PX = 3;
private const uint BORDER_WIDTH_PX = 1;
private const string BACKGROUND_COLOR = "#64baff";
private const double BACKGROUND_OPACITY = 0.7;
public weak WindowManager wm { get; construct; }
@ -54,11 +53,6 @@ namespace Gala {
update_surface ();
set_size (WIDTH_PX * scaling_factor, HEIGHT_PX * scaling_factor);
var rgba = Gdk.RGBA ();
rgba.parse (BACKGROUND_COLOR);
stroke_color = new Cairo.Pattern.rgb (rgba.red, rgba.green, rgba.blue);
fill_color = new Cairo.Pattern.rgba (rgba.red, rgba.green, rgba.blue, BACKGROUND_OPACITY);
Meta.MonitorManager.@get ().monitors_changed.connect (update_surface);
}
@ -120,6 +114,12 @@ namespace Gala {
return;
}
var rgba = InternalUtils.get_theme_accent_color ();
/* Don't use alpha from the stylesheet to ensure contrast */
stroke_color = new Cairo.Pattern.rgb (rgba.red, rgba.green, rgba.blue);
fill_color = new Cairo.Pattern.rgba (rgba.red, rgba.green, rgba.blue, BACKGROUND_OPACITY);
if (timeout_id != 0) {
GLib.Source.remove (timeout_id);
timeout_id = 0;