Skip to content
Commits on Source (56)
3.36.4
======
* Hide switch-user button on lock screen if unsupported [Chingkai; #2687]
* Improve world clocks styling [PrOF-kk; #2825]
* Improve calendar-server performance [Florian, Milan; #1875]
* Fix regressions in redesigned modal dialogs [Florian, Jonas; #2491, !1336]
* Better support sandboxed apps with multiple .desktop files [Florian; #219]
* Fix on-screen keyboard size in portrait orientation [Florian; #2349]
* Support scrolling anywhere in slider menu items [Peter; #2795]
* Fixed crash [Marco; #2643]
* Plugged leaks [Sebastian, Florian; !1306, !1341]
* Misc. bug fixes and cleanups [Jonas, Daniel, Florian, Sebastian, MOZGIII,
Koki; !1119, !1289, !1331, !1192, !1340, !1327, !1279]
Contributors:
Marco Trevisan (Treviño), Chingkai, Milan Crha, Jonas Dreßler, Koki Fukuda,
Sebastian Keller, MOZGIII, Robert Mader, Florian Müllner, PrOF-kk,
Peter Simonyi, Daniel van Vugt
Translators:
Matej Urbančič [sl], sicklylife [ja], Fabio Tomat [fur],
Baurzhan Muftakhidinov [kk], Daniel Șerbănescu [ro]
3.36.3
======
* Add gnome-shell-extension-prefs wrapper for compatibility [Florian; !1220]
......
<node>
<interface name="org.gnome.Shell.CalendarServer">
<method name="GetEvents">
<arg type="x" direction="in" />
<arg type="x" direction="in" />
<arg type="b" direction="in" />
<arg type="a(sssbxxa{sv})" direction="out" />
<method name="SetTimeRange">
<arg type="x" name="since" direction="in"/>
<arg type="x" name="until" direction="in"/>
<arg type="b" name="force_reload" direction="in"/>
</method>
<signal name="EventsAddedOrUpdated">
<arg type="a(ssbxxa{sv})" name="events" direction="out"/>
</signal>
<signal name="EventsRemoved">
<arg type="as" name="ids" direction="out"/>
</signal>
<signal name="ClientDisappeared">
<arg type="s" name="source_uid" direction="out"/>
</signal>
<property name="HasCalendars" type="b" access="read" />
<signal name="Changed" />
</interface>
</node>
......@@ -204,7 +204,7 @@
.world-clocks-time {
font-weight: bold;
color: $fg_color;
font-feature-settings: "lnum";
font-feature-settings: "tnum";
@include fontsize($base_font_size);
text-align: right;
}
......
gnome-shell (3.36.4-1ubuntu1~20.04.1) focal; urgency=medium
* No change backport to focal
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Tue, 21 Jul 2020 11:37:31 +0200
gnome-shell (3.36.4-1ubuntu1) groovy; urgency=medium
* Merge with debian, including new upstream stable release, remaining changes:
- Replace gnome-backgrounds dep with ubuntu-wallpapers and Suggests
gnome-themes-standard-data, gnome-backgrounds
- Add some Recommends:
+ ubuntu-session (| gnome-session) to have the ubuntu session available
+ xserver-xorg-legacy
+ yaru-theme-gnome-shell for the default ubuntu theming
- Update debian/gbp.conf with Ubuntu settings
- gnome-shell-common.prerm: Remove deprecated ubuntu theme alternative
- ubuntu/desktop_detect.patch:
+ add caching for desktop detection to avoid querying the current
desktop env variable as iterate through the list each time. For the
time of the Shell process, we can expect this env variable to stay
stable.
- ubuntu/smarter_alt_tab.patch:
+ quick alt-tab (without showing up the switcher) switch only between
the last window of the last 2 applications to be focused instead of
raising all windows of those apps.
- ubuntu/lightdm-user-switching.patch:
+ Allow user switching when using LightDM.
- ubuntu/lock_on_suspend.patch
+ Respect Ubuntu's lock-on-suspend setting.
- ubuntu/background_login.patch
+ Change default background color as we modified the default GDM color
for our ubuntu session.
- ubuntu/gdm_alternatives.patch
+ Add support for GDM3 theme alternatives
- optional-hot-corner.patch
+ enable patch proposed by upstream developer already in package (but
not in series) to add a settings for optional hot corner activation.
- main-show-an-error-message-on-gnome-shell-crash.patch,
global-make-possible-to-set-debug-flags-dynamically.patch,
main-increase-the-granularity-of-backtraces-in-SHELL_DEBU.patch,
main-add-backtrace-crashes-all-and-backtrace-all.patch,
sessionMode-add-support-for-debugFlags-parameter.patch:
+ Improve debug JS tracing for crash reports
- st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch:
+ Fix crash on theme changes
- ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch:
+ stop searches when requested from UI
- magnifier-Show-cursor-when-magnifier-is-enabled-and-scale.patch:
+ Show monitor scaled cursor when magnifier is enabled
- Break gnome-shell-extension-desktop-icons (<< 19.01.3+git20190814)
* d/p/ubuntu/gdm_alternatives.patch,
d/p/ubuntu/secure_mode_extension.patch:
- Refreshed as per upstream changes
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Mon, 20 Jul 2020 18:18:57 +0200
gnome-shell (3.36.4-1) unstable; urgency=medium
* New upstream stable release (LP: #1888060)
- Hide switch-user button on lock screen if unsupported
- Improve world clocks styling
- Improve calendar-server performance (Closes: #964851, LP: #1885346)
- Fix regressions in redesigned modal dialogs (LP: #1871868)
- Better support sandboxed apps with multiple .desktop files
- Fix on-screen keyboard size in portrait orientation
- Support scrolling anywhere in slider menu items
- Fixed crash
- Plugged leaks
* debian/control:
- Bump dependency on ibedataserver1.2 and evolution-data-server to 3.33.1
* d/p/shell-mime-sniffer-Ignore-invalid-file-content-type.patch:
- Dropped (merged upstream)
* d/p/shell-window-tracker-Tighten-sandbox-ID-prefix-check.patch,
d/p/extensionDownloader-Fix-check-for-updates-with-several-ex.patch,
d/p/Update-Brazilian-Portuguese-translation.patch,
d/p/Update-Brazilian-Portuguese-translation-1.patch,
d/p/keyboard-Move-named-icons-into-subdirectories.patch,
d/p/keyboard-Fix-missing-key-icons-in-numeric-level.patch,
d/p/calendar-server-Remove-delay-before-event-emission.patch:
- Cherry-picked from upstream stable branch, as they're reiterations to fix
issues introduced in various 3.36.x releases.
-- Marco Trevisan (Treviño) <marco@ubuntu.com> Mon, 20 Jul 2020 15:17:47 +0200
gnome-shell (3.36.3-1ubuntu1~20.04.2) focal; urgency=medium
* No change backport to focal
......
......@@ -30,7 +30,7 @@ Build-Depends: appstream,
libasound2-dev,
libatk-bridge2.0-dev,
libecal2.0-dev (>= 3.33.1),
libedataserver1.2-dev (>= 3.17.2),
libedataserver1.2-dev (>= 3.33.1),
libgcr-3-dev (>= 3.7.5),
libgirepository1.0-dev (>= 1.29.15),
libgjs-dev (>= 1.63.2),
......@@ -71,7 +71,7 @@ Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell/tree/ubuntu/master
Package: gnome-shell
Architecture: linux-any
Depends: evolution-data-server (>= 3.17.2),
Depends: evolution-data-server (>= 3.33.1),
gir1.2-accountsservice-1.0,
gir1.2-atspi-2.0 (>= 2.36),
gir1.2-freedesktop,
......
......@@ -26,7 +26,7 @@ Build-Depends: appstream,
libasound2-dev,
libatk-bridge2.0-dev,
libecal2.0-dev (>= 3.33.1),
libedataserver1.2-dev (>= 3.17.2),
libedataserver1.2-dev (>= 3.33.1),
libgcr-3-dev (>= 3.7.5),
libgirepository1.0-dev (>= 1.29.15),
libgjs-dev (>= 1.63.2),
......@@ -67,7 +67,7 @@ Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-shell/tree/ubuntu/focal
Package: gnome-shell
Architecture: linux-any
Depends: evolution-data-server (>= 3.17.2),
Depends: evolution-data-server (>= 3.33.1),
gir1.2-accountsservice-1.0,
gir1.2-atspi-2.0 (>= 2.36),
gir1.2-freedesktop,
......
From: Rafael Fontenelle <rafaelff@gnome.org>
Date: Sat, 18 Jul 2020 13:43:51 +0000
Subject: Update Brazilian Portuguese translation
Applied-Upstream: 3.36.5
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/commits/gnome-3-36/
---
po/pt_BR.po | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 9644b82..b3ff0bb 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -24,8 +24,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
-"POT-Creation-Date: 2020-07-16 00:33+0000\n"
-"PO-Revision-Date: 2020-07-17 17:58-0300\n"
+"POT-Creation-Date: 2020-07-17 21:36+0000\n"
+"PO-Revision-Date: 2020-07-18 10:42-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
@@ -2412,7 +2412,7 @@ msgstr ""
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
-msgstr "Configurar extensões do Shell do GNOME"
+msgstr "Configure extensões do Shell do GNOME"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
@@ -2516,7 +2516,6 @@ msgstr ""
"Certifique-se de estar em uma sessão do GNOME e tente novamente."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
-#| msgid "Extension Updates Available"
msgid "Extension Updates Ready"
msgstr "Atualizações de extensões prontas"
This diff is collapsed.
From: Sebastian Keller <skeller@gnome.org>
Date: Mon, 20 Jul 2020 12:05:15 +0200
Subject: calendar-server: Remove delay before event emission
The timeout seems to have been carried over from the old code that
relied on gnome-shell calling 'GetEvents' after every 'Changed' signal
where it was used to throttle the signal. In the new code where
calendar-server is sending the changes themselves via signals this is no
longer necessary and actually causes a delay when switching between
months.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2992
Applied-Upstream: 3.36.5
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/commits/gnome-3-36/
---
src/calendar-server/gnome-shell-calendar-server.c | 59 +++--------------------
1 file changed, 8 insertions(+), 51 deletions(-)
diff --git a/src/calendar-server/gnome-shell-calendar-server.c b/src/calendar-server/gnome-shell-calendar-server.c
index 8ee8d3f..defc4a6 100644
--- a/src/calendar-server/gnome-shell-calendar-server.c
+++ b/src/calendar-server/gnome-shell-calendar-server.c
@@ -346,8 +346,6 @@ struct _App
GSList *notify_appointments; /* CalendarAppointment *, for EventsAdded */
GSList *notify_ids; /* gchar *, for EventsRemoved */
- guint events_added_timeout_id;
- guint events_removed_timeout_id;
GSList *live_views;
};
@@ -370,24 +368,19 @@ app_update_timezone (App *app)
}
}
-static gboolean
-on_app_schedule_events_added_cb (gpointer user_data)
+static void
+app_notify_events_added (App *app)
{
- App *app = user_data;
GVariantBuilder builder, extras_builder;
GSList *events, *link;
- if (g_source_is_destroyed (g_main_current_source ()))
- return FALSE;
-
events = g_slist_reverse (app->notify_appointments);
app->notify_appointments = NULL;
- app->events_added_timeout_id = 0;
print_debug ("Emitting EventsAddedOrUpdated with %d events", g_slist_length (events));
if (!events)
- return FALSE;
+ return;
/* The a{sv} is used as an escape hatch in case we want to provide more
* information in the future without breaking ABI
@@ -428,41 +421,21 @@ on_app_schedule_events_added_cb (gpointer user_data)
g_variant_builder_clear (&builder);
g_slist_free_full (events, calendar_appointment_free);
-
- return FALSE;
}
static void
-app_schedule_events_added (App *app)
-{
- print_debug ("Scheduling EventsAddedOrUpdated");
- if (app->events_added_timeout_id == 0)
- {
- app->events_added_timeout_id = g_timeout_add_seconds (2,
- on_app_schedule_events_added_cb,
- app);
- g_source_set_name_by_id (app->events_added_timeout_id, "[gnome-shell] on_app_schedule_events_added_cb");
- }
-}
-
-static gboolean
-on_app_schedule_events_removed_cb (gpointer user_data)
+app_notify_events_removed (App *app)
{
- App *app = user_data;
GVariantBuilder builder;
GSList *ids, *link;
- if (g_source_is_destroyed (g_main_current_source ()))
- return FALSE;
-
ids = app->notify_ids;
app->notify_ids = NULL;
- app->events_removed_timeout_id = 0;
print_debug ("Emitting EventsRemoved with %d ids", g_slist_length (ids));
if (!ids)
- return FALSE;
+ return;
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
for (link = ids; link; link = g_slist_next (link))
@@ -483,20 +456,7 @@ on_app_schedule_events_removed_cb (gpointer user_data)
g_slist_free_full (ids, g_free);
- return FALSE;
-}
-
-static void
-app_schedule_events_removed (App *app)
-{
- print_debug ("Scheduling EventsRemoved");
- if (app->events_removed_timeout_id == 0)
- {
- app->events_removed_timeout_id = g_timeout_add_seconds (2,
- on_app_schedule_events_removed_cb,
- app);
- g_source_set_name_by_id (app->events_removed_timeout_id, "[gnome-shell] on_app_schedule_events_removed_cb");
- }
+ return;
}
static void
@@ -546,7 +506,7 @@ app_process_added_modified_objects (App *app,
g_clear_object (&cal_client);
if (app->notify_appointments)
- app_schedule_events_added (app);
+ app_notify_events_added (app);
}
static void
@@ -610,7 +570,7 @@ on_objects_removed (ECalClientView *view,
g_clear_object (&client);
if (app->notify_ids)
- app_schedule_events_removed (app);
+ app_notify_events_removed (app);
}
static gboolean
@@ -866,9 +826,6 @@ app_free (App *app)
{
GSList *ll;
- g_clear_handle_id (&app->events_added_timeout_id, g_source_remove);
- g_clear_handle_id (&app->events_removed_timeout_id, g_source_remove);
-
for (ll = app->live_views; ll != NULL; ll = g_slist_next (ll))
{
ECalClientView *view = E_CAL_CLIENT_VIEW (ll->data);
From: Jeremias Ortega <jeremias@ortega.tech>
Date: Tue, 14 Jul 2020 04:38:25 +0000
Subject: extensionDownloader: Fix check for updates with several extensions
When having several extensions installed checking for updates fails.
This is because we are using GET and query params and since we are
sending all the metadata of the extension the server returns 502
when the URL is too long. This error code is ignored safely.
It is only needed to send the version of the extension to check if it
has updates.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2962
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1363
(cherry picked from commit f0d2509dc34b88eedba43e4537d0d4e837347d54)
Applied-Upstream: 3.36.5
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/commits/gnome-3-36/
---
js/ui/extensionDownloader.js | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js
index 90fc5a6..a7b40f9 100644
--- a/js/ui/extensionDownloader.js
+++ b/js/ui/extensionDownloader.js
@@ -139,7 +139,9 @@ function checkForUpdates() {
return;
if (extension.hasUpdate)
return;
- metadatas[uuid] = extension.metadata;
+ metadatas[uuid] = {
+ version: extension.metadata.version,
+ };
});
if (Object.keys(metadatas).length === 0)
From: Emre Uyguroglu <uyguremre@gmail.com>
Date: Fri, 17 Jul 2020 11:56:14 +0000
Subject: keyboard: Fix missing key icons in numeric level
Those were missed in commit 57669bca1b2.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2631
Applied-Upstream: 3.36.5
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/commits/gnome-3-36/
---
js/ui/keyboard.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
index 58e857f..4dccf3e 100644
--- a/js/ui/keyboard.js
+++ b/js/ui/keyboard.js
@@ -42,7 +42,7 @@ const defaultKeysPost = [
[[{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 'keyboard-enter-symbolic' }],
[{ label: '=/<', width: 3, level: 3, right: true }],
- [{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 'layout-key' }, { action: 'hide', extraClassName: 'hide-key' }]],
+ [{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 'layout-key', icon: 'keyboard-layout-filled-symbolic' }, { action: 'hide', extraClassName: 'hide-key', icon: 'go-down-symbolic' }]],
[[{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 'keyboard-enter-symbolic' }],
[{ label: '?123', width: 3, level: 2, right: true }],
From: Emre Uyguroglu <uyguremre@gmail.com>
Date: Fri, 17 Jul 2020 11:55:14 +0000
Subject: keyboard: Move named icons into subdirectories
While GtkIconTheme does look up icons in the toplevel icons resource
path, it will only use them as ultimate fallback. That is, if the
icon theme (or the hicolor fallback) include a "keyboard" icon, it
will be used over the "keyboard-enter-symbolic" icon in the resource.
Moving the icons to appropriate subdirectories gives them higher
priority than the fallback names, and thus fixes the issue.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2631
Applied-Upstream: 3.36.5
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/commits/gnome-3-36/
---
data/gnome-shell-theme.gresource.xml | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml
index ac9c3fd..6c1b9cd 100644
--- a/data/gnome-shell-theme.gresource.xml
+++ b/data/gnome-shell-theme.gresource.xml
@@ -9,21 +9,21 @@
<file>dash-placeholder.svg</file>
<file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
- <file alias="icons/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
+ <file alias="icons/scalable/status/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
<file>no-events.svg</file>
<file>no-notifications.svg</file>
<file>pad-osd.css</file>
- <file alias="icons/eye-open-negative-filled-symbolic.svg">eye-open-negative-filled-symbolic.svg</file>
- <file alias="icons/eye-not-looking-symbolic.svg">eye-not-looking-symbolic.svg</file>
- <file alias="icons/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file>
- <file alias="icons/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
- <file alias="icons/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
- <file alias="icons/pointer-secondary-click-symbolic.svg">pointer-secondary-click-symbolic.svg</file>
- <file alias="icons/keyboard-caps-lock-filled-symbolic.svg">keyboard-caps-lock-filled-symbolic.svg</file>
- <file alias="icons/keyboard-enter-symbolic.svg">keyboard-enter-symbolic.svg</file>
- <file alias="icons/keyboard-hide-symbolic.svg">keyboard-hide-symbolic.svg</file>
- <file alias="icons/keyboard-layout-filled-symbolic.svg">keyboard-layout-filled-symbolic.svg</file>
- <file alias="icons/keyboard-shift-filled-symbolic.svg">keyboard-shift-filled-symbolic.svg</file>
+ <file alias="icons/scalable/status/eye-open-negative-filled-symbolic.svg">eye-open-negative-filled-symbolic.svg</file>
+ <file alias="icons/scalable/status/eye-not-looking-symbolic.svg">eye-not-looking-symbolic.svg</file>
+ <file alias="icons/scalable/actions/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file>
+ <file alias="icons/scalable/actions/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
+ <file alias="icons/scalable/actions/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
+ <file alias="icons/scalable/actions/pointer-secondary-click-symbolic.svg">pointer-secondary-click-symbolic.svg</file>
+ <file alias="icons/scalable/status/keyboard-caps-lock-filled-symbolic.svg">keyboard-caps-lock-filled-symbolic.svg</file>
+ <file alias="icons/scalable/status/keyboard-enter-symbolic.svg">keyboard-enter-symbolic.svg</file>
+ <file alias="icons/scalable/status/keyboard-hide-symbolic.svg">keyboard-hide-symbolic.svg</file>
+ <file alias="icons/scalable/status/keyboard-layout-filled-symbolic.svg">keyboard-layout-filled-symbolic.svg</file>
+ <file alias="icons/scalable/status/keyboard-shift-filled-symbolic.svg">keyboard-shift-filled-symbolic.svg</file>
<file>process-working.svg</file>
<file>toggle-off.svg</file>
<file>toggle-off-dark.svg</file>
shell-window-tracker-Tighten-sandbox-ID-prefix-check.patch
extensionDownloader-Fix-check-for-updates-with-several-ex.patch
Update-Brazilian-Portuguese-translation.patch
Update-Brazilian-Portuguese-translation-1.patch
keyboard-Move-named-icons-into-subdirectories.patch
keyboard-Fix-missing-key-icons-in-numeric-level.patch
calendar-server-Remove-delay-before-event-emission.patch
tweener-Save-handlers-on-target-and-remove-them-on-destro.patch
shell-mime-sniffer-Ignore-invalid-file-content-type.patch
ubuntu/desktop_detect.patch
ubuntu/lightdm-user-switching.patch
ubuntu/lock_on_suspend.patch
......
From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
Date: Fri, 5 Jun 2020 14:12:58 +0000
Subject: shell-mime-sniffer: Ignore invalid file content type
The shell mime sniffer goes through all the files in a directory,
however in case a file content type is not recognized, the GIO function
g_file_info_get_content_type() may return NULL, causing a crash when
looking up into the content type tables, as they are supposed to contain
strings only and they use `g_str_hash` has func, which doesn't support
NULL values.
So, in case we get an invalid content type, let's just ignore it,
without adding it to the cache as we do in the nautilus code that was
inspiring the sniffer.
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2643
(cherry picked from commit 46547ae02797558699510595b27857b80c027b5b)
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/commit/46547ae0
Bug-Ubuntu: https://launchpad.net/bugs/1865300
Applied-Upstream: 3.37.3
---
src/hotplug-sniffer/shell-mime-sniffer.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/hotplug-sniffer/shell-mime-sniffer.c b/src/hotplug-sniffer/shell-mime-sniffer.c
index 6c56ecb..7a1c1fe 100644
--- a/src/hotplug-sniffer/shell-mime-sniffer.c
+++ b/src/hotplug-sniffer/shell-mime-sniffer.c
@@ -253,7 +253,9 @@ deep_count_one (DeepCountState *state,
else
{
content_type = g_file_info_get_content_type (info);
- add_content_type_to_cache (state, content_type);
+
+ if (content_type)
+ add_content_type_to_cache (state, content_type);
}
}
From: =?utf-8?q?Florian_M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 8 Jul 2020 11:59:13 +0200
Subject: shell/window-tracker: Tighten sandbox ID prefix check
Since commit b60836932 we only allow WM_CLASS matches for sandboxed
applications if the found app's ID is prefixed by the sandbox ID.
The existing check still has a hole in it though: "org.example.Foo"
and "org.example.FooDevel" are different applications, yet the former
is a prefix of the latter.
So tighten the check by including a trailing "." in the checked prefix;
this excludes cases like the above, while still working for the regular
case of a single .desktop file because our app IDs include the ".desktop"
suffix.
Spotted by wjt.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1357
Applied-Upstream: 3.36.5
Origin: https://gitlab.gnome.org/GNOME/gnome-shell/-/commits/gnome-3-36/
---
src/shell-window-tracker.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c
index c8b473d..bc00518 100644
--- a/src/shell-window-tracker.c
+++ b/src/shell-window-tracker.c
@@ -146,9 +146,13 @@ get_app_from_window_wmclass (MetaWindow *window)
const char *wm_class;
const char *wm_instance;
const char *sandbox_id;
+ g_autofree char *app_prefix = NULL;
appsys = shell_app_system_get_default ();
+
sandbox_id = meta_window_get_sandboxed_app_id (window);
+ if (sandbox_id)
+ app_prefix = g_strdup_printf ("%s.", sandbox_id);
/* Notes on the heuristics used here:
much of the complexity here comes from the desire to support
@@ -188,23 +192,23 @@ get_app_from_window_wmclass (MetaWindow *window)
/* first try a match from WM_CLASS (instance part) to StartupWMClass */
wm_instance = meta_window_get_wm_class_instance (window);
app = shell_app_system_lookup_startup_wmclass (appsys, wm_instance);
- if (app != NULL && check_app_id_prefix (app, sandbox_id))
+ if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
/* then try a match from WM_CLASS to StartupWMClass */
wm_class = meta_window_get_wm_class (window);
app = shell_app_system_lookup_startup_wmclass (appsys, wm_class);
- if (app != NULL && check_app_id_prefix (app, sandbox_id))
+ if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
/* then try a match from WM_CLASS (instance part) to .desktop */
app = shell_app_system_lookup_desktop_wmclass (appsys, wm_instance);
- if (app != NULL && check_app_id_prefix (app, sandbox_id))
+ if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
/* finally, try a match from WM_CLASS to .desktop */
app = shell_app_system_lookup_desktop_wmclass (appsys, wm_class);
- if (app != NULL && check_app_id_prefix (app, sandbox_id))
+ if (app != NULL && check_app_id_prefix (app, app_prefix))
return g_object_ref (app);
return NULL;
......@@ -16,7 +16,7 @@ Last-Update: 2017-09-08
2 files changed, 3 insertions(+)
diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml
index ac9c3fd..1be79b1 100644
index 6c1b9cd..12d4c25 100644
--- a/data/gnome-shell-theme.gresource.xml
+++ b/data/gnome-shell-theme.gresource.xml
@@ -7,6 +7,7 @@
......@@ -26,7 +26,7 @@ index ac9c3fd..1be79b1 100644
+ <file alias="gdm3.css">gnome-shell.css</file>
<file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
<file alias="icons/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
<file alias="icons/scalable/status/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
index e12fc2e..b3b69b3 100644
--- a/js/ui/sessionMode.js
......
......@@ -18,7 +18,7 @@ Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=789852
2 files changed, 21 insertions(+)
diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js
index 90fc5a6..0ae5ecb 100644
index a7b40f9..14df27c 100644
--- a/js/ui/extensionDownloader.js
+++ b/js/ui/extensionDownloader.js
@@ -4,6 +4,7 @@
......@@ -51,9 +51,9 @@ index 90fc5a6..0ae5ecb 100644
+ // don't updates out of repository mode extension
+ if (Desktop.is("ubuntu") && Main.extensionManager.isModeExtension(uuid))
+ return;
metadatas[uuid] = extension.metadata;
});
metadatas[uuid] = {
version: extension.metadata.version,
};
diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js
index 7362a00..4875752 100644
--- a/js/ui/extensionSystem.js
......
......@@ -853,6 +853,9 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
if (index === -1)
return;
this._arrows[index].destroy();
this._arrows.splice(index, 1);
this.icons.splice(index, 1);
this.removeItem(index);
}
......
......@@ -220,7 +220,12 @@ class DBusEventSource extends EventSourceBase {
}
}
this._dbusProxy.connectSignal('Changed', this._onChanged.bind(this));
this._dbusProxy.connectSignal('EventsAddedOrUpdated',
this._onEventsAddedOrUpdated.bind(this));
this._dbusProxy.connectSignal('EventsRemoved',
this._onEventsRemoved.bind(this));
this._dbusProxy.connectSignal('ClientDisappeared',
this._onClientDisappeared.bind(this));
this._dbusProxy.connect('notify::g-name-owner', () => {
if (this._dbusProxy.g_name_owner)
......@@ -257,7 +262,7 @@ class DBusEventSource extends EventSourceBase {
}
_resetCache() {
this._events = [];
this._events = new Map();
this._lastRequestBegin = null;
this._lastRequestEnd = null;
}
......@@ -273,28 +278,47 @@ class DBusEventSource extends EventSourceBase {
this.emit('changed');
}
_onChanged() {
this._loadEvents(false);
}
_onEventsAddedOrUpdated(dbusProxy, nameOwner, argArray) {
const [appointments = []] = argArray;
let changed = false;
_onEventsReceived(results, _error) {
let newEvents = [];
let appointments = results[0] || [];
for (let n = 0; n < appointments.length; n++) {
let a = appointments[n];
let date = new Date(a[4] * 1000);
let end = new Date(a[5] * 1000);
let id = a[0];
let summary = a[1];
let allDay = a[3];
const [id, summary, allDay, startTime, endTime] = appointments[n];
const date = new Date(startTime * 1000);
const end = new Date(endTime * 1000);
let event = new CalendarEvent(id, date, end, summary, allDay);
newEvents.push(event);
this._events.set(event.id, event);
changed = true;
}
newEvents.sort((ev1, ev2) => ev1.date.getTime() - ev2.date.getTime());
this._events = newEvents;
this._isLoading = false;
this.emit('changed');
if (changed)
this.emit('changed');
}
_onEventsRemoved(dbusProxy, nameOwner, argArray) {
const [ids = []] = argArray;
let changed = false;
for (const id of ids)
changed |= this._events.delete(id);
if (changed)
this.emit('changed');
}
_onClientDisappeared(dbusProxy, nameOwner, argArray) {
let [sourceUid = ''] = argArray;
sourceUid += '\n';
let changed = false;
for (const id of this._events.keys()) {
if (id.startsWith(sourceUid))
changed |= this._events.delete(id);
}
if (changed)
this.emit('changed');
}
_loadEvents(forceReload) {
......@@ -303,33 +327,38 @@ class DBusEventSource extends EventSourceBase {
return;
if (this._curRequestBegin && this._curRequestEnd) {
this._dbusProxy.GetEventsRemote(this._curRequestBegin.getTime() / 1000,
this._curRequestEnd.getTime() / 1000,
forceReload,
this._onEventsReceived.bind(this),
Gio.DBusCallFlags.NONE);
if (forceReload) {
this._events.clear();
this.emit('changed');
}
this._dbusProxy.SetTimeRangeRemote(
this._curRequestBegin.getTime() / 1000,
this._curRequestEnd.getTime() / 1000,
forceReload,
Gio.DBusCallFlags.NONE);
}
}
requestRange(begin, end) {
if (!(_datesEqual(begin, this._lastRequestBegin) && _datesEqual(end, this._lastRequestEnd))) {
this._isLoading = true;
this._lastRequestBegin = begin;
this._lastRequestEnd = end;
this._curRequestBegin = begin;
this._curRequestEnd = end;
this._loadEvents(false);
this._loadEvents(true);
}
}
getEvents(begin, end) {
let result = [];
for (let n = 0; n < this._events.length; n++) {
let event = this._events[n];
*_getFilteredEvents(begin, end) {
for (const event of this._events.values()) {
if (_dateIntervalsOverlap(event.date, event.end, begin, end))
result.push(event);
yield event;
}
}
getEvents(begin, end) {
let result = [...this._getFilteredEvents(begin, end)];
result.sort((event1, event2) => {
// sort events by end time on ending day
let d1 = event1.date < begin && event1.end <= end ? event1.end : event1.date;
......@@ -343,12 +372,8 @@ class DBusEventSource extends EventSourceBase {
let dayBegin = _getBeginningOfDay(day);
let dayEnd = _getEndOfDay(day);
let events = this.getEvents(dayBegin, dayEnd);
if (events.length == 0)
return false;
return true;
const { done } = this._getFilteredEvents(dayBegin, dayEnd).next();
return !done;
}
});
......@@ -700,12 +725,11 @@ var Calendar = GObject.registerClass({
var EventMessage = GObject.registerClass(
class EventMessage extends MessageList.Message {
_init(event, date) {
super._init('', event.summary);
super._init('', '');
this._event = event;
this._date = date;
this.setTitle(this._formatEventTime());
this.update(event);
this._icon = new St.Icon({ icon_name: 'x-office-calendar-symbolic' });
this.setIcon(this._icon);
......@@ -717,6 +741,13 @@ class EventMessage extends MessageList.Message {
super.vfunc_style_changed();
}
update(event) {
this._event = event;
this.setTitle(this._formatEventTime());
this.setBody(event.summary);
}
_formatEventTime() {
let periodBegin = _getBeginningOfDay(this._date);
let periodEnd = _getEndOfDay(this._date);
......@@ -874,7 +905,7 @@ class EventsSection extends MessageList.MessageListSection {
}
_reloadEvents() {
if (this._eventSource.isLoading)
if (this._eventSource.isLoading || this._reloading)
return;
this._reloading = true;
......@@ -900,6 +931,7 @@ class EventsSection extends MessageList.MessageListSection {
this._messageById.set(event.id, message);
this.addMessage(message, false);
} else {
message.update(event);
this.moveMessage(message, i, false);
}
}
......
......@@ -594,6 +594,7 @@ class DateMenuButton extends PanelMenu.Button {
this._clockDisplay = new St.Label({ style_class: 'clock' });
this._clockDisplay.clutter_text.y_align = Clutter.ActorAlign.CENTER;
this._clockDisplay.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._indicator = new MessagesIndicator();
......