Skip to content

Commit f25da8f

Browse files
committed
Use Gtk Filter for custom filters
1 parent f8108ce commit f25da8f

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

src/Widgets/WindowOverview.vala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ public class Gala.WindowOverview : ActorTarget, RootTarget, ActivatableComponent
115115
var geometry = display.get_monitor_geometry (i);
116116
var scale = display.get_monitor_scale (i);
117117

118-
var model = new WindowListModel (display, STACKING, true, i);
119-
model.set_custom_filter (window_filter_func);
118+
var custom_filter = new Gtk.CustomFilter (window_filter_func);
119+
var model = new WindowListModel (display, STACKING, true, i, null, custom_filter);
120120
model.items_changed.connect (on_items_changed);
121121

122122
window_clone_container = new WindowCloneContainer (wm, model, scale, true) {
@@ -166,7 +166,8 @@ public class Gala.WindowOverview : ActorTarget, RootTarget, ActivatableComponent
166166
return true;
167167
}
168168

169-
private bool window_filter_func (Meta.Window window) {
169+
private bool window_filter_func (Object obj) {
170+
var window = (Meta.Window) obj;
170171
return window_ids == null || (window.get_id () in window_ids);
171172
}
172173

src/WindowListModel.vala

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ public class Gala.WindowListModel : Object, ListModel {
1616
STACKING
1717
}
1818

19-
public delegate bool WindowFilter (Meta.Window window);
20-
2119
public Meta.Display display { get; construct; }
2220

2321
public SortMode sort_mode { get; construct; }
@@ -38,18 +36,20 @@ public class Gala.WindowListModel : Object, ListModel {
3836
*/
3937
public Meta.Workspace? workspace_filter { get; construct set; }
4038

41-
private Gee.ArrayList<Meta.Window> windows;
39+
public Gtk.Filter? custom_filter { get; construct set; }
4240

43-
private WindowFilter? custom_filter = null;
41+
private Gee.ArrayList<Meta.Window> windows;
4442

4543
public WindowListModel (
4644
Meta.Display display, SortMode sort_mode = NONE,
4745
bool normal_filter = false, int monitor_filter = -1,
48-
Meta.Workspace? workspace_filter = null
46+
Meta.Workspace? workspace_filter = null,
47+
Gtk.Filter? custom_filter = null
4948
) {
5049
Object (
5150
display: display, sort_mode: sort_mode, normal_filter: normal_filter,
52-
monitor_filter: monitor_filter, workspace_filter: workspace_filter
51+
monitor_filter: monitor_filter, workspace_filter: workspace_filter,
52+
custom_filter: custom_filter
5353
);
5454
}
5555

@@ -68,11 +68,6 @@ public class Gala.WindowListModel : Object, ListModel {
6868
check_all ();
6969
}
7070

71-
public void set_custom_filter (WindowFilter? filter) {
72-
custom_filter = filter;
73-
check_all ();
74-
}
75-
7671
private void on_window_created (Meta.Window window) {
7772
window.unmanaging.connect (on_window_unmanaging);
7873
InternalUtils.wait_for_window_actor (window, (actor) => check_window (actor.meta_window));
@@ -123,7 +118,7 @@ public class Gala.WindowListModel : Object, ListModel {
123118
}
124119

125120
if (custom_filter != null) {
126-
return custom_filter (window);
121+
return custom_filter.match (window);
127122
}
128123

129124
return true;

0 commit comments

Comments
 (0)