Review of "Emoji Panel" version 1

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.

FAQ

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:138
    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:468
    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:152
            this._entry = new St.Entry({
                style_class: 'emoji-panel-search',
                hint_text: this._strings.search,
                can_focus: true,
                x_expand: true,
            })
  • extension.js:187
            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:165
    this._tabBar = new St.BoxLayout({style_class: 'emoji-panel-tabs'})
  • extension.js:184
    this._title = new St.Label({style_class: 'emoji-panel-title'})
  • extension.js:180
    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:152
            this._entry = new St.Entry({
                style_class: 'emoji-panel-search',
                hint_text: this._strings.search,
                can_focus: true,
                x_expand: true,
            })
  • extension.js:187
            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:165
    this._tabBar = new St.BoxLayout({style_class: 'emoji-panel-tabs'})
  • extension.js:184
    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:162
    this._entry.clutter_text.connect('text-changed', () => this._onSearchChanged())

All Versions

Version Status
2 Unreviewed
1 Unreviewed