Review of "Frippery Bottom Panel" version 83

Details Page Preview

Add a bottom panel to the shell

Extension Homepage
http://frippery.org/extensions

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) error 1 warning 5

Shexli found 6 issues that may need reviewer attention.

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

  • extension.js:375
            this.actor = new St.BoxLayout({
                                style_class: 'window-list-item-box',
                                reactive: true,
                                track_hover: true})
  • extension.js:388
            this.label = new St.Label({
                                style_class: 'window-list-item-label',
                                y_align: Clutter.ActorAlign.CENTER})
  • extension.js:588
    this._menuManager = new PopupMenu.PopupMenuManager(this.actor)
  • extension.js:565
            this.actor = new St.BoxLayout({
                                name: 'windowList',
                                x_expand: true,
                                style_class: 'window-list-box' })
  • extension.js:769
            this.actor = new St.Bin({ style_class: 'toggle-switch',
                                      accessible_role: Atk.Role.CHECK_BOX,
                                      can_focus: true })
  • extension.js:1020
            this.actor = new St.Button({ name: 'workspaceButton',
                                     style_class: 'workspace-button',
                                     reactive: true })
  • extension.js:1026
            this.label = new St.Label({
                                x_align: Clutter.ActorAlign.CENTER,
                                y_align: Clutter.ActorAlign.CENTER})
  • extension.js:1082
            this.actor = new St.BoxLayout({ name: 'workspaceSwitcher',
                                            style_class: 'frippery-ws-switcher',
                                            reactive: true })
  • extension.js:1111
                this.row_indicator = new St.DrawingArea({ reactive: true,
                                        style_class: 'workspace-row-indicator' })
  • extension.js:1284
            this.actor = new St.BoxLayout({ style_class: 'bottom-panel',
                                            name: 'bottomPanel',
                                            reactive: true })

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

  • extension.js:375
            this.actor = new St.BoxLayout({
                                style_class: 'window-list-item-box',
                                reactive: true,
                                track_hover: true})
  • extension.js:388
            this.label = new St.Label({
                                style_class: 'window-list-item-label',
                                y_align: Clutter.ActorAlign.CENTER})
  • extension.js:588
    this._menuManager = new PopupMenu.PopupMenuManager(this.actor)
  • extension.js:565
            this.actor = new St.BoxLayout({
                                name: 'windowList',
                                x_expand: true,
                                style_class: 'window-list-box' })
  • extension.js:769
            this.actor = new St.Bin({ style_class: 'toggle-switch',
                                      accessible_role: Atk.Role.CHECK_BOX,
                                      can_focus: true })
  • extension.js:833
    this._settings = new Gio.Settings({ schema: MUTTER_SCHEMA })
  • extension.js:876
    this.wm_settings = new Gio.Settings({ schema: WM_SCHEMA })
  • extension.js:1020
            this.actor = new St.Button({ name: 'workspaceButton',
                                     style_class: 'workspace-button',
                                     reactive: true })
  • extension.js:1026
            this.label = new St.Label({
                                x_align: Clutter.ActorAlign.CENTER,
                                y_align: Clutter.ActorAlign.CENTER})
  • extension.js:1031
    this.tooltip = new St.Label({ style_class: 'bottom-panel-tooltip'})
  • extension.js:1091
    this._settings = new Gio.Settings({ schema: MUTTER_SCHEMA })
  • extension.js:1082
            this.actor = new St.BoxLayout({ name: 'workspaceSwitcher',
                                            style_class: 'frippery-ws-switcher',
                                            reactive: true })
  • extension.js:1111
                this.row_indicator = new St.DrawingArea({ reactive: true,
                                        style_class: 'workspace-row-indicator' })
  • extension.js:1284
            this.actor = new St.BoxLayout({ style_class: 'bottom-panel',
                                            name: 'bottomPanel',
                                            reactive: true })

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:411
            this.actor.connect('button-press-event',
                                        this._onButtonPress.bind(this))
  • extension.js:413
            this.actor.connect('button-release-event',
                                        this._onButtonRelease.bind(this))
  • extension.js:410
    this.actor.connect('destroy', this._onDestroy.bind(this))
  • extension.js:415
            this.actor.connect('notify::allocation',
                                        this._updateIconGeometry.bind(this))
  • extension.js:591
    this.actor.connect('destroy', this._onDestroy.bind(this))
  • extension.js:797
            this.actor.connect('button-release-event',
                    this._onButtonReleaseEvent.bind(this))
  • extension.js:800
    this.actor.connect('key-focus-in', this._onKeyFocusIn.bind(this))
  • extension.js:801
    this.actor.connect('key-focus-out', this._onKeyFocusOut.bind(this))
  • extension.js:799
    this.actor.connect('key-press-event', this._onKeyPressEvent.bind(this))
  • extension.js:1023
    this.actor.connect('button-press-event', this._onPress.bind(this))
  • extension.js:1024
    this.actor.connect('destroy', this._onDestroy.bind(this))
  • extension.js:1085
    this.actor.connect('button-release-event', this._showDialog)
  • extension.js:1087
    this.actor.connect('destroy', this._onDestroy.bind(this))
  • extension.js:1086
    this.actor.connect('scroll-event', this._onScroll)
  • extension.js:1129
    btn.actor.connect('notify::hover', () => this._onHover(btn))
  • extension.js:1114
                this.row_indicator.connect('button-press-event',
                                        this._rowButtonPress.bind(this))
  • extension.js:1113
    this.row_indicator.connect('repaint', this._draw.bind(this))
  • extension.js:1116
                this.row_indicator.connect('scroll-event',
                                        this._rowScroll.bind(this))
  • extension.js:1301
    this.actor.connect('destroy', this._onDestroy.bind(this))
  • extension.js:1300
    this.actor.connect('style-changed', this.relayout.bind(this))

EGO-M-004 error

metadata shell-version must only include plausible stable releases and at most one development release

Field `shell-version` contains invalid values, more than one development release, or implausible future releases.

metadata.json must be well-formed

  • metadata.json
    shell-version=['51']

EGO-C45-001 warning

45+ preferences should use fillPreferencesWindow instead of getPreferencesWidget

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

Preferences

  • prefs.js:148
        getPreferencesWidget() {
            return new BottomPanelSettingsWidget(this.getSettings());
        }

All Versions

Previous Reviews on this Version

JustPerfection active