From 0544729bbaa4bea29afadc07cc8e6c595007877e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sat, 5 Aug 2023 16:17:25 +0200 Subject: [PATCH] launch-new-instance: Use InjectionManager The extension uses a straight-forward override that doesn't benefit a lot from the new InjectionManager class, but let's use the provided convenience API anyway. Part-of: --- extensions/launch-new-instance/extension.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/extensions/launch-new-instance/extension.js b/extensions/launch-new-instance/extension.js index 53d8ae25..b542fad2 100644 --- a/extensions/launch-new-instance/extension.js +++ b/extensions/launch-new-instance/extension.js @@ -1,19 +1,23 @@ -const AppDisplay = imports.ui.appDisplay; +import {InjectionManager} from 'resource:///org/gnome/shell/extensions/extension.js'; + +const {AppIcon} = imports.ui.appDisplay; export default class Extension { constructor() { - this._appIconProto = AppDisplay.AppIcon.prototype; - this._activateOriginal = this._appIconProto.activate; + this._injectionManager = new InjectionManager(); } enable() { - const {_activateOriginal} = this; - this._appIconProto.activate = function () { - _activateOriginal.call(this, 2); - }; + this._injectionManager.overrideMethod(AppIcon.prototype, 'activate', + originalMethod => { + return function () { + // eslint-disable-next-line no-invalid-this + originalMethod.call(this, 2); + }; + }); } disable() { - this._appIconProto.activate = this._activateOriginal; + this._injectionManager.clear(); } }