Fix GNOME 47 port of custom-menu extension
Resolves: https://issues.redhat.com/browse/RHEL-72217
This commit is contained in:
parent
8370906edf
commit
a5117fc923
@ -1,15 +1,15 @@
|
|||||||
From 9eb73513d7d31fd193e15c53f79c7e3a6aee71da Mon Sep 17 00:00:00 2001
|
From 99754dff35dcb2db5eb44271f3bc9ca022cd76e5 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
Date: Thu, 12 Jan 2023 19:43:52 +0100
|
Date: Thu, 12 Jan 2023 19:43:52 +0100
|
||||||
Subject: [PATCH 4/5] Add custom-menu extension
|
Subject: [PATCH 4/5] Add custom-menu extension
|
||||||
|
|
||||||
---
|
---
|
||||||
extensions/custom-menu/config.js | 445 ++++++++++++++++++++++++
|
extensions/custom-menu/config.js | 445 ++++++++++++++++++++++++
|
||||||
extensions/custom-menu/extension.js | 201 +++++++++++
|
extensions/custom-menu/extension.js | 214 ++++++++++++
|
||||||
extensions/custom-menu/meson.build | 7 +
|
extensions/custom-menu/meson.build | 7 +
|
||||||
extensions/custom-menu/metadata.json.in | 10 +
|
extensions/custom-menu/metadata.json.in | 10 +
|
||||||
meson.build | 1 +
|
meson.build | 1 +
|
||||||
5 files changed, 664 insertions(+)
|
5 files changed, 677 insertions(+)
|
||||||
create mode 100644 extensions/custom-menu/config.js
|
create mode 100644 extensions/custom-menu/config.js
|
||||||
create mode 100644 extensions/custom-menu/extension.js
|
create mode 100644 extensions/custom-menu/extension.js
|
||||||
create mode 100644 extensions/custom-menu/meson.build
|
create mode 100644 extensions/custom-menu/meson.build
|
||||||
@ -17,7 +17,7 @@ Subject: [PATCH 4/5] Add custom-menu extension
|
|||||||
|
|
||||||
diff --git a/extensions/custom-menu/config.js b/extensions/custom-menu/config.js
|
diff --git a/extensions/custom-menu/config.js b/extensions/custom-menu/config.js
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 00000000..d08e3201
|
index 00000000..e43195d8
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/extensions/custom-menu/config.js
|
+++ b/extensions/custom-menu/config.js
|
||||||
@@ -0,0 +1,445 @@
|
@@ -0,0 +1,445 @@
|
||||||
@ -451,7 +451,7 @@ index 00000000..d08e3201
|
|||||||
+ "entries": [ {
|
+ "entries": [ {
|
||||||
+ "type": "launcher",
|
+ "type": "launcher",
|
||||||
+ "title": "Edit menu",
|
+ "title": "Edit menu",
|
||||||
+ "command": "gedit $HOME/.entries.json"
|
+ "command": "gnome-text-editor $HOME/.entries.json"
|
||||||
+ } ]
|
+ } ]
|
||||||
+ }, null, 4);
|
+ }, null, 4);
|
||||||
+ let fileConfig = Gio.File.new_for_path(filename);
|
+ let fileConfig = Gio.File.new_for_path(filename);
|
||||||
@ -468,10 +468,10 @@ index 00000000..d08e3201
|
|||||||
+}
|
+}
|
||||||
diff --git a/extensions/custom-menu/extension.js b/extensions/custom-menu/extension.js
|
diff --git a/extensions/custom-menu/extension.js b/extensions/custom-menu/extension.js
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 00000000..9edbc548
|
index 00000000..5868ebb7
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/extensions/custom-menu/extension.js
|
+++ b/extensions/custom-menu/extension.js
|
||||||
@@ -0,0 +1,201 @@
|
@@ -0,0 +1,214 @@
|
||||||
+/* extension.js
|
+/* extension.js
|
||||||
+ *
|
+ *
|
||||||
+ * This program is free software: you can redistribute it and/or modify
|
+ * This program is free software: you can redistribute it and/or modify
|
||||||
@ -502,7 +502,7 @@ index 00000000..9edbc548
|
|||||||
+import GObject from 'gi://GObject';
|
+import GObject from 'gi://GObject';
|
||||||
+import St from 'gi://St';
|
+import St from 'gi://St';
|
||||||
+
|
+
|
||||||
+import {Extension, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
+import {Extension, InjectionManager, gettext as _} from 'resource:///org/gnome/shell/extensions/extension.js';
|
||||||
+
|
+
|
||||||
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
+import * as Main from 'resource:///org/gnome/shell/ui/main.js';
|
||||||
+import * as BackgroundMenu from 'resource:///org/gnome/shell/ui/backgroundMenu.js';
|
+import * as BackgroundMenu from 'resource:///org/gnome/shell/ui/backgroundMenu.js';
|
||||||
@ -515,9 +515,6 @@ index 00000000..9edbc548
|
|||||||
+const LOGGER_WARNING = 1;
|
+const LOGGER_WARNING = 1;
|
||||||
+const LOGGER_ERROR = 2;
|
+const LOGGER_ERROR = 2;
|
||||||
+
|
+
|
||||||
+const {BackgroundMenu: OriginalBackgroundMenu} = BackgroundMenu;
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+class CustomMenu extends PopupMenu.PopupMenu {
|
+class CustomMenu extends PopupMenu.PopupMenu {
|
||||||
+ constructor(sourceActor) {
|
+ constructor(sourceActor) {
|
||||||
+ super(sourceActor, 0.0, St.Side.TOP, 0);
|
+ super(sourceActor, 0.0, St.Side.TOP, 0);
|
||||||
@ -552,7 +549,7 @@ index 00000000..9edbc548
|
|||||||
+
|
+
|
||||||
+ this.actor.add_style_class_name('background-menu');
|
+ this.actor.add_style_class_name('background-menu');
|
||||||
+
|
+
|
||||||
+ layoutManager.uiGroup.add_actor(this.actor);
|
+ layoutManager.uiGroup.add_child(this.actor);
|
||||||
+ this.actor.hide();
|
+ this.actor.hide();
|
||||||
+
|
+
|
||||||
+ this.connect('open-state-changed', (menu, open) => {
|
+ this.connect('open-state-changed', (menu, open) => {
|
||||||
@ -623,7 +620,7 @@ index 00000000..9edbc548
|
|||||||
+
|
+
|
||||||
+ _initGnomeLog() {
|
+ _initGnomeLog() {
|
||||||
+ this.log = function(s) {
|
+ this.log = function(s) {
|
||||||
+ global.log("custom-menu-panel> " + s);
|
+ console.log("custom-menu-panel> " + s);
|
||||||
+ };
|
+ };
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -663,13 +660,29 @@ index 00000000..9edbc548
|
|||||||
+} /**/
|
+} /**/
|
||||||
+
|
+
|
||||||
+export default class CustomMenuExtension extends Extension {
|
+export default class CustomMenuExtension extends Extension {
|
||||||
|
+ constructor(metadata) {
|
||||||
|
+ super(metadata);
|
||||||
|
+
|
||||||
|
+ this._injectionManager = new InjectionManager();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ enable() {
|
+ enable() {
|
||||||
+ BackgroundMenu.BackgroundMenu = CustomBackgroundMenu;
|
+ this._injectionManager.overrideMethod(Main.layoutManager, '_addBackgroundMenu',
|
||||||
|
+ () => {
|
||||||
|
+ return function (bgManager) {
|
||||||
|
+ const actor = bgManager.backgroundActor;
|
||||||
|
+ BackgroundMenu.addBackgroundMenu(actor, this);
|
||||||
|
+
|
||||||
|
+ actor._backgroundMenu.destroy();
|
||||||
|
+ actor._backgroundMenu = new CustomBackgroundMenu(this);
|
||||||
|
+ actor._backgroundManager.addMenu(actor._backgroundMenu);
|
||||||
|
+ };
|
||||||
|
+ });
|
||||||
+ Main.layoutManager._updateBackgrounds();
|
+ Main.layoutManager._updateBackgrounds();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ disable() {
|
+ disable() {
|
||||||
+ BackgroundMenu.BackgroundMenu = OriginalBackgroundMenu;
|
+ this._injectionManager.clear();
|
||||||
+ Main.layoutManager._updateBackgrounds();
|
+ Main.layoutManager._updateBackgrounds();
|
||||||
+ }
|
+ }
|
||||||
+} /**/
|
+} /**/
|
||||||
|
Loading…
Reference in New Issue
Block a user