Didier Roche has proposed merging 
~didrocks/ubuntu/+source/gnome-shell:resolve-gdm-symlink into 
~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/master.

Requested reviews:
  Ubuntu Desktop (ubuntu-desktop)

For more details, see:
https://code.launchpad.net/~didrocks/ubuntu/+source/gnome-shell/+git/gnome-shell/+merge/357609
-- 
Your team Ubuntu Desktop is requested to review the proposed merge of 
~didrocks/ubuntu/+source/gnome-shell:resolve-gdm-symlink into 
~ubuntu-desktop/ubuntu/+source/gnome-shell:ubuntu/master.
diff --git a/debian/changelog b/debian/changelog
index c86e666..ecf0df1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,9 @@ gnome-shell (3.30.1-2ubuntu2) UNRELEASED; urgency=medium
   * debian/patches/ubuntu/background_login.patch:
     - match Yaru theme in the ubuntu session instead of our previous GDM
       background (LP: #1789356)
+  * debian/patches/ubuntu/resolve_alternate_theme_path.patch:
+    - ensure we resolve finale theme file path to correctly load assets
+      under gdm (LP: #1798747)
 
  -- Didier Roche <didro...@ubuntu.com>  Wed, 17 Oct 2018 14:58:42 +0200
 
diff --git a/debian/patches/series b/debian/patches/series
index 7397e65..2d27e92 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -19,3 +19,4 @@ sessionMode-add-support-for-debugFlags-parameter.patch
 st-scroll-view-Handle-the-case-where-scrollbars-are-NULL.patch
 st-scroll-view-Remove-scrollbars-references-on-dispose.patch
 ubuntu/search-call-XUbuntuCancel-method-on-providers-when-no-dat.patch
+ubuntu/resolve_alternate_theme_path.patch
diff --git a/debian/patches/ubuntu/resolve_alternate_theme_path.patch b/debian/patches/ubuntu/resolve_alternate_theme_path.patch
new file mode 100644
index 0000000..74132bf
--- /dev/null
+++ b/debian/patches/ubuntu/resolve_alternate_theme_path.patch
@@ -0,0 +1,74 @@
+From: Didier Roche <didro...@ubuntu.com>
+Date: Mon, 22 Oct 2019 10:22:06 +0100
+Subject: Resolve real path name for theme file
+
+ We are using alternative theme paths. Some of them are symlinks like
+ gdm3.css. It points to a different directory and we need to ensure
+ assets are loaded from the real theme path then (assets path are
+ relative to it).
+ Expose thus realpath() to gjs and ensure we use the original file
+ itself when loading the stylesheet.
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1798747
+Forwarded: Not-needed (upstream doesn't support officially theming)
+Index: gnome-shell-3.30.1/src/shell-global.c
+===================================================================
+--- gnome-shell-3.30.1.orig/src/shell-global.c
++++ gnome-shell-3.30.1/src/shell-global.c
+@@ -1908,3 +1908,23 @@ shell_global_set_debug_flags (ShellGloba
+       g_object_notify (G_OBJECT (global), "debug-flags");
+     }
+ }
++
++/**
++ * shell_global_realpath:
++ * @global: A #ShellGlobal
++ * @path: Path to call realpath on
++ *
++ * Returns: the realpath call on the path argument. Returns the caller
++ * unchanged if already the canonicalized filename is given, or if
++ * realpath() returned any error.
++ */
++const char*
++shell_global_realpath (ShellGlobal *global,
++                       const char  *path)
++{
++  char *res = realpath (path, NULL);
++
++  if (!res)
++    return path;
++  return res;
++}
+\ No newline at end of file
+Index: gnome-shell-3.30.1/src/shell-global.h
+===================================================================
+--- gnome-shell-3.30.1.orig/src/shell-global.h
++++ gnome-shell-3.30.1/src/shell-global.h
+@@ -37,6 +37,9 @@ void    shell_global_get_pointer
+                                               int                 *y,
+                                               ClutterModifierType *mods);
+ 
++const char*   shell_global_realpath          (ShellGlobal *global,
++                                              const char  *path);
++
+ typedef struct {
+   guint glibc_uordblks;
+ 
+Index: gnome-shell-3.30.1/js/ui/main.js
+===================================================================
+--- gnome-shell-3.30.1.orig/js/ui/main.js
++++ gnome-shell-3.30.1/js/ui/main.js
+@@ -262,12 +262,12 @@ function _getStylesheet(name) {
+     let dataDirs = GLib.get_system_data_dirs();
+     for (let i = 0; i < dataDirs.length; i++) {
+         let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'theme', name]);
+-        let stylesheet = Gio.file_new_for_path(path);
++        let stylesheet = Gio.file_new_for_path(global.realpath(path));
+         if (stylesheet.query_exists(null))
+             return stylesheet;
+     }
+ 
+-    stylesheet = Gio.File.new_for_path(global.datadir + '/theme/' + name);
++    stylesheet = Gio.File.new_for_path(global.realpath(global.datadir + '/theme/' + name));
+     if (stylesheet.query_exists(null))
+         return stylesheet;
+ 
-- 
ubuntu-desktop mailing list
ubuntu-desktop@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-desktop

Reply via email to