Skip to content

Commit 060b694

Browse files
committed
WindowSwitcher: correctly scale icons and rounded corners
1 parent 33df064 commit 060b694

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

src/Widgets/WindowSwitcher/WindowSwitcher.vala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
342342
unowned var current_window = display.get_tab_current (Meta.TabList.NORMAL, workspace);
343343
foreach (unowned var window in windows) {
344344
var icon = new WindowSwitcherIcon (window, scaling_factor);
345+
bind_property ("monitor-scale", icon, "monitor-scale");
345346
add_icon (icon);
346347

347348
if (window == current_window) {
@@ -371,6 +372,7 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
371372
foreach (unowned var window in windows) {
372373
if (window_tracker.get_app_for_window (window) == app) {
373374
var icon = new WindowSwitcherIcon (window, scaling_factor);
375+
bind_property ("monitor-scale", icon, "monitor-scale");
374376
add_icon (icon);
375377

376378
if (window == current_window) {

src/Widgets/WindowSwitcher/WindowSwitcherIcon.vala

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ public class Gala.WindowSwitcherIcon : Clutter.Actor {
88
private const int WRAPPER_BORDER_RADIUS = 3;
99

1010
public Meta.Window window { get; construct; }
11-
12-
private WindowIcon icon;
13-
private RoundedCornersEffect rounded_corners_effect;
14-
11+
public float monitor_scale { get; construct set; }
1512
public bool selected {
1613
set {
1714
if (value) {
@@ -25,34 +22,37 @@ public class Gala.WindowSwitcherIcon : Clutter.Actor {
2522
}
2623
}
2724

28-
public float scale_factor {
29-
set {
30-
var margin = Utils.scale_to_int (WindowSwitcher.WRAPPER_PADDING, value);
31-
icon.margin_top = margin;
32-
icon.margin_right = margin;
33-
icon.margin_bottom = margin;
34-
icon.margin_left = margin;
35-
36-
rounded_corners_effect.monitor_scale = value;
37-
}
25+
public WindowSwitcherIcon (Meta.Window window, float monitor_scale) {
26+
Object (window: window, monitor_scale: monitor_scale);
3827
}
3928

40-
public WindowSwitcherIcon (Meta.Window window, float scale_factor) {
41-
Object (window: window);
42-
29+
construct {
4330
layout_manager = new Clutter.BinLayout ();
4431
reactive = true;
4532

46-
icon = new WindowIcon (window, Utils.scale_to_int (ICON_SIZE, scale_factor));
47-
add_child (icon);
33+
reload_icon ();
4834

49-
rounded_corners_effect = new RoundedCornersEffect (WRAPPER_BORDER_RADIUS, scale_factor);
35+
var rounded_corners_effect = new RoundedCornersEffect (WRAPPER_BORDER_RADIUS, monitor_scale);
36+
bind_property ("monitor-scale", rounded_corners_effect, "monitor-scale");
5037
add_effect (rounded_corners_effect);
5138

5239
get_accessible ().accessible_name = window.title;
5340
get_accessible ().accessible_role = LIST_ITEM;
5441
get_accessible ().notify_state_change (Atk.StateType.FOCUSABLE, true);
5542

56-
this.scale_factor = scale_factor;
43+
notify["monitor-scale"].connect (reload_icon);
44+
}
45+
46+
private void reload_icon () {
47+
remove_all_children ();
48+
49+
var margin = Utils.scale_to_int (WindowSwitcher.WRAPPER_PADDING, monitor_scale);
50+
var icon = new WindowIcon (window, Utils.scale_to_int (ICON_SIZE, monitor_scale)) {
51+
margin_top = margin,
52+
margin_right = margin,
53+
margin_bottom = margin,
54+
margin_left = margin
55+
};
56+
add_child (icon);
5757
}
5858
}

0 commit comments

Comments
 (0)