Review of "Emoji Panel" version 2

Details Page Preview

A Windows-style emoji picker. Press Ctrl+. to open it next to your text cursor, search in English or Portuguese, and click or press Enter to insert emojis straight into the app you are typing in. The panel stays open so you can add several, and closes on Esc or a click outside. It lives inside GNOME Shell, like the on-screen keyboard, so it never steals focus from your app.

Extension Homepage
https://github.com/joabzicg/gnome-emoji-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 4 manual_review 1

Shexli found 5 issues that may need reviewer attention.

EGO-X-004 warning

extensions should avoid synchronous file IO in shell code

Shell code should avoid synchronous file IO APIs like `GLib.file_get_contents()` and `Gio.File.load_contents()`.

File Operations

  • extension.js:147
    GLib.file_get_contents(`${this.path}/${name}`)

EGO-A-005 manual_review

extensions should not access the clipboard directly

Direct clipboard access via `St.Clipboard.get_default()` requires reviewer scrutiny.

Review Guidelines

  • extension.js:487
    St.Clipboard.get_default()

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:161
            this._entry = new St.Entry({
                style_class: 'emoji-panel-search',
                hint_text: this._strings.search,
                can_focus: true,
                x_expand: true,
            })
  • extension.js:196
            this._scroll = new St.ScrollView({
                style_class: 'emoji-panel-scroll',
                hscrollbar_policy: St.PolicyType.NEVER,
                vscrollbar_policy: St.PolicyType.AUTOMATIC,
                x_expand: true,
                y_expand: true,
            })
  • extension.js:174
    this._tabBar = new St.BoxLayout({style_class: 'emoji-panel-tabs'})
  • extension.js:193
    this._title = new St.Label({style_class: 'emoji-panel-title'})
  • extension.js:189
    tab

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:161
            this._entry = new St.Entry({
                style_class: 'emoji-panel-search',
                hint_text: this._strings.search,
                can_focus: true,
                x_expand: true,
            })
  • extension.js:196
            this._scroll = new St.ScrollView({
                style_class: 'emoji-panel-scroll',
                hscrollbar_policy: St.PolicyType.NEVER,
                vscrollbar_policy: St.PolicyType.AUTOMATIC,
                x_expand: true,
                y_expand: true,
            })
  • extension.js:174
    this._tabBar = new St.BoxLayout({style_class: 'emoji-panel-tabs'})
  • extension.js:193
    this._title = new St.Label({style_class: 'emoji-panel-title'})

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:171
    this._entry.clutter_text.connect('text-changed', () => this._onSearchChanged())

All Versions

Version Status
2 Unreviewed
1 Unreviewed