@@ -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