Backport several bugfix commits from current git master

This commit is contained in:
Adam Williamson 2018-12-14 09:34:21 -08:00
parent bcf54f1782
commit 5d110a612a
19 changed files with 1706 additions and 6 deletions

View File

@ -0,0 +1,53 @@
From 284978757ee6b13dc9678700e2b1972507dbaaa5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 13 Jul 2018 19:16:14 +0200
Subject: [PATCH 01/25] windowAttentionHandler: Handle XUrgencyHint as well
While it's not commonly used, it is easy enough to handle it the
same as the demands-attention hint, so do just that.
https://bugzilla.gnome.org/show_bug.cgi?id=643595
---
js/ui/windowAttentionHandler.js | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/js/ui/windowAttentionHandler.js b/js/ui/windowAttentionHandler.js
index 524e47c0f..a8c688ef3 100644
--- a/js/ui/windowAttentionHandler.js
+++ b/js/ui/windowAttentionHandler.js
@@ -13,6 +13,8 @@ var WindowAttentionHandler = new Lang.Class({
this._tracker = Shell.WindowTracker.get_default();
this._windowDemandsAttentionId = global.display.connect('window-demands-attention',
this._onWindowDemandsAttention.bind(this));
+ this._windowMarkedUrgentId = global.display.connect('window-marked-urgent',
+ this._onWindowDemandsAttention.bind(this));
},
_getTitleAndBanner(app, window) {
@@ -66,7 +68,9 @@ var Source = new Lang.Class({
this.signalIDs = [];
this.signalIDs.push(this._window.connect('notify::demands-attention',
- () => { this.destroy(); }));
+ this._sync.bind(this));
+ this.signalIDs.push(this._window.connect('notify::urgent',
+ this._sync.bind(this));
this.signalIDs.push(this._window.connect('focus',
() => { this.destroy(); }));
this.signalIDs.push(this._window.connect('unmanaged',
@@ -75,6 +79,12 @@ var Source = new Lang.Class({
this.connect('destroy', this._onDestroy.bind(this));
},
+ _sync() {
+ if (this._window.demands_attention || this._window.urgent)
+ return;
+ this.destroy();
+ },
+
_onDestroy() {
for(let i = 0; i < this.signalIDs.length; i++) {
this._window.disconnect(this.signalIDs[i]);
--
2.20.0

View File

@ -0,0 +1,80 @@
From f81887772ac0e5adc4fac1c3a1839bbd8c87ff13 Mon Sep 17 00:00:00 2001
From: Cosimo Cecchi <cosimo@endlessm.com>
Date: Wed, 25 May 2016 11:28:57 -0700
Subject: [PATCH 2/4] keyboard: split out a function to udpate the MRU list
We're going to add saving of the MRU list in the function in a later
commit.
https://bugzilla.gnome.org/show_bug.cgi?id=766826
---
js/ui/status/keyboard.js | 46 +++++++++++++++++++++++++---------------------
1 file changed, 25 insertions(+), 21 deletions(-)
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index 895b73c..8f45b0d 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -440,6 +440,30 @@ const InputSourceManager = new Lang.Class({
this._currentInputSourceChanged(is);
},
+ _updateMruSources: function() {
+ let sourcesList = [];
+ for (let i in this._inputSources)
+ sourcesList.push(this._inputSources[i]);
+
+ this._keyboardManager.setUserLayouts(sourcesList.map(function(x) { return x.xkbId; }));
+
+ if (!this._disableIBus && this._mruSourcesBackup) {
+ this._mruSources = this._mruSourcesBackup;
+ this._mruSourcesBackup = null;
+ }
+
+ let mruSources = [];
+ for (let i = 0; i < this._mruSources.length; i++) {
+ for (let j = 0; j < sourcesList.length; j++)
+ if (this._mruSources[i].type == sourcesList[j].type &&
+ this._mruSources[i].id == sourcesList[j].id) {
+ mruSources = mruSources.concat(sourcesList.splice(j, 1));
+ break;
+ }
+ }
+ this._mruSources = mruSources.concat(sourcesList);
+ },
+
_inputSourcesChanged: function() {
let sources = this._settings.inputSources;
let nSources = sources.length;
@@ -514,27 +538,7 @@ const InputSourceManager = new Lang.Class({
this.emit('sources-changed');
- let sourcesList = [];
- for (let i in this._inputSources)
- sourcesList.push(this._inputSources[i]);
-
- this._keyboardManager.setUserLayouts(sourcesList.map(function(x) { return x.xkbId; }));
-
- if (!this._disableIBus && this._mruSourcesBackup) {
- this._mruSources = this._mruSourcesBackup;
- this._mruSourcesBackup = null;
- }
-
- let mruSources = [];
- for (let i = 0; i < this._mruSources.length; i++) {
- for (let j = 0; j < sourcesList.length; j++)
- if (this._mruSources[i].type == sourcesList[j].type &&
- this._mruSources[i].id == sourcesList[j].id) {
- mruSources = mruSources.concat(sourcesList.splice(j, 1));
- break;
- }
- }
- this._mruSources = mruSources.concat(sourcesList);
+ this._updateMruSources();
if (this._mruSources.length > 0)
this._mruSources[0].activate();
--
2.7.4

View File

@ -0,0 +1,29 @@
From 240f3faf6e58070fa98cab30bd2b9ff83f759a1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 14 Nov 2018 19:38:33 +0100
Subject: [PATCH 02/25] windowAttentionHandler: Fix syntax errors
Gah, why didn't we catch those?!
---
js/ui/windowAttentionHandler.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/js/ui/windowAttentionHandler.js b/js/ui/windowAttentionHandler.js
index a8c688ef3..3e53f60b5 100644
--- a/js/ui/windowAttentionHandler.js
+++ b/js/ui/windowAttentionHandler.js
@@ -68,9 +68,9 @@ var Source = new Lang.Class({
this.signalIDs = [];
this.signalIDs.push(this._window.connect('notify::demands-attention',
- this._sync.bind(this));
+ this._sync.bind(this)));
this.signalIDs.push(this._window.connect('notify::urgent',
- this._sync.bind(this));
+ this._sync.bind(this)));
this.signalIDs.push(this._window.connect('focus',
() => { this.destroy(); }));
this.signalIDs.push(this._window.connect('unmanaged',
--
2.20.0

View File

@ -0,0 +1,89 @@
From 5c0eba7d3be5997d973c3f0a06f2ecd4aa3e5db5 Mon Sep 17 00:00:00 2001
From: Cosimo Cecchi <cosimo@endlessm.com>
Date: Wed, 25 May 2016 11:54:33 -0700
Subject: [PATCH 3/4] keyboard: add an interactive argument to input source
activation
This is useful to differentiate between a change due to user interaction
or automatic loading.
https://bugzilla.gnome.org/show_bug.cgi?id=766826
---
js/ui/status/keyboard.js | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index 8f45b0d..1020994 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -61,8 +61,8 @@ const InputSource = new Lang.Class({
this.emit('changed');
},
- activate: function() {
- this.emit('activate');
+ activate: function(interactive) {
+ this.emit('activate', !!interactive);
},
_getXkbId: function() {
@@ -109,7 +109,7 @@ const InputSourcePopup = new Lang.Class({
_finish : function() {
this.parent();
- this._items[this._selectedIndex].activate();
+ this._items[this._selectedIndex].activate(true);
},
});
@@ -376,7 +376,7 @@ const InputSourceManager = new Lang.Class({
while (!(is = this._inputSources[nextIndex]))
nextIndex += 1;
- is.activate();
+ is.activate(true);
return true;
},
@@ -420,7 +420,7 @@ const InputSourceManager = new Lang.Class({
this._changePerWindowSource();
},
- _activateInputSource: function(is) {
+ _activateInputSource: function(is, interactive) {
KeyboardManager.holdKeyboard();
this._keyboardManager.apply(is.xkbId);
@@ -541,7 +541,7 @@ const InputSourceManager = new Lang.Class({
this._updateMruSources();
if (this._mruSources.length > 0)
- this._mruSources[0].activate();
+ this._mruSources[0].activate(false);
// All ibus engines are preloaded here to reduce the launching time
// when users switch the input sources.
@@ -650,7 +650,7 @@ const InputSourceManager = new Lang.Class({
}
if (window._currentSource)
- window._currentSource.activate();
+ window._currentSource.activate(false);
},
_sourcesPerWindowChanged: function() {
@@ -771,7 +771,10 @@ const InputSourceIndicator = new Lang.Class({
let is = this._inputSourceManager.inputSources[i];
let menuItem = new LayoutMenuItem(is.displayName, is.shortName);
- menuItem.connect('activate', Lang.bind(is, is.activate));
+ menuItem.connect('activate', function() {
+ is.activate(true);
+ });
+
let indicatorLabel = new St.Label({ text: is.shortName,
visible: false });
--
2.7.4

View File

@ -0,0 +1,36 @@
From 52c59ac0dd7ddbe064ea4b9873492ec76e289c65 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Paulo=20Rechi=20Vita?= <jprvita@endlessm.com>
Date: Fri, 2 Nov 2018 13:51:33 -0700
Subject: [PATCH 03/25] power: Label the PENDING_CHARGE state as "Not Charging"
The pending-charge state means AC power is on but the battery is not
being charged. This can happen because its charge is above a certain
threshold, to avoid short charging cycles and prolong the battery's
life, or because the PSU is not powerful enough to charge the batteries.
Instead of lying to the user about something being estimated, we should
simply tell the truth and set the label to "Not Charging".
Closes: #701.
---
js/ui/status/power.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/js/ui/status/power.js b/js/ui/status/power.js
index f21693f53..4a6ce2c24 100644
--- a/js/ui/status/power.js
+++ b/js/ui/status/power.js
@@ -70,7 +70,9 @@ var Indicator = new Lang.Class({
seconds = this._proxy.TimeToFull;
else if (this._proxy.State == UPower.DeviceState.DISCHARGING)
seconds = this._proxy.TimeToEmpty;
- // state is one of PENDING_CHARGING, PENDING_DISCHARGING
+ else if (this._proxy.State == UPower.DeviceState.PENDING_CHARGE)
+ return _("Not Charging");
+ // state is PENDING_DISCHARGE
else
return _("Estimating…");
--
2.20.0

View File

@ -0,0 +1,123 @@
From 2ea6ae05e579e07f03063e10e560c1339f6599c8 Mon Sep 17 00:00:00 2001
From: Cosimo Cecchi <cosimo@endlessm.com>
Date: Mon, 23 May 2016 16:24:50 -0700
Subject: [PATCH 4/4] keyboard: save the MRU input sources list when switching
And restore it when reloading the current list of sources, if
appropriate.
https://bugzilla.gnome.org/show_bug.cgi?id=766826
---
js/ui/status/keyboard.js | 61 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 61 insertions(+)
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index 1020994..d4b14d5 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -159,6 +159,14 @@ const InputSourceSettings = new Lang.Class({
return [];
},
+ get mruSources() {
+ return [];
+ },
+
+ set mruSources(sourcesList) {
+ // do nothing
+ },
+
get keyboardOptions() {
return [];
},
@@ -251,6 +259,7 @@ const InputSourceSessionSettings = new Lang.Class({
_DESKTOP_INPUT_SOURCES_SCHEMA: 'org.gnome.desktop.input-sources',
_KEY_INPUT_SOURCES: 'sources',
+ _KEY_MRU_SOURCES: 'mru-sources',
_KEY_KEYBOARD_OPTIONS: 'xkb-options',
_KEY_PER_WINDOW: 'per-window',
@@ -277,6 +286,15 @@ const InputSourceSessionSettings = new Lang.Class({
return this._getSourcesList(this._KEY_INPUT_SOURCES);
},
+ get mruSources() {
+ return this._getSourcesList(this._KEY_MRU_SOURCES);
+ },
+
+ set mruSources(sourcesList) {
+ let sources = GLib.Variant.new('a(ss)', sourcesList);
+ this._settings.set_value(this._KEY_MRU_SOURCES, sources);
+ },
+
get keyboardOptions() {
return this._settings.get_strv(this._KEY_KEYBOARD_OPTIONS);
},
@@ -404,6 +422,25 @@ const InputSourceManager = new Lang.Class({
this._keyboardManager.reapply();
},
+ _updateMruSettings: function() {
+ // If IBus is not ready we don't have a full picture of all
+ // the available sources, so don't update the setting
+ if (!this._ibusReady)
+ return;
+
+ // If IBus is temporarily disabled, don't update the setting
+ if (this._disableIBus)
+ return;
+
+ let sourcesList = [];
+ for (let i = 0; i < this._mruSources.length; ++i) {
+ let source = this._mruSources[i];
+ sourcesList.push([source.type, source.id]);
+ }
+
+ this._settings.mruSources = sourcesList;
+ },
+
_currentInputSourceChanged: function(newSource) {
let oldSource;
[oldSource, this._currentSource] = [this._currentSource, newSource];
@@ -438,6 +475,9 @@ const InputSourceManager = new Lang.Class({
this._ibusManager.setEngine(engine, KeyboardManager.releaseKeyboard);
this._currentInputSourceChanged(is);
+
+ if (interactive)
+ this._updateMruSettings();
},
_updateMruSources: function() {
@@ -452,6 +492,27 @@ const InputSourceManager = new Lang.Class({
this._mruSourcesBackup = null;
}
+ // Initialize from settings when we have no MRU sources list
+ if (this._mruSources.length == 0) {
+ let mruSettings = this._settings.mruSources;
+ for (let i = 0; i < mruSettings.length; i++) {
+ let mruSettingSource = mruSettings[i];
+ let mruSource = null;
+
+ for (let j = 0; j < sourcesList.length; j++) {
+ let source = sourcesList[j];
+ if (source.type == mruSettingSource.type &&
+ source.id == mruSettingSource.id) {
+ mruSource = source;
+ break;
+ }
+ }
+
+ if (mruSource)
+ this._mruSources.push(mruSource);
+ }
+ }
+
let mruSources = [];
for (let i = 0; i < this._mruSources.length; i++) {
for (let j = 0; j < sourcesList.length; j++)
--
2.7.4

View File

@ -1,7 +1,7 @@
From 74bb9e62492bacda372904d30891eb97685e9b0c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Thu, 15 Nov 2018 18:47:55 +0100
Subject: [PATCH] ibusManager: Don't pass undefined callback to ibus
Subject: [PATCH 07/25] ibusManager: Don't pass undefined callback to ibus
Since commit 551e8278416, we don't always pass a callback parameter.
However passing it on as undefined to ibus doesn't work, as gjs doesn't
@ -29,5 +29,5 @@ index 34f198c35..33ad8777e 100644
preloadEngines(ids) {
--
2.19.1
2.20.0

View File

@ -0,0 +1,40 @@
From e77463b875311ff35bb94daadf2d96cb1886e2c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 16 Nov 2018 11:39:08 +0100
Subject: [PATCH 08/25] altSwitcher: Fix error when all alternatives are
disabled
While we do consider the case that we don't have a child to show for the
visibility, we are still trying to move the click action unconditionally.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/783
---
js/ui/status/system.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/js/ui/status/system.js b/js/ui/status/system.js
index c695f37be..41bcacd94 100644
--- a/js/ui/status/system.js
+++ b/js/ui/status/system.js
@@ -58,6 +58,9 @@ var AltSwitcher = new Lang.Class({
childToShow = this._standard;
} else if (this._alternate.visible) {
childToShow = this._alternate;
+ } else {
+ this.actor.hide();
+ return;
}
let childShown = this.actor.get_child();
@@ -79,7 +82,7 @@ var AltSwitcher = new Lang.Class({
global.sync_pointer();
}
- this.actor.visible = (childToShow != null);
+ this.actor.show();
},
_onDestroy() {
--
2.20.0

View File

@ -0,0 +1,30 @@
From ff2fbf5ae40561b403b721e932d1bc5492532156 Mon Sep 17 00:00:00 2001
From: Andrea Azzarone <azzaronea@gmail.com>
Date: Fri, 16 Nov 2018 18:31:56 +0000
Subject: [PATCH 09/25] dash: destroy items's child before tooltip
Destroy the DashItemContainer's child from the same handler as the tooltip. This
will prevent invalid reads when the item is destroyed while its quicklist is
still open.
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/781
---
js/ui/dash.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/js/ui/dash.js b/js/ui/dash.js
index 60d030941..ce970a610 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -55,6 +55,8 @@ var DashItemContainer = new Lang.Class({
this.animatingOut = false;
this.connect('destroy', () => {
+ if (this.child != null)
+ this.child.destroy();
this.label.destroy();
});
},
--
2.20.0

View File

@ -0,0 +1,172 @@
From 8e7c90b930fd6bd52bfc0976d6e0750a48219cb4 Mon Sep 17 00:00:00 2001
From: Sam Hewitt <sam@snwh.org>
Date: Fri, 16 Nov 2018 14:05:05 -0500
Subject: [PATCH 10/25] theme: Replace corner ripple png assets with css
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/298
---
data/gnome-shell-theme.gresource.xml | 2 --
data/theme/corner-ripple-ltr.png | Bin 2493 -> 0 bytes
data/theme/corner-ripple-rtl.png | Bin 2386 -> 0 bytes
data/theme/gnome-shell-sass/_common.scss | 11 +++++------
4 files changed, 5 insertions(+), 8 deletions(-)
delete mode 100644 data/theme/corner-ripple-ltr.png
delete mode 100644 data/theme/corner-ripple-rtl.png
diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml
index c99b71ddf..e292d33a3 100644
--- a/data/gnome-shell-theme.gresource.xml
+++ b/data/gnome-shell-theme.gresource.xml
@@ -11,8 +11,6 @@
<file>close-window.svg</file>
<file>close-window-active.svg</file>
<file>close-window-hover.svg</file>
- <file>corner-ripple-ltr.png</file>
- <file>corner-ripple-rtl.png</file>
<file>dash-placeholder.svg</file>
<file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
diff --git a/data/theme/corner-ripple-ltr.png b/data/theme/corner-ripple-ltr.png
deleted file mode 100644
index 326ecaa52e4adc662c8c83f26c79640944eb6def..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2493
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
Hu0mjfFmu>C
diff --git a/data/theme/corner-ripple-rtl.png b/data/theme/corner-ripple-rtl.png
deleted file mode 100644
index 26cf965f63064f996d5a2e6199bfc154f56fe24c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2386
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
Ef{zodu>b%7
diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
index 06c50d1d9..829791419 100644
--- a/data/theme/gnome-shell-sass/_common.scss
+++ b/data/theme/gnome-shell-sass/_common.scss
@@ -1142,17 +1142,16 @@ StScrollBar {
& > StIcon { icon-size: 16px; }
}
-//Activities Ripples
+// Activities Ripples
.ripple-box {
width: 52px;
height: 52px;
- background-image: url("resource:///org/gnome/shell/theme/corner-ripple-ltr.png");
- background-size: contain;
+ border-radius: 0 0 52px 0; // radius the size of the box give us the curve
+ background-color: lighten(transparentize($selected_bg_color, 0.7), 40%);
+ box-shadow: 0 0 2px 2px lighten($selected_bg_color, 20%);
}
-.ripple-box:rtl {
- background-image: url("resource:///org/gnome/shell/theme/corner-ripple-rtl.png");
-}
+.ripple-box:rtl { border-radius: 0 0 0 52px; } // just a simple change to the border radius position
// not really top bar only
.popup-menu-arrow { width: 16px; height: 16px; }
--
2.20.0

View File

@ -0,0 +1,361 @@
From 27c660d2a9204bf423103bc83dc8e2f162b4474b Mon Sep 17 00:00:00 2001
From: Sam Hewitt <sam@snwh.org>
Date: Fri, 16 Nov 2018 13:44:52 -0500
Subject: [PATCH 11/25] theme: Replace page indicator assets with css
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/297
---
data/gnome-shell-theme.gresource.xml | 4 --
data/theme/gnome-shell-sass/_common.scss | 14 +++--
data/theme/page-indicator-active.svg | 71 ------------------------
data/theme/page-indicator-checked.svg | 67 ----------------------
data/theme/page-indicator-hover.svg | 67 ----------------------
data/theme/page-indicator-inactive.svg | 67 ----------------------
6 files changed, 8 insertions(+), 282 deletions(-)
delete mode 100644 data/theme/page-indicator-active.svg
delete mode 100644 data/theme/page-indicator-checked.svg
delete mode 100644 data/theme/page-indicator-hover.svg
delete mode 100644 data/theme/page-indicator-inactive.svg
diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml
index e292d33a3..451d0980e 100644
--- a/data/gnome-shell-theme.gresource.xml
+++ b/data/gnome-shell-theme.gresource.xml
@@ -25,10 +25,6 @@
<file>no-notifications.svg</file>
<file>noise-texture.png</file>
<file>pad-osd.css</file>
- <file>page-indicator-active.svg</file>
- <file>page-indicator-inactive.svg</file>
- <file>page-indicator-checked.svg</file>
- <file>page-indicator-hover.svg</file>
<file>process-working.svg</file>
<file>toggle-off-us.svg</file>
<file>toggle-off-intl.svg</file>
diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
index 829791419..c905b3b75 100644
--- a/data/theme/gnome-shell-sass/_common.scss
+++ b/data/theme/gnome-shell-sass/_common.scss
@@ -1446,15 +1446,17 @@ StScrollBar {
padding: 15px 20px;
.page-indicator-icon {
- width: 18px;
- height: 18px;
- background-image: url(resource:///org/gnome/shell/theme/page-indicator-inactive.svg);
+ width: 12px;
+ height: 12px;
+ background-color: transparent;
+ border: 2px solid rgba(255, 255, 255, 0.4);
+ border-radius:12px;
}
- &:hover .page-indicator-icon { background-image: url(resource:///org/gnome/shell/theme/page-indicator-hover.svg); }
- &:active .page-indicator-icon { background-image: url(resource:///org/gnome/shell/theme/page-indicator-active.svg); }
+ &:hover .page-indicator-icon { border-color: white; }
+ &:active .page-indicator-icon { border: none; margin: 2px; background-color:#fff; }
&:checked .page-indicator-icon,
- &:checked:active { background-image: url(resource:///org/gnome/shell/theme/page-indicator-checked.svg); }
+ &:checked:active { background-color: #fff;}
}
.no-frequent-applications-label { @extend %status_text; }
diff --git a/data/theme/page-indicator-active.svg b/data/theme/page-indicator-active.svg
deleted file mode 100644
index 51a76024e..000000000
--- a/data/theme/page-indicator-active.svg
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="18"
- height="18"
- id="svg4703"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="page-indicator-pushed.svg">
- <defs
- id="defs4705" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="31.392433"
- inkscape:cx="1.0245308"
- inkscape:cy="13.3715"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="2560"
- inkscape:window-height="1374"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1">
- <inkscape:grid
- type="xygrid"
- id="grid6140" />
- </sodipodi:namedview>
- <metadata
- id="metadata4708">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- transform="translate(0,2)">
- <path
- transform="matrix(0.54617904,0,0,0.62523128,-1131.9904,-392.39214)"
- d="m 2099.9808,638.83099 a 10.985409,9.5964489 0 1 1 -21.9708,0 10.985409,9.5964489 0 1 1 21.9708,0 z"
- sodipodi:ry="9.5964489"
- sodipodi:rx="10.985409"
- sodipodi:cy="638.83099"
- sodipodi:cx="2088.9954"
- id="path4711"
- style="fill:#fdffff;fill-opacity:1;stroke:none"
- sodipodi:type="arc" />
- </g>
-</svg>
diff --git a/data/theme/page-indicator-checked.svg b/data/theme/page-indicator-checked.svg
deleted file mode 100644
index 38b720f86..000000000
--- a/data/theme/page-indicator-checked.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="18"
- height="18"
- id="svg4703"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="page-indicator-active.svg">
- <defs
- id="defs4705" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.197802"
- inkscape:cx="2.1522887"
- inkscape:cy="16.782904"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="1920"
- inkscape:window-height="1021"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata4708">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- transform="translate(0,2)">
- <path
- transform="matrix(0.72823872,0,0,0.8336417,-1512.2872,-525.55618)"
- d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
- sodipodi:ry="9.5964489"
- sodipodi:rx="10.985409"
- sodipodi:cy="638.83099"
- sodipodi:cx="2088.9954"
- id="path4711"
- style="fill:#fdffff;fill-opacity:0.94117647;stroke:none"
- sodipodi:type="arc" />
- </g>
-</svg>
diff --git a/data/theme/page-indicator-hover.svg b/data/theme/page-indicator-hover.svg
deleted file mode 100644
index a4ea72ffd..000000000
--- a/data/theme/page-indicator-hover.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="18"
- height="18"
- id="svg5266"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="page-indicator-inactive.svg">
- <defs
- id="defs5268" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="-2.307566"
- inkscape:cy="17.859535"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="2560"
- inkscape:window-height="1374"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata5271">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- transform="translate(0,2)">
- <path
- sodipodi:type="arc"
- style="fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path5274"
- sodipodi:cx="2088.9954"
- sodipodi:cy="638.83099"
- sodipodi:rx="10.985409"
- sodipodi:ry="9.5964489"
- d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
- transform="matrix(0.63720887,0,0,0.72943648,-1322.1264,-458.98661)" />
- </g>
-</svg>
diff --git a/data/theme/page-indicator-inactive.svg b/data/theme/page-indicator-inactive.svg
deleted file mode 100644
index 4ff2246c8..000000000
--- a/data/theme/page-indicator-inactive.svg
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="18"
- height="18"
- id="svg5266"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="page-indicator-inactive.svg">
- <defs
- id="defs5268" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:zoom="11.313709"
- inkscape:cx="-2.307566"
- inkscape:cy="17.859535"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:grid-bbox="true"
- inkscape:document-units="px"
- inkscape:window-width="2560"
- inkscape:window-height="1374"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata5271">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- transform="translate(0,2)">
- <path
- sodipodi:type="arc"
- style="fill:none;fill-opacity:0;stroke:#ffffff;stroke-width:2.93356276000000005;stroke-miterlimit:4;stroke-opacity:0.39215686000000000;stroke-dasharray:none"
- id="path5274"
- sodipodi:cx="2088.9954"
- sodipodi:cy="638.83099"
- sodipodi:rx="10.985409"
- sodipodi:ry="9.5964489"
- d="m 2099.9808,638.83099 c 0,5.29998 -4.9184,9.59645 -10.9854,9.59645 -6.0671,0 -10.9854,-4.29647 -10.9854,-9.59645 0,-5.29997 4.9183,-9.59645 10.9854,-9.59645 6.067,0 10.9854,4.29648 10.9854,9.59645 z"
- transform="matrix(0.63720887,0,0,0.72943648,-1322.1264,-458.98661)" />
- </g>
-</svg>
--
2.20.0

View File

@ -0,0 +1,257 @@
From 3217c10ff272f44d50afc881ce2a2dbb911dc1e8 Mon Sep 17 00:00:00 2001
From: daniruiz <daniruizdealegria@gmail.com>
Date: Tue, 20 Nov 2018 17:55:31 +0100
Subject: [PATCH 16/25] theme: Replace calendar arrow images with symbolic
icons and CSS
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/301
---
data/gnome-shell-theme.gresource.xml | 2 -
data/theme/calendar-arrow-left.svg | 82 ------------------------
data/theme/calendar-arrow-right.svg | 82 ------------------------
data/theme/gnome-shell-sass/_common.scss | 10 +--
js/ui/calendar.js | 2 +
5 files changed, 4 insertions(+), 174 deletions(-)
delete mode 100644 data/theme/calendar-arrow-left.svg
delete mode 100644 data/theme/calendar-arrow-right.svg
diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml
index 4a4a0edfc..b77825414 100644
--- a/data/gnome-shell-theme.gresource.xml
+++ b/data/gnome-shell-theme.gresource.xml
@@ -1,8 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/theme">
- <file>calendar-arrow-left.svg</file>
- <file>calendar-arrow-right.svg</file>
<file>calendar-today.svg</file>
<file>checkbox-focused.svg</file>
<file>checkbox-off-focused.svg</file>
diff --git a/data/theme/calendar-arrow-left.svg b/data/theme/calendar-arrow-left.svg
deleted file mode 100644
index d5d97b3c3..000000000
--- a/data/theme/calendar-arrow-left.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg2"
- version="1.1"
- inkscape:version="0.48+devel r9942 custom"
- sodipodi:docname="New document 4">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="8.984481"
- inkscape:cy="5.6224906"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="930"
- inkscape:window-height="681"
- inkscape:window-x="1892"
- inkscape:window-y="272"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid17403"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- sodipodi:type="star"
- style="fill:#5f5f5f;fill-opacity:1;stroke:#5f5f5f;stroke-width:0.43015847;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- id="path18028"
- sodipodi:sides="3"
- sodipodi:cx="84.5"
- sodipodi:cy="337.5"
- sodipodi:r1="5"
- sodipodi:r2="2.5"
- sodipodi:arg1="0.52359878"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="M 88.830127,340 80.169873,340 84.5,332.5 z"
- transform="matrix(0,1.3621708,0.99186247,0,-325.48222,929.32667)" />
- </g>
-</svg>
diff --git a/data/theme/calendar-arrow-right.svg b/data/theme/calendar-arrow-right.svg
deleted file mode 100644
index 545da7ec5..000000000
--- a/data/theme/calendar-arrow-right.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="16"
- height="16"
- id="svg2"
- version="1.1"
- inkscape:version="0.48+devel r9942 custom"
- sodipodi:docname="arrow-left.svg">
- <defs
- id="defs4" />
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="7.7366092"
- inkscape:cy="6.4536271"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- borderlayer="true"
- inkscape:showpageshadow="false"
- inkscape:window-width="930"
- inkscape:window-height="681"
- inkscape:window-x="1892"
- inkscape:window-y="272"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid17403"
- empspacing="5"
- visible="true"
- enabled="true"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(0,-1036.3622)">
- <path
- sodipodi:type="star"
- style="fill:#5f5f5f;fill-opacity:1;stroke:#5f5f5f;stroke-width:0.43015847;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
- id="path18028"
- sodipodi:sides="3"
- sodipodi:cx="84.5"
- sodipodi:cy="337.5"
- sodipodi:r1="5"
- sodipodi:r2="2.5"
- sodipodi:arg1="0.52359878"
- sodipodi:arg2="1.5707963"
- inkscape:flatsided="true"
- inkscape:rounded="0"
- inkscape:randomized="0"
- d="M 88.830127,340 80.169873,340 84.5,332.5 z"
- transform="matrix(0,1.3621708,-0.99186247,0,342.48324,929.32667)" />
- </g>
-</svg>
diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss
index 528202161..22f9e826e 100644
--- a/data/theme/gnome-shell-sass/_common.scss
+++ b/data/theme/gnome-shell-sass/_common.scss
@@ -938,7 +938,6 @@ StScrollBar {
}
.pager-button {
- color: white;
background-color: transparent;
width: 32px;
border-radius: 4px;
@@ -946,13 +945,8 @@ StScrollBar {
&:active { background-color: transparentize($bg_color,0.95); }
}
- .calendar-change-month-back { //arrow back
- background-image: url("resource:///org/gnome/shell/theme/calendar-arrow-left.svg");
- &:rtl { background-image: url("resource:///org/gnome/shell/theme/calendar-arrow-right.svg"); }
- }
- .calendar-change-month-forward { //arrow foreward
- background-image: url("resource:///org/gnome/shell/theme/calendar-arrow-right.svg");
- &:rtl { background-image: url("resource:///org/gnome/shell/theme/calendar-arrow-left.svg"); }
+ .calendar-change-month-back StIcon, .calendar-change-month-forward StIcon { // arrows
+ icon-size: 1.09em;
}
.calendar-day-base {
diff --git a/js/ui/calendar.js b/js/ui/calendar.js
index 432986391..c4d362537 100644
--- a/js/ui/calendar.js
+++ b/js/ui/calendar.js
@@ -446,6 +446,7 @@ var Calendar = new Lang.Class({
this._backButton = new St.Button({ style_class: 'calendar-change-month-back pager-button',
accessible_name: _("Previous month"),
can_focus: true });
+ this._backButton.add_actor(new St.Icon({ icon_name: 'pan-start-symbolic' }));
this._topBox.add(this._backButton);
this._backButton.connect('clicked', this._onPrevMonthButtonClicked.bind(this));
@@ -456,6 +457,7 @@ var Calendar = new Lang.Class({
this._forwardButton = new St.Button({ style_class: 'calendar-change-month-forward pager-button',
accessible_name: _("Next month"),
can_focus: true });
+ this._forwardButton.add_actor(new St.Icon({ icon_name: 'pan-end-symbolic' }));
this._topBox.add(this._forwardButton);
this._forwardButton.connect('clicked', this._onNextMonthButtonClicked.bind(this));
--
2.20.0

View File

@ -0,0 +1,43 @@
From 4c11d15a074aeca72627c44e327e2dc2afa93ae3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Thu, 25 Oct 2018 06:35:25 +0200
Subject: [PATCH 17/25] st-button: Ignore pointer emulated touch events
In X11, pointer emulated touch events are replicated with normal PRESS, RELEASE
pair events which are generated by the server. Thus for a single tap we get:
- TOUCH_BEGIN -> TOUCH_END, PRESS -> RELEASE
This will cause st-button to send two "clicked" signals, instead of just one,
breaking extensions (like dash-to-dock) that show buttons in the main stage
which will be checked two times or that will receive the same signal two times.
---
src/st/st-button.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/st/st-button.c b/src/st/st-button.c
index 8f5c4922f..a3a7b2442 100644
--- a/src/st/st-button.c
+++ b/src/st/st-button.c
@@ -248,14 +248,17 @@ st_button_touch_event (ClutterActor *actor,
if (event->type == CLUTTER_TOUCH_BEGIN && !priv->press_sequence)
{
clutter_input_device_sequence_grab (device, sequence, actor);
- st_button_press (button, device, 0, sequence);
+ if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event))
+ st_button_press (button, device, 0, sequence);
return CLUTTER_EVENT_STOP;
}
else if (event->type == CLUTTER_TOUCH_END &&
priv->device == device &&
priv->press_sequence == sequence)
{
- st_button_release (button, device, mask, 0, sequence);
+ if (!clutter_event_is_pointer_emulated ((ClutterEvent*) event))
+ st_button_release (button, device, mask, 0, sequence);
+
clutter_input_device_sequence_ungrab (device, sequence);
return CLUTTER_EVENT_STOP;
}
--
2.20.0

View File

@ -0,0 +1,102 @@
From 0e0574a0b448a28235ec056f2397c4568f5c9338 Mon Sep 17 00:00:00 2001
From: Daniel van Vugt <daniel.van.vugt@canonical.com>
Date: Fri, 23 Nov 2018 16:43:34 +0800
Subject: [PATCH 18/25] iconGrid: Eliminate JavaScript for painting/picking
The only reason for `vfunc_paint` and `vfunc_pick` existing was to
implement a culling optimization. Although that optimization actually
made performance worse than none at all because it forced the painting
and picking cycles to spend more time calling into JavaScript.
Turns out we don't have to choose between native code and culling though.
Just reimplement the culling using native ClutterActor functions and we
get the benefits of both.
Performance on an i7-7700:
Moving the cursor over the icon grid:
Before: 70% CPU, 5.5ms per frame
After : 60% CPU, 4.5ms per frame
Scrolling the icon grid:
Before: 60% CPU, 4.4ms per frame
After : 50% CPU, 3.3ms per frame
Helps with https://gitlab.gnome.org/GNOME/gnome-shell/issues/174
---
js/ui/iconGrid.js | 29 ++++-------------------------
1 file changed, 4 insertions(+), 25 deletions(-)
diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js
index 94387a333..82b335cc5 100644
--- a/js/ui/iconGrid.js
+++ b/js/ui/iconGrid.js
@@ -344,10 +344,10 @@ var IconGrid = new Lang.Class({
if (this._rowLimit && rowIndex >= this._rowLimit ||
this._fillParent && childBox.y2 > availHeight - this.bottomPadding) {
- children[i]._skipPaint = true;
+ children[i].hide();
} else {
children[i].allocate(childBox, flags);
- children[i]._skipPaint = false;
+ children[i].show();
}
columnIndex++;
@@ -365,24 +365,6 @@ var IconGrid = new Lang.Class({
}
},
- vfunc_paint() {
- this.paint_background();
-
- this.get_children().forEach(c => {
- if (!c._skipPaint)
- c.paint();
- });
- },
-
- vfunc_pick(color) {
- this.parent(color);
-
- this.get_children().forEach(c => {
- if (!c._skipPaint)
- c.paint();
- });
- },
-
vfunc_get_paint_volume(paintVolume) {
// Setting the paint volume does not make sense when we don't have
// any allocation
@@ -412,9 +394,6 @@ var IconGrid = new Lang.Class({
if (!child.visible)
continue;
- if (child._skipPaint)
- continue;
-
let childVolume = child.get_transformed_paint_volume(this);
if (!childVolume)
return false
@@ -714,7 +693,7 @@ var IconGrid = new Lang.Class({
},
visibleItemsCount() {
- return this.get_children().filter(c => !c._skipPaint).length;
+ return this.get_children().filter(c => c.is_visible()).length;
},
setSpacing(spacing) {
@@ -859,7 +838,7 @@ var PaginatedIconGrid = new Lang.Class({
for (let i = 0; i < children.length; i++) {
let childBox = this._calculateChildBox(children[i], x, y, box);
children[i].allocate(childBox, flags);
- children[i]._skipPaint = false;
+ children[i].show();
columnIndex++;
if (columnIndex == nColumns) {
--
2.20.0

View File

@ -0,0 +1,156 @@
From 6743c18fdfa6dc48fb7d920640debe863018dd38 Mon Sep 17 00:00:00 2001
From: Cosimo Cecchi <cosimo@endlessm.com>
Date: Tue, 20 Nov 2018 18:25:51 -0800
Subject: [PATCH 22/25] StWidget: don't forget to invalidate the paint state if
not on stage
If the actor is not on the stage yet (i.e. does not have a theme
node), but has a paint state cached, we currently fail to invalidate
it, which will lead to the actor painting with old contents once it
gets onto the stage.
This commit fixes the issue by changing our invalidation strategy;
previously we were looking at the widget's own theme node to determine
if it should be invalidated or not.
Now we look at the theme nodes of our cached paint states. When the
widget is mapped on stage, those are the same as the widget's own
theme node, but when the widget is not on the stage, we'll still be
able to invalidate them.
As part of this, we move the invalidation API to StThemeNodePaintState,
which is a more natural place for our use case.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/314
---
src/st/st-theme-node-drawing.c | 40 ++++++++++++++++++++++++++++++++++
src/st/st-theme-node.h | 3 +++
src/st/st-widget.c | 39 +++++----------------------------
3 files changed, 49 insertions(+), 33 deletions(-)
diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c
index f59065aef..9f7e6b6ca 100644
--- a/src/st/st-theme-node-drawing.c
+++ b/src/st/st-theme-node-drawing.c
@@ -1414,6 +1414,32 @@ st_theme_node_load_background_image (StThemeNode *node)
return node->background_texture != COGL_INVALID_HANDLE;
}
+static gboolean
+st_theme_node_invalidate_resources_for_file (StThemeNode *node,
+ GFile *file)
+{
+ StBorderImage *border_image;
+ gboolean changed = FALSE;
+ GFile *theme_file;
+
+ theme_file = st_theme_node_get_background_image (node);
+ if ((theme_file != NULL) && g_file_equal (theme_file, file))
+ {
+ st_theme_node_invalidate_background_image (node);
+ changed = TRUE;
+ }
+
+ border_image = st_theme_node_get_border_image (node);
+ theme_file = border_image ? st_border_image_get_file (border_image) : NULL;
+ if ((theme_file != NULL) && g_file_equal (theme_file, file))
+ {
+ st_theme_node_invalidate_border_image (node);
+ changed = TRUE;
+ }
+
+ return changed;
+}
+
static void st_theme_node_prerender_shadow (StThemeNodePaintState *state);
static void
@@ -2753,3 +2779,17 @@ st_theme_node_paint_state_invalidate (StThemeNodePaintState *state)
state->alloc_width = 0;
state->alloc_height = 0;
}
+
+gboolean
+st_theme_node_paint_state_invalidate_for_file (StThemeNodePaintState *state,
+ GFile *file)
+{
+ if (state->node != NULL &&
+ st_theme_node_invalidate_resources_for_file (state->node, file))
+ {
+ st_theme_node_paint_state_invalidate (state);
+ return TRUE;
+ }
+
+ return FALSE;
+}
diff --git a/src/st/st-theme-node.h b/src/st/st-theme-node.h
index e71c1d522..1b43c9afe 100644
--- a/src/st/st-theme-node.h
+++ b/src/st/st-theme-node.h
@@ -291,6 +291,9 @@ void st_theme_node_paint_state_free (StThemeNodePaintState *state);
void st_theme_node_paint_state_copy (StThemeNodePaintState *state,
StThemeNodePaintState *other);
void st_theme_node_paint_state_invalidate (StThemeNodePaintState *state);
+gboolean st_theme_node_paint_state_invalidate_for_file (StThemeNodePaintState *state,
+ GFile *file);
+
void st_theme_node_paint_state_set_node (StThemeNodePaintState *state,
StThemeNode *node);
diff --git a/src/st/st-widget.c b/src/st/st-widget.c
index db984ac9b..7c39b3585 100644
--- a/src/st/st-widget.c
+++ b/src/st/st-widget.c
@@ -289,44 +289,17 @@ st_widget_texture_cache_changed (StTextureCache *cache,
{
StWidget *actor = ST_WIDGET (user_data);
StWidgetPrivate *priv = st_widget_get_instance_private (actor);
- StThemeNode *node = priv->theme_node;
- StBorderImage *border_image;
gboolean changed = FALSE;
- GFile *theme_file;
-
- if (node == NULL)
- return;
-
- theme_file = st_theme_node_get_background_image (node);
- if ((theme_file != NULL) && g_file_equal (theme_file, file))
- {
- st_theme_node_invalidate_background_image (node);
- changed = TRUE;
- }
+ int i;
- border_image = st_theme_node_get_border_image (node);
- theme_file = border_image ? st_border_image_get_file (border_image) : NULL;
- if ((theme_file != NULL) && g_file_equal (theme_file, file))
+ for (i = 0; i < G_N_ELEMENTS (priv->paint_states); i++)
{
- st_theme_node_invalidate_border_image (node);
- changed = TRUE;
+ StThemeNodePaintState *paint_state = &priv->paint_states[i];
+ changed |= st_theme_node_paint_state_invalidate_for_file (paint_state, file);
}
- if (changed)
- {
- /* If we prerender the background / border, we need to update
- * the paint state. We should probably implement a method to
- * the theme node to determine this, but for now, just wipe
- * the entire paint state.
- *
- * Use the existing state instead of a new one because it's
- * assumed the rest of the state will stay the same.
- */
- st_theme_node_paint_state_invalidate (current_paint_state (actor));
-
- if (clutter_actor_is_mapped (CLUTTER_ACTOR (actor)))
- clutter_actor_queue_redraw (CLUTTER_ACTOR (actor));
- }
+ if (changed && clutter_actor_is_mapped (CLUTTER_ACTOR (actor)))
+ clutter_actor_queue_redraw (CLUTTER_ACTOR (actor));
}
static void
--
2.20.0

View File

@ -0,0 +1,36 @@
From 925a25da17986bf60f61bb4e06ec22e2c59fa14f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Thu, 22 Nov 2018 20:41:44 +0100
Subject: [PATCH 23/25] st: Avoid integer overflow on unpremultiply
When computing the effective border color, we operate on colors with
premultiplied alpha to simplify the calculations, then unpremultiply
the result. However we miss a bounds check in the last check, so any
color component can overflow the allowed maximum of 0xff and shift the
result in unexpected ways.
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/305
---
src/st/st-theme-node-drawing.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/st/st-theme-node-drawing.c b/src/st/st-theme-node-drawing.c
index 9f7e6b6ca..a7fb24ab8 100644
--- a/src/st/st-theme-node-drawing.c
+++ b/src/st/st-theme-node-drawing.c
@@ -229,9 +229,9 @@ unpremultiply (ClutterColor *color)
{
if (color->alpha != 0)
{
- color->red = (color->red * 255 + 127) / color->alpha;
- color->green = (color->green * 255 + 127) / color->alpha;
- color->blue = (color->blue * 255 + 127) / color->alpha;
+ color->red = MIN((color->red * 255 + 127) / color->alpha, 255);
+ color->green = MIN((color->green * 255 + 127) / color->alpha, 255);
+ color->blue = MIN((color->blue * 255 + 127) / color->alpha, 255);
}
}
--
2.20.0

View File

@ -0,0 +1,47 @@
From e5ce3d541e48dd75c9218312cd74ecb760ab857a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Thu, 22 Nov 2018 18:18:34 +0100
Subject: [PATCH 24/25] messageTray: Re-enable unredirection when banner is
destroyed
The intention of commit 4dc20398 was to disable unredirection while
banners are shown, but the ::done-displaying signal currently used for
re-enabling unredirection is only emitted under some circumstances, so
it's possible that unredirection is left disabled indefinitely, whoops.
Fix this by tying disabling unredirection explicitly to the lifetime
of the banner actor.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/799
---
js/ui/messageTray.js | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index f8e2f0b9f..eebc93fdf 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -1298,10 +1298,8 @@ var MessageTray = new Lang.Class({
}
this._banner = this._notification.createBanner();
- this._bannerClickedId = this._banner.connect('done-displaying', () => {
- Meta.enable_unredirect_for_display(global.display);
- this._escapeTray();
- });
+ this._bannerClickedId = this._banner.connect('done-displaying',
+ this._escapeTray.bind(this));
this._bannerUnfocusedId = this._banner.connect('unfocused', () => {
this._updateState();
});
@@ -1451,6 +1449,7 @@ var MessageTray = new Lang.Class({
this._pointerInNotification = false;
this._notificationRemoved = false;
+ Meta.enable_unredirect_for_display(global.display);
this._banner.actor.destroy();
this._banner = null;
--
2.20.0

View File

@ -0,0 +1,29 @@
From 616852cf2b1f235a5671013fbf3f1564be79ea1b Mon Sep 17 00:00:00 2001
From: RyuzakiKK <aasonykk@gmail.com>
Date: Fri, 7 Dec 2018 10:51:39 +0100
Subject: [PATCH 25/25] thunderbolt: fix missing variable underscore for
`enrolling`
The variable `this.enrolling` is a typo because it has not been defined
before and is also never used.
`this._enrolling` is what it was meant to be.
---
js/ui/status/thunderbolt.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/ui/status/thunderbolt.js b/js/ui/status/thunderbolt.js
index 4584748ed..3d7a9614a 100644
--- a/js/ui/status/thunderbolt.js
+++ b/js/ui/status/thunderbolt.js
@@ -195,7 +195,7 @@ var AuthRobot = new Lang.Class({
if (this._enrolling)
return;
- this.enrolling = true;
+ this._enrolling = true;
GLib.idle_add(GLib.PRIORITY_DEFAULT,
this._enrollDevicesIdle.bind(this));
},
--
2.20.0

View File

@ -1,6 +1,6 @@
Name: gnome-shell
Version: 3.31.2
Release: 2%{?dist}
Release: 3%{?dist}
Summary: Window management and application launching for GNOME
Group: User Interface/Desktops
@ -18,9 +18,23 @@ Patch1: gnome-shell-favourite-apps-firefox.patch
Patch2: 0001-endSessionDialog-Immediately-add-buttons-to-the-dial.patch
Patch3: 0002-endSessionDialog-Support-rebooting-into-the-bootload.patch
# Fix empty input method indicator
# https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/293
Patch4: 0001-ibusManager-Don-t-pass-undefined-callback-to-ibus.patch
# Various bugfixes from current git master
Patch4: 0001-windowAttentionHandler-Handle-XUrgencyHint-as-well.patch
Patch5: 0002-windowAttentionHandler-Fix-syntax-errors.patch
Patch6: 0003-power-Label-the-PENDING_CHARGE-state-as-Not-Charging.patch
Patch7: 0007-ibusManager-Don-t-pass-undefined-callback-to-ibus.patch
Patch8: 0008-altSwitcher-Fix-error-when-all-alternatives-are-disa.patch
Patch9: 0009-dash-destroy-items-s-child-before-tooltip.patch
Patch10: 0010-theme-Replace-corner-ripple-png-assets-with-css.patch
Patch11: 0011-theme-Replace-page-indicator-assets-with-css.patch
Patch12: 0012-theme-Drop-custom-assets-for-window-close-buttons-in.patch
Patch13: 0016-theme-Replace-calendar-arrow-images-with-symbolic-ic.patch
Patch14: 0017-st-button-Ignore-pointer-emulated-touch-events.patch
Patch15: 0018-iconGrid-Eliminate-JavaScript-for-painting-picking.patch
Patch16: 0022-StWidget-don-t-forget-to-invalidate-the-paint-state-.patch
Patch17: 0023-st-Avoid-integer-overflow-on-unpremultiply.patch
Patch18: 0024-messageTray-Re-enable-unredirection-when-banner-is-d.patch
Patch19: 0025-thunderbolt-fix-missing-variable-underscore-for-enro.patch
%define libcroco_version 0.6.8
%define eds_version 3.17.2
@ -218,6 +232,9 @@ glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null
%{_mandir}/man1/%{name}.1.gz
%changelog
* Fri Dec 14 2018 Adam Williamson <awilliam@redhat.com> - 3.31.2-3
- Backport several bugfix commits from current git master
* Fri Nov 30 2018 Adam Williamson <awilliam@redhat.com> - 3.31.2-2
- Backport PR #293 to fix 'empty input method indicator' bug