Review of "Tasks in panel" version 60

Details Page Preview

Lag-free taskbar that respects the GNOME Shell style. Light and reliable extension. Multi-monitor support. Hover task to raise its window. Right click to show app menu. Middle click to open new app window. Display Chromium web apps real icons. Optional window grouping by app. Light style. Workspaces bar. Recent and favorites apps. Power profile indicator (until GNOME 49). User id indicator. Settings UI to turn on/off these features and many more. Unused features are not initialized nor loaded. Select focused window only in prefs to look like the old app menu or Window Title is Back. You can toggle the overview in each monitor using Bottom Overview extension.

Extension Homepage
https://github.com/fthx/tasks-in-panel

No comments.

Diff Against

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental) warning 1

Shexli found 1 issue that may need reviewer attention.

EGO-L-003 warning

signals connected by extension should be disconnected in disable()

Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.

Disconnect all signals

  • extension.js:59
    this._clickGesture.connect('recognize', () => this._toggleAllWindows())
  • extension.js:419
    this._clickGesture.connect('recognize', gesture => this._onClick(gesture))

All Versions

Version Status
72 Active
71 Active
70 Active
69 Active
68 Active
67 Active
66 Active
65 Rejected
64 Active
63 Active
62 Active
61 Active
60 Active
59 Active
58 Rejected
57 Active
56 Active
55 Active
54 Active
53 Active
52 Active
51 Active
50 Active
49 Rejected
48 Rejected
47 Active
46 Rejected
45 Active
44 Active
43 Active
42 Active
41 Rejected
40 Rejected
39 Rejected
38 Active
37 Active
36 Active
35 Active
34 Active
33 Active
32 Active
31 Active
30 Active
29 Active
28 Active
27 Active
26 Active
25 Active
24 Active
23 Active
22 Rejected
21 Rejected
20 Active
19 Active
18 Active
17 Active
16 Active
15 Active
14 Active
13 Rejected
12 Active
11 Active
10 Active
9 Active
8 Active
7 Active
6 Active
5 Active
4 Active
3 Active
2 Active
1 Active

Previous Reviews on this Version

fthx posted a review
Hi, About the 1 warning: I think this._clickGesture is destroyed with the ShowDesktop button?
fmuellner active
Not *destroyed*, as it's not an actor itself. Now I would need to do some proper testing to confirm, but this is what I expect to happen: - the ShowDesktop button is destroyed - as a result, the actor's reference (from "add_action()") is released - the _showDesktop property is set to null, which marks it for garbage collection - when gc happens, the button's _clickGesture reference is collected as well If that's wrong and the "this._clickGesture" property needs to be set to null for GC, then that's a gnome-shell bug (given that you are effectively overriding the property from the parent). In any case the most important bit is that destroying the actor will remove the gesture, so it won't emit any more events.
fthx posted a review
Thanks for the review. Ok, that's what I had in mind but these tricks are somewhat complicated (for me!). Is there a problem in the following code? Since I create a new task button when a new window is created, but without a reference (the button self-destroys if its window is closed). So I don't mark this button as null on destroy and I don't know if it's eligible to GC. _makeTaskButton(window) { if (!window || window.skip_taskbar || window.window_type === Meta.WindowType.MODAL_DIALOG) return; new TaskButton(this._settings, this._globalRecentApps, window); // <<<<----------------------------------------------- here if (this._showRecentAppsMenu) { GLib.idle_add_once(GLib.PRIORITY_DEFAULT, () => { this._recentAppsMenuButton?._updateRecentApps(); }); } }
fthx posted a review
(this task button has the same clickGesture creation as showDesktop button.)