Review of "Dash to Dock Floating" version 2

Details Page Preview

A floating dock extension for GNOME Shell, heavily based on Dash to Dock. Use margin and border radius settings to customize the floating look.

Extension Homepage
https://github.com/ahmedhanbal/dash-to-dock-floating

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 10

Shexli found 10 issues that may need reviewer attention.

EGO-X-006 warning

extensions should not use lookupByURL or lookupByUUID for current extension access

Use `this`, `this.getSettings()` or `this.path` instead of `lookupByURL()` or `lookupByUUID()` for the current extension.

`extensionUtils`

  • desktopIconsIntegration.js:72
    Extension.lookupByURL(import.meta.url)

EGO-I-004 warning

extensions should not use imports._gi directly

Direct use of `imports._gi` is discouraged in extensions.

InjectionManager

  • utils.js:403
    Gi.gobject_prototype_symbol
  • utils.js:404
    Gi.gobject_prototype_symbol
  • utils.js:406
    Gi.hook_up_vfunc_symbol

EGO-P-006 warning

unnecessary build and translation artifacts should not be shipped

Compiled GSettings schemas should not be shipped for 45+ packages.

Don't include unnecessary files

  • schemas/gschemas.compiled
    schemas/gschemas.compiled

EGO-P-007 warning

JavaScript files should be reachable from extension.js or prefs.js

Some JavaScript files are not reachable from `extension.js` or `prefs.js` imports.

Don't include unnecessary files

  • locationsWorker.js

EGO-L-002 warning

objects created by extension should be destroyed in disable()

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

Destroy all objects

  • appIcons.js:781
            this._numberOverlayBin = new St.Bin({
                child: this._numberOverlayLabel,
                x_align: Clutter.ActorAlign.START,
                y_align: Clutter.ActorAlign.START,
                x_expand: true, y_expand: true,
            })
  • appIcons.js:780
    this._numberOverlayLabel = new St.Label()
  • docking.js:269
    this.staticBox = new Clutter.ActorBox()

EGO-L-001 warning

extension must not create GObject instances or modify shell before enable()

Resource creation or signal/source setup was found outside `enable()`.

Only use initialization for static resources

  • appIcons.js:46
    tracker = Shell.WindowTracker.get_default()

EGO-L-005 warning

owned object references should be released in disable()

Owned references that are cleaned up in `disable()` should also be released with `null` or `undefined`.

Destroy all objects

  • appIconIndicators.js:270
            this._area = new IndicatorDrawingArea({
                x_expand: true,
                y_expand: true,
            })
  • appIcons.js:781
            this._numberOverlayBin = new St.Bin({
                child: this._numberOverlayLabel,
                x_align: Clutter.ActorAlign.START,
                y_align: Clutter.ActorAlign.START,
                x_expand: true, y_expand: true,
            })
  • appIcons.js:780
    this._numberOverlayLabel = new St.Label()
  • docking.js:269
    this.staticBox = new Clutter.ActorBox()

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

  • appIconIndicators.js:297
    this._area.connect('repaint', this._updateIndicator.bind(this))
  • appIcons.js:1026
    source.connect('destroy', () => this.destroy())
  • docking.js:1016
                this._pressureBarrier.connect('trigger', _barrier => {
                    if (!settings.autohideInFullscreen && this._monitor.inFullscreen)
                        return;
                    this._onPressureSensed();
                })
  • docking.js:1317
            DockManager.settings.connect('changed::scroll-action', () => {
                if (isEnabled())
                    enable();
                else
                    disable();
            })
  • docking.js:1395
                    Main.wm._workspaceSwitcherPopup.connect('destroy', () => {
                        Main.wm._workspaceSwitcherPopup = null;
                    })

EGO-L-004 warning

main loop sources should be removed in disable()

Main loop sources assigned in `enable()` are missing matching removals in `disable()` or its helper methods.

Remove main loop sources

  • docking.js:1371
                        this._optionalScrollWorkspaceSwitchDeadTimeId = GLib.timeout_add(
                            GLib.PRIORITY_DEFAULT, 250, () => {
                                this._optionalScrollWorkspaceSwitchDeadTimeId = 0;
                            })

EGO-C45-001 warning

45+ preferences should use fillPreferencesWindow instead of getPreferencesWidget

45+ preferences code should use `fillPreferencesWindow()` instead of `getPreferencesWidget()`.

Preferences

  • prefs.js:1245
        getPreferencesWidget() {
            const settings = new DockSettings(this);
            const { widget } = settings;
            return widget;
        }

All Versions

Version Status
2 Rejected
1 Rejected

Previous Reviews on this Version

SriramRamkrishna posted a review
Please fix all the warnings and resubmit.
SriramRamkrishna rejected