Fix various issues in downstream patches
- don't duplicate logo in apps-menu in non-classic session - adjust panel-favorites, updates-dialog and systemMonitor extensions to GNOME 40 - apply style changes to pre-generated CSS Resolves: #1932261
This commit is contained in:
parent
bb7b5bde29
commit
08d9ade02c
@ -24,6 +24,20 @@ index 1f46507..ad638b2 100644
|
|||||||
// status area icons
|
// status area icons
|
||||||
.system-status-icon {
|
.system-status-icon {
|
||||||
icon-size: $base_icon_size;
|
icon-size: $base_icon_size;
|
||||||
|
diff --git a/data/gnome-classic.css b/data/gnome-classic.css
|
||||||
|
index f4826de..ad71bf6 100644
|
||||||
|
--- a/data/gnome-classic.css
|
||||||
|
+++ b/data/gnome-classic.css
|
||||||
|
@@ -1234,6 +1234,9 @@ StScrollBar {
|
||||||
|
box-shadow: none; }
|
||||||
|
#panel .panel-button:hover.clock-display .clock, #panel .panel-button:active.clock-display .clock, #panel .panel-button:overview.clock-display .clock, #panel .panel-button:focus.clock-display .clock, #panel .panel-button:checked.clock-display .clock {
|
||||||
|
box-shadow: inset 0 0 0 100px rgba(255, 255, 255, 0.2); }
|
||||||
|
+ #panel .panel-button .panel-logo-icon {
|
||||||
|
+ padding-right: .4em;
|
||||||
|
+ icon-size: 1em; }
|
||||||
|
#panel .panel-button .system-status-icon {
|
||||||
|
icon-size: 1.09em;
|
||||||
|
padding: 5px;
|
||||||
--
|
--
|
||||||
2.28.0
|
2.28.0
|
||||||
|
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
From 3fd6013393765bd8f1350da6e64b86a0961be9cd Mon Sep 17 00:00:00 2001
|
From a28e752ac10f9882d33a52189fc237d11d541fed Mon Sep 17 00:00:00 2001
|
||||||
From: Ray Strode <rstrode@redhat.com>
|
From: Ray Strode <rstrode@redhat.com>
|
||||||
Date: Tue, 21 Jan 2014 16:48:17 -0500
|
Date: Tue, 21 Jan 2014 16:48:17 -0500
|
||||||
Subject: [PATCH] apps-menu: add logo icon to Applications menu
|
Subject: [PATCH] apps-menu: add logo icon to Applications menu
|
||||||
|
|
||||||
Brand requested it.
|
Brand requested it.
|
||||||
---
|
---
|
||||||
extensions/apps-menu/extension.js | 13 ++++++++++++-
|
extensions/apps-menu/extension.js | 22 +++++++++++++++++++++-
|
||||||
1 file changed, 12 insertions(+), 1 deletion(-)
|
1 file changed, 21 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js
|
diff --git a/extensions/apps-menu/extension.js b/extensions/apps-menu/extension.js
|
||||||
index 6376b52..17285fd 100644
|
index 6376b524..1b1f01f1 100644
|
||||||
--- a/extensions/apps-menu/extension.js
|
--- a/extensions/apps-menu/extension.js
|
||||||
+++ b/extensions/apps-menu/extension.js
|
+++ b/extensions/apps-menu/extension.js
|
||||||
@@ -363,13 +363,24 @@ class ApplicationsButton extends PanelMenu.Button {
|
@@ -363,13 +363,24 @@ class ApplicationsButton extends PanelMenu.Button {
|
||||||
@ -22,7 +22,7 @@ index 6376b52..17285fd 100644
|
|||||||
+ '/usr/share/icons/hicolor/scalable/apps/start-here.svg');
|
+ '/usr/share/icons/hicolor/scalable/apps/start-here.svg');
|
||||||
+ this._icon = new St.Icon({
|
+ this._icon = new St.Icon({
|
||||||
+ gicon: new Gio.FileIcon({ file: iconFile }),
|
+ gicon: new Gio.FileIcon({ file: iconFile }),
|
||||||
+ style_class: 'panel-logo-icon'
|
+ style_class: 'panel-logo-icon',
|
||||||
+ });
|
+ });
|
||||||
+ hbox.add_actor(this._icon);
|
+ hbox.add_actor(this._icon);
|
||||||
+
|
+
|
||||||
@ -38,6 +38,29 @@ index 6376b52..17285fd 100644
|
|||||||
this.name = 'panelApplications';
|
this.name = 'panelApplications';
|
||||||
this.label_actor = this._label;
|
this.label_actor = this._label;
|
||||||
|
|
||||||
|
@@ -403,6 +414,14 @@ class ApplicationsButton extends PanelMenu.Button {
|
||||||
|
this._display();
|
||||||
|
this._installedChangedId = appSys.connect('installed-changed',
|
||||||
|
this._onTreeChanged.bind(this));
|
||||||
|
+ this._sessionUpdatedId = Main.sessionMode.connect('updated',
|
||||||
|
+ this._sessionUpdated.bind(this));
|
||||||
|
+ this._sessionUpdated();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _sessionUpdated() {
|
||||||
|
+ this._icon.visible =
|
||||||
|
+ !Main.sessionMode.panel.left.includes('activities');
|
||||||
|
}
|
||||||
|
|
||||||
|
_onTreeChanged() {
|
||||||
|
@@ -428,6 +447,7 @@ class ApplicationsButton extends PanelMenu.Button {
|
||||||
|
|
||||||
|
Main.overview.disconnect(this._showingId);
|
||||||
|
Main.overview.disconnect(this._hidingId);
|
||||||
|
+ Main.sessionMode.disconnect(this._sessionUpdatedId);
|
||||||
|
appSys.disconnect(this._installedChangedId);
|
||||||
|
this._tree.disconnect(this._treeChangedId);
|
||||||
|
this._tree = null;
|
||||||
--
|
--
|
||||||
2.28.0
|
2.31.1
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
Name: gnome-shell-extensions
|
Name: gnome-shell-extensions
|
||||||
Version: 40.1
|
Version: 40.1
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: Modify and extend GNOME Shell functionality and behavior
|
Summary: Modify and extend GNOME Shell functionality and behavior
|
||||||
|
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -348,6 +348,10 @@ workspaces.
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed May 26 2021 Florian Müllner <fmuellner@redhat.com> - 40.1-3
|
||||||
|
- Fix various issues in downstream patches
|
||||||
|
Resolves: #1932261
|
||||||
|
|
||||||
* Mon May 24 2021 Florian Müllner <fmuellner@redhat.com> - 40.1-2
|
* Mon May 24 2021 Florian Müllner <fmuellner@redhat.com> - 40.1-2
|
||||||
- Rebase downstream patches
|
- Rebase downstream patches
|
||||||
Resolves: #1932261
|
Resolves: #1932261
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From a226633a5acd6356f9ed8794a12f7501f25e018b Mon Sep 17 00:00:00 2001
|
From 3178a99e48167ad31b1e52e9afc2041bfee34593 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: Wed, 17 May 2017 19:13:50 +0200
|
Date: Wed, 17 May 2017 19:13:50 +0200
|
||||||
Subject: [PATCH 1/5] extensions: Resurrect systemMonitor extension
|
Subject: [PATCH 1/6] extensions: Resurrect systemMonitor extension
|
||||||
|
|
||||||
The extension was removed upstream because:
|
The extension was removed upstream because:
|
||||||
- it hooks into the message tray that was removed
|
- it hooks into the message tray that was removed
|
||||||
@ -26,7 +26,7 @@ This reverts commit c9a6421f362cd156cf731289eadc11f44f6970ac.
|
|||||||
|
|
||||||
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..7b09df0
|
index 00000000..7b09df01
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/extensions/systemMonitor/extension.js
|
+++ b/extensions/systemMonitor/extension.js
|
||||||
@@ -0,0 +1,376 @@
|
@@ -0,0 +1,376 @@
|
||||||
@ -408,7 +408,7 @@ index 0000000..7b09df0
|
|||||||
+}
|
+}
|
||||||
diff --git a/extensions/systemMonitor/meson.build b/extensions/systemMonitor/meson.build
|
diff --git a/extensions/systemMonitor/meson.build b/extensions/systemMonitor/meson.build
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..48504f6
|
index 00000000..48504f63
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/extensions/systemMonitor/meson.build
|
+++ b/extensions/systemMonitor/meson.build
|
||||||
@@ -0,0 +1,5 @@
|
@@ -0,0 +1,5 @@
|
||||||
@ -419,7 +419,7 @@ index 0000000..48504f6
|
|||||||
+)
|
+)
|
||||||
diff --git a/extensions/systemMonitor/metadata.json.in b/extensions/systemMonitor/metadata.json.in
|
diff --git a/extensions/systemMonitor/metadata.json.in b/extensions/systemMonitor/metadata.json.in
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..fa75007
|
index 00000000..fa750074
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/extensions/systemMonitor/metadata.json.in
|
+++ b/extensions/systemMonitor/metadata.json.in
|
||||||
@@ -0,0 +1,11 @@
|
@@ -0,0 +1,11 @@
|
||||||
@ -436,7 +436,7 @@ index 0000000..fa75007
|
|||||||
+}
|
+}
|
||||||
diff --git a/extensions/systemMonitor/stylesheet.css b/extensions/systemMonitor/stylesheet.css
|
diff --git a/extensions/systemMonitor/stylesheet.css b/extensions/systemMonitor/stylesheet.css
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..13f95ec
|
index 00000000..13f95ec7
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/extensions/systemMonitor/stylesheet.css
|
+++ b/extensions/systemMonitor/stylesheet.css
|
||||||
@@ -0,0 +1,35 @@
|
@@ -0,0 +1,35 @@
|
||||||
@ -476,7 +476,7 @@ index 0000000..13f95ec
|
|||||||
+ font-weight: bold;
|
+ font-weight: bold;
|
||||||
+}
|
+}
|
||||||
diff --git a/meson.build b/meson.build
|
diff --git a/meson.build b/meson.build
|
||||||
index b95dfc3..ada6b92 100644
|
index b95dfc30..ada6b921 100644
|
||||||
--- a/meson.build
|
--- a/meson.build
|
||||||
+++ b/meson.build
|
+++ b/meson.build
|
||||||
@@ -48,6 +48,7 @@ all_extensions += [
|
@@ -48,6 +48,7 @@ all_extensions += [
|
||||||
@ -488,27 +488,29 @@ index b95dfc3..ada6b92 100644
|
|||||||
'updates-dialog',
|
'updates-dialog',
|
||||||
'user-theme'
|
'user-theme'
|
||||||
--
|
--
|
||||||
2.28.0
|
2.31.1
|
||||||
|
|
||||||
|
|
||||||
From 260d286780690b9df6020472bb1af664ecf33e43 Mon Sep 17 00:00:00 2001
|
From d93f5edfc243dc065db74535de3db1222b483865 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: Fri, 17 May 2019 22:55:48 +0000
|
Date: Fri, 17 May 2019 22:55:48 +0000
|
||||||
Subject: [PATCH 2/5] systemMonitor: Modernise code
|
Subject: [PATCH 2/6] systemMonitor: Modernise code
|
||||||
|
|
||||||
- port to ES6 classes
|
- port to ES6 classes
|
||||||
- replace Lang.bind()
|
- replace Lang.bind()
|
||||||
|
- replace Tweener
|
||||||
|
- use standard align/expand properties
|
||||||
- destructure imports
|
- destructure imports
|
||||||
- fix style issues (stray/missing spaces/semi-colons, indent, ...)
|
- fix style issues (stray/missing spaces/semi-colons, indent, ...)
|
||||||
---
|
---
|
||||||
extensions/systemMonitor/extension.js | 377 +++++++++++++-------------
|
extensions/systemMonitor/extension.js | 422 +++++++++++++-------------
|
||||||
1 file changed, 192 insertions(+), 185 deletions(-)
|
1 file changed, 212 insertions(+), 210 deletions(-)
|
||||||
|
|
||||||
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
||||||
index 7b09df0..89f8916 100644
|
index 7b09df01..f7c6a4a9 100644
|
||||||
--- a/extensions/systemMonitor/extension.js
|
--- a/extensions/systemMonitor/extension.js
|
||||||
+++ b/extensions/systemMonitor/extension.js
|
+++ b/extensions/systemMonitor/extension.js
|
||||||
@@ -1,22 +1,16 @@
|
@@ -1,56 +1,57 @@
|
||||||
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||||||
|
|
||||||
-const Clutter = imports.gi.Clutter;
|
-const Clutter = imports.gi.Clutter;
|
||||||
@ -523,7 +525,7 @@ index 7b09df0..89f8916 100644
|
|||||||
+
|
+
|
||||||
+const ExtensionUtils = imports.misc.extensionUtils;
|
+const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const Tweener = imports.ui.tweener;
|
-const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
const _ = Gettext.gettext;
|
const _ = Gettext.gettext;
|
||||||
@ -535,8 +537,10 @@ index 7b09df0..89f8916 100644
|
|||||||
const INDICATOR_UPDATE_INTERVAL = 500;
|
const INDICATOR_UPDATE_INTERVAL = 500;
|
||||||
const INDICATOR_NUM_GRID_LINES = 3;
|
const INDICATOR_NUM_GRID_LINES = 3;
|
||||||
|
|
||||||
@@ -24,32 +18,38 @@ const ITEM_LABEL_SHOW_TIME = 0.15;
|
-const ITEM_LABEL_SHOW_TIME = 0.15;
|
||||||
const ITEM_LABEL_HIDE_TIME = 0.1;
|
-const ITEM_LABEL_HIDE_TIME = 0.1;
|
||||||
|
+const ITEM_LABEL_SHOW_TIME = 150;
|
||||||
|
+const ITEM_LABEL_HIDE_TIME = 100;
|
||||||
const ITEM_HOVER_TIMEOUT = 300;
|
const ITEM_HOVER_TIMEOUT = 300;
|
||||||
|
|
||||||
-const Indicator = new Lang.Class({
|
-const Indicator = new Lang.Class({
|
||||||
@ -549,7 +553,11 @@ index 7b09df0..89f8916 100644
|
|||||||
- this.drawing_area = new St.DrawingArea({ reactive: true });
|
- this.drawing_area = new St.DrawingArea({ reactive: true });
|
||||||
- this.drawing_area.connect('repaint', Lang.bind(this, this._draw));
|
- this.drawing_area.connect('repaint', Lang.bind(this, this._draw));
|
||||||
- this.drawing_area.connect('button-press-event', function() {
|
- this.drawing_area.connect('button-press-event', function() {
|
||||||
+ this._drawingArea = new St.DrawingArea({ reactive: true });
|
+ this._drawingArea = new St.DrawingArea({
|
||||||
|
+ reactive: true,
|
||||||
|
+ x_expand: true,
|
||||||
|
+ y_expand: true,
|
||||||
|
+ });
|
||||||
+ this._drawingArea.connect('repaint', this._draw.bind(this));
|
+ this._drawingArea.connect('repaint', this._draw.bind(this));
|
||||||
+ this._drawingArea.connect('button-press-event', () => {
|
+ this._drawingArea.connect('button-press-event', () => {
|
||||||
let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
|
let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
|
||||||
@ -565,10 +573,10 @@ index 7b09df0..89f8916 100644
|
|||||||
+ style_class: 'extension-systemMonitor-indicator-area',
|
+ style_class: 'extension-systemMonitor-indicator-area',
|
||||||
+ reactive: true,
|
+ reactive: true,
|
||||||
+ track_hover: true,
|
+ track_hover: true,
|
||||||
+ x_fill: true,
|
|
||||||
+ y_fill: true
|
|
||||||
+ });
|
+ });
|
||||||
+ this.actor.add_actor(this._drawingArea);
|
+ this.actor.add_actor(this._drawingArea);
|
||||||
|
+
|
||||||
|
+ this.actor.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
- this._timeout = Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
|
- this._timeout = Mainloop.timeout_add(INDICATOR_UPDATE_INTERVAL, Lang.bind(this, function () {
|
||||||
- this._updateValues();
|
- this._updateValues();
|
||||||
@ -576,9 +584,6 @@ index 7b09df0..89f8916 100644
|
|||||||
- return true;
|
- return true;
|
||||||
- }));
|
- }));
|
||||||
- },
|
- },
|
||||||
+ this.actor.connect('destroy', this._onDestroy.bind(this));
|
|
||||||
|
|
||||||
- showLabel: function() {
|
|
||||||
+ this._timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
|
+ this._timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
|
||||||
+ INDICATOR_UPDATE_INTERVAL,
|
+ INDICATOR_UPDATE_INTERVAL,
|
||||||
+ () => {
|
+ () => {
|
||||||
@ -587,12 +592,15 @@ index 7b09df0..89f8916 100644
|
|||||||
+ return GLib.SOURCE_CONTINUE;
|
+ return GLib.SOURCE_CONTINUE;
|
||||||
+ });
|
+ });
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
|
- showLabel: function() {
|
||||||
|
- if (this.label == null)
|
||||||
+ showLabel() {
|
+ showLabel() {
|
||||||
if (this.label == null)
|
+ if (this.label === null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -58,12 +58,10 @@ const Indicator = new Lang.Class({
|
this.label.opacity = 0;
|
||||||
|
@@ -58,12 +59,10 @@ const Indicator = new Lang.Class({
|
||||||
|
|
||||||
let [stageX, stageY] = this.actor.get_transformed_position();
|
let [stageX, stageY] = this.actor.get_transformed_position();
|
||||||
|
|
||||||
@ -608,7 +616,7 @@ index 7b09df0..89f8916 100644
|
|||||||
|
|
||||||
let x = stageX + xOffset;
|
let x = stageX + xOffset;
|
||||||
|
|
||||||
@@ -73,48 +71,51 @@ const Indicator = new Lang.Class({
|
@@ -73,116 +72,113 @@ const Indicator = new Lang.Class({
|
||||||
let y = stageY - this.label.get_height() - yOffset;
|
let y = stageY - this.label.get_height() - yOffset;
|
||||||
|
|
||||||
this.label.set_position(x, y);
|
this.label.set_position(x, y);
|
||||||
@ -618,21 +626,22 @@ index 7b09df0..89f8916 100644
|
|||||||
- transition: 'easeOutQuad',
|
- transition: 'easeOutQuad',
|
||||||
- });
|
- });
|
||||||
- },
|
- },
|
||||||
-
|
+ this.label.ease({
|
||||||
- setLabelText: function(text) {
|
|
||||||
+ Tweener.addTween(this.label, {
|
|
||||||
+ opacity: 255,
|
+ opacity: 255,
|
||||||
+ time: ITEM_LABEL_SHOW_TIME,
|
+ duration: ITEM_LABEL_SHOW_TIME,
|
||||||
+ transition: 'easeOutQuad',
|
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
+ });
|
+ });
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
+ setLabelText(text) {
|
- setLabelText: function(text) {
|
||||||
if (this.label == null)
|
- if (this.label == null)
|
||||||
- this.label = new St.Label({ style_class: 'extension-systemMonitor-indicator-label'});
|
- this.label = new St.Label({ style_class: 'extension-systemMonitor-indicator-label'});
|
||||||
|
+ setLabelText(text) {
|
||||||
|
+ if (this.label === null) {
|
||||||
+ this.label = new St.Label({
|
+ this.label = new St.Label({
|
||||||
+ style_class: 'extension-systemMonitor-indicator-label'
|
+ style_class: 'extension-systemMonitor-indicator-label',
|
||||||
+ });
|
+ });
|
||||||
|
+ }
|
||||||
|
|
||||||
this.label.set_text(text);
|
this.label.set_text(text);
|
||||||
Main.layoutManager.addChrome(this.label);
|
Main.layoutManager.addChrome(this.label);
|
||||||
@ -655,11 +664,11 @@ index 7b09df0..89f8916 100644
|
|||||||
+ }
|
+ }
|
||||||
|
|
||||||
+ hideLabel() {
|
+ hideLabel() {
|
||||||
+ Tweener.addTween(this.label, {
|
+ this.label.ease({
|
||||||
+ opacity: 0,
|
+ opacity: 0,
|
||||||
+ time: ITEM_LABEL_HIDE_TIME,
|
+ duration: ITEM_LABEL_HIDE_TIME,
|
||||||
+ transition: 'easeOutQuad',
|
+ mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
+ onComplete: () => this.label.hide()
|
+ onComplete: () => this.label.hide(),
|
||||||
+ });
|
+ });
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -669,30 +678,32 @@ index 7b09df0..89f8916 100644
|
|||||||
- this.label.destroy();
|
- this.label.destroy();
|
||||||
- },
|
- },
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
+ _onDestroy() {
|
|
||||||
+ GLib.source_remove(this._timeout);
|
|
||||||
+
|
|
||||||
+ if (this.label)
|
|
||||||
+ this.label.destroy();
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- _initValues: function() {
|
- _initValues: function() {
|
||||||
- },
|
- },
|
||||||
+ _initValues() {
|
+ _onDestroy() {
|
||||||
+ }
|
+ GLib.source_remove(this._timeout);
|
||||||
|
|
||||||
- _updateValues: function() {
|
- _updateValues: function() {
|
||||||
- },
|
- },
|
||||||
+ _updateValues() {
|
+ if (this.label)
|
||||||
|
+ this.label.destroy();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ _initValues() {
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
- _draw: function(area) {
|
- _draw: function(area) {
|
||||||
|
+ _updateValues() {
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ _draw(area) {
|
+ _draw(area) {
|
||||||
let [width, height] = area.get_surface_size();
|
let [width, height] = area.get_surface_size();
|
||||||
let themeNode = this.actor.get_theme_node();
|
let themeNode = this.actor.get_theme_node();
|
||||||
let cr = area.get_context();
|
let cr = area.get_context();
|
||||||
@@ -123,12 +124,12 @@ const Indicator = new Lang.Class({
|
|
||||||
|
- //draw the background grid
|
||||||
|
+ // draw the background grid
|
||||||
let color = themeNode.get_color(this.gridColor);
|
let color = themeNode.get_color(this.gridColor);
|
||||||
let gridOffset = Math.floor(height / (INDICATOR_NUM_GRID_LINES + 1));
|
let gridOffset = Math.floor(height / (INDICATOR_NUM_GRID_LINES + 1));
|
||||||
for (let i = 1; i <= INDICATOR_NUM_GRID_LINES; ++i) {
|
for (let i = 1; i <= INDICATOR_NUM_GRID_LINES; ++i) {
|
||||||
@ -707,23 +718,61 @@ index 7b09df0..89f8916 100644
|
|||||||
+ cr.setDash([4, 1], 0);
|
+ cr.setDash([4, 1], 0);
|
||||||
cr.stroke();
|
cr.stroke();
|
||||||
|
|
||||||
//draw the foreground
|
- //draw the foreground
|
||||||
@@ -155,12 +156,12 @@ const Indicator = new Lang.Class({
|
+ // draw the foreground
|
||||||
|
|
||||||
|
- function makePath(values, reverse, nudge) {
|
||||||
|
- if (nudge == null) {
|
||||||
|
- nudge = 0;
|
||||||
|
- }
|
||||||
|
- //if we are going in reverse, we are completing the bottom of a chart, so use lineTo
|
||||||
|
+ function makePath(values, reverse, nudge = 0) {
|
||||||
|
+ // if we are going in reverse, we are completing the bottom of a chart, so use lineTo
|
||||||
|
if (reverse) {
|
||||||
|
cr.lineTo(values.length - 1, (1 - values[values.length - 1]) * height + nudge);
|
||||||
|
- for (let k = values.length - 2; k >= 0; --k) {
|
||||||
|
+ for (let k = values.length - 2; k >= 0; --k)
|
||||||
|
cr.lineTo(k, (1 - values[k]) * height + nudge);
|
||||||
|
- }
|
||||||
|
} else {
|
||||||
|
cr.moveTo(0, (1 - values[0]) * height + nudge);
|
||||||
|
- for (let k = 1; k < values.length; ++k) {
|
||||||
|
+ for (let k = 1; k < values.length; ++k)
|
||||||
|
cr.lineTo(k, (1 - values[k]) * height + nudge);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let renderStats = this.renderStats;
|
let renderStats = this.renderStats;
|
||||||
|
|
||||||
// Make sure we don't have more sample points than pixels
|
// Make sure we don't have more sample points than pixels
|
||||||
- renderStats.map(Lang.bind(this, function(k){
|
- renderStats.map(Lang.bind(this, function(k){
|
||||||
+ renderStats.map(k => {
|
+ renderStats.forEach(k => {
|
||||||
let stat = this.stats[k];
|
let stat = this.stats[k];
|
||||||
if (stat.values.length > width) {
|
- if (stat.values.length > width) {
|
||||||
|
+ if (stat.values.length > width)
|
||||||
stat.values = stat.values.slice(stat.values.length - width, stat.values.length);
|
stat.values = stat.values.slice(stat.values.length - width, stat.values.length);
|
||||||
}
|
- }
|
||||||
- }));
|
- }));
|
||||||
+ });
|
+ });
|
||||||
|
|
||||||
for (let i = 0; i < renderStats.length; ++i) {
|
for (let i = 0; i < renderStats.length; ++i) {
|
||||||
let stat = this.stats[renderStats[i]];
|
let stat = this.stats[renderStats[i]];
|
||||||
@@ -178,10 +179,10 @@ const Indicator = new Lang.Class({
|
// We outline at full opacity and fill with 40% opacity
|
||||||
|
let outlineColor = themeNode.get_color(stat.color);
|
||||||
|
- let color = new Clutter.Color(outlineColor);
|
||||||
|
- color.alpha = color.alpha * .4;
|
||||||
|
+ let fillColor = new Clutter.Color(outlineColor);
|
||||||
|
+ fillColor.alpha *= .4;
|
||||||
|
|
||||||
|
// Render the background between us and the next level
|
||||||
|
makePath(stat.values, false);
|
||||||
|
// If there is a process below us, render the cpu between us and it, otherwise,
|
||||||
|
// render to the bottom of the chart
|
||||||
|
- if (i == renderStats.length - 1) {
|
||||||
|
+ if (i === renderStats.length - 1) {
|
||||||
|
cr.lineTo(stat.values.length - 1, height);
|
||||||
cr.lineTo(0, height);
|
cr.lineTo(0, height);
|
||||||
cr.closePath();
|
cr.closePath();
|
||||||
} else {
|
} else {
|
||||||
@ -732,21 +781,23 @@ index 7b09df0..89f8916 100644
|
|||||||
makePath(nextStat.values, true);
|
makePath(nextStat.values, true);
|
||||||
}
|
}
|
||||||
- cr.closePath()
|
- cr.closePath()
|
||||||
|
- Clutter.cairo_set_source_color(cr, color);
|
||||||
+ cr.closePath();
|
+ cr.closePath();
|
||||||
Clutter.cairo_set_source_color(cr, color);
|
+ Clutter.cairo_set_source_color(cr, fillColor);
|
||||||
cr.fill();
|
cr.fill();
|
||||||
|
|
||||||
@@ -193,40 +194,42 @@ const Indicator = new Lang.Class({
|
// Render the outline of this level
|
||||||
|
@@ -193,41 +189,43 @@ const Indicator = new Lang.Class({
|
||||||
cr.stroke();
|
cr.stroke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-});
|
-});
|
||||||
-
|
+};
|
||||||
|
|
||||||
-const CpuIndicator = new Lang.Class({
|
-const CpuIndicator = new Lang.Class({
|
||||||
- Name: 'SystemMonitor.CpuIndicator',
|
- Name: 'SystemMonitor.CpuIndicator',
|
||||||
- Extends: Indicator,
|
- Extends: Indicator,
|
||||||
+};
|
-
|
||||||
|
|
||||||
- _init: function() {
|
- _init: function() {
|
||||||
- this.parent();
|
- this.parent();
|
||||||
+const CpuIndicator = class extends Indicator {
|
+const CpuIndicator = class extends Indicator {
|
||||||
@ -764,7 +815,7 @@ index 7b09df0..89f8916 100644
|
|||||||
+ 'cpu-total': 0,
|
+ 'cpu-total': 0,
|
||||||
+ 'cpu-user': 1,
|
+ 'cpu-user': 1,
|
||||||
+ 'cpu-sys': 2,
|
+ 'cpu-sys': 2,
|
||||||
+ 'cpu-iowait': 3
|
+ 'cpu-iowait': 3,
|
||||||
+ };
|
+ };
|
||||||
+ this.renderStats = this.renderStats.sort((a, b) => {
|
+ this.renderStats = this.renderStats.sort((a, b) => {
|
||||||
return renderStatOrder[a] - renderStatOrder[b];
|
return renderStatOrder[a] - renderStatOrder[b];
|
||||||
@ -776,8 +827,9 @@ index 7b09df0..89f8916 100644
|
|||||||
+ }
|
+ }
|
||||||
|
|
||||||
- _initValues: function() {
|
- _initValues: function() {
|
||||||
|
- this._prev = new GTop.glibtop_cpu;
|
||||||
+ _initValues() {
|
+ _initValues() {
|
||||||
this._prev = new GTop.glibtop_cpu;
|
+ this._prev = new GTop.glibtop_cpu();
|
||||||
GTop.glibtop_get_cpu(this._prev);
|
GTop.glibtop_get_cpu(this._prev);
|
||||||
|
|
||||||
this.stats = {
|
this.stats = {
|
||||||
@ -789,18 +841,20 @@ index 7b09df0..89f8916 100644
|
|||||||
- },
|
- },
|
||||||
-
|
-
|
||||||
- _updateValues: function() {
|
- _updateValues: function() {
|
||||||
|
- let cpu = new GTop.glibtop_cpu;
|
||||||
+ 'cpu-user': { color: '-cpu-user-color', values: [] },
|
+ 'cpu-user': { color: '-cpu-user-color', values: [] },
|
||||||
+ 'cpu-sys': { color: '-cpu-sys-color', values: [] },
|
+ 'cpu-sys': { color: '-cpu-sys-color', values: [] },
|
||||||
+ 'cpu-iowait': { color: '-cpu-iowait-color', values: [] },
|
+ 'cpu-iowait': { color: '-cpu-iowait-color', values: [] },
|
||||||
+ 'cpu-total': { color: '-cpu-total-color', values: [] }
|
+ 'cpu-total': { color: '-cpu-total-color', values: [] },
|
||||||
+ };
|
+ };
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ _updateValues() {
|
+ _updateValues() {
|
||||||
let cpu = new GTop.glibtop_cpu;
|
+ let cpu = new GTop.glibtop_cpu();
|
||||||
let t = 0.0;
|
let t = 0.0;
|
||||||
GTop.glibtop_get_cpu(cpu);
|
GTop.glibtop_get_cpu(cpu);
|
||||||
@@ -246,37 +249,34 @@ const CpuIndicator = new Lang.Class({
|
let total = cpu.total - this._prev.total;
|
||||||
|
@@ -246,37 +244,34 @@ const CpuIndicator = new Lang.Class({
|
||||||
|
|
||||||
this._prev = cpu;
|
this._prev = cpu;
|
||||||
}
|
}
|
||||||
@ -834,8 +888,9 @@ index 7b09df0..89f8916 100644
|
|||||||
+ }
|
+ }
|
||||||
|
|
||||||
- _initValues: function() {
|
- _initValues: function() {
|
||||||
|
- this.mem = new GTop.glibtop_mem;
|
||||||
+ _initValues() {
|
+ _initValues() {
|
||||||
this.mem = new GTop.glibtop_mem;
|
+ this.mem = new GTop.glibtop_mem();
|
||||||
this.stats = {
|
this.stats = {
|
||||||
- 'mem-user': { color: "-mem-user-color", values: [] },
|
- 'mem-user': { color: "-mem-user-color", values: [] },
|
||||||
- 'mem-other': { color: "-mem-other-color", values: [] },
|
- 'mem-other': { color: "-mem-other-color", values: [] },
|
||||||
@ -844,7 +899,7 @@ index 7b09df0..89f8916 100644
|
|||||||
- },
|
- },
|
||||||
+ 'mem-user': { color: '-mem-user-color', values: [] },
|
+ 'mem-user': { color: '-mem-user-color', values: [] },
|
||||||
+ 'mem-other': { color: '-mem-other-color', values: [] },
|
+ 'mem-other': { color: '-mem-other-color', values: [] },
|
||||||
+ 'mem-cached': { color: '-mem-cached-color', values: [] }
|
+ 'mem-cached': { color: '-mem-cached-color', values: [] },
|
||||||
+ };
|
+ };
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
@ -853,7 +908,7 @@ index 7b09df0..89f8916 100644
|
|||||||
GTop.glibtop_get_mem(this.mem);
|
GTop.glibtop_get_mem(this.mem);
|
||||||
|
|
||||||
let t = this.mem.user / this.mem.total;
|
let t = this.mem.user / this.mem.total;
|
||||||
@@ -286,90 +286,97 @@ const MemoryIndicator = new Lang.Class({
|
@@ -286,90 +281,97 @@ const MemoryIndicator = new Lang.Class({
|
||||||
t += this.mem.cached / this.mem.total;
|
t += this.mem.cached / this.mem.total;
|
||||||
this.stats['mem-cached'].values.push(t);
|
this.stats['mem-cached'].values.push(t);
|
||||||
}
|
}
|
||||||
@ -926,12 +981,12 @@ index 7b09df0..89f8916 100644
|
|||||||
+ this._box = new St.BoxLayout({
|
+ this._box = new St.BoxLayout({
|
||||||
+ style_class: 'extension-systemMonitor-container',
|
+ style_class: 'extension-systemMonitor-container',
|
||||||
+ x_align: Clutter.ActorAlign.START,
|
+ x_align: Clutter.ActorAlign.START,
|
||||||
+ x_expand: true
|
+ x_expand: true,
|
||||||
+ });
|
+ });
|
||||||
+ this._indicators = [];
|
+ this._indicators = [];
|
||||||
+
|
+
|
||||||
+ for (let i = 0; i < INDICATORS.length; i++) {
|
+ for (let i = 0; i < INDICATORS.length; i++) {
|
||||||
+ let indicator = new (INDICATORS[i])();
|
+ let indicator = new INDICATORS[i]();
|
||||||
+
|
+
|
||||||
+ indicator.actor.connect('notify::hover', () => {
|
+ indicator.actor.connect('notify::hover', () => {
|
||||||
+ this._onHover(indicator);
|
+ this._onHover(indicator);
|
||||||
@ -1026,13 +1081,119 @@ index 7b09df0..89f8916 100644
|
|||||||
function init() {
|
function init() {
|
||||||
return new Extension();
|
return new Extension();
|
||||||
--
|
--
|
||||||
2.28.0
|
2.31.1
|
||||||
|
|
||||||
|
|
||||||
From b98133d5a73701d876c3ab2be591762359a16669 Mon Sep 17 00:00:00 2001
|
From 84d881157d59a8701f351f69698edfbaf806898e Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||||
|
Date: Wed, 26 May 2021 19:50:37 +0200
|
||||||
|
Subject: [PATCH 3/6] systemMonitor: Make label property private
|
||||||
|
|
||||||
|
There is no good reason to use a public property, and the name will
|
||||||
|
clash when we subclass St.Button.
|
||||||
|
---
|
||||||
|
extensions/systemMonitor/extension.js | 35 ++++++++++++++-------------
|
||||||
|
1 file changed, 18 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
||||||
|
index f7c6a4a9..bde25a1d 100644
|
||||||
|
--- a/extensions/systemMonitor/extension.js
|
||||||
|
+++ b/extensions/systemMonitor/extension.js
|
||||||
|
@@ -19,6 +19,7 @@ const ITEM_HOVER_TIMEOUT = 300;
|
||||||
|
|
||||||
|
const Indicator = class {
|
||||||
|
constructor() {
|
||||||
|
+ this._label = null;
|
||||||
|
this._initValues();
|
||||||
|
this._drawingArea = new St.DrawingArea({
|
||||||
|
reactive: true,
|
||||||
|
@@ -51,28 +52,28 @@ const Indicator = class {
|
||||||
|
}
|
||||||
|
|
||||||
|
showLabel() {
|
||||||
|
- if (this.label === null)
|
||||||
|
+ if (this._label === null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- this.label.opacity = 0;
|
||||||
|
- this.label.show();
|
||||||
|
+ this._label.opacity = 0;
|
||||||
|
+ this._label.show();
|
||||||
|
|
||||||
|
let [stageX, stageY] = this.actor.get_transformed_position();
|
||||||
|
|
||||||
|
let itemWidth = this.actor.allocation.x2 - this.actor.allocation.x1;
|
||||||
|
|
||||||
|
- let labelWidth = this.label.width;
|
||||||
|
+ let labelWidth = this._label.width;
|
||||||
|
let xOffset = Math.floor((itemWidth - labelWidth) / 2);
|
||||||
|
|
||||||
|
let x = stageX + xOffset;
|
||||||
|
|
||||||
|
- let node = this.label.get_theme_node();
|
||||||
|
+ let node = this._label.get_theme_node();
|
||||||
|
let yOffset = node.get_length('-y-offset');
|
||||||
|
|
||||||
|
- let y = stageY - this.label.get_height() - yOffset;
|
||||||
|
+ let y = stageY - this._label.get_height() - yOffset;
|
||||||
|
|
||||||
|
- this.label.set_position(x, y);
|
||||||
|
- this.label.ease({
|
||||||
|
+ this._label.set_position(x, y);
|
||||||
|
+ this._label.ease({
|
||||||
|
opacity: 255,
|
||||||
|
duration: ITEM_LABEL_SHOW_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
@@ -80,23 +81,23 @@ const Indicator = class {
|
||||||
|
}
|
||||||
|
|
||||||
|
setLabelText(text) {
|
||||||
|
- if (this.label === null) {
|
||||||
|
- this.label = new St.Label({
|
||||||
|
+ if (this._label === null) {
|
||||||
|
+ this._label = new St.Label({
|
||||||
|
style_class: 'extension-systemMonitor-indicator-label',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
- this.label.set_text(text);
|
||||||
|
- Main.layoutManager.addChrome(this.label);
|
||||||
|
- this.label.hide();
|
||||||
|
+ this._label.set_text(text);
|
||||||
|
+ Main.layoutManager.addChrome(this._label);
|
||||||
|
+ this._label.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
hideLabel() {
|
||||||
|
- this.label.ease({
|
||||||
|
+ this._label.ease({
|
||||||
|
opacity: 0,
|
||||||
|
duration: ITEM_LABEL_HIDE_TIME,
|
||||||
|
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||||
|
- onComplete: () => this.label.hide(),
|
||||||
|
+ onComplete: () => this._label.hide(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -107,8 +108,8 @@ const Indicator = class {
|
||||||
|
_onDestroy() {
|
||||||
|
GLib.source_remove(this._timeout);
|
||||||
|
|
||||||
|
- if (this.label)
|
||||||
|
- this.label.destroy();
|
||||||
|
+ if (this._label)
|
||||||
|
+ this._label.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
_initValues() {
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
||||||
|
|
||||||
|
From fd961a7f6766e4c48d492bb4e37ee8bc250eb228 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: Wed, 17 May 2017 19:31:58 +0200
|
Date: Wed, 17 May 2017 19:31:58 +0200
|
||||||
Subject: [PATCH 3/5] systemMonitor: Move indicators to calendar
|
Subject: [PATCH 4/6] systemMonitor: Move indicators to calendar
|
||||||
|
|
||||||
The message tray joined the invisible choir, so we have to find
|
The message tray joined the invisible choir, so we have to find
|
||||||
a new home for the extension UI. The message list in the calendar
|
a new home for the extension UI. The message list in the calendar
|
||||||
@ -1040,45 +1201,59 @@ drop-down looks like the best option, given that it replaced the
|
|||||||
old tray (and also took over the old keyboard shortcut to bring
|
old tray (and also took over the old keyboard shortcut to bring
|
||||||
it up quickly).
|
it up quickly).
|
||||||
---
|
---
|
||||||
extensions/systemMonitor/extension.js | 65 ++++++++++++-------------
|
extensions/systemMonitor/extension.js | 106 +++++++++++-------------
|
||||||
extensions/systemMonitor/stylesheet.css | 14 ------
|
extensions/systemMonitor/stylesheet.css | 14 ----
|
||||||
2 files changed, 31 insertions(+), 48 deletions(-)
|
2 files changed, 50 insertions(+), 70 deletions(-)
|
||||||
|
|
||||||
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
||||||
index 89f8916..0188960 100644
|
index bde25a1d..1fd01ab4 100644
|
||||||
--- a/extensions/systemMonitor/extension.js
|
--- a/extensions/systemMonitor/extension.js
|
||||||
+++ b/extensions/systemMonitor/extension.js
|
+++ b/extensions/systemMonitor/extension.js
|
||||||
@@ -3,9 +3,11 @@
|
@@ -2,10 +2,11 @@
|
||||||
|
|
||||||
/* exported init */
|
/* exported init */
|
||||||
|
|
||||||
const { Clutter, GLib, GTop, Shell, St } = imports.gi;
|
-const { Clutter, GLib, GTop, Shell, St } = imports.gi;
|
||||||
+const Signals = imports.signals;
|
+const { Clutter, GLib, GObject, GTop, Shell, St } = imports.gi;
|
||||||
|
|
||||||
const ExtensionUtils = imports.misc.extensionUtils;
|
const ExtensionUtils = imports.misc.extensionUtils;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
+const MessageList = imports.ui.messageList;
|
+const MessageList = imports.ui.messageList;
|
||||||
const Tweener = imports.ui.tweener;
|
|
||||||
|
|
||||||
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
const Gettext = imports.gettext.domain('gnome-shell-extensions');
|
||||||
@@ -21,22 +23,25 @@ const ITEM_HOVER_TIMEOUT = 300;
|
const _ = Gettext.gettext;
|
||||||
const Indicator = class {
|
@@ -17,30 +18,38 @@ const ITEM_LABEL_SHOW_TIME = 150;
|
||||||
constructor() {
|
const ITEM_LABEL_HIDE_TIME = 100;
|
||||||
|
const ITEM_HOVER_TIMEOUT = 300;
|
||||||
|
|
||||||
|
-const Indicator = class {
|
||||||
|
- constructor() {
|
||||||
|
+const Indicator = GObject.registerClass({
|
||||||
|
+ Signals: {
|
||||||
|
+ 'close': {},
|
||||||
|
+ 'expanded': {},
|
||||||
|
+ 'unexpanded': {},
|
||||||
|
+ },
|
||||||
|
+}, class Indicator extends St.Button {
|
||||||
|
+ _init() {
|
||||||
|
this._label = null;
|
||||||
this._initValues();
|
this._initValues();
|
||||||
- this._drawingArea = new St.DrawingArea({ reactive: true });
|
this._drawingArea = new St.DrawingArea({
|
||||||
+ this._drawingArea = new St.DrawingArea();
|
- reactive: true,
|
||||||
|
x_expand: true,
|
||||||
|
y_expand: true,
|
||||||
|
});
|
||||||
this._drawingArea.connect('repaint', this._draw.bind(this));
|
this._drawingArea.connect('repaint', this._draw.bind(this));
|
||||||
- this._drawingArea.connect('button-press-event', () => {
|
- this._drawingArea.connect('button-press-event', () => {
|
||||||
+
|
+
|
||||||
+ this.actor = new St.Button({
|
+ super._init({
|
||||||
+ style_class: 'message message-content extension-systemMonitor-indicator-area',
|
+ style_class: 'message message-content extension-systemMonitor-indicator-area',
|
||||||
+ child: this._drawingArea,
|
+ child: this._drawingArea,
|
||||||
+ x_expand: true,
|
+ x_expand: true,
|
||||||
+ x_fill: true,
|
+ can_focus: true,
|
||||||
+ y_fill: true,
|
|
||||||
+ can_focus: true
|
|
||||||
+ });
|
+ });
|
||||||
+
|
+
|
||||||
+ this.actor.connect('clicked', () => {
|
+ this.connect('clicked', () => {
|
||||||
let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
|
let app = Shell.AppSystem.get_default().lookup_app('gnome-system-monitor.desktop');
|
||||||
app.open_new_window(-1);
|
app.open_new_window(-1);
|
||||||
- return true;
|
- return true;
|
||||||
@ -1088,66 +1263,125 @@ index 89f8916..0188960 100644
|
|||||||
- style_class: 'extension-systemMonitor-indicator-area',
|
- style_class: 'extension-systemMonitor-indicator-area',
|
||||||
- reactive: true,
|
- reactive: true,
|
||||||
- track_hover: true,
|
- track_hover: true,
|
||||||
- x_fill: true,
|
|
||||||
- y_fill: true
|
|
||||||
+ Main.overview.hide();
|
+ Main.overview.hide();
|
||||||
+ Main.panel.closeCalendar();
|
+ Main.panel.closeCalendar();
|
||||||
});
|
});
|
||||||
- this.actor.add_actor(this._drawingArea);
|
- this.actor.add_actor(this._drawingArea);
|
||||||
|
|
||||||
this.actor.connect('destroy', this._onDestroy.bind(this));
|
- this.actor.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
+ this.connect('destroy', this._onDestroy.bind(this));
|
||||||
|
|
||||||
@@ -71,6 +76,7 @@ const Indicator = class {
|
this._timeout = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
|
||||||
let y = stageY - this.label.get_height() - yOffset;
|
INDICATOR_UPDATE_INTERVAL,
|
||||||
|
@@ -58,9 +67,9 @@ const Indicator = class {
|
||||||
|
this._label.opacity = 0;
|
||||||
|
this._label.show();
|
||||||
|
|
||||||
this.label.set_position(x, y);
|
- let [stageX, stageY] = this.actor.get_transformed_position();
|
||||||
+ this.label.get_parent().set_child_above_sibling(this.label, null);
|
+ let [stageX, stageY] = this.get_transformed_position();
|
||||||
Tweener.addTween(this.label, {
|
|
||||||
|
- let itemWidth = this.actor.allocation.x2 - this.actor.allocation.x1;
|
||||||
|
+ let itemWidth = this.allocation.x2 - this.allocation.x1;
|
||||||
|
|
||||||
|
let labelWidth = this._label.width;
|
||||||
|
let xOffset = Math.floor((itemWidth - labelWidth) / 2);
|
||||||
|
@@ -73,6 +82,7 @@ const Indicator = class {
|
||||||
|
let y = stageY - this._label.get_height() - yOffset;
|
||||||
|
|
||||||
|
this._label.set_position(x, y);
|
||||||
|
+ this._label.get_parent().set_child_above_sibling(this._label, null);
|
||||||
|
this._label.ease({
|
||||||
opacity: 255,
|
opacity: 255,
|
||||||
time: ITEM_LABEL_SHOW_TIME,
|
duration: ITEM_LABEL_SHOW_TIME,
|
||||||
@@ -98,6 +104,14 @@ const Indicator = class {
|
@@ -101,8 +111,12 @@ const Indicator = class {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- destroy() {
|
||||||
|
- this.actor.destroy();
|
||||||
+ /* MessageList.Message boilerplate */
|
+ /* MessageList.Message boilerplate */
|
||||||
+ canClose() {
|
+ canClose() {
|
||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ clear() {
|
+ clear() {
|
||||||
+ }
|
|
||||||
+
|
|
||||||
destroy() {
|
|
||||||
this.actor.destroy();
|
|
||||||
}
|
}
|
||||||
@@ -195,6 +209,7 @@ const Indicator = class {
|
|
||||||
|
_onDestroy() {
|
||||||
|
@@ -120,7 +134,7 @@ const Indicator = class {
|
||||||
|
|
||||||
|
_draw(area) {
|
||||||
|
let [width, height] = area.get_surface_size();
|
||||||
|
- let themeNode = this.actor.get_theme_node();
|
||||||
|
+ let themeNode = this.get_theme_node();
|
||||||
|
let cr = area.get_context();
|
||||||
|
|
||||||
|
// draw the background grid
|
||||||
|
@@ -190,11 +204,12 @@ const Indicator = class {
|
||||||
|
cr.stroke();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
-};
|
||||||
+Signals.addSignalMethods(Indicator.prototype); // For MessageList.Message compat
|
+});
|
||||||
|
|
||||||
const CpuIndicator = class extends Indicator {
|
-const CpuIndicator = class extends Indicator {
|
||||||
constructor() {
|
- constructor() {
|
||||||
@@ -300,11 +315,7 @@ class Extension {
|
- super();
|
||||||
|
+const CpuIndicator = GObject.registerClass(
|
||||||
|
+class CpuIndicator extends Indicator {
|
||||||
|
+ _init() {
|
||||||
|
+ super._init();
|
||||||
|
|
||||||
|
this.gridColor = '-grid-color';
|
||||||
|
this.renderStats = ['cpu-user', 'cpu-sys', 'cpu-iowait'];
|
||||||
|
@@ -245,11 +260,12 @@ const CpuIndicator = class extends Indicator {
|
||||||
|
|
||||||
|
this._prev = cpu;
|
||||||
|
}
|
||||||
|
-};
|
||||||
|
+});
|
||||||
|
|
||||||
|
-const MemoryIndicator = class extends Indicator {
|
||||||
|
- constructor() {
|
||||||
|
- super();
|
||||||
|
+const MemoryIndicator = GObject.registerClass(
|
||||||
|
+class MemoryIndicator extends Indicator {
|
||||||
|
+ _init() {
|
||||||
|
+ super._init();
|
||||||
|
|
||||||
|
this.gridColor = '-grid-color';
|
||||||
|
this.renderStats = ['mem-user', 'mem-other', 'mem-cached'];
|
||||||
|
@@ -282,7 +298,7 @@ const MemoryIndicator = class extends Indicator {
|
||||||
|
t += this.mem.cached / this.mem.total;
|
||||||
|
this.stats['mem-cached'].values.push(t);
|
||||||
|
}
|
||||||
|
-};
|
||||||
|
+});
|
||||||
|
|
||||||
|
const INDICATORS = [CpuIndicator, MemoryIndicator];
|
||||||
|
|
||||||
|
@@ -296,49 +312,27 @@ class Extension {
|
||||||
}
|
}
|
||||||
|
|
||||||
enable() {
|
enable() {
|
||||||
- this._box = new St.BoxLayout({
|
- this._box = new St.BoxLayout({
|
||||||
- style_class: 'extension-systemMonitor-container',
|
- style_class: 'extension-systemMonitor-container',
|
||||||
- x_align: Clutter.ActorAlign.START,
|
- x_align: Clutter.ActorAlign.START,
|
||||||
- x_expand: true
|
- x_expand: true,
|
||||||
- });
|
- });
|
||||||
|
- this._indicators = [];
|
||||||
+ this._section = new MessageList.MessageListSection(_('System Monitor'));
|
+ this._section = new MessageList.MessageListSection(_('System Monitor'));
|
||||||
this._indicators = [];
|
|
||||||
|
|
||||||
for (let i = 0; i < INDICATORS.length; i++) {
|
for (let i = 0; i < INDICATORS.length; i++) {
|
||||||
@@ -313,32 +324,18 @@ class Extension {
|
let indicator = new INDICATORS[i]();
|
||||||
indicator.actor.connect('notify::hover', () => {
|
|
||||||
|
- indicator.actor.connect('notify::hover', () => {
|
||||||
|
+ indicator.connect('notify::hover', () => {
|
||||||
this._onHover(indicator);
|
this._onHover(indicator);
|
||||||
});
|
});
|
||||||
- this._box.add_actor(indicator.actor);
|
- this._box.add_actor(indicator.actor);
|
||||||
|
- this._indicators.push(indicator);
|
||||||
+ this._section.addMessage(indicator, false);
|
+ this._section.addMessage(indicator, false);
|
||||||
this._indicators.push(indicator);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- this._boxHolder = new St.BoxLayout({
|
- this._boxHolder = new St.BoxLayout({
|
||||||
@ -1162,24 +1396,29 @@ index 89f8916..0188960 100644
|
|||||||
- this._boxHolder.add_child(this._box);
|
- this._boxHolder.add_child(this._box);
|
||||||
- this._boxHolder.add_child(menuButton);
|
- this._boxHolder.add_child(menuButton);
|
||||||
+ Main.panel.statusArea.dateMenu._messageList._addSection(this._section);
|
+ Main.panel.statusArea.dateMenu._messageList._addSection(this._section);
|
||||||
+ this._section.actor.get_parent().set_child_at_index(this._section.actor, 0);
|
+ this._section.get_parent().set_child_at_index(this._section, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
disable() {
|
disable() {
|
||||||
this._indicators.forEach(i => i.destroy());
|
- this._indicators.forEach(i => i.destroy());
|
||||||
|
-
|
||||||
- let menuButton = Main.messageTray._messageTrayMenuButton.actor;
|
- let menuButton = Main.messageTray._messageTrayMenuButton.actor;
|
||||||
- this._boxHolder.remove_child(menuButton);
|
- this._boxHolder.remove_child(menuButton);
|
||||||
- Main.messageTray.actor.add_child(menuButton);
|
- Main.messageTray.actor.add_child(menuButton);
|
||||||
-
|
-
|
||||||
- this._box.destroy();
|
- this._box.destroy();
|
||||||
- this._boxHolder.destroy();
|
- this._boxHolder.destroy();
|
||||||
+ Main.panel.statusArea.dateMenu._messageList._removeSection(this._section);
|
+ this._section.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
_onHover(item) {
|
_onHover(item) {
|
||||||
|
- if (item.actor.get_hover()) {
|
||||||
|
+ if (item.get_hover()) {
|
||||||
|
if (this._showLabelTimeoutId)
|
||||||
|
return;
|
||||||
|
|
||||||
diff --git a/extensions/systemMonitor/stylesheet.css b/extensions/systemMonitor/stylesheet.css
|
diff --git a/extensions/systemMonitor/stylesheet.css b/extensions/systemMonitor/stylesheet.css
|
||||||
index 13f95ec..978ac12 100644
|
index 13f95ec7..978ac12a 100644
|
||||||
--- a/extensions/systemMonitor/stylesheet.css
|
--- a/extensions/systemMonitor/stylesheet.css
|
||||||
+++ b/extensions/systemMonitor/stylesheet.css
|
+++ b/extensions/systemMonitor/stylesheet.css
|
||||||
@@ -1,17 +1,4 @@
|
@@ -1,17 +1,4 @@
|
||||||
@ -1209,13 +1448,13 @@ index 13f95ec..978ac12 100644
|
|||||||
|
|
||||||
.extension-systemMonitor-indicator-label {
|
.extension-systemMonitor-indicator-label {
|
||||||
--
|
--
|
||||||
2.28.0
|
2.31.1
|
||||||
|
|
||||||
|
|
||||||
From 9585edb8edfd60f04607017e769891eda294b9d7 Mon Sep 17 00:00:00 2001
|
From 5796b0714f03cb1faa5cd70d50b46b57f67c4eea 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, 18 May 2017 16:20:07 +0200
|
Date: Thu, 18 May 2017 16:20:07 +0200
|
||||||
Subject: [PATCH 4/5] systemMonitor: Handle clicks on section title
|
Subject: [PATCH 5/6] systemMonitor: Handle clicks on section title
|
||||||
|
|
||||||
While on 3.24.x only the event section still has a clickable title,
|
While on 3.24.x only the event section still has a clickable title,
|
||||||
it's a generic message list feature in previous versions. It's easy
|
it's a generic message list feature in previous versions. It's easy
|
||||||
@ -1224,20 +1463,21 @@ the generic baseclass.
|
|||||||
|
|
||||||
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions3
|
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell-extensions3
|
||||||
---
|
---
|
||||||
extensions/systemMonitor/extension.js | 17 ++++++++++++++++-
|
extensions/systemMonitor/extension.js | 18 +++++++++++++++++-
|
||||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
diff --git a/extensions/systemMonitor/extension.js b/extensions/systemMonitor/extension.js
|
||||||
index 0188960..b4d5a9d 100644
|
index 1fd01ab4..57bdb51f 100644
|
||||||
--- a/extensions/systemMonitor/extension.js
|
--- a/extensions/systemMonitor/extension.js
|
||||||
+++ b/extensions/systemMonitor/extension.js
|
+++ b/extensions/systemMonitor/extension.js
|
||||||
@@ -303,6 +303,21 @@ const MemoryIndicator = class extends Indicator {
|
@@ -300,6 +300,22 @@ class MemoryIndicator extends Indicator {
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
|
|
||||||
|
+const SystemMonitorSection = GObject.registerClass(
|
||||||
+class SystemMonitorSection extends MessageList.MessageListSection {
|
+class SystemMonitorSection extends MessageList.MessageListSection {
|
||||||
+ constructor() {
|
+ _init() {
|
||||||
+ super(_('System Monitor'));
|
+ super._init(_('System Monitor'));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ _onTitleClicked() {
|
+ _onTitleClicked() {
|
||||||
@ -1248,28 +1488,28 @@ index 0188960..b4d5a9d 100644
|
|||||||
+ if (app)
|
+ if (app)
|
||||||
+ app.open_new_window(-1);
|
+ app.open_new_window(-1);
|
||||||
+ }
|
+ }
|
||||||
+}
|
+});
|
||||||
+
|
+
|
||||||
const INDICATORS = [CpuIndicator, MemoryIndicator];
|
const INDICATORS = [CpuIndicator, MemoryIndicator];
|
||||||
|
|
||||||
class Extension {
|
class Extension {
|
||||||
@@ -315,7 +330,7 @@ class Extension {
|
@@ -312,7 +328,7 @@ class Extension {
|
||||||
}
|
}
|
||||||
|
|
||||||
enable() {
|
enable() {
|
||||||
- this._section = new MessageList.MessageListSection(_('System Monitor'));
|
- this._section = new MessageList.MessageListSection(_('System Monitor'));
|
||||||
+ this._section = new SystemMonitorSection();
|
+ this._section = new SystemMonitorSection();
|
||||||
this._indicators = [];
|
|
||||||
|
|
||||||
for (let i = 0; i < INDICATORS.length; i++) {
|
for (let i = 0; i < INDICATORS.length; i++) {
|
||||||
|
let indicator = new INDICATORS[i]();
|
||||||
--
|
--
|
||||||
2.28.0
|
2.31.1
|
||||||
|
|
||||||
|
|
||||||
From 2470f7842aae83c16fc2583a0462151e23a17d12 Mon Sep 17 00:00:00 2001
|
From e762e2dd17cc62b9258e44458157997a07bbdbfa 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, 18 May 2017 18:00:17 +0200
|
Date: Thu, 18 May 2017 18:00:17 +0200
|
||||||
Subject: [PATCH 5/5] systemMonitor: Provide classic styling
|
Subject: [PATCH 6/6] systemMonitor: Provide classic styling
|
||||||
|
|
||||||
The indicator tooltips currently don't work out in classic mode
|
The indicator tooltips currently don't work out in classic mode
|
||||||
(dark text on dark background), so provide some mode-specific
|
(dark text on dark background), so provide some mode-specific
|
||||||
@ -1284,7 +1524,7 @@ Fixes: #4
|
|||||||
|
|
||||||
diff --git a/extensions/systemMonitor/classic.css b/extensions/systemMonitor/classic.css
|
diff --git a/extensions/systemMonitor/classic.css b/extensions/systemMonitor/classic.css
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..946863d
|
index 00000000..946863dc
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/extensions/systemMonitor/classic.css
|
+++ b/extensions/systemMonitor/classic.css
|
||||||
@@ -0,0 +1,6 @@
|
@@ -0,0 +1,6 @@
|
||||||
@ -1295,7 +1535,7 @@ index 0000000..946863d
|
|||||||
+ border: 1px solid #a1a1a1;
|
+ border: 1px solid #a1a1a1;
|
||||||
+}
|
+}
|
||||||
diff --git a/extensions/systemMonitor/meson.build b/extensions/systemMonitor/meson.build
|
diff --git a/extensions/systemMonitor/meson.build b/extensions/systemMonitor/meson.build
|
||||||
index 48504f6..b6548b1 100644
|
index 48504f63..b6548b14 100644
|
||||||
--- a/extensions/systemMonitor/meson.build
|
--- a/extensions/systemMonitor/meson.build
|
||||||
+++ b/extensions/systemMonitor/meson.build
|
+++ b/extensions/systemMonitor/meson.build
|
||||||
@@ -3,3 +3,7 @@ extension_data += configure_file(
|
@@ -3,3 +3,7 @@ extension_data += configure_file(
|
||||||
@ -1307,5 +1547,5 @@ index 48504f6..b6548b1 100644
|
|||||||
+ extension_data += files('classic.css')
|
+ extension_data += files('classic.css')
|
||||||
+endif
|
+endif
|
||||||
--
|
--
|
||||||
2.28.0
|
2.31.1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user