Skip to content

Commit e673560

Browse files
authored
StyleManager: store accent color as Clutter/Cogl Color (#2590)
1 parent f4fd021 commit e673560

File tree

6 files changed

+23
-47
lines changed

6 files changed

+23
-47
lines changed

lib/Drawing/StyleManager.vala

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,19 @@ public class Gala.Drawing.StyleManager : Object {
3030

3131
private const string FDO_ACCOUNTS_NAME = "org.freedesktop.Accounts";
3232
private const string FDO_ACCOUNTS_PATH = "/org/freedesktop/Accounts";
33-
34-
private const float ACCENT_COLOR_ALPHA = 0.25f;
35-
private const Gdk.RGBA DEFAULT_ACCENT_COLOR = { 0, 0, 0, ACCENT_COLOR_ALPHA };
33+
private const uint8 ACCENT_COLOR_ALPHA = 64;
3634

3735
private static GLib.Once<StyleManager> instance;
3836
public static StyleManager get_instance () {
3937
return instance.once (() => new StyleManager ());
4038
}
4139

4240
public ColorScheme prefers_color_scheme { get; private set; default = LIGHT; }
43-
public Gdk.RGBA theme_accent_color { get; private set; default = DEFAULT_ACCENT_COLOR; }
41+
#if !HAS_MUTTER47
42+
public Clutter.Color theme_accent_color { get; private set; default = { 0, 0, 0, ACCENT_COLOR_ALPHA }; }
43+
#else
44+
public Cogl.Color theme_accent_color { get; private set; default = { 0, 0, 0, ACCENT_COLOR_ALPHA }; }
45+
#endif
4446

4547
private PantheonAccountsService? pantheon_proxy;
4648
private SettingsDaemonAccountsService? settings_daemon_proxy;
@@ -94,16 +96,11 @@ public class Gala.Drawing.StyleManager : Object {
9496
private void update_color (int color) {
9597
var rgb = get_color (color);
9698

97-
var r = ((rgb >> 16) & 255) / 255.0f;
98-
var g = ((rgb >> 8) & 255) / 255.0f;
99-
var b = (rgb & 255) / 255.0f;
99+
var r = (uint8) ((rgb >> 16) & 255);
100+
var g = (uint8) ((rgb >> 8) & 255);
101+
var b = (uint8) (rgb & 255);
100102

101-
theme_accent_color = {
102-
r,
103-
g,
104-
b,
105-
ACCENT_COLOR_ALPHA
106-
};
103+
theme_accent_color = { r, g, b, ACCENT_COLOR_ALPHA };
107104
}
108105

109106
private int get_color (int color) {

src/Widgets/DwellClickTimer.vala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,10 @@ public class Gala.DwellClickTimer : Clutter.Actor, Clutter.Animatable {
105105
}
106106

107107
var rgba = Drawing.StyleManager.get_instance ().theme_accent_color;
108-
108+
var red = rgba.red / 255.0, green = rgba.green / 255.0, blue = rgba.blue / 255.0;
109+
stroke_color = new Cairo.Pattern.rgb (red, green, blue);
109110
/* Don't use alpha from the stylesheet to ensure contrast */
110-
stroke_color = new Cairo.Pattern.rgb (rgba.red, rgba.green, rgba.blue);
111-
fill_color = new Cairo.Pattern.rgba (rgba.red, rgba.green, rgba.blue, BACKGROUND_OPACITY);
111+
fill_color = new Cairo.Pattern.rgba (red, green, blue, BACKGROUND_OPACITY);
112112

113113
var radius = int.min (cursor_size / 2, cursor_size / 2);
114114
var end_angle = START_ANGLE + angle;

src/Widgets/MultitaskingView/WindowClone.vala

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -629,13 +629,7 @@ public class Gala.WindowClone : ActorTarget, RootTarget {
629629
}
630630

631631
public void update_color () {
632-
var accent_color = Drawing.StyleManager.get_instance ().theme_accent_color;
633-
background_color = {
634-
(uint8) (accent_color.red * uint8.MAX),
635-
(uint8) (accent_color.green * uint8.MAX),
636-
(uint8) (accent_color.blue * uint8.MAX),
637-
(uint8) (COLOR_OPACITY * uint8.MAX)
638-
};
632+
background_color = Drawing.StyleManager.get_instance ().theme_accent_color;
639633
}
640634
}
641635
}

src/Widgets/PointerLocator.vala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@ public class Gala.PointerLocator : Clutter.Actor, Clutter.Animatable {
132132
add_transition ("circle", transition);
133133

134134
var rgba = Drawing.StyleManager.get_instance ().theme_accent_color;
135-
135+
var red = rgba.red / 255.0, green = rgba.green / 255.0, blue = rgba.blue / 255.0;
136+
stroke_color = new Cairo.Pattern.rgb (red, green, blue);
136137
/* Don't use alpha from the stylesheet to ensure contrast */
137-
stroke_color = new Cairo.Pattern.rgb (rgba.red, rgba.green, rgba.blue);
138-
fill_color = new Cairo.Pattern.rgba (rgba.red, rgba.green, rgba.blue, BACKGROUND_OPACITY);
138+
fill_color = new Cairo.Pattern.rgba (red, green, blue, BACKGROUND_OPACITY);
139139

140140
#if HAS_MUTTER48
141141
unowned var tracker = display.get_compositor ().get_backend ().get_cursor_tracker ();

src/Widgets/WindowSwitcher/WindowSwitcherIcon.vala

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,9 @@ public class Gala.WindowSwitcherIcon : Clutter.Actor {
1515
public bool selected {
1616
set {
1717
if (value) {
18-
var accent_color = Drawing.StyleManager.get_instance ().theme_accent_color;
19-
background_color = {
20-
(uint8) (accent_color.red * uint8.MAX),
21-
(uint8) (accent_color.green * uint8.MAX),
22-
(uint8) (accent_color.blue * uint8.MAX),
23-
(uint8) (accent_color.alpha * uint8.MAX)
24-
};
18+
background_color = Drawing.StyleManager.get_instance ().theme_accent_color;
2519
} else {
26-
#if HAS_MUTTER47
27-
background_color = Cogl.Color.from_4f (0, 0, 0, 0);
28-
#else
29-
background_color = Clutter.Color.alloc ();
30-
#endif
20+
background_color = { 0, 0, 0, 0 };
3121
}
3222

3323
get_accessible ().notify_state_change (Atk.StateType.SELECTED, value);

src/WindowManager.vala

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -949,18 +949,13 @@ namespace Gala {
949949

950950
public override void show_tile_preview (Meta.Window window, Mtk.Rectangle tile_rect, int tile_monitor_number) {
951951
if (tile_preview == null) {
952-
tile_preview = new Clutter.Actor ();
953-
var rgba = Drawing.StyleManager.get_instance ().theme_accent_color;
954-
tile_preview.background_color = {
955-
(uint8)(255.0 * rgba.red),
956-
(uint8)(255.0 * rgba.green),
957-
(uint8)(255.0 * rgba.blue),
958-
(uint8)(255.0 * rgba.alpha)
952+
tile_preview = new Clutter.Actor () {
953+
background_color = Drawing.StyleManager.get_instance ().theme_accent_color,
954+
opacity = 0
959955
};
960-
tile_preview.opacity = 0U;
961956

962957
window_group.add_child (tile_preview);
963-
} else if (tile_preview.is_visible ()) {
958+
} else {
964959
float width, height, x, y;
965960
tile_preview.get_position (out x, out y);
966961
tile_preview.get_size (out width, out height);

0 commit comments

Comments
 (0)