Review of "DragnTile" version 26.03.01 (18)

Details Page Preview

Tile windows from the gnome overview.

Extension Homepage
https://github.com/Z-oops/DragnTile

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 3

Shexli found 4 issues that may need reviewer attention.

EGO-C49-003 error

extensions targeting GNOME 49 must not call maximize or unmaximize with Meta.MaximizeFlags

This extension explicitly targets GNOME Shell 49 but still passes `Meta.MaximizeFlags` to `maximize()` or `unmaximize()`.

Meta.Window

  • extension.js:337
    metaWindow.unmaximize(Meta.MaximizeFlags.HORIZONTAL)
  • extension.js:338
    metaWindow.unmaximize(Meta.MaximizeFlags.VERTICAL)

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:108
    this.preview._icon = icon
  • extension.js:64
            this.replaceActor = new Clutter.Actor({
                content: imageContent,
                reactive: true,              // to receive click event
                width: workArea.width,
                height: workArea.height,
                x_expand: true,
                y_expand: 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:506
                            this.tilingPreview = new TilingPreview(
                                    [Utils.getMetaWindow(this._targetId), Utils.getMetaWindow(this._dropId)],
                                    PREVIEW_IMG)
  • extension.js:108
    this.preview._icon = icon
  • extension.js:64
            this.replaceActor = new Clutter.Actor({
                content: imageContent,
                reactive: true,              // to receive click event
                width: workArea.width,
                height: workArea.height,
                x_expand: true,
                y_expand: 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:469
            this._settings.connect('changed::around', (settings, key) => {
                this.around = settings.get_value(key).get_boolean();
                this._layoutManager.setAround(this.around);
                this._layoutManager.relayout();
                console.log('DragnTileExtension.settings', `${key} =
  • extension.js:455
            this._settings.connect('changed::debug', (settings, key) => {
                this._debug = settings.get_value(key);
                console.log('DragnTileExtension.settings', `${key} = ${settings.get_value(key).print(true)}`);
            })
  • extension.js:477
            this._settings.connect('changed::tiling-preview', (settings, key) => {
                this.useTilingPreview = settings.get_value(key).get_boolean();
                console.log('DragnTileExtension.settings', `${key} = ${settings.get_value(key).print(true)}`);
            })
  • extension.js:461
            this._settings.connect('changed::window-gap', (settings, key) => {
                this._gap = settings.get_value(key).get_int32();
                this._layoutManager.setGap(this._gap);
                this._layoutManager.relayout();
                console.log('DragnTileExtension.settings', `${key} = ${se
  • extension.js:489
            this.overviewStateAdjId = stateAdjustment.connect('notify::value', (adj) => {
                if (!this.useTilingPreview) return;
    
                // hidden to window_pick 0...1.0
                // hidden to app_grid 1.0...2.0
                // app_grid to hidden 1.0...0
                // app_grid to window_
  • extension.js:484
            this.relayoutId = this._layoutManager.connect('dragntile-relayout', () => {
                Utils.captureWorkArea().catch(err => Utils.log('captureWorkArea failed.'));
            })
  • extension.js:521
            this.workspaceChangeId = global.workspace_manager.connect('active-workspace-changed', () => {
                if (!this.useTilingPreview) return;
    
                const stateAdjustment = Main.overview._overview._controls._stateAdjustment;
                if (stateAdjustment.value === ControlsState.WINDO
  • extension.js:138
            this.previewHideChromeId = this.preview._title.connect('hide', () => {
                // porting from WindowPreview.js:hideOverlay()
                const WINDOW_SCALE_TIME = 200;
                this.replaceActor.ease({
                    scale_x: 1,
                    scale_y: 1,
                    duration: 
  • extension.js:117
            this.previewShowChromeId = this.preview._title.connect('show', () => {
                // porting from WindowPreview.js:showOverlay()
                // do the same animation with replaceActor's parent
                const WINDOW_SCALE_TIME = 200;
                const WINDOW_ACTIVE_SIZE_INC = 5; // in eac
  • extension.js:73
            this.previewShowId = this.preview.connect('show', () => {
                this.preview.add_child(this.replaceActor);
                this.preview.set_child_below_sibling(this.replaceActor, this.preview._title);
                this.replaceActor.show();
            })

All Versions

Version Status
26.03.01 (19) Active
26.03.01 (18) Rejected
25.12.01 (17) Active
25.11.3 (16) Active
25.11.2 (15) Active
25.11.1 (14) Rejected
25.09.5 (13) Active
25.09.4 (12) Active
25.09.3 (11) Inactive
25.09.2 (10) Inactive
25.09.1 (9) Inactive
25.06.1 (8) Active
25.05.1 (7) Active
25.03.2 (6) Active
25.03.1 (5) Active
25.03.1 (4) Rejected
25.02.2 (3) Active
25.02.1 (2) Inactive
1 Inactive

Previous Reviews on this Version

Zengl posted a review
Try trigger review
SriramRamkrishna rejected
Can you clean up this? extensions targeting GNOME 49 must not call maximize or unmaximize with Meta.MaximizeFlags As well you have some objects that needs to be cleaned up when you call disable().
Zengl posted a review
static unmaximize(metaWindow) { if (metaWindow.set_unmaximize_flags === undefined) { // <= gnome48 metaWindow.unmaximize(Meta.MaximizeFlags.HORIZONTAL); <------ gnome 49 will never reach this line metaWindow.unmaximize(Meta.MaximizeFlags.VERTICAL); } else { metaWindow.set_unmaximize_flags(Meta.MaximizeFlags.BOTH); } }