Skip to content

Commit 4d85605

Browse files
committed
Cleanup WindowSwitcher
1 parent 0f1d442 commit 4d85605

File tree

2 files changed

+27
-34
lines changed

2 files changed

+27
-34
lines changed

src/Widgets/WindowSwitcher/WindowSwitcher.vala

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@
33
* Copyright 2020 Mark Story <[email protected]>
44
* Copyright 2017 Popye <[email protected]>
55
* Copyright 2014 Tom Beckmann
6-
* Copyright 2023 elementary, Inc. <https://elementary.io>
6+
* Copyright 2023-2025 elementary, Inc. <https://elementary.io>
77
* SPDX-License-Identifier: GPL-3.0-or-later
88
*/
99

1010
public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
11-
public const int ICON_SIZE = 64;
1211
public const int WRAPPER_PADDING = 12;
1312

1413
private const string CAPTION_FONT_NAME = "Inter";
1514
private const int MIN_OFFSET = 64;
16-
private const int ANIMATION_DURATION = 200;
1715
private const double GESTURE_STEP = 0.1;
1816

1917
public WindowManager wm { get; construct; }
@@ -45,7 +43,8 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
4543
_current_icon.grab_key_focus ();
4644
}
4745

48-
update_caption_text ();
46+
var current_window = _current_icon != null ? _current_icon.window : null;
47+
caption.text = current_window != null ? current_window.title : "n/a";
4948
}
5049
}
5150

@@ -117,7 +116,8 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
117116
}
118117

119118
private void scale () {
120-
scaling_factor = wm.get_display ().get_monitor_scale (wm.get_display ().get_current_monitor ());
119+
unowned var display = wm.get_display ();
120+
scaling_factor = display.get_monitor_scale (display.get_current_monitor ());
121121

122122
shadow_effect.monitor_scale = scaling_factor;
123123

@@ -140,15 +140,14 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
140140
base.get_preferred_width (for_height, null, out preferred_nat_width);
141141

142142
unowned var display = wm.get_display ();
143-
var monitor = display.get_current_monitor ();
144-
var geom = display.get_monitor_geometry (monitor);
143+
var geom = display.get_monitor_geometry (display.get_current_monitor ());
145144

146145
float container_nat_width;
147146
container.get_preferred_size (null, null, out container_nat_width, null);
148147

149148
var max_width = float.min (
150-
geom.width - Utils.scale_to_int (MIN_OFFSET, scaling_factor) * 2, //Don't overflow the monitor
151-
container_nat_width //Ellipsize the label if it's longer than the icons
149+
geom.width - Utils.scale_to_int (MIN_OFFSET * 2, scaling_factor), // Don't overflow the monitor
150+
container_nat_width // Ellipsize the label if it's longer than the icons
152151
);
153152

154153
natural_width = float.min (max_width, preferred_nat_width);
@@ -268,7 +267,6 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
268267
}
269268
}
270269

271-
[CCode (instance_pos = -1)]
272270
public void handle_switch_windows (
273271
Meta.Display display, Meta.Window? window,
274272
Clutter.KeyEvent? event, Meta.KeyBinding binding
@@ -339,7 +337,7 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
339337

340338
unowned var current_window = display.get_tab_current (Meta.TabList.NORMAL, workspace);
341339
foreach (unowned var window in windows) {
342-
var icon = new WindowSwitcherIcon (window, ICON_SIZE, scaling_factor);
340+
var icon = new WindowSwitcherIcon (window, scaling_factor);
343341
add_icon (icon);
344342

345343
if (window == current_window) {
@@ -368,7 +366,7 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
368366
var app = window_tracker.get_app_for_window (current_window);
369367
foreach (unowned var window in windows) {
370368
if (window_tracker.get_app_for_window (window) == app) {
371-
var icon = new WindowSwitcherIcon (window, ICON_SIZE, scaling_factor);
369+
var icon = new WindowSwitcherIcon (window, scaling_factor);
372370
add_icon (icon);
373371

374372
if (window == current_window) {
@@ -394,8 +392,10 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
394392
}
395393

396394
private void open_switcher () {
395+
unowned var display = wm.get_display ();
396+
397397
if (container.get_n_children () == 0) {
398-
InternalUtils.bell_notify (wm.get_display ());
398+
InternalUtils.bell_notify (display);
399399
return;
400400
}
401401

@@ -410,9 +410,7 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
410410
float width, height;
411411
get_preferred_size (null, null, out width, out height);
412412

413-
unowned var display = wm.get_display ();
414-
var monitor = display.get_current_monitor ();
415-
var geom = display.get_monitor_geometry (monitor);
413+
var geom = display.get_monitor_geometry (display.get_current_monitor ());
416414

417415
set_position (
418416
(int) (geom.x + (geom.width - width) / 2),
@@ -436,7 +434,7 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
436434
}
437435

438436
save_easing_state ();
439-
set_easing_duration (Utils.get_animation_duration (ANIMATION_DURATION));
437+
set_easing_duration (Utils.get_animation_duration (AnimationDuration.HIDE));
440438
opacity = show ? 255 : 0;
441439
restore_easing_state ();
442440
}
@@ -486,12 +484,6 @@ public class Gala.WindowSwitcher : CanvasActor, GestureTarget, RootTarget {
486484
gesture_controller.progress += backward ? -GESTURE_STEP : GESTURE_STEP;
487485
}
488486

489-
private void update_caption_text () {
490-
var current_window = current_icon != null ? current_icon.window : null;
491-
var current_caption = current_window != null ? current_window.title : "n/a";
492-
caption.set_text (current_caption);
493-
}
494-
495487
public override void key_focus_out () {
496488
if (!gesture_controller.recognizing) {
497489
close_switcher (wm.get_display ().get_current_time ());

src/Widgets/WindowSwitcher/WindowSwitcherIcon.vala

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
/*
2-
* Copyright 2023 elementary, Inc. <https://elementary.io>
2+
* Copyright 2023-2025 elementary, Inc. <https://elementary.io>
33
* SPDX-License-Identifier: GPL-3.0-or-later
44
*/
55

66
public class Gala.WindowSwitcherIcon : Clutter.Actor {
7+
private const int ICON_SIZE = 64;
78
private const int WRAPPER_BORDER_RADIUS = 3;
89

910
public Meta.Window window { get; construct; }
@@ -36,21 +37,23 @@ public class Gala.WindowSwitcherIcon : Clutter.Actor {
3637

3738
public float scale_factor {
3839
set {
39-
var indicator_size = Utils.scale_to_int (
40-
(WindowSwitcher.ICON_SIZE + WindowSwitcher.WRAPPER_PADDING * 2),
41-
value
42-
);
43-
set_size (indicator_size, indicator_size);
40+
var margin = Utils.scale_to_int (WindowSwitcher.WRAPPER_PADDING, value);
41+
icon.margin_top = margin;
42+
icon.margin_right = margin;
43+
icon.margin_bottom = margin;
44+
icon.margin_left = margin;
4445

4546
rounded_corners_effect.monitor_scale = value;
4647
}
4748
}
4849

49-
public WindowSwitcherIcon (Meta.Window window, int icon_size, float scale_factor) {
50+
public WindowSwitcherIcon (Meta.Window window, float scale_factor) {
5051
Object (window: window);
5152

52-
icon = new WindowIcon (window, Utils.scale_to_int (icon_size, scale_factor));
53-
icon.add_constraint (new Clutter.AlignConstraint (this, Clutter.AlignAxis.BOTH, 0.5f));
53+
layout_manager = new Clutter.BinLayout ();
54+
reactive = true;
55+
56+
icon = new WindowIcon (window, Utils.scale_to_int (ICON_SIZE, scale_factor));
5457
add_child (icon);
5558

5659
rounded_corners_effect = new RoundedCornersEffect (WRAPPER_BORDER_RADIUS, scale_factor);
@@ -60,8 +63,6 @@ public class Gala.WindowSwitcherIcon : Clutter.Actor {
6063
get_accessible ().accessible_role = LIST_ITEM;
6164
get_accessible ().notify_state_change (Atk.StateType.FOCUSABLE, true);
6265

63-
reactive = true;
64-
6566
this.scale_factor = scale_factor;
6667
}
6768
}

0 commit comments

Comments
 (0)