diff --git a/.gitignore b/.gitignore index ad86e13..4b5a282 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -SOURCES/gnome-shell-3.26.2.tar.xz +SOURCES/3.4.1.tar.gz +SOURCES/3.4.5.tar.gz +SOURCES/gnome-shell-3.28.3.tar.xz diff --git a/.gnome-shell.metadata b/.gnome-shell.metadata index aacd39e..2b4e1ca 100644 --- a/.gnome-shell.metadata +++ b/.gnome-shell.metadata @@ -1 +1,3 @@ -2becb087720fcb6f067dce006b964bd2faab5870 SOURCES/gnome-shell-3.26.2.tar.xz +97020dcf5d0a8f2cad8c6e8672c4a837c8fd9a05 SOURCES/3.4.1.tar.gz +dcb2d3fcf3b1f577c8cf4cff0d77d21819189ea1 SOURCES/3.4.5.tar.gz +767bea7e4715fb951c74a02c26d4b4d8ddecaaaf SOURCES/gnome-shell-3.28.3.tar.xz diff --git a/SOURCES/0001-Revert-build-Drop-autotools-support.patch b/SOURCES/0001-Revert-build-Drop-autotools-support.patch deleted file mode 100644 index b9e5dff..0000000 --- a/SOURCES/0001-Revert-build-Drop-autotools-support.patch +++ /dev/null @@ -1,1632 +0,0 @@ -From a24679ddf8b96590fc6bf5ed7fadc8724a40445c Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan -Date: Fri, 15 Sep 2017 10:39:50 +0200 -Subject: [PATCH 1/2] Revert "build: Drop autotools support" - -This reverts commit cf010cfd8fc1440373c1ed44540a54a5341cf3eb. ---- - Makefile.am | 33 ++++ - autogen.sh | 35 ++++ - browser-plugin/Makefile.am | 23 +++ - configure.ac | 280 +++++++++++++++++++++++++++++++ - data/Makefile.am | 136 +++++++++++++++ - docs/Makefile.am | 1 + - docs/reference/Makefile.am | 1 + - docs/reference/shell/Makefile.am | 139 ++++++++++++++++ - docs/reference/st/Makefile.am | 104 ++++++++++++ - gtk-doc.make | 304 ++++++++++++++++++++++++++++++++++ - js/Makefile.am | 39 +++++ - man/Makefile.am | 19 +++ - src/Makefile.am | 349 +++++++++++++++++++++++++++++++++++++++ - tests/Makefile.am | 45 +++++ - 14 files changed, 1508 insertions(+) - create mode 100644 Makefile.am - create mode 100755 autogen.sh - create mode 100644 browser-plugin/Makefile.am - create mode 100644 configure.ac - create mode 100644 data/Makefile.am - create mode 100644 docs/Makefile.am - create mode 100644 docs/reference/Makefile.am - create mode 100644 docs/reference/shell/Makefile.am - create mode 100644 docs/reference/st/Makefile.am - create mode 100644 gtk-doc.make - create mode 100644 js/Makefile.am - create mode 100644 man/Makefile.am - create mode 100644 src/Makefile.am - create mode 100644 tests/Makefile.am - -diff --git a/Makefile.am b/Makefile.am -new file mode 100644 -index 000000000..eba7d2b28 ---- /dev/null -+++ b/Makefile.am -@@ -0,0 +1,33 @@ -+# Point to our macro directory and pick up user flags from the environment -+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} -+ -+SUBDIRS = data js subprojects/gvc src tests po docs -+ -+if BUILD_BROWSER_PLUGIN -+SUBDIRS += browser-plugin -+endif -+ -+if ENABLE_MAN -+SUBDIRS += man -+endif -+ -+EXTRA_DIST = \ -+ .project \ -+ .settings \ -+ autogen.sh \ -+ tools/check-for-missing.py -+ -+# These are files checked into Git that we don't want to distribute -+DIST_EXCLUDE = \ -+ .gitignore \ -+ .gitmodules \ -+ gnome-shell.doap \ -+ HACKING \ -+ MAINTAINERS \ -+ tools/build/* -+ -+distcheck-hook: -+ @echo "Checking disted files against files in git" -+ @$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE) -+ -+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man -diff --git a/autogen.sh b/autogen.sh -new file mode 100755 -index 000000000..9794dc3b9 ---- /dev/null -+++ b/autogen.sh -@@ -0,0 +1,35 @@ -+#!/bin/sh -+# Run this to generate all the initial makefiles, etc. -+ -+srcdir=`dirname $0` -+test -z "$srcdir" && srcdir=. -+ -+olddir="$(pwd)" -+ -+cd "${srcdir}" -+ -+(test -f configure.ac \ -+ && test -d src) || { -+ echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" -+ echo " top-level gnome-shell directory" -+ exit 1 -+} -+ -+# Fetch submodules if needed -+if test ! -f subprojects/gvc/Makefile.am || test ! -f data/theme/gnome-shell-sass/COPYING; -+then -+ echo "+ Setting up submodules" -+ git submodule init -+fi -+git submodule update -+ -+aclocal --install || exit 1 -+gtkdocize --copy || exit 1 -+intltoolize --force --copy --automake || exit 1 -+autoreconf --verbose --force --install || exit 1 -+ -+cd "${olddir}" -+ -+if [ "$NOCONFIGURE" = "" ]; then -+ "${srcdir}/configure" "$@" || exit 1 -+fi -diff --git a/browser-plugin/Makefile.am b/browser-plugin/Makefile.am -new file mode 100644 -index 000000000..6ed1d6340 ---- /dev/null -+++ b/browser-plugin/Makefile.am -@@ -0,0 +1,23 @@ -+ -+mozillalibdir = $(BROWSER_PLUGIN_DIR) -+ -+mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la -+ -+# Browsers can unload and reload the module while browsing, which is not supported by GObject. -+# We pass -Wl,-z,nodelete to the linker to ensure the module is never unloaded. -+# https://bugzilla.gnome.org/show_bug.cgi?id=737932 -+libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,-z,nodelete -+ -+libgnome_shell_browser_plugin_la_LIBADD = \ -+ $(BROWSER_PLUGIN_LIBS) -+ -+libgnome_shell_browser_plugin_la_SOURCES = \ -+ browser-plugin.c \ -+ npapi/npapi.h \ -+ npapi/npfunctions.h \ -+ npapi/npruntime.h \ -+ npapi/nptypes.h -+ -+libgnome_shell_browser_plugin_la_CFLAGS = \ -+ $(BROWSER_PLUGIN_CFLAGS) \ -+ -DG_LOG_DOMAIN=\"GnomeShellBrowserPlugin\" -diff --git a/configure.ac b/configure.ac -new file mode 100644 -index 000000000..6372c4dff ---- /dev/null -+++ b/configure.ac -@@ -0,0 +1,280 @@ -+AC_PREREQ(2.63) -+AC_INIT([gnome-shell],[3.25.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) -+AX_IS_RELEASE([git-directory]) -+ -+AC_CONFIG_HEADERS([config.h]) -+AC_CONFIG_SRCDIR([src/shell-global.c]) -+AC_CONFIG_MACRO_DIR([m4]) -+AC_CONFIG_AUX_DIR([config]) -+ -+AC_SUBST([PACKAGE_NAME], ["$PACKAGE_NAME"]) -+AC_SUBST([PACKAGE_VERSION], ["$PACKAGE_VERSION"]) -+ -+AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar foreign]) -+AM_MAINTAINER_MODE([enable]) -+ -+m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) -+ -+# Checks for programs. -+AC_PROG_CC -+ -+# Initialize libtool -+LT_PREREQ([2.2.6]) -+LT_INIT([disable-static]) -+ -+# i18n -+GETTEXT_PACKAGE=gnome-shell -+AC_SUBST(GETTEXT_PACKAGE) -+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", -+ [The prefix for our gettext translation domains.]) -+ -+AM_GNU_GETTEXT_VERSION([0.19.6]) -+AM_GNU_GETTEXT([external]) -+ -+PKG_PROG_PKG_CONFIG([0.22]) -+ -+AC_PATH_PROG([XSLTPROC], [xsltproc]) -+ -+GLIB_GSETTINGS -+ -+# Get a value to substitute into gnome-shell.in -+AM_PATH_PYTHON([3]) -+AC_SUBST(PYTHON) -+ -+# We depend on a specific version of the libmutter API. The mutter variants of -+# the Cogl and Clutter libraries also use this API version. -+LIBMUTTER_API_VERSION=1 -+ -+LIBMUTTER=libmutter-$LIBMUTTER_API_VERSION -+LIBMUTTER_COGL=mutter-cogl-$LIBMUTTER_API_VERSION -+LIBMUTTER_COGL_PANGO=mutter-cogl-pango-$LIBMUTTER_API_VERSION -+LIBMUTTER_CLUTTER=mutter-clutter-$LIBMUTTER_API_VERSION -+ -+# We need at least this, since gst_plugin_register_static() was added -+# in 0.10.16, but nothing older than 0.10.21 has been tested. -+GSTREAMER_MIN_VERSION=0.11.92 -+ -+recorder_modules= -+build_recorder=false -+AC_MSG_CHECKING([for GStreamer (needed for recording functionality)]) -+if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then -+ AC_MSG_RESULT(yes) -+ build_recorder=true -+ recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0" -+else -+ AC_MSG_RESULT(no) -+fi -+ -+AM_CONDITIONAL(BUILD_RECORDER, $build_recorder) -+ -+AC_ARG_ENABLE([systemd], -+ AS_HELP_STRING([--enable-systemd], [Use systemd]), -+ [enable_systemd=$enableval], -+ [enable_systemd=auto]) -+AS_IF([test x$enable_systemd != xno], [ -+ AC_MSG_CHECKING([for libsystemd]) -+ PKG_CHECK_EXISTS([libsystemd], -+ [have_systemd=yes -+ AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])], -+ [have_systemd=no]) -+ AC_MSG_RESULT($have_systemd) -+]) -+ -+AC_MSG_RESULT($enable_systemd) -+ -+GOBJECT_INTROSPECTION_MIN_VERSION=1.49.1 -+GJS_MIN_VERSION=1.47.0 -+MUTTER_MIN_VERSION=3.25.3 -+GTK_MIN_VERSION=3.15.0 -+GIO_MIN_VERSION=2.53.0 -+LIBECAL_MIN_VERSION=3.5.3 -+LIBEDATASERVER_MIN_VERSION=3.17.2 -+POLKIT_MIN_VERSION=0.100 -+STARTUP_NOTIFICATION_MIN_VERSION=0.11 -+GCR_MIN_VERSION=3.7.5 -+GNOME_DESKTOP_REQUIRED_VERSION=3.7.90 -+NETWORKMANAGER_MIN_VERSION=0.9.8 -+PULSE_MIN_VERS=2.0 -+ -+# Collect more than 20 libraries for a prize! -+SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION -+ libxml-2.0 -+ gtk+-3.0 >= $GTK_MIN_VERSION -+ atk-bridge-2.0 -+ gjs-1.0 >= $GJS_MIN_VERSION -+ $recorder_modules -+ gdk-x11-3.0 libsoup-2.4 -+ $LIBMUTTER_CLUTTER >= $MUTTER_MIN_VERSION -+ $LIBMUTTER_COGL_PANGO -+ libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION -+ gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION -+ libcanberra libcanberra-gtk3 -+ polkit-agent-1 >= $POLKIT_MIN_VERSION -+ gcr-base-3 >= $GCR_MIN_VERSION" -+if test x$have_systemd = xyes; then -+ SHARED_PCS="${SHARED_PCS} libsystemd" -+fi -+ -+PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS) -+PKG_CHECK_MODULES(MUTTER, $LIBMUTTER >= $MUTTER_MIN_VERSION) -+ -+PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-1.0 >= $GJS_MIN_VERSION) -+PKG_CHECK_MODULES(ST, $LIBMUTTER_CLUTTER gtk+-3.0 libcroco-0.6 >= 0.6.8 x11) -+PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0) -+PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0) -+PKG_CHECK_MODULES(TRAY, $LIBMUTTER_CLUTTER gtk+-3.0) -+PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0) -+PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.21.3) -+ -+AC_SUBST(LIBMUTTER_API_VERSION) -+ -+AC_ARG_ENABLE(browser-plugin, -+ [AS_HELP_STRING([--enable-browser-plugin], -+ [Enable browser plugin [default=yes]])],, -+ enable_browser_plugin=yes) -+AS_IF([test x$enable_browser_plugin = xyes], [ -+ PKG_CHECK_MODULES(BROWSER_PLUGIN, gio-2.0 >= $GIO_MIN_VERSION json-glib-1.0 >= 0.13.2) -+]) -+AM_CONDITIONAL(BUILD_BROWSER_PLUGIN, test x$enable_browser_plugin = xyes) -+ -+PKG_CHECK_MODULES(BLUETOOTH, gnome-bluetooth-1.0 >= 3.9.0, -+ [AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet]) -+ AC_SUBST([HAVE_BLUETOOTH],[1])], -+ [AC_DEFINE([HAVE_BLUETOOTH],[0]) -+ AC_SUBST([HAVE_BLUETOOTH],[0])]) -+ -+PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0) -+AC_SUBST(CALENDAR_SERVER_CFLAGS) -+AC_SUBST(CALENDAR_SERVER_LIBS) -+ -+GNOME_KEYBINDINGS_KEYSDIR=`$PKG_CONFIG --variable keysdir gnome-keybindings` -+AC_SUBST([GNOME_KEYBINDINGS_KEYSDIR]) -+ -+GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION]) -+ -+MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir $LIBMUTTER` -+AC_SUBST(MUTTER_GIR_DIR) -+ -+MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir $LIBMUTTER` -+AC_SUBST(MUTTER_TYPELIB_DIR) -+ -+GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0` -+AC_SUBST(GLIB_COMPILE_RESOURCES) -+ -+AC_CHECK_FUNCS(fdwalk) -+AC_CHECK_FUNCS(mallinfo) -+AC_CHECK_HEADERS([sys/resource.h]) -+ -+# _NL_TIME_FIRST_WEEKDAY is an enum and not a define -+AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY]) -+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], -+ [[nl_langinfo(_NL_TIME_FIRST_WEEKDAY);]])], -+ [langinfo_ok=yes], [langinfo_ok=no]) -+AC_MSG_RESULT($langinfo_ok) -+if test "$langinfo_ok" = "yes"; then -+ AC_DEFINE([HAVE__NL_TIME_FIRST_WEEKDAY], [1], -+ [Define if _NL_TIME_FIRST_WEEKDAY is available]) -+fi -+ -+AC_ARG_ENABLE(networkmanager, -+ AS_HELP_STRING([--disable-networkmanager], -+ [disable NetworkManager support @<:@default=auto@:>@]),, -+ [enable_networkmanager=auto]) -+ -+if test "x$enable_networkmanager" != "xno"; then -+ PKG_CHECK_MODULES(NETWORKMANAGER, -+ [libnm-glib -+ libnm-util >= $NETWORKMANAGER_MIN_VERSION -+ libnm-gtk >= $NETWORKMANAGER_MIN_VERSION -+ libsecret-1 >= 0.18], -+ [have_networkmanager=yes], -+ [have_networkmanager=no]) -+ -+ GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS" -+ GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS" -+else -+ have_networkmanager="no (disabled)" -+fi -+ -+if test "x$have_networkmanager" = "xyes"; then -+ AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager]) -+ AC_SUBST([HAVE_NETWORKMANAGER], [1]) -+else -+ if test "x$enable_networkmanager" = "xyes"; then -+ AC_MSG_ERROR([Couldn't find NetworkManager.]) -+ fi -+ AC_SUBST([HAVE_NETWORKMANAGER], [0]) -+fi -+ -+AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes") -+ -+# Sets GLIB_GENMARSHAL and GLIB_MKENUMS -+AM_PATH_GLIB_2_0() -+ -+GTK_DOC_CHECK([1.15], [--flavour no-tmpl]) -+ -+AC_ARG_ENABLE(man, -+ [AS_HELP_STRING([--enable-man], -+ [generate man pages [default=yes]])],, -+ enable_man=yes) -+if test "$enable_man" != no; then -+ AC_PATH_PROG([XSLTPROC], [xsltproc]) -+ if test -z "$XSLTPROC"; then -+ AC_MSG_ERROR([xsltproc is required for --enable-man]) -+ fi -+fi -+AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no) -+ -+AX_COMPILER_FLAGS() -+case "$WARN_CFLAGS" in -+ *-Werror*) -+ WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations" -+ ;; -+esac -+ -+AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS" -+AC_SUBST(AM_CFLAGS) -+ -+if test -z "${BROWSER_PLUGIN_DIR}"; then -+ BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins" -+fi -+AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to]) -+ -+AC_ARG_VAR([GDBUS_CODEGEN],[the gdbus-codegen programme]) -+AC_PATH_PROG([GDBUS_CODEGEN],[gdbus-codegen],[]) -+if test -z "$GDBUS_CODEGEN"; then -+ AC_MSG_ERROR([gdbus-codegen not found]) -+fi -+ -+AC_PATH_PROG([SASSC],[sassc],[]) -+ -+AC_CONFIG_FILES([ -+ Makefile -+ data/Makefile -+ docs/Makefile -+ docs/reference/Makefile -+ docs/reference/shell/Makefile -+ docs/reference/shell/version.xml -+ docs/reference/st/Makefile -+ docs/reference/st/version.xml -+ js/Makefile -+ src/Makefile -+ subprojects/gvc/Makefile -+ browser-plugin/Makefile -+ tests/Makefile -+ po/Makefile.in -+ man/Makefile -+]) -+AC_OUTPUT -+ -+echo " -+Build configuration: -+ -+ Prefix: ${prefix} -+ Source code location: ${srcdir} -+ Compiler: ${CC} -+ Compiler Warnings: $ax_enable_compile_warnings -+ -+ Support for NetworkManager: $have_networkmanager -+ Support for GStreamer recording: $build_recorder -+" -diff --git a/data/Makefile.am b/data/Makefile.am -new file mode 100644 -index 000000000..8c01e49d1 ---- /dev/null -+++ b/data/Makefile.am -@@ -0,0 +1,136 @@ -+CLEANFILES = -+NULL = -+ -+portaldir = $(datadir)/xdg-desktop-portal/portals -+portal_DATA = gnome-shell.portal -+ -+desktopdir=$(datadir)/applications -+desktop_DATA = org.gnome.Shell.desktop gnome-shell-extension-prefs.desktop -+ -+if HAVE_NETWORKMANAGER -+desktop_DATA += org.gnome.Shell.PortalHelper.desktop -+ -+servicedir = $(datadir)/dbus-1/services -+service_DATA = org.gnome.Shell.PortalHelper.service -+ -+CLEANFILES += \ -+ org.gnome.Shell.PortalHelper.service \ -+ org.gnome.Shell.PortalHelper.desktop \ -+ org.gnome.Shell.PortalHelper.desktop.in \ -+ $(NULL) -+ -+endif -+ -+%.service: %.service.in -+ $(AM_V_GEN) sed -e "s|@libexecdir[@]|$(libexecdir)|" \ -+ $< > $@ || rm $@ -+ -+# We substitute in bindir so it works as an autostart -+# file when built in a non-system prefix -+%.desktop.in:%.desktop.in.in -+ $(AM_V_GEN) sed -e "s|@bindir[@]|$(bindir)|" \ -+ -e "s|@VERSION[@]|$(VERSION)|" \ -+ $< > $@ || rm $@ -+ -+%.desktop:%.desktop.in -+ $(AM_V_GEN) $(MSGFMT) --desktop --template $(builddir)/$< \ -+ -d $(top_srcdir)/po -o $@ -+ -+introspectiondir = $(datadir)/dbus-1/interfaces -+introspection_DATA = \ -+ org.gnome.Shell.PadOsd.xml \ -+ org.gnome.Shell.Screencast.xml \ -+ org.gnome.Shell.Screenshot.xml \ -+ org.gnome.ShellSearchProvider.xml \ -+ org.gnome.ShellSearchProvider2.xml \ -+ $(NULL) -+ -+theme_sources = \ -+ theme/gnome-shell-high-contrast.scss \ -+ theme/gnome-shell.scss \ -+ theme/gnome-shell-sass/_colors.scss \ -+ theme/gnome-shell-sass/_common.scss \ -+ theme/gnome-shell-sass/_drawing.scss \ -+ theme/gnome-shell-sass/_high-contrast-colors.scss \ -+ $(NULL) -+ -+dist_theme_files = \ -+ $(theme_sources) \ -+ theme/HACKING \ -+ theme/README \ -+ theme/gnome-shell-sass/COPYING \ -+ theme/gnome-shell-sass/HACKING \ -+ theme/gnome-shell-sass/NEWS \ -+ theme/gnome-shell-sass/README \ -+ theme/gnome-shell-sass/gnome-shell-sass.doap \ -+ theme/pad-osd.css \ -+ theme/parse-sass.sh \ -+ $(NULL) -+ -+%.css: %.scss $(theme_sources) -+ @if test -n "$(SASSC)"; then \ -+ if $(AM_V_P); then PS4= set -x; else echo " GEN $@"; fi; \ -+ $(SASSC) -a $< $@; \ -+ fi -+ -+resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/theme --generate-dependencies $(srcdir)/gnome-shell-theme.gresource.xml) -+gnome-shell-theme.gresource: gnome-shell-theme.gresource.xml $(resource_files) -+ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/theme $< -+resourcedir = $(pkgdatadir) -+resource_DATA = gnome-shell-theme.gresource -+ -+backgrounddir = $(pkgdatadir) -+background_DATA = perf-background.xml -+ -+perf-background.xml: perf-background.xml.in -+ $(AM_V_GEN) sed -e "s|@datadir[@]|$(datadir)|" \ -+ $< > $@ || rm $@ -+ -+keysdir = @GNOME_KEYBINDINGS_KEYSDIR@ -+keys_DATA = 50-gnome-shell-system.xml -+ -+gsettings_SCHEMAS = org.gnome.shell.gschema.xml -+ -+%.gschema.xml: %.gschema.xml.in Makefile -+ $(AM_V_GEN) sed -e 's|@GETTEXT_PACKAGE[@]|$(GETTEXT_PACKAGE)|g' \ -+ $< > $@ || rm $@ -+ -+@GSETTINGS_RULES@ -+ -+# We need to compile schemas at make time -+# to run from source tree -+gschemas.compiled: $(gsettings_SCHEMAS:.xml=.valid) -+ $(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --targetdir=. . -+ -+all-local: gschemas.compiled -+ -+convertdir = $(datadir)/GConf/gsettings -+convert_DATA = gnome-shell-overrides.convert -+ -+EXTRA_DIST = \ -+ org.gnome.Shell.desktop.in.in \ -+ gnome-shell-extension-prefs.desktop.in.in \ -+ $(portal_DATA) \ -+ $(introspection_DATA) \ -+ $(menu_DATA) \ -+ $(convert_DATA) \ -+ $(keys_DATA) \ -+ $(dist_theme_files) \ -+ perf-background.xml.in \ -+ org.gnome.Shell.PortalHelper.desktop.in.in \ -+ org.gnome.Shell.PortalHelper.service.in \ -+ org.gnome.shell.gschema.xml.in \ -+ gnome-shell-theme.gresource.xml \ -+ $(resource_files) \ -+ $(NULL) -+ -+CLEANFILES += \ -+ org.gnome.Shell.desktop.in \ -+ gnome-shell-extension-prefs.in \ -+ $(desktop_DATA) \ -+ $(gsettings_SCHEMAS) \ -+ perf-background.xml \ -+ gschemas.compiled \ -+ org.gnome.shell.gschema.valid \ -+ gnome-shell-theme.gresource \ -+ $(NULL) -diff --git a/docs/Makefile.am b/docs/Makefile.am -new file mode 100644 -index 000000000..f3ddc22dd ---- /dev/null -+++ b/docs/Makefile.am -@@ -0,0 +1 @@ -+SUBDIRS = reference -diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am -new file mode 100644 -index 000000000..2721dc0e0 ---- /dev/null -+++ b/docs/reference/Makefile.am -@@ -0,0 +1 @@ -+SUBDIRS = shell st -diff --git a/docs/reference/shell/Makefile.am b/docs/reference/shell/Makefile.am -new file mode 100644 -index 000000000..715e3f26c ---- /dev/null -+++ b/docs/reference/shell/Makefile.am -@@ -0,0 +1,139 @@ -+## Process this file with automake to produce Makefile.in -+ -+# We require automake 1.6 at least. -+AUTOMAKE_OPTIONS = 1.6 -+ -+# This is a blank Makefile.am for using gtk-doc. -+# Copy this to your project's API docs directory and modify the variables to -+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples -+# of using the various options. -+ -+# The name of the module, e.g. 'glib'. -+DOC_MODULE=shell -+ -+# Uncomment for versioned docs and specify the version of the module, e.g. '2'. -+#DOC_MODULE_VERSION=2 -+ -+ -+# The top-level SGML file. You can change this if you want to. -+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml -+ -+# Directories containing the source code -+# gtk-doc will search all .c and .h files beneath these paths -+# for inline comments documenting functions and macros. -+DOC_SOURCE_DIR=$(top_srcdir)/src -+ -+# Extra options to pass to gtkdoc-scangobj. Not normally needed. -+SCANGOBJ_OPTIONS= -+ -+# Extra options to supply to gtkdoc-scan. -+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" -+SCAN_OPTIONS=--rebuild-types -+ -+# Extra options to supply to gtkdoc-mkdb. -+# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml -+MKDB_OPTIONS=--xml-mode --output-format=xml -+ -+# Extra options to supply to gtkdoc-mktmpl -+# e.g. MKTMPL_OPTIONS=--only-section-tmpl -+MKTMPL_OPTIONS= -+ -+# Extra options to supply to gtkdoc-mkhtml -+MKHTML_OPTIONS= -+ -+# Extra options to supply to gtkdoc-fixref. Not normally needed. -+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html -+FIXXREF_OPTIONS= -+ -+# Used for dependencies. The docs will be rebuilt if any of these change. -+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h -+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c -+HFILE_GLOB=$(top_srcdir)/src/*.h -+CFILE_GLOB=$(top_srcdir)/src/*.c -+ -+# Extra header to include when scanning, which are not under DOC_SOURCE_DIR -+# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h -+EXTRA_HFILES= -+ -+# Header files or dirs to ignore when scanning. Use base file/dir names -+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code -+IGNORE_HFILES= \ -+ calendar-server \ -+ gvc \ -+ hotplug-sniffer \ -+ st \ -+ tray \ -+ gactionmuxer.h \ -+ gactionobservable.h \ -+ gactionobserver.h \ -+ shell-network-agent.h \ -+ shell-recorder-src.h -+ -+if !BUILD_RECORDER -+IGNORE_HFILES += shell-recorder.h -+endif -+ -+# Images to copy into HTML directory. -+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png -+HTML_IMAGES= -+ -+doc-gen-org.gnome.Shell.SearchProvider.xml: $(top_srcdir)/data/org.gnome.ShellSearchProvider.xml -+ gdbus-codegen \ -+ --interface-prefix org.gnome.ShellSearchProvider. \ -+ --generate-docbook doc-gen \ -+ $(top_srcdir)/data/org.gnome.ShellSearchProvider.xml -+ -+doc-gen-org.gnome.Shell.SearchProvider2.xml: $(top_srcdir)/data/org.gnome.ShellSearchProvider2.xml -+ gdbus-codegen \ -+ --interface-prefix org.gnome.ShellSearchProvider2. \ -+ --generate-docbook doc-gen \ -+ $(top_srcdir)/data/org.gnome.ShellSearchProvider2.xml -+ -+doc-gen-org.gnome.Shell.Screenshot.xml: $(top_srcdir)/data/org.gnome.Shell.Screenshot.xml -+ gdbus-codegen \ -+ --interface-prefix org.gnome.Shell.Screenshot. \ -+ --generate-docbook doc-gen \ -+ $(top_srcdir)/data/org.gnome.Shell.Screenshot.xml -+ -+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). -+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml -+content_files= \ -+ doc-gen-org.gnome.Shell.SearchProvider.xml \ -+ doc-gen-org.gnome.Shell.SearchProvider2.xml \ -+ doc-gen-org.gnome.Shell.Screenshot.xml -+ -+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded -+# These files must be listed here *and* in content_files -+# e.g. expand_content_files=running.sgml -+expand_content_files= -+ -+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. -+# Only needed if you are using gtkdoc-scangobj to dynamically query widget -+# signals and properties. -+# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) -+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) -+GTKDOC_CFLAGS=$(GNOME_SHELL_CFLAGS) -+GTKDOC_LIBS=$(GNOME_SHELL_LIBS) $(top_builddir)/src/libgnome-shell-menu.la $(top_builddir)/src/libgnome-shell.la -rpath $(MUTTER_TYPELIB_DIR) -+ -+# This includes the standard gtk-doc make rules, copied by gtkdocize. -+include $(top_srcdir)/gtk-doc.make -+ -+# Other files to distribute -+# e.g. EXTRA_DIST += version.xml.in -+EXTRA_DIST += version.xml.in -+ -+# Files not to distribute -+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types -+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt -+DISTCLEANFILES = $(DOC_MODULE).types -+ -+# Comment this out if you want 'make check' to test you doc status -+# and run some sanity checks -+if ENABLE_GTK_DOC -+TESTS_ENVIRONMENT = cd $(srcdir) && \ -+ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ -+ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) -+#TESTS = $(GTKDOC_CHECK) -+endif -+ -+-include $(top_srcdir)/git.mk -diff --git a/docs/reference/st/Makefile.am b/docs/reference/st/Makefile.am -new file mode 100644 -index 000000000..df2d357d5 ---- /dev/null -+++ b/docs/reference/st/Makefile.am -@@ -0,0 +1,104 @@ -+## Process this file with automake to produce Makefile.in -+ -+# We require automake 1.6 at least. -+AUTOMAKE_OPTIONS = 1.6 -+ -+# This is a blank Makefile.am for using gtk-doc. -+# Copy this to your project's API docs directory and modify the variables to -+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples -+# of using the various options. -+ -+# The name of the module, e.g. 'glib'. -+DOC_MODULE=st -+ -+# Uncomment for versioned docs and specify the version of the module, e.g. '2'. -+#DOC_MODULE_VERSION=2 -+ -+ -+# The top-level SGML file. You can change this if you want to. -+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml -+ -+# Directories containing the source code -+# gtk-doc will search all .c and .h files beneath these paths -+# for inline comments documenting functions and macros. -+DOC_SOURCE_DIR=$(top_srcdir)/src/st -+ -+# Extra options to pass to gtkdoc-scangobj. Not normally needed. -+SCANGOBJ_OPTIONS= -+ -+# Extra options to supply to gtkdoc-scan. -+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" -+SCAN_OPTIONS=--rebuild-types --rebuild-sections -+ -+# Extra options to supply to gtkdoc-mkdb. -+# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml -+MKDB_OPTIONS=--xml-mode --output-format=xml -+ -+# Extra options to supply to gtkdoc-mktmpl -+# e.g. MKTMPL_OPTIONS=--only-section-tmpl -+MKTMPL_OPTIONS= -+ -+# Extra options to supply to gtkdoc-mkhtml -+MKHTML_OPTIONS= -+ -+# Extra options to supply to gtkdoc-fixref. Not normally needed. -+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html -+FIXXREF_OPTIONS= -+ -+# Used for dependencies. The docs will be rebuilt if any of these change. -+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h -+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c -+HFILE_GLOB=$(top_srcdir)/src/st/*.h -+CFILE_GLOB=$(top_srcdir)/src/st/*.c -+ -+# Extra header to include when scanning, which are not under DOC_SOURCE_DIR -+# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h -+EXTRA_HFILES= -+ -+# Header files or dirs to ignore when scanning. Use base file/dir names -+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code -+IGNORE_HFILES=st-private.h st-theme-node-private.h -+ -+# Images to copy into HTML directory. -+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png -+HTML_IMAGES= -+ -+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). -+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml -+content_files= -+ -+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded -+# These files must be listed here *and* in content_files -+# e.g. expand_content_files=running.sgml -+expand_content_files= -+ -+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. -+# Only needed if you are using gtkdoc-scangobj to dynamically query widget -+# signals and properties. -+# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) -+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) -+GTKDOC_CFLAGS= -+GTKDOC_LIBS=$(top_builddir)/src/libst-1.0.la -rpath $(MUTTER_TYPELIB_DIR) -+ -+# This includes the standard gtk-doc make rules, copied by gtkdocize. -+include $(top_srcdir)/gtk-doc.make -+ -+# Other files to distribute -+# e.g. EXTRA_DIST += version.xml.in -+EXTRA_DIST += version.xml.in -+ -+# Files not to distribute -+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types -+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt -+DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt -+ -+# Comment this out if you want 'make check' to test you doc status -+# and run some sanity checks -+if ENABLE_GTK_DOC -+TESTS_ENVIRONMENT = cd $(srcdir) && \ -+ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ -+ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) -+#TESTS = $(GTKDOC_CHECK) -+endif -+ -+-include $(top_srcdir)/git.mk -diff --git a/gtk-doc.make b/gtk-doc.make -new file mode 100644 -index 000000000..e4a12a5b2 ---- /dev/null -+++ b/gtk-doc.make -@@ -0,0 +1,304 @@ -+# -*- mode: makefile -*- -+ -+#################################### -+# Everything below here is generic # -+#################################### -+ -+if GTK_DOC_USE_LIBTOOL -+GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -+GTKDOC_RUN = $(LIBTOOL) --mode=execute -+else -+GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -+GTKDOC_RUN = -+endif -+ -+# We set GPATH here; this gives us semantics for GNU make -+# which are more like other make's VPATH, when it comes to -+# whether a source that is a target of one rule is then -+# searched for in VPATH/GPATH. -+# -+GPATH = $(srcdir) -+ -+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) -+ -+SETUP_FILES = \ -+ $(content_files) \ -+ $(expand_content_files) \ -+ $(DOC_MAIN_SGML_FILE) \ -+ $(DOC_MODULE)-sections.txt \ -+ $(DOC_MODULE)-overrides.txt -+ -+EXTRA_DIST = \ -+ $(HTML_IMAGES) \ -+ $(SETUP_FILES) -+ -+DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \ -+ html-build.stamp pdf-build.stamp \ -+ sgml.stamp html.stamp pdf.stamp -+ -+SCANOBJ_FILES = \ -+ $(DOC_MODULE).args \ -+ $(DOC_MODULE).hierarchy \ -+ $(DOC_MODULE).interfaces \ -+ $(DOC_MODULE).prerequisites \ -+ $(DOC_MODULE).signals -+ -+REPORT_FILES = \ -+ $(DOC_MODULE)-undocumented.txt \ -+ $(DOC_MODULE)-undeclared.txt \ -+ $(DOC_MODULE)-unused.txt -+ -+gtkdoc-check.test: Makefile -+ $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ -+ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ -+ chmod +x $@ -+ -+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test -+ -+if GTK_DOC_BUILD_HTML -+HTML_BUILD_STAMP=html-build.stamp -+else -+HTML_BUILD_STAMP= -+endif -+if GTK_DOC_BUILD_PDF -+PDF_BUILD_STAMP=pdf-build.stamp -+else -+PDF_BUILD_STAMP= -+endif -+ -+all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) -+.PHONY: all-gtk-doc -+ -+if ENABLE_GTK_DOC -+all-local: all-gtk-doc -+endif -+ -+docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) -+ -+$(REPORT_FILES): sgml-build.stamp -+ -+#### setup #### -+ -+GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) -+GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) -+GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; -+ -+setup-build.stamp: -+ -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ -+ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ -+ if test "x$$files" != "x" ; then \ -+ for file in $$files ; do \ -+ destdir=`dirname $(abs_builddir)/$$file`; \ -+ test -d "$$destdir" || mkdir -p "$$destdir"; \ -+ test -f $(abs_srcdir)/$$file && \ -+ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ -+ done; \ -+ fi; \ -+ fi -+ $(AM_V_at)touch setup-build.stamp -+ -+ -+#### scan #### -+ -+GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) -+GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) -+GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; -+ -+GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) -+GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) -+GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; -+ -+scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) -+ $(GTK_DOC_V_SCAN)_source_dir='' ; \ -+ for i in $(DOC_SOURCE_DIR) ; do \ -+ _source_dir="$${_source_dir} --source-dir=$$i" ; \ -+ done ; \ -+ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) -+ $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ -+ scanobj_options=""; \ -+ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ -+ if test "$$?" = "0"; then \ -+ if test "x$(V)" = "x1"; then \ -+ scanobj_options="--verbose"; \ -+ fi; \ -+ fi; \ -+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ -+ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ -+ else \ -+ for i in $(SCANOBJ_FILES) ; do \ -+ test -f $$i || touch $$i ; \ -+ done \ -+ fi -+ $(AM_V_at)touch scan-build.stamp -+ -+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp -+ @true -+ -+#### xml #### -+ -+GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) -+GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) -+GTK_DOC_V_XML_0=@echo " DOC Building XML"; -+ -+sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent -+ $(GTK_DOC_V_XML)_source_dir='' ; \ -+ for i in $(DOC_SOURCE_DIR) ; do \ -+ _source_dir="$${_source_dir} --source-dir=$$i" ; \ -+ done ; \ -+ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) -+ $(AM_V_at)touch sgml-build.stamp -+ -+sgml.stamp: sgml-build.stamp -+ @true -+ -+xml/gtkdocentities.ent: Makefile -+ $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ -+ echo ""; \ -+ echo ""; \ -+ echo ""; \ -+ echo ""; \ -+ echo ""; \ -+ echo ""; \ -+ echo ""; \ -+ ) > $@ -+ -+#### html #### -+ -+GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) -+GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) -+GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; -+ -+GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) -+GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) -+GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; -+ -+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) -+ $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ -+ mkhtml_options=""; \ -+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ -+ if test "$$?" = "0"; then \ -+ if test "x$(V)" = "x1"; then \ -+ mkhtml_options="$$mkhtml_options --verbose"; \ -+ fi; \ -+ fi; \ -+ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ -+ if test "$$?" = "0"; then \ -+ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ -+ fi; \ -+ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) -+ -@test "x$(HTML_IMAGES)" = "x" || \ -+ for file in $(HTML_IMAGES) ; do \ -+ if test -f $(abs_srcdir)/$$file ; then \ -+ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ -+ fi; \ -+ if test -f $(abs_builddir)/$$file ; then \ -+ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ -+ fi; \ -+ done; -+ $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) -+ $(AM_V_at)touch html-build.stamp -+ -+#### pdf #### -+ -+GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) -+GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) -+GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; -+ -+pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) -+ $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ -+ mkpdf_options=""; \ -+ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ -+ if test "$$?" = "0"; then \ -+ if test "x$(V)" = "x1"; then \ -+ mkpdf_options="$$mkpdf_options --verbose"; \ -+ fi; \ -+ fi; \ -+ if test "x$(HTML_IMAGES)" != "x"; then \ -+ for img in $(HTML_IMAGES); do \ -+ part=`dirname $$img`; \ -+ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ -+ if test $$? != 0; then \ -+ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ -+ fi; \ -+ done; \ -+ fi; \ -+ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) -+ $(AM_V_at)touch pdf-build.stamp -+ -+############## -+ -+clean-local: -+ @rm -f *~ *.bak -+ @rm -rf .libs -+ @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ -+ rm -f $(DOC_MODULE).types; \ -+ fi -+ @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ -+ rm -f $(DOC_MODULE)-sections.txt; \ -+ fi -+ -+distclean-local: -+ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ -+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt -+ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ -+ rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ -+ fi -+ -+maintainer-clean-local: -+ @rm -rf xml html -+ -+install-data-local: -+ @installfiles=`echo $(builddir)/html/*`; \ -+ if test "$$installfiles" = '$(builddir)/html/*'; \ -+ then echo 1>&2 'Nothing to install' ; \ -+ else \ -+ if test -n "$(DOC_MODULE_VERSION)"; then \ -+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ -+ else \ -+ installdir="$(DESTDIR)$(TARGET_DIR)"; \ -+ fi; \ -+ $(mkinstalldirs) $${installdir} ; \ -+ for i in $$installfiles; do \ -+ echo ' $(INSTALL_DATA) '$$i ; \ -+ $(INSTALL_DATA) $$i $${installdir}; \ -+ done; \ -+ if test -n "$(DOC_MODULE_VERSION)"; then \ -+ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ -+ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ -+ fi; \ -+ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ -+ fi -+ -+uninstall-local: -+ @if test -n "$(DOC_MODULE_VERSION)"; then \ -+ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ -+ else \ -+ installdir="$(DESTDIR)$(TARGET_DIR)"; \ -+ fi; \ -+ rm -rf $${installdir} -+ -+# -+# Require gtk-doc when making dist -+# -+if HAVE_GTK_DOC -+dist-check-gtkdoc: docs -+else -+dist-check-gtkdoc: -+ @echo "*** gtk-doc is needed to run 'make dist'. ***" -+ @echo "*** gtk-doc was not found when 'configure' ran. ***" -+ @echo "*** please install gtk-doc and rerun 'configure'. ***" -+ @false -+endif -+ -+dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local -+ @mkdir $(distdir)/html -+ @cp ./html/* $(distdir)/html -+ @-cp ./$(DOC_MODULE).pdf $(distdir)/ -+ @-cp ./$(DOC_MODULE).types $(distdir)/ -+ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ -+ @cd $(distdir) && rm -f $(DISTCLEANFILES) -+ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html -+ -+.PHONY : dist-hook-local docs -diff --git a/js/Makefile.am b/js/Makefile.am -new file mode 100644 -index 000000000..6369c7502 ---- /dev/null -+++ b/js/Makefile.am -@@ -0,0 +1,39 @@ -+NULL = -+BUILT_SOURCES = -+ -+misc/config.js: misc/config.js.in Makefile -+ [ -d $(@D) ] || $(mkdir_p) $(@D) ; \ -+ sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \ -+ -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \ -+ -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \ -+ -e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \ -+ -e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \ -+ -e "s|[@]datadir@|$(datadir)|g" \ -+ -e "s|[@]libexecdir@|$(libexecdir)|g" \ -+ -e "s|[@]sysconfdir@|$(sysconfdir)|g" \ -+ -e "s|[@]LIBMUTTER_API_VERSION@|$(LIBMUTTER_API_VERSION)|g" \ -+ $< > $@ -+ -+js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate-dependencies $(srcdir)/js-resources.gresource.xml) -+js-resources.h: js-resources.gresource.xml $(js_resource_files) misc/config.js -+ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $< -+js-resources.c: js-resources.gresource.xml $(js_resource_files) misc/config.js -+ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $< -+ -+js_built_sources = js-resources.c js-resources.h -+ -+BUILT_SOURCES += $(js_built_sources) -+ -+all-local: $(js_built_sources) -+ -+js_resource_dist_files = $(filter-out misc/config.js, $(js_resource_files)) -+ -+EXTRA_DIST = \ -+ $(js_resource_dist_files) \ -+ js-resources.gresource.xml \ -+ misc/config.js.in \ -+ $(NULL) -+ -+CLEANFILES = \ -+ $(js_built_sources) \ -+ $(NULL) -diff --git a/man/Makefile.am b/man/Makefile.am -new file mode 100644 -index 000000000..166b66cf8 ---- /dev/null -+++ b/man/Makefile.am -@@ -0,0 +1,19 @@ -+XSLTPROC_FLAGS = \ -+ --nonet \ -+ --stringparam man.output.quietly 1 \ -+ --stringparam funcsynopsis.style ansi \ -+ --stringparam man.th.extra1.suppress 1 \ -+ --stringparam man.authors.section.enabled 0 \ -+ --stringparam man.copyright.section.enabled 0 -+ -+.xml.1: -+ $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< -+ -+man_MANS = \ -+ gnome-shell.1 -+ -+xml_files = $(man_MANS:.1=.xml) -+ -+EXTRA_DIST = $(xml_files) -+ -+DISTCLEANFILES = $(man_MANS) -diff --git a/src/Makefile.am b/src/Makefile.am -new file mode 100644 -index 000000000..24628ccc9 ---- /dev/null -+++ b/src/Makefile.am -@@ -0,0 +1,349 @@ -+NULL = -+BUILT_SOURCES = -+CLEANFILES = -+EXTRA_DIST = -+bin_SCRIPTS = -+libexec_PROGRAMS = -+noinst_LTLIBRARIES = -+noinst_PROGRAMS = -+service_in_files = -+ -+-include $(INTROSPECTION_MAKEFILE) -+INTROSPECTION_GIRS = -+INTROSPECTION_SCANNER_ARGS = --warn-all --warn-error --add-include-path=$(srcdir) --add-include-path=$(MUTTER_GIR_DIR) -L$(MUTTER_TYPELIB_DIR) -+INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) --includedir=$(MUTTER_TYPELIB_DIR) -+ -+typelibdir = $(pkglibdir) -+typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) -+ -+servicedir = $(datadir)/dbus-1/services -+service_DATA = $(service_in_files:.service.in=.service) -+ -+%.service: %.service.in Makefile -+ $(AM_V_GEN) \ -+ [ -d $(@D) ] || $(mkdir_p) $(@D) ; \ -+ sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ -+CLEANFILES += $(service_DATA) -+ -+CLEANFILES += $(gir_DATA) $(typelib_DATA) -+ -+bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-perf-tool -+EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-perf-tool.in -+bin_PROGRAMS = gnome-shell gnome-shell-extension-prefs -+ -+generated_script_substitutions = \ -+ -e "s|@bindir[@]|$(bindir)|g" \ -+ -e "s|@datadir[@]|$(datadir)|g" \ -+ -e "s|@libexecdir[@]|$(libexecdir)|g" \ -+ -e "s|@libdir[@]|$(libdir)|g" \ -+ -e "s|@pkglibdir[@]|$(pkglibdir)|g" \ -+ -e "s|@pkgdatadir[@]|$(pkgdatadir)|g" \ -+ -e "s|@PYTHON[@]|$(PYTHON)|g" \ -+ -e "s|@VERSION[@]|$(VERSION)|g" \ -+ -e "s|@sysconfdir[@]|$(sysconfdir)|g" -+ -+gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile -+ $(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@ -+ -+gnome-shell-perf-tool: gnome-shell-perf-tool.in Makefile -+ $(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@ -+ -+org-gtk-application.c org-gtk-application.h: org.gtk.Application.xml Makefile -+ $(AM_V_GEN) $(GDBUS_CODEGEN) \ -+ --generate-c-code org-gtk-application \ -+ --c-namespace Shell \ -+ $< -+ -+EXTRA_DIST += org.gtk.Application.xml -+CLEANFILES += gnome-shell $(bin_SCRIPTS) -+ -+include Makefile-st.am -+include Makefile-tray.am -+include Makefile-calendar-server.am -+include Makefile-hotplug-sniffer.am -+ -+gnome_shell_cflags = \ -+ $(GNOME_SHELL_CFLAGS) \ -+ -I$(srcdir)/tray \ -+ -DCLUTTER_ENABLE_EXPERIMENTAL_API \ -+ -DCOGL_ENABLE_EXPERIMENTAL_API \ -+ -DVERSION=\"$(VERSION)\" \ -+ -DLOCALEDIR=\"$(datadir)/locale\" \ -+ -DDATADIR=\"$(datadir)\" \ -+ -DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \ -+ -DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \ -+ -DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" -+ -+privlibdir = $(pkglibdir) -+privlib_LTLIBRARIES = libgnome-shell-menu.la libgnome-shell.la -+ -+shell_built_sources = \ -+ org-gtk-application.h \ -+ org-gtk-application.c \ -+ shell-enum-types.h \ -+ shell-enum-types.c -+ -+BUILT_SOURCES += $(shell_built_sources) -+ -+shell_public_headers_h = \ -+ shell-app.h \ -+ shell-app-system.h \ -+ shell-app-usage.h \ -+ shell-embedded-window.h \ -+ shell-generic-container.h \ -+ shell-glsl-quad.h \ -+ shell-gtk-embed.h \ -+ shell-global.h \ -+ shell-invert-lightness-effect.h \ -+ shell-action-modes.h \ -+ shell-mount-operation.h \ -+ shell-perf-log.h \ -+ shell-screenshot.h \ -+ shell-stack.h \ -+ shell-tray-icon.h \ -+ shell-tray-manager.h \ -+ shell-util.h \ -+ shell-window-tracker.h \ -+ shell-wm.h \ -+ $(NULL) -+ -+if HAVE_NETWORKMANAGER -+shell_public_headers_h += shell-network-agent.h -+endif -+ -+libgnome_shell_menu_la_SOURCES = \ -+ gtkactionmuxer.h \ -+ gtkactionmuxer.c \ -+ gtkactionobservable.h \ -+ gtkactionobservable.c \ -+ gtkactionobserver.h \ -+ gtkactionobserver.c \ -+ gtkmenutrackeritem.c \ -+ gtkmenutrackeritem.h \ -+ gtkmenutracker.c \ -+ gtkmenutracker.h \ -+ $(NULL) -+ -+libgnome_shell_sources = \ -+ $(shell_public_headers_h) \ -+ $(shell_private_sources) \ -+ gnome-shell-plugin.c \ -+ shell-app.c \ -+ shell-app-private.h \ -+ shell-app-system.c \ -+ shell-app-system-private.h \ -+ shell-app-usage.c \ -+ shell-embedded-window-private.h \ -+ shell-embedded-window.c \ -+ shell-generic-container.c \ -+ shell-global.c \ -+ shell-global-private.h \ -+ shell-glsl-quad.c \ -+ shell-gtk-embed.c \ -+ shell-invert-lightness-effect.c \ -+ shell-keyring-prompt.h \ -+ shell-keyring-prompt.c \ -+ shell-menu-tracker.c \ -+ shell-menu-tracker.h \ -+ shell-mount-operation.c \ -+ shell-perf-log.c \ -+ shell-polkit-authentication-agent.h \ -+ shell-polkit-authentication-agent.c \ -+ shell-screenshot.c \ -+ shell-secure-text-buffer.c \ -+ shell-secure-text-buffer.h \ -+ shell-stack.c \ -+ shell-tray-icon.c \ -+ shell-tray-manager.c \ -+ shell-util.c \ -+ shell-window-tracker.c \ -+ shell-window-tracker-private.h \ -+ shell-wm.c \ -+ shell-wm-private.h \ -+ $(NULL) -+ -+if HAVE_NETWORKMANAGER -+libgnome_shell_sources += shell-network-agent.c -+endif -+ -+ -+libgnome_shell_built_sources = \ -+ $(shell_built_sources) \ -+ $(top_builddir)/js/js-resources.c \ -+ $(top_builddir)/js/js-resources.h \ -+ $(NULL) -+ -+libgnome_shell_la_SOURCES = $(libgnome_shell_sources) -+nodist_libgnome_shell_la_SOURCES = $(libgnome_shell_built_sources) -+ -+shell_no_gir_sources = \ -+ org-gtk-application.h \ -+ org-gtk-application.c -+ -+libgnome_shell_la_gir_sources = \ -+ $(filter-out %-private.h $(shell_private_sources) $(shell_no_gir_sources), $(shell_public_headers_h) $(libgnome_shell_sources) $(libgnome_shell_built_sources)) -+ -+gnome_shell_SOURCES = main.c -+gnome_shell_CPPFLAGS = \ -+ -DMUTTER_TYPELIB_DIR=\"$(MUTTER_TYPELIB_DIR)\" \ -+ $(MUTTER_CFLAGS) \ -+ $(gnome_shell_cflags) -+ -+# Here, and after, we repeat mutter and bluetooth libraries just for the rpath -+# The dependency is already pulled in by libtool -+gnome_shell_LDADD = libgnome-shell.la $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) -+gnome_shell_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR) -+gnome_shell_DEPENDENCIES = libgnome-shell.la -+ -+gnome_shell_extension_prefs_SOURCES = \ -+ gnome-shell-extension-prefs.c \ -+ $(NULL) -+nodist_gnome_shell_extension_prefs_SOURCES = \ -+ $(top_builddir)/js/js-resources.c \ -+ $(top_builddir)/js/js-resources.h \ -+ $(NULL) -+gnome_shell_extension_prefs_CPPFLAGS = $(gnome_shell_cflags) -+gnome_shell_extension_prefs_LDADD = $(GNOME_SHELL_LIBS) -+gnome_shell_extension_prefs_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR) -+ -+if HAVE_NETWORKMANAGER -+ -+libexec_PROGRAMS += gnome-shell-portal-helper -+gnome_shell_portal_helper_SOURCES = \ -+ gnome-shell-portal-helper.c \ -+ $(NULL) -+nodist_gnome_shell_portal_helper_SOURCES = \ -+ $(top_builddir)/js/js-resources.c \ -+ $(top_builddir)/js/js-resources.h \ -+ $(NULL) -+gnome_shell_portal_helper_CPPFLAGS = $(gnome_shell_cflags) -+gnome_shell_portal_helper_LDADD = $(GNOME_SHELL_LIBS) -+gnome_shell_portal_helper_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR) -+ -+endif -+ -+######################################## -+ -+shell_recorder_sources = \ -+ shell-recorder.c \ -+ shell-recorder.h -+ -+# Custom element is an internal detail -+ -+if BUILD_RECORDER -+libgnome_shell_sources += $(shell_recorder_sources) -+ -+shell_recorder_private_sources = \ -+ shell-recorder-src.c \ -+ shell-recorder-src.h \ -+ $(NULL) -+ -+shell_private_sources = $(shell_recorder_private_sources) -+ -+endif BUILD_RECORDER -+ -+######################################## -+ -+libexec_PROGRAMS += gnome-shell-perf-helper -+ -+gnome_shell_perf_helper_SOURCES = shell-perf-helper.c -+gnome_shell_perf_helper_CPPFLAGS = $(SHELL_PERF_HELPER_CFLAGS) -+gnome_shell_perf_helper_LDADD = $(SHELL_PERF_HELPER_LIBS) -lm -+ -+######################################## -+ -+noinst_PROGRAMS += run-js-test -+ -+run_js_test_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags) -+run_js_test_LDADD = libgnome-shell.la $(GNOME_SHELL_JS_LIBS) $(MUTTER_LIBS) -+run_js_test_LDFLAGS = -export-dynamic -rpath $(MUTTER_TYPELIB_DIR) -+ -+run_js_test_SOURCES = \ -+ run-js-test.c -+ -+######################################## -+ -+shell-enum-types.h: stamp-shell-enum-types.h Makefile -+ @true -+stamp-shell-enum-types.h: $(srcdir)/shell-enum-types.h.in $(shell_public_headers_h) -+ $(AM_V_GEN) ( \ -+ $(GLIB_MKENUMS) \ -+ --template $< \ -+ $(addprefix $(srcdir)/,$(shell_public_headers_h)) ) > $(@F).tmp && \ -+ (cmp -s $(@F).tmp shell-enum-types.h || mv $(@F).tmp shell-enum-types.h) && \ -+ rm -f $(@F).tmp && \ -+ echo timestamp > $(@F) -+EXTRA_DIST += shell-enum-types.h.in -+CLEANFILES += stamp-shell-enum-types.h -+ -+shell-enum-types.c: $(srcdir)/shell-enum-types.c.in stamp-shell-enum-types.h -+ $(AM_V_GEN) ( \ -+ $(GLIB_MKENUMS) \ -+ --template $< \ -+ $(addprefix $(srcdir)/,$(shell_public_headers_h)) ) > $(@F).tmp && \ -+ mv $(@F).tmp $(@F) && \ -+ rm -f $(@F).tmp -+EXTRA_DIST += shell-enum-types.c.in -+ -+gvcdir = $(top_builddir)/subprojects/gvc -+ -+libgnome_shell_ldflags = -avoid-version -+libgnome_shell_libadd = \ -+ -lm \ -+ $(GNOME_SHELL_LIBS) \ -+ libgnome-shell-menu.la \ -+ libst-1.0.la \ -+ libtray.la \ -+ $(gvcdir)/libgvc.la \ -+ $(NULL) -+ -+libgnome_shell_menu_la_LDFLAGS = $(libgnome_shell_ldflags) -+libgnome_shell_menu_la_LIBADD = $(GNOME_SHELL_LIBS) -+libgnome_shell_menu_la_CPPFLAGS = $(GNOME_SHELL_CFLAGS) -+ -+libgnome_shell_la_LDFLAGS = $(libgnome_shell_ldflags) -+libgnome_shell_la_LIBADD = $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) $(libgnome_shell_libadd) -+libgnome_shell_la_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags) -+ -+ShellMenu-0.1.gir: libgnome-shell-menu.la -+ShellMenu_0_1_gir_INCLUDES = Gio-2.0 -+ShellMenu_0_1_gir_CFLAGS = $(libgnome_shell_menu_la_CPPFLAGS) -I $(srcdir) -+ShellMenu_0_1_gir_LIBS = libgnome-shell-menu.la -+ShellMenu_0_1_gir_FILES = \ -+ gtkactionmuxer.h \ -+ gtkactionmuxer.c \ -+ gtkactionobservable.h \ -+ gtkactionobservable.c \ -+ gtkactionobserver.h \ -+ gtkactionobserver.c \ -+ gtkmenutrackeritem.c \ -+ gtkmenutrackeritem.h \ -+ $(NULL) -+ShellMenu_0_1_gir_SCANNERFLAGS = \ -+ --namespace=ShellMenu --identifier-prefix=Gtk -+INTROSPECTION_GIRS += ShellMenu-0.1.gir -+CLEANFILES += ShellMenu-0.1.gir -+ -+Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir -+Shell_0_1_gir_INCLUDES = Clutter-$(LIBMUTTER_API_VERSION) ClutterX11-$(LIBMUTTER_API_VERSION) Meta-$(LIBMUTTER_API_VERSION) Soup-2.4 -+if HAVE_NETWORKMANAGER -+Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0 -+endif -+Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir) -+Shell_0_1_gir_LIBS = libgnome-shell.la -+Shell_0_1_gir_FILES = $(libgnome_shell_la_gir_sources) -+Shell_0_1_gir_SCANNERFLAGS = \ -+ --include-uninstalled=$(builddir)/St-1.0.gir \ -+ --include-uninstalled=$(builddir)/ShellMenu-0.1.gir \ -+ --add-include-path=$(MUTTER_GIR_DIR) -+INTROSPECTION_GIRS += Shell-0.1.gir -+CLEANFILES += Shell-0.1.gir -+ -+St-1.0.gir: libst-1.0.la -+St_1_0_gir_INCLUDES = Clutter-$(LIBMUTTER_API_VERSION) Gtk-3.0 -+St_1_0_gir_CFLAGS = $(st_cflags) -DST_COMPILATION -+St_1_0_gir_LIBS = libst-1.0.la -+St_1_0_gir_FILES = $(filter-out %-private.h $(st_non_gir_sources), $(addprefix $(srcdir)/,$(st_source_h))) \ -+ $(addprefix $(srcdir)/,$(st_source_c)) -+INTROSPECTION_GIRS += St-1.0.gir -+CLEANFILES += St-1.0.gir -diff --git a/tests/Makefile.am b/tests/Makefile.am -new file mode 100644 -index 000000000..22ef81d30 ---- /dev/null -+++ b/tests/Makefile.am -@@ -0,0 +1,45 @@ -+noinst_SCRIPTS = run-test.sh -+EXTRA_DIST = run-test.sh.in -+ -+TEST_JS = \ -+ interactive/background-repeat.js \ -+ interactive/background-size.js \ -+ interactive/borders.js \ -+ interactive/border-radius.js \ -+ interactive/border-width.js \ -+ interactive/box-layout.js \ -+ interactive/box-shadow-animated.js \ -+ interactive/box-shadows.js \ -+ interactive/calendar.js \ -+ interactive/css-fonts.js \ -+ interactive/entry.js \ -+ interactive/gapplication.js \ -+ interactive/icons.js \ -+ interactive/inline-style.js \ -+ interactive/scrolling.js \ -+ interactive/scroll-view-sizing.js \ -+ interactive/test-title.js \ -+ interactive/transitions.js \ -+ testcommon/100-200.svg \ -+ testcommon/200-100.svg \ -+ testcommon/200-200.svg \ -+ testcommon/border-image.png \ -+ testcommon/face-plain.png \ -+ testcommon/ui.js \ -+ unit/insertSorted.js \ -+ unit/markup.js \ -+ unit/jsParse.js \ -+ unit/url.js -+EXTRA_DIST += $(TEST_JS) -+ -+TEST_MISC = \ -+ testcommon/test.css -+EXTRA_DIST += $(TEST_MISC) -+ -+run-test.sh: run-test.sh.in -+ $(AM_V_GEN) sed \ -+ -e "s|@MUTTER_TYPELIB_DIR[@]|$(MUTTER_TYPELIB_DIR)|" \ -+ -e "s|@srcdir[@]|$(srcdir)|" \ -+ $< > $@ && chmod a+x $@ -+ -+CLEANFILES = run-test.sh --- -2.13.5 - diff --git a/SOURCES/0001-appDisplay-Show-full-app-name-on-hover.patch b/SOURCES/0001-appDisplay-Show-full-app-name-on-hover.patch new file mode 100644 index 0000000..c8c9493 --- /dev/null +++ b/SOURCES/0001-appDisplay-Show-full-app-name-on-hover.patch @@ -0,0 +1,111 @@ +From 2b643e95ed25fff907d46591dd7acd8ae86cf5e4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 21 Jun 2018 18:03:31 +0200 +Subject: [PATCH] appDisplay: Show full app name on hover + +--- + data/theme/gnome-shell-sass/_common.scss | 8 ++++ + js/ui/appDisplay.js | 48 ++++++++++++++++++++++++ + 2 files changed, 56 insertions(+) + +diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss +index f1aaea689..5bf01a540 100644 +--- a/data/theme/gnome-shell-sass/_common.scss ++++ b/data/theme/gnome-shell-sass/_common.scss +@@ -1402,6 +1402,14 @@ StScrollBar { + + } + ++ .app-well-hover-text { ++ text-align: center; ++ color: $osd_fg_color; ++ background-color: $osd_bg_color; ++ border-radius: 5px; ++ padding: 3px; ++ } ++ + .app-well-app-running-dot { //running apps indicator + width: 10px; height: 3px; + background-color: $selected_bg_color; +diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js +index 74c772d50..070057c69 100644 +--- a/js/ui/appDisplay.js ++++ b/js/ui/appDisplay.js +@@ -1628,6 +1628,20 @@ var AppIcon = new Lang.Class({ + this.actor.connect('clicked', this._onClicked.bind(this)); + this.actor.connect('popup-menu', this._onKeyboardPopupMenu.bind(this)); + ++ this._hoverText = null; ++ this._hoverTimeoutId = 0; ++ ++ if (this.icon.label) { ++ this._hoverText = new St.Label({ style_class: 'app-well-hover-text', ++ text: this.icon.label.text, ++ visible: false }); ++ this._hoverText.clutter_text.line_wrap = true; ++ Main.layoutManager.addChrome(this._hoverText); ++ ++ this.actor.connect('notify::hover', this._syncHoverText.bind(this)); ++ this.connect('sync-tooltip', this._syncHoverText.bind(this)); ++ } ++ + this._menu = null; + this._menuManager = new PopupMenu.PopupMenuManager(this); + +@@ -1659,12 +1673,39 @@ var AppIcon = new Lang.Class({ + this.app.disconnect(this._stateChangedId); + this._stateChangedId = 0; + this._removeMenuTimeout(); ++ this._removeHoverTimeout(); ++ if (this._hoverText) ++ this._hoverText.destroy(); ++ this._hoverText = null; + }, + + _createIcon(iconSize) { + return this.app.create_icon_texture(iconSize); + }, + ++ _syncHoverText() { ++ if (this.shouldShowTooltip()) { ++ if (this._hoverTimeoutId) ++ return; ++ ++ this._hoverTimeoutId = Mainloop.timeout_add(300, () => { ++ this._hoverText.style = `max-width: ${2 * this.icon.iconSize}px;`; ++ this._hoverText.ensure_style(); ++ ++ let [x, y] = this.icon.label.get_transformed_position(); ++ let offset = (this._hoverText.width - this.icon.label.width) / 2; ++ this._hoverText.set_position(Math.floor(x - offset), Math.floor(y)); ++ this._hoverText.show(); ++ ++ this._hoverTimeoutId = 0; ++ return GLib.SOURCE_REMOVE; ++ }); ++ } else { ++ this._removeHoverTimeout(); ++ this._hoverText.hide(); ++ } ++ }, ++ + _removeMenuTimeout() { + if (this._menuTimeoutId > 0) { + Mainloop.source_remove(this._menuTimeoutId); +@@ -1672,6 +1713,13 @@ var AppIcon = new Lang.Class({ + } + }, + ++ _removeHoverTimeout() { ++ if (this._hoverTimeoutId > 0) { ++ Mainloop.source_remove(this._hoverTimeoutId); ++ this._hoverTimeoutId = 0; ++ } ++ }, ++ + _updateRunningStyle() { + if (this.app.state != Shell.AppState.STOPPED) + this._dot.show(); +-- +2.17.1 + diff --git a/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch b/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch index d679b3a..8d5f874 100644 --- a/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch +++ b/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch @@ -1,4 +1,4 @@ -From fa1ec00431d9c0b1592e1b7c56784ef8d8c26a98 Mon Sep 17 00:00:00 2001 +From 77663ec7d0391254ff6e5afb73257d075fcb109e Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 8 Jun 2017 12:04:31 -0400 Subject: [PATCH] data: install process-working.svg to filesystem @@ -6,23 +6,109 @@ Subject: [PATCH] data: install process-working.svg to filesystem This helps prevent unlock failure on inplace upgrades between 7.3 and 7.4 --- - data/Makefile.am | 3 +++ - 1 file changed, 3 insertions(+) + data/theme/meson.build | 2 ++ + meson.build | 2 ++ + 2 files changed, 4 insertions(+) -diff --git a/data/Makefile.am b/data/Makefile.am -index 8c01e49d1..f9c198c1c 100644 ---- a/data/Makefile.am -+++ b/data/Makefile.am -@@ -73,6 +73,9 @@ dist_theme_files = \ - $(SASSC) -a $< $@; \ - fi - -+themedir = $(pkgdatadir)/theme -+dist_theme_DATA = theme/process-working.svg +diff --git a/data/theme/meson.build b/data/theme/meson.build +index 22bae3dd2..d5acb8d10 100644 +--- a/data/theme/meson.build ++++ b/data/theme/meson.build +@@ -1,25 +1,27 @@ + theme_sources = files([ + 'gnome-shell-high-contrast.scss', + 'gnome-shell.scss', + 'gnome-shell-sass/_colors.scss', + 'gnome-shell-sass/_common.scss', + 'gnome-shell-sass/_drawing.scss', + 'gnome-shell-sass/_high-contrast-colors.scss' + ]) + + styles = [ + 'gnome-shell-high-contrast', + 'gnome-shell' + ] + + theme_deps = [] + + foreach style: styles + theme_deps += custom_target('style-' + style, + input: '@0@.scss'.format(style), + output: '@0@.css'.format(style), + command: [ + sassc, '-a', '@INPUT@', '@OUTPUT@' + ], + depend_files: theme_sources) + endforeach + - resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/theme --generate-dependencies $(srcdir)/gnome-shell-theme.gresource.xml) - gnome-shell-theme.gresource: gnome-shell-theme.gresource.xml $(resource_files) - $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/theme $< ++install_data('process-working.svg', install_dir: themedir) +diff --git a/meson.build b/meson.build +index 663a4d06f..7d60d25e2 100644 +--- a/meson.build ++++ b/meson.build +@@ -30,60 +30,62 @@ startup_req = '>= 0.11' + ibus_req = '>= 1.5.2' + + bt_req = '>= 3.9.0' + gst_req = '>= 0.11.92' + nm_req = '>= 0.9.8' + secret_req = '>= 0.18' + + gnome = import('gnome') + i18n = import('i18n') + + prefix = get_option('prefix') + + bindir = join_paths(prefix, get_option('bindir')) + datadir = join_paths(prefix, get_option('datadir')) + libdir = join_paths(prefix, get_option('libdir')) + libexecdir = join_paths(prefix, get_option('libexecdir')) + mandir = join_paths(prefix, get_option('mandir')) + + pkgdatadir = join_paths(datadir, meson.project_name()) + pkglibdir = join_paths(libdir, meson.project_name()) + + convertdir = join_paths(datadir, 'GConf', 'gsettings') + desktopdir = join_paths(datadir, 'applications') + ifacedir = join_paths(datadir, 'dbus-1', 'interfaces') + localedir = join_paths(datadir, 'locale') + mozplugindir = join_paths(libdir, 'mozilla', 'plugins') + portaldir = join_paths(datadir, 'xdg-desktop-portal', 'portals') + schemadir = join_paths(datadir, 'glib-2.0', 'schemas') + servicedir = join_paths(datadir, 'dbus-1', 'services') + ++themedir = join_paths(pkgdatadir, 'theme') ++ + plugindir = get_variable('BROWSER_PLUGIN_DIR', mozplugindir) + + keybindings_dep = dependency('gnome-keybindings', required: false) + if keybindings_dep.found() + keysdir = keybindings_dep.get_pkgconfig_variable('keysdir') + else + keysdir = join_paths(datadir, 'gnome-control-center', 'keybindings') + endif + + atk_bridge_dep = dependency('atk-bridge-2.0') + canberra_dep = dependency('libcanberra') + canberra_gtk_dep = dependency('libcanberra-gtk3') + ecal_dep = dependency('libecal-1.2', version: ecal_req) + eds_dep = dependency('libedataserver-1.2', version: eds_req) + gcr_dep = dependency('gcr-base-3', version: gcr_req) + gdk_x11_dep = dependency('gdk-x11-3.0') + gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0') + gi_dep = dependency('gobject-introspection-1.0', version: gi_req) + gio_dep = dependency('gio-2.0', version: gio_req) + gio_unix_dep = dependency('gio-unix-2.0', version: gio_req) + gjs_dep = dependency('gjs-1.0', version: gjs_req) + gtk_dep = dependency('gtk+-3.0', version: gtk_req) + libxml_dep = dependency('libxml-2.0') + croco_dep = dependency('libcroco-0.6', version: croco_req) + clutter_dep = dependency(clutter_pc, version: mutter_req) + cogl_dep = dependency(cogl_pc, version: mutter_req) + cogl_pango_dep = dependency(cogl_pango_pc, version: mutter_req) + mutter_dep = dependency(libmutter_pc, version: mutter_req) + polkit_dep = dependency('polkit-agent-1', version: polkit_req) + soup_dep = dependency('libsoup-2.4') -- -2.14.2 +2.17.1 diff --git a/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch b/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch index 2aeccd0..433f7aa 100644 --- a/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch +++ b/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch @@ -1,4 +1,4 @@ -From 446b7a65536ea60b75f1ec705cd8fa287fda968e Mon Sep 17 00:00:00 2001 +From 7002431540fb01c8ce6bd8781e35ba1072741d94 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Fri, 8 Nov 2013 13:58:09 +0100 Subject: [PATCH] extensions: Add a SESSION_MODE extension type @@ -11,10 +11,22 @@ different way since they can't be disabled. 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/js/misc/extensionUtils.js b/js/misc/extensionUtils.js -index ca02582c9..3eea38565 100644 +index 9f77b4c40..1e25da335 100644 --- a/js/misc/extensionUtils.js +++ b/js/misc/extensionUtils.js -@@ -13,7 +13,8 @@ const FileUtils = imports.misc.fileUtils; +@@ -1,46 +1,47 @@ + // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- + + // Common utils for the extension system and the extension + // preferences tool + + const Lang = imports.lang; + const Signals = imports.signals; + + const Gio = imports.gi.Gio; + + const Config = imports.misc.config; + const FileUtils = imports.misc.fileUtils; var ExtensionType = { SYSTEM: 1, @@ -24,19 +36,100 @@ index ca02582c9..3eea38565 100644 }; // Maps uuid -> metadata object + var extensions = {}; + + /** + * getCurrentExtension: + * + * Returns the current extension, or null if not called from an extension. + */ + function getCurrentExtension() { + let stack = (new Error()).stack.split('\n'); + let extensionStackLine; + + // Search for an occurrence of an extension stack frame + // Start at 1 because 0 is the stack frame of this function + for (let i = 1; i < stack.length; i++) { + if (stack[i].indexOf('/gnome-shell/extensions/') > -1) { + extensionStackLine = stack[i]; + break; + } + } + if (!extensionStackLine) + return null; + + // The stack line is like: + // init([object Object])@/home/user/data/gnome-shell/extensions/u@u.id/prefs.js:8 + // + // In the case that we're importing from + // module scope, the first field is blank: diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js -index 51ce234c2..c2a11b8a5 100644 +index e35c01ab8..a013a3ee7 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js -@@ -316,6 +316,8 @@ function _loadExtensions() { +@@ -289,60 +289,62 @@ function onEnabledExtensionsChanged() { + + enabledExtensions = newEnabledExtensions; + } + + function _onVersionValidationChanged() { + // we want to reload all extensions, but only enable + // extensions when allowed by the sessionMode, so + // temporarily disable them all + enabledExtensions = []; + for (let uuid in ExtensionUtils.extensions) + reloadExtension(ExtensionUtils.extensions[uuid]); + enabledExtensions = getEnabledExtensions(); + + if (Main.sessionMode.allowExtensions) { + enabledExtensions.forEach(uuid => { + enableExtension(uuid); + }); + } + } + + function _loadExtensions() { + global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged); + global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged); + global.settings.connect('changed::' + EXTENSION_DISABLE_VERSION_CHECK_KEY, _onVersionValidationChanged); + + enabledExtensions = getEnabledExtensions(); + let finder = new ExtensionUtils.ExtensionFinder(); - finder.connect('extension-found', function(finder, extension) { + finder.connect('extension-found', (finder, extension) => { loadExtension(extension); + if (Main.sessionMode.enabledExtensions.indexOf(extension.uuid) != -1) + extension.type = ExtensionUtils.ExtensionType.SESSION_MODE; }); finder.scanExtensions(); } + + function enableAllExtensions() { + if (enabled) + return; + + if (!initted) { + _loadExtensions(); + initted = true; + } else { + enabledExtensions.forEach(uuid => { + enableExtension(uuid); + }); + } + enabled = true; + } + + function disableAllExtensions() { + if (!enabled) + return; + + if (initted) { + extensionOrder.slice().reverse().forEach(uuid => { + disableExtension(uuid); + }); + } + + enabled = false; -- -2.14.2 +2.17.1 diff --git a/SOURCES/0001-gdm-add-AuthList-control.patch b/SOURCES/0001-gdm-add-AuthList-control.patch index 44e3586..a997bec 100644 --- a/SOURCES/0001-gdm-add-AuthList-control.patch +++ b/SOURCES/0001-gdm-add-AuthList-control.patch @@ -1,7 +1,7 @@ -From 356171d85579d27da3180fd78ffb353f23c9073f Mon Sep 17 00:00:00 2001 +From fd39875612bb6895e820924608c7a9719a9d326e Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 18 Jul 2017 12:58:14 -0400 -Subject: [PATCH 1/2] gdm: add AuthList control +Subject: [PATCH] gdm: add AuthList control Ultimately, we want to add support for GDM's new ChoiceList PAM extension. That extension allows PAM modules to present @@ -14,17 +14,17 @@ but with less features. It lacks API specific to the users, lacks the built in timed login indicator, etc. It does feature a label heading. --- - js/gdm/authList.js | 198 ++++++++++++++++++++++++++++++++++++++++++ + js/gdm/authList.js | 195 ++++++++++++++++++++++++++++++++++ js/js-resources.gresource.xml | 1 + - 2 files changed, 199 insertions(+) + 2 files changed, 196 insertions(+) create mode 100644 js/gdm/authList.js diff --git a/js/gdm/authList.js b/js/gdm/authList.js new file mode 100644 -index 000000000..893e35075 +index 000000000..fc1c3d6e4 --- /dev/null +++ b/js/gdm/authList.js -@@ -0,0 +1,198 @@ +@@ -0,0 +1,195 @@ +// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- +/* + * Copyright 2017 Red Hat, Inc @@ -58,7 +58,7 @@ index 000000000..893e35075 +const AuthListItem = new Lang.Class({ + Name: 'AuthListItem', + -+ _init: function(key, text) { ++ _init(key, text) { + this.key = key; + let label = new St.Label({ style_class: 'auth-list-item-label', + y_align: Clutter.ActorAlign.CENTER }); @@ -82,14 +82,14 @@ index 000000000..893e35075 + this._setSelected(this.actor.hover); + }); + -+ this.actor.connect('clicked', Lang.bind(this, this._onClicked)); ++ this.actor.connect('clicked', this._onClicked.bind(this)); + }, + -+ _onClicked: function() { ++ _onClicked() { + this.emit('activate'); + }, + -+ _setSelected: function(selected) { ++ _setSelected(selected) { + if (selected) { + this.actor.add_style_pseudo_class('selected'); + this.actor.grab_key_focus(); @@ -103,7 +103,7 @@ index 000000000..893e35075 +const AuthList = new Lang.Class({ + Name: 'AuthList', + -+ _init: function() { ++ _init() { + this.actor = new St.BoxLayout({ vertical: true, + style_class: 'login-dialog-auth-list-layout' }); + @@ -122,10 +122,10 @@ index 000000000..893e35075 + this._scrollView.add_actor(this._box); + this._items = {}; + -+ this.actor.connect('key-focus-in', Lang.bind(this, this._moveFocusToItems)); ++ this.actor.connect('key-focus-in', this._moveFocusToItems.bind(this)); + }, + -+ _moveFocusToItems: function() { ++ _moveFocusToItems() { + let hasItems = Object.keys(this._items).length > 0; + + if (!hasItems) @@ -136,18 +136,18 @@ index 000000000..893e35075 + + let focusSet = this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); + if (!focusSet) { -+ Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() { ++ Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => { + this._moveFocusToItems(); + return false; -+ })); ++ }); + } + }, + -+ _onItemActivated: function(activatedItem) { ++ _onItemActivated(activatedItem) { + this.emit('activate', activatedItem.key); + }, + -+ scrollToItem: function(item) { ++ scrollToItem(item) { + let box = item.actor.get_allocation_box(); + + let adjustment = this._scrollView.get_vscroll_bar().get_adjustment(); @@ -160,7 +160,7 @@ index 000000000..893e35075 + transition: 'easeOutQuad' }); + }, + -+ jumpToItem: function(item) { ++ jumpToItem(item) { + let box = item.actor.get_allocation_box(); + + let adjustment = this._scrollView.get_vscroll_bar().get_adjustment(); @@ -170,7 +170,7 @@ index 000000000..893e35075 + adjustment.set_value(value); + }, + -+ getItem: function(key) { ++ getItem(key) { + let item = this._items[key]; + + if (!item) @@ -179,7 +179,7 @@ index 000000000..893e35075 + return item; + }, + -+ addItem: function(key, text) { ++ addItem(key, text) { + this.removeItem(key); + + let item = new AuthListItem(key, text); @@ -188,21 +188,18 @@ index 000000000..893e35075 + this._items[key] = item; + + item.connect('activate', -+ Lang.bind(this, this._onItemActivated)); ++ this._onItemActivated.bind(this)); + + // Try to keep the focused item front-and-center + item.actor.connect('key-focus-in', -+ Lang.bind(this, -+ function() { -+ this.scrollToItem(item); -+ })); ++ () => { this.scrollToItem(item); }); + + this._moveFocusToItems(); + + this.emit('item-added', item); + }, + -+ removeItem: function(key) { ++ removeItem(key) { + let item = this._items[key]; + + if (!item) @@ -212,11 +209,11 @@ index 000000000..893e35075 + delete this._items[key]; + }, + -+ numItems: function() { ++ numItems() { + return Object.keys(this._items).length; + }, + -+ clear: function() { ++ clear() { + this.label.text = ""; + this._box.destroy_all_children(); + this._items = {}; @@ -224,7 +221,7 @@ index 000000000..893e35075 +}); +Signals.addSignalMethods(AuthList.prototype); diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml -index 7a5c8ca6f..c0a80f564 100644 +index 883b62d66..58035d303 100644 --- a/js/js-resources.gresource.xml +++ b/js/js-resources.gresource.xml @@ -1,6 +1,7 @@ @@ -236,5 +233,5 @@ index 7a5c8ca6f..c0a80f564 100644 gdm/batch.js gdm/fingerprint.js -- -2.14.2 +2.17.1 diff --git a/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch b/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch deleted file mode 100644 index 96c9a7f..0000000 --- a/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 7f2d3668cf8c7a6b8aaab2c52f7e67ab01e5ba4d Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 18 Aug 2015 12:02:17 -0400 -Subject: [PATCH] gdm: honor timed login delay even if animations disabled - -gnome-shell currently initiates an automatic login attempt if -timed login is enabled and the timed login animation completes. - -Unfortunately, if animations are disabled (as is the case for -virtual machines) then the timed login animation will complete -instantly, and timed login will proceed immediately after gnome-shell -has noticed the user is idle for 5 seconds. - -This commit addresses that problem by initiating timed login and the -animation from a main loop timeout, instead of using the tweener api. ---- - js/gdm/loginDialog.js | 37 +++++++++++++++++++++++++++---------- - 1 file changed, 27 insertions(+), 10 deletions(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 1cae3db85..c1262b1e8 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -126,20 +126,34 @@ var UserListItem = new Lang.Class({ - let hold = new Batch.Hold(); - - this.hideTimedLoginIndicator(); -- Tweener.addTween(this._timedLoginIndicator, -- { scale_x: 1., -- time: time, -- transition: 'linear', -- onComplete: function() { -- hold.release(); -- }, -- onCompleteScope: this -- }); -+ -+ let startTime = GLib.get_monotonic_time(); -+ -+ this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT, -+ 33, -+ Lang.bind(this, function() { -+ let currentTime = GLib.get_monotonic_time(); -+ let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; -+ this._timedLoginIndicator.scale_x = elapsedTime / time; -+ if (elapsedTime >= time) { -+ this._timedLoginTimeoutId = 0; -+ hold.release(); -+ return GLib.SOURCE_REMOVE; -+ } -+ -+ return GLib.SOURCE_CONTINUE; -+ })); -+ -+ GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId'); -+ - return hold; - }, - - hideTimedLoginIndicator: function() { -- Tweener.removeTweens(this._timedLoginIndicator); -+ if (this._timedLoginTimeoutId) { -+ GLib.source_remove(this._timedLoginTimeoutId); -+ this._timedLoginTimeoutId = 0; -+ } - this._timedLoginIndicator.scale_x = 0.; - } - }); --- -2.14.2 - diff --git a/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch b/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch deleted file mode 100644 index 1d0d2f4..0000000 --- a/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 345ddfb8456eb3fe8e32ab55d4d3a746d15ae4e0 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 1 Jul 2015 11:18:44 -0400 -Subject: [PATCH] gdm: use password authentication if all schemes are disabled - -This prevents a traceback, at least. ---- - js/gdm/util.js | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index b594da4fd..bae46bfe0 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -419,6 +419,11 @@ var ShellUserVerifier = new Lang.Class({ - this._defaultService = SMARTCARD_SERVICE_NAME; - else if (this._haveFingerprintReader) - this._defaultService = FINGERPRINT_SERVICE_NAME; -+ -+ if (!this._defaultService) { -+ log("no authentication service is enabled, using password authentication"); -+ this._defaultService = PASSWORD_SERVICE_NAME; -+ } - }, - - _startService: function(serviceName) { --- -2.14.2 - diff --git a/SOURCES/0001-global-Allow-overriding-the-override-schema.patch b/SOURCES/0001-global-Allow-overriding-the-override-schema.patch index 0889d0e..3701383 100644 --- a/SOURCES/0001-global-Allow-overriding-the-override-schema.patch +++ b/SOURCES/0001-global-Allow-overriding-the-override-schema.patch @@ -1,6 +1,6 @@ -From c2a8239044f350a6548e0e8314b4f40b49a726b2 Mon Sep 17 00:00:00 2001 +From 96c97daca0db1ef56125873a8eebef86bdc8087a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Wed, 11 Oct 2017 00:36:18 +0200 +Date: Mon, 4 Jun 2018 13:45:06 -0400 Subject: [PATCH] global: Allow overriding the override schema --- @@ -9,10 +9,37 @@ Subject: [PATCH] global: Allow overriding the override schema 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c -index 9a89aa4d6..085399b68 100644 +index 857877b0b..9d51ee5d1 100644 --- a/src/main.c +++ b/src/main.c -@@ -39,6 +39,7 @@ extern GType gnome_shell_plugin_get_type (void); +@@ -12,60 +12,61 @@ + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + + #include "shell-global.h" + #include "shell-global-private.h" + #include "shell-perf-log.h" + #include "st.h" + + extern GType gnome_shell_plugin_get_type (void); + + #define SHELL_DBUS_SERVICE "org.gnome.Shell" + #define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier" + + #define OVERRIDES_SCHEMA "org.gnome.shell.overrides" + + #define WM_NAME "GNOME Shell" + #define GNOME_WM_KEYBINDINGS "Mutter,GNOME Shell" + static gboolean is_gdm_mode = FALSE; static char *session_mode = NULL; static int caught_signal = 0; @@ -20,7 +47,61 @@ index 9a89aa4d6..085399b68 100644 #define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1 #define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4 -@@ -455,6 +456,12 @@ GOptionEntry gnome_shell_options[] = { + + enum { + SHELL_DEBUG_BACKTRACE_WARNINGS = 1, + SHELL_DEBUG_BACKTRACE_SEGFAULTS = 2, + }; + static int _shell_debug; + static gboolean _tracked_signals[NSIG] = { 0 }; + + static void + shell_dbus_acquire_name (GDBusProxy *bus, + guint32 request_name_flags, + guint32 *request_name_result, + const gchar *name, + gboolean fatal) + { + GError *error = NULL; + GVariant *request_name_variant; + + if (!(request_name_variant = g_dbus_proxy_call_sync (bus, + "RequestName", + g_variant_new ("(su)", name, request_name_flags), + 0, /* call flags */ + -1, /* timeout */ + NULL, /* cancellable */ + &error))) + { + g_printerr ("failed to acquire %s: %s\n", name, error->message); +@@ -423,110 +424,118 @@ print_version (const gchar *option_name, + { + g_print ("GNOME Shell %s\n", VERSION); + exit (0); + } + + GOptionEntry gnome_shell_options[] = { + { + "version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, + print_version, + N_("Print version"), + NULL + }, + { + "gdm-mode", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, + &is_gdm_mode, + N_("Mode used by GDM for login screen"), + NULL + }, + { + "mode", 0, 0, G_OPTION_ARG_STRING, + &session_mode, + N_("Use a specific mode, e.g. “gdm” for login screen"), + "MODE" + }, + { + "list-modes", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, + list_modes, N_("List possible modes"), NULL }, @@ -33,7 +114,57 @@ index 9a89aa4d6..085399b68 100644 { NULL } }; -@@ -512,7 +519,9 @@ main (int argc, char **argv) + int + main (int argc, char **argv) + { + GOptionContext *ctx; + GError *error = NULL; + int ecode; + + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); + + session_mode = (char *) g_getenv ("GNOME_SHELL_SESSION_MODE"); + + ctx = meta_get_option_context (); + g_option_context_add_main_entries (ctx, gnome_shell_options, GETTEXT_PACKAGE); + g_option_context_add_group (ctx, g_irepository_get_option_group ()); + if (!g_option_context_parse (ctx, &argc, &argv, &error)) + { + g_printerr ("%s: %s\n", argv[0], error->message); + exit (1); + } + + g_option_context_free (ctx); + + meta_plugin_manager_set_plugin_type (gnome_shell_plugin_get_type ()); + + meta_set_wm_name (WM_NAME); + meta_set_gnome_wm_keybindings (GNOME_WM_KEYBINDINGS); + + /* Prevent meta_init() from causing gtk to load the atk-bridge*/ + g_setenv ("NO_AT_BRIDGE", "1", TRUE); + meta_init (); + g_unsetenv ("NO_AT_BRIDGE"); + + /* FIXME: Add gjs API to set this stuff and don't depend on the + * environment. These propagate to child processes. + */ + g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE); + g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE); + + shell_init_debug (g_getenv ("SHELL_DEBUG")); + + shell_dbus_init (meta_get_replace_current_wm ()); + shell_a11y_init (); + shell_perf_log_init (); + shell_introspection_init (); + shell_fonts_init (); + + g_log_set_default_handler (default_log_handler, NULL); + + /* Initialize the global object */ if (session_mode == NULL) session_mode = is_gdm_mode ? (char *)"gdm" : (char *)"user"; @@ -44,27 +175,132 @@ index 9a89aa4d6..085399b68 100644 shell_prefs_init (); + dump_gjs_stack_on_signal (SIGABRT); + dump_gjs_stack_on_signal (SIGFPE); + dump_gjs_stack_on_signal (SIGIOT); + dump_gjs_stack_on_signal (SIGTRAP); + + if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS)) + { + dump_gjs_stack_on_signal (SIGBUS); + dump_gjs_stack_on_signal (SIGSEGV); + } + + ecode = meta_run (); + + g_debug ("Doing final cleanup"); + _shell_global_destroy_gjs_context (shell_global_get ()); + g_object_unref (shell_global_get ()); + + return ecode; + } diff --git a/src/shell-global.c b/src/shell-global.c -index 855f6257c..181dbb825 100644 +index c67ac4e4a..961fd3a70 100644 --- a/src/shell-global.c +++ b/src/shell-global.c -@@ -67,6 +67,7 @@ struct _ShellGlobal { - GdkScreen *gdk_screen; +@@ -38,158 +38,167 @@ + /* Memory report bits */ + #ifdef HAVE_MALLINFO + #include + #endif + + #if defined __OpenBSD__ || defined __FreeBSD__ + #include + #endif + + #include "shell-enum-types.h" + #include "shell-global-private.h" + #include "shell-perf-log.h" + #include "shell-window-tracker.h" + #include "shell-wm.h" + #include "st.h" + + static ShellGlobal *the_object = NULL; + + struct _ShellGlobal { + GObject parent; + + ClutterStage *stage; + Window stage_xwindow; + + MetaDisplay *meta_display; + GdkDisplay *gdk_display; + Display *xdisplay; + MetaScreen *meta_screen; char *session_mode; + char *override_schema; XserverRegion input_region; -@@ -98,6 +99,7 @@ enum { + GjsContext *js_context; + MetaPlugin *plugin; + ShellWM *wm; + GSettings *settings; + const char *datadir; + char *imagedir; + char *userdatadir; + GFile *userdatadir_path; + GFile *runtime_state_path; + + StFocusManager *focus_manager; + + guint work_count; + GSList *leisure_closures; + guint leisure_function_id; + + /* For sound notifications */ + ca_context *sound_context; + + gboolean has_modal; + gboolean frame_timestamps; + gboolean frame_finish_timestamp; + }; + + enum { PROP_0, PROP_SESSION_MODE, + PROP_OVERRIDE_SCHEMA, PROP_SCREEN, - PROP_GDK_SCREEN, PROP_DISPLAY, -@@ -141,6 +143,10 @@ shell_global_set_property(GObject *object, + PROP_SCREEN_WIDTH, + PROP_SCREEN_HEIGHT, + PROP_STAGE, + PROP_WINDOW_GROUP, + PROP_TOP_WINDOW_GROUP, + PROP_WINDOW_MANAGER, + PROP_SETTINGS, + PROP_DATADIR, + PROP_IMAGEDIR, + PROP_USERDATADIR, + PROP_FOCUS_MANAGER, + PROP_FRAME_TIMESTAMPS, + PROP_FRAME_FINISH_TIMESTAMP, + }; + + /* Signals */ + enum + { + NOTIFY_ERROR, + LAST_SIGNAL + }; + + G_DEFINE_TYPE(ShellGlobal, shell_global, G_TYPE_OBJECT); + + static guint shell_global_signals [LAST_SIGNAL] = { 0 }; + + static void + shell_global_set_property(GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) + { + ShellGlobal *global = SHELL_GLOBAL (object); + + switch (prop_id) + { + case PROP_SESSION_MODE: g_clear_pointer (&global->session_mode, g_free); global->session_mode = g_ascii_strdown (g_value_get_string (value), -1); break; @@ -75,7 +311,25 @@ index 855f6257c..181dbb825 100644 case PROP_FRAME_TIMESTAMPS: global->frame_timestamps = g_value_get_boolean (value); break; -@@ -166,6 +172,9 @@ shell_global_get_property(GObject *object, + case PROP_FRAME_FINISH_TIMESTAMP: + global->frame_finish_timestamp = g_value_get_boolean (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } + } + + static void + shell_global_get_property(GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) + { + ShellGlobal *global = SHELL_GLOBAL (object); + + switch (prop_id) + { case PROP_SESSION_MODE: g_value_set_string (value, shell_global_get_session_mode (global)); break; @@ -85,7 +339,61 @@ index 855f6257c..181dbb825 100644 case PROP_SCREEN: g_value_set_object (value, global->meta_screen); break; -@@ -370,6 +379,13 @@ shell_global_class_init (ShellGlobalClass *klass) + case PROP_DISPLAY: + g_value_set_object (value, global->meta_display); + break; + case PROP_SCREEN_WIDTH: + { + int width, height; + + meta_screen_get_size (global->meta_screen, &width, &height); + g_value_set_int (value, width); + } + break; + case PROP_SCREEN_HEIGHT: + { + int width, height; + + meta_screen_get_size (global->meta_screen, &width, &height); + g_value_set_int (value, height); + } + break; + case PROP_STAGE: + g_value_set_object (value, global->stage); + break; + case PROP_WINDOW_GROUP: + g_value_set_object (value, meta_get_window_group_for_screen (global->meta_screen)); + break; + case PROP_TOP_WINDOW_GROUP: + g_value_set_object (value, meta_get_top_window_group_for_screen (global->meta_screen)); +@@ -341,60 +350,67 @@ shell_global_finalize (GObject *object) + g_free (global->imagedir); + g_free (global->userdatadir); + + G_OBJECT_CLASS(shell_global_parent_class)->finalize (object); + } + + static void + shell_global_class_init (ShellGlobalClass *klass) + { + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->get_property = shell_global_get_property; + gobject_class->set_property = shell_global_set_property; + gobject_class->finalize = shell_global_finalize; + + shell_global_signals[NOTIFY_ERROR] = + g_signal_new ("notify-error", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, NULL, + G_TYPE_NONE, 2, + G_TYPE_STRING, + G_TYPE_STRING); + + g_object_class_install_property (gobject_class, + PROP_SESSION_MODE, g_param_spec_string ("session-mode", "Session Mode", "The session mode to use", @@ -99,7 +407,61 @@ index 855f6257c..181dbb825 100644 "user", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (gobject_class, -@@ -1495,7 +1511,9 @@ shell_global_get_overrides_settings (ShellGlobal *global) + PROP_SCREEN, + g_param_spec_object ("screen", + "Screen", + "Metacity screen object for the shell", + META_TYPE_SCREEN, + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_SCREEN_WIDTH, + g_param_spec_int ("screen-width", + "Screen Width", + "Screen width, in pixels", + 0, G_MAXINT, 1, + G_PARAM_READABLE)); + + g_object_class_install_property (gobject_class, + PROP_SCREEN_HEIGHT, + g_param_spec_int ("screen-height", + "Screen Height", + "Screen height, in pixels", + 0, G_MAXINT, 1, + G_PARAM_READABLE)); + g_object_class_install_property (gobject_class, + PROP_DISPLAY, + g_param_spec_object ("display", + "Display", + "Metacity display object for the shell", +@@ -1333,61 +1349,63 @@ shell_global_sync_pointer (ShellGlobal *global) + * @global: A #ShellGlobal + * + * Get the global GSettings instance. + * + * Return value: (transfer none): The GSettings object + */ + GSettings * + shell_global_get_settings (ShellGlobal *global) + { + return global->settings; + } + + /** + * shell_global_get_overrides_settings: + * @global: A #ShellGlobal + * + * Get the session overrides GSettings instance. + * + * Return value: (transfer none): The GSettings object + */ + GSettings * + shell_global_get_overrides_settings (ShellGlobal *global) + { + static GSettings *settings = NULL; + const char *schema; + + g_return_val_if_fail (SHELL_IS_GLOBAL (global), NULL); if (!settings) { @@ -110,6 +472,33 @@ index 855f6257c..181dbb825 100644 schema = "org.gnome.shell.extensions.classic-overrides"; else if (strcmp (global->session_mode, "user") == 0) schema = "org.gnome.shell.overrides"; + else + return NULL; + + settings = g_settings_new (schema); + } + + return settings; + } + + /** + * shell_global_get_current_time: + * @global: A #ShellGlobal + * + * Returns: the current X server time from the current Clutter, Gdk, or X + * event. If called from outside an event handler, this may return + * %Clutter.CURRENT_TIME (aka 0), or it may return a slightly + * out-of-date timestamp. + */ + guint32 + shell_global_get_current_time (ShellGlobal *global) + { + guint32 time; + + /* meta_display_get_current_time() will return the correct time + when handling an X or Gdk event, but will return CurrentTime + from some Clutter event callbacks. + -- -2.14.2 +2.17.1 diff --git a/SOURCES/0001-keyboard-Handle-no-window-case-in-FocusTracker.patch b/SOURCES/0001-keyboard-Handle-no-window-case-in-FocusTracker.patch new file mode 100644 index 0000000..32833d2 --- /dev/null +++ b/SOURCES/0001-keyboard-Handle-no-window-case-in-FocusTracker.patch @@ -0,0 +1,55 @@ +From 6a796675bd7815087881b799ff5fc79e9ce2b0bf Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Mon, 16 Jul 2018 23:36:38 +0000 +Subject: [PATCH] keyboard: Handle no-window case in FocusTracker + +For windows, the cursor location needs to be adjusted by the frame +offsets. However we cannot assume that there is a window, as the +shell itself can have the key focus. + +https://gitlab.gnome.org/GNOME/gnome-shell/issues/414 + + +(cherry picked from commit 0dee82fb9fa974ebdb4dd77fd85535a6edf207fd) +--- + js/ui/keyboard.js | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js +index 5fcdf988a7..66653d6027 100644 +--- a/js/ui/keyboard.js ++++ b/js/ui/keyboard.js +@@ -533,17 +533,25 @@ var FocusTracker = new Lang.Class({ + }, + + _setCurrentRect(rect) { +- let frameRect = this._currentWindow.get_frame_rect(); +- rect.x -= frameRect.x; +- rect.y -= frameRect.y; ++ if (this._currentWindow) { ++ let frameRect = this._currentWindow.get_frame_rect(); ++ rect.x -= frameRect.x; ++ rect.y -= frameRect.y; ++ } + + this._rect = rect; + this.emit('position-changed'); + }, + + getCurrentRect() { +- let frameRect = this._currentWindow.get_frame_rect(); +- let rect = { x: this._rect.x + frameRect.x, y: this._rect.y + frameRect.y, width: this._rect.width, height: this._rect.height }; ++ let rect = { x: this._rect.x, y: this._rect.y, ++ width: this._rect.width, height: this._rect.height }; ++ ++ if (this._currentWindow) { ++ let frameRect = this._currentWindow.get_frame_rect(); ++ rect.x += frameRect.x; ++ rect.y += frameRect.y; ++ } + + return rect; + } +-- +2.17.1 + diff --git a/SOURCES/0001-keyboard-Listen-to-IbusPanelService-focus-in-out-to-.patch b/SOURCES/0001-keyboard-Listen-to-IbusPanelService-focus-in-out-to-.patch new file mode 100644 index 0000000..7b52b2e --- /dev/null +++ b/SOURCES/0001-keyboard-Listen-to-IbusPanelService-focus-in-out-to-.patch @@ -0,0 +1,67 @@ +From 04a4a100e34e3ce8c34212ebb79e77b92ef8238d Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Tue, 18 Sep 2018 12:54:29 +0200 +Subject: [PATCH] keyboard: Listen to IbusPanelService::focus-in/out to track + focus changes + +In X11 there's no input panel state requests, so restore the previous behavior +that focused entries would always toggle the OSK on there. +--- + js/misc/ibusManager.js | 6 ++++++ + js/ui/keyboard.js | 16 ++++++++++++++++ + 2 files changed, 22 insertions(+) + +diff --git a/js/misc/ibusManager.js b/js/misc/ibusManager.js +index 6452e492f..e6d4b5aec 100644 +--- a/js/misc/ibusManager.js ++++ b/js/misc/ibusManager.js +@@ -119,6 +119,12 @@ var IBusManager = new Lang.Class({ + let cursorLocation = { x, y, width: w, height: h }; + this.emit('set-cursor-location', cursorLocation); + }); ++ this._panelService.connect('focus-in', (panel, path) => { ++ // This is ibus' "no focus" input context, so should be ignored ++ if (!GLib.str_has_suffix(path, '/InputContext_1')) ++ this.emit ('focus-in'); ++ }); ++ this._panelService.connect('focus-out', () => { this.emit('focus-out'); }); + + try { + // IBus versions older than 1.5.10 have a bug which +diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js +index be0146344..491495c57 100644 +--- a/js/ui/keyboard.js ++++ b/js/ui/keyboard.js +@@ -519,6 +519,12 @@ var FocusTracker = new Lang.Class({ + + this._setCurrentRect(rect); + }); ++ this._ibusManager.connect('focus-in', () => { ++ this.emit('focus-changed', true); ++ }); ++ this._ibusManager.connect('focus-out', () => { ++ this.emit('focus-changed', false); ++ }); + }, + + get currentWindow() { +@@ -590,6 +596,16 @@ var Keyboard = new Lang.Class({ + this._animFocusedWindow = null; + this._oskFocusWindow = null; + }); ++ this._focusTracker.connect('focus-changed', (tracker, focused) => { ++ // Valid only for X11 ++ if (Meta.is_wayland_compositor()) ++ return; ++ ++ if (focused) ++ this.show(Main.layoutManager.focusIndex); ++ else ++ this.hide(); ++ }); + + Meta.get_backend().connect('last-device-changed', + (backend, deviceId) => { +-- +2.19.0 + diff --git a/SOURCES/0001-loginDialog-make-info-messages-themed.patch b/SOURCES/0001-loginDialog-make-info-messages-themed.patch index 4f5dd71..2b39a2a 100644 --- a/SOURCES/0001-loginDialog-make-info-messages-themed.patch +++ b/SOURCES/0001-loginDialog-make-info-messages-themed.patch @@ -1,4 +1,4 @@ -From b82109bd0c04a8b050a7ad18cd4b2c1d4186fa61 Mon Sep 17 00:00:00 2001 +From e407e1f6843258fff417ff9d5e558d256fe10a03 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 26 Jun 2017 14:35:05 -0400 Subject: [PATCH] loginDialog: make info messages themed @@ -6,46 +6,27 @@ Subject: [PATCH] loginDialog: make info messages themed They were lacking a definition before leading them to show up invisible. --- - data/theme/gnome-shell-high-contrast.css | 6 ++++-- - data/theme/gnome-shell.css | 6 ++++-- - 2 files changed, 8 insertions(+), 4 deletions(-) + data/theme/gnome-shell-sass/_common.scss | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) -diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css -index 52dc81863..b807db8ae 100644 ---- a/data/theme/gnome-shell-high-contrast.css -+++ b/data/theme/gnome-shell-high-contrast.css -@@ -1647,9 +1647,11 @@ StScrollBar { - .login-dialog-message-warning { - color: #f57900; } - --.login-dialog-message-hint { -+.login-dialog-message-hint, .login-dialog-message { -+ color: #bebeb6; - padding-top: 0; -- padding-bottom: 20px; } -+ padding-bottom: 20px; -+ min-height: 2.75em; } - - .login-dialog-user-selection-box { - padding: 100px 0px; } -diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index a320f41a0..dd37cdf7b 100644 ---- a/data/theme/gnome-shell.css -+++ b/data/theme/gnome-shell.css -@@ -1647,9 +1647,11 @@ StScrollBar { - .login-dialog-message-warning { - color: #f57900; } - --.login-dialog-message-hint { -+.login-dialog-message-hint, .login-dialog-message { -+ color: #bebeb6; - padding-top: 0; -- padding-bottom: 20px; } -+ padding-bottom: 20px; -+ min-height: 2.75em; } - - .login-dialog-user-selection-box { - padding: 100px 0px; } +diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss +index 4e82ef58b..ee643c440 100644 +--- a/data/theme/gnome-shell-sass/_common.scss ++++ b/data/theme/gnome-shell-sass/_common.scss +@@ -1769,7 +1769,12 @@ StScrollBar { + .login-dialog-banner { color: darken($osd_fg_color,10%); } + .login-dialog-button-box { spacing: 5px; } + .login-dialog-message-warning { color: $warning_color; } +- .login-dialog-message-hint { padding-top: 0; padding-bottom: 20px; } ++ .login-dialog-message-hint, .login-dialog-message { ++ color: darken($osd_fg_color, 20%); ++ padding-top: 0; ++ padding-bottom: 20px; ++ min-height: 2.75em; ++ } + .login-dialog-user-selection-box { padding: 100px 0px; } + .login-dialog-not-listed-label { + padding-left: 2px; -- -2.14.2 +2.17.1 diff --git a/SOURCES/0001-loginDialog-only-emit-session-activated-on-user-acti.patch b/SOURCES/0001-loginDialog-only-emit-session-activated-on-user-acti.patch deleted file mode 100644 index 7c52aea..0000000 --- a/SOURCES/0001-loginDialog-only-emit-session-activated-on-user-acti.patch +++ /dev/null @@ -1,122 +0,0 @@ -From 79975970398650a114ce3735272f18ca88b7208e Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Thu, 13 Nov 2014 09:26:52 -0500 -Subject: [PATCH] loginDialog: only emit session-activated on user action - -Right now we emit session-activated any time the bullet -moves in the session menu. That includes at start up when -picking an item arbitrarily, and any time GDM reports the -session was read from the user's account settings. - -session-activated informs GDM about the newly selected session, -so emitting it in response to GDM reporting a session is a -bad idea (it's not only pointless, but it can least to -oscillations) - -This commit changes the code to only emit session-activated when -the user explicitly activates a session item from the gear menu. - -https://bugzilla.gnome.org/show_bug.cgi?id=740142 ---- - js/gdm/loginDialog.js | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 485e36506..6ea794998 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -353,90 +353,86 @@ var SessionMenuButton = new Lang.Class({ - this._menu.toggle(); - })); - - this._items = {}; - this._activeSessionId = null; - this._populate(); - }, - - updateSensitivity: function(sensitive) { - this._button.reactive = sensitive; - this._button.can_focus = sensitive; - this._menu.close(BoxPointer.PopupAnimation.NONE); - }, - - _updateOrnament: function() { - let itemIds = Object.keys(this._items); - for (let i = 0; i < itemIds.length; i++) { - if (itemIds[i] == this._activeSessionId) - this._items[itemIds[i]].setOrnament(PopupMenu.Ornament.DOT); - else - this._items[itemIds[i]].setOrnament(PopupMenu.Ornament.NONE); - } - }, - - setActiveSession: function(sessionId) { - if (sessionId == this._activeSessionId) - return; - - this._activeSessionId = sessionId; - this._updateOrnament(); -- -- this.emit('session-activated', this._activeSessionId); - }, - - close: function() { - this._menu.close(); - }, - - _populate: function() { - let ids = Gdm.get_session_ids(); - ids.sort(); - - if (ids.length <= 1) { - this._button.hide(); - return; - } - - for (let i = 0; i < ids.length; i++) { - let [sessionName, sessionDescription] = Gdm.get_session_name_and_description(ids[i]); - - let id = ids[i]; - let item = new PopupMenu.PopupMenuItem(sessionName); - this._menu.addMenuItem(item); - this._items[id] = item; - -- if (!this._activeSessionId) -- this.setActiveSession(id); -- - item.connect('activate', Lang.bind(this, function() { - this.setActiveSession(id); -+ this.emit('session-activated', this._activeSessionId); - })); - } - } - }); - Signals.addSignalMethods(SessionMenuButton.prototype); - - var LoginDialog = new Lang.Class({ - Name: 'LoginDialog', - - _init: function(parentActor) { - this.actor = new Shell.GenericContainer({ style_class: 'login-dialog', - visible: false }); - this.actor.get_accessible().set_role(Atk.Role.WINDOW); - - this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true })); - this.actor.connect('allocate', Lang.bind(this, this._onAllocate)); - this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); - parentActor.add_child(this.actor); - - this._userManager = AccountsService.UserManager.get_default() - this._gdmClient = new Gdm.Client(); - - try { - this._gdmClient.set_enabled_extensions([Gdm.UserVerifierChoiceList.interface_info().name]); - } catch(e) { - } - - this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA }); - - this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY, --- -2.14.3 - diff --git a/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch b/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch deleted file mode 100644 index 0acadd4..0000000 --- a/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 3ec91d51350bce7a139baf009f659008eb046fc8 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 15 Sep 2015 14:04:07 -0400 -Subject: [PATCH] magnifier: don't spew to console when focus moves around - -We currently ship at-spi2 2.8 in 7.2 but gnome-shell 3.14 which -depends on function names shipped in later versions of at-spi2. - -This commit works around the problem by using the names of the functions, -as they existed in 2.8. ---- - js/ui/magnifier.js | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) - -diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js -index 4e91155a5..68b24e1c2 100644 ---- a/js/ui/magnifier.js -+++ b/js/ui/magnifier.js -@@ -724,7 +724,13 @@ var ZoomRegion = new Lang.Class({ - }, - - _updateFocus: function(caller, event) { -- let component = event.source.get_component_iface(); -+ let component; -+ -+ if (typeof event.source.get_component_iface === 'function') -+ component = event.source.get_component_iface(); -+ else if (typeof event.source.get_component === 'function') -+ component = event.source.get_component(); -+ - if (!component || event.detail1 != 1) - return; - let extents; -@@ -741,7 +747,13 @@ var ZoomRegion = new Lang.Class({ - }, - - _updateCaret: function(caller, event) { -- let text = event.source.get_text_iface(); -+ let text; -+ -+ if (typeof event.source.get_text_iface === 'function') -+ text = event.source.get_text_iface(); -+ else if (typeof event.source.get_text === 'function') -+ text = event.source.get_text(); -+ - if (!text) - return; - let extents; --- -2.14.2 - diff --git a/SOURCES/0001-padOsd-Ensure-to-pick-pad-devices-only.patch b/SOURCES/0001-padOsd-Ensure-to-pick-pad-devices-only.patch deleted file mode 100644 index 9c6087a..0000000 --- a/SOURCES/0001-padOsd-Ensure-to-pick-pad-devices-only.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 0d9c742127f4a79416478b46a9fa5273701d92e3 Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho -Date: Fri, 19 Jan 2018 10:45:50 +0100 -Subject: [PATCH] padOsd: Ensure to pick pad devices only - -If the underlying X11 input driver creates multiple devices from a single -device node, we may end up picking up the wrong device. So, instead of -picking the first device based on node and bailing out if it's not a pad, -pick the first pad that has that device node, and bail out if there is -none. - -https://gitlab.gnome.org/GNOME/gnome-shell/issues/10 - -Closes: #10 ---- - js/ui/padOsd.js | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/js/ui/padOsd.js b/js/ui/padOsd.js -index 34ef96bb9..6e11ddfba 100644 ---- a/js/ui/padOsd.js -+++ b/js/ui/padOsd.js -@@ -977,12 +977,12 @@ var PadOsdService = new Lang.Class({ - let padDevice = null; - - devices.forEach(Lang.bind(this, function(device) { -- if (deviceNode == device.get_device_node()) -+ if (deviceNode == device.get_device_node() && -+ device.get_device_type() == Clutter.InputDeviceType.PAD_DEVICE) - padDevice = device; - })); - -- if (padDevice == null || -- padDevice.get_device_type() != Clutter.InputDeviceType.PAD_DEVICE) { -+ if (padDevice == null) { - invocation.return_error_literal(Gio.IOErrorEnum, - Gio.IOErrorEnum.CANCELLED, - "Invalid params"); --- -2.16.1 - diff --git a/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch b/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch index 07929ab..b5bbdb8 100644 --- a/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch +++ b/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch @@ -1,48 +1,115 @@ -From 7196f5d0a60243e218d6a906b9db4f3b6608b47c Mon Sep 17 00:00:00 2001 +From 519df156f73419d83fbd043e73abc8d3f93233b0 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 15 Jan 2014 16:45:34 -0500 Subject: [PATCH] panel: add an icon to the ActivitiesButton -Requested by brand --- - data/theme/gnome-shell-high-contrast.css | 3 +++ - data/theme/gnome-shell.css | 3 +++ + data/theme/gnome-shell-sass/_common.scss | 5 +++++ js/ui/panel.js | 9 ++++++++- - 3 files changed, 14 insertions(+), 1 deletion(-) + 2 files changed, 13 insertions(+), 1 deletion(-) -diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css -index 51477e713..e7b94624a 100644 ---- a/data/theme/gnome-shell-high-contrast.css -+++ b/data/theme/gnome-shell-high-contrast.css -@@ -688,6 +688,9 @@ StScrollBar { - -st-icon-style: symbolic; - margin-left: 4px; - margin-right: 4px; } -+ #panel .panel-button .panel-logo-icon { -+ padding-right: .4em; -+ icon-size: 1em; } - #panel .panel-button .system-status-icon, - #panel .panel-button .app-menu-icon > StIcon, - #panel .panel-button .popup-menu-arrow { -diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index 6aab70867..c1207dcd5 100644 ---- a/data/theme/gnome-shell.css -+++ b/data/theme/gnome-shell.css -@@ -688,6 +688,9 @@ StScrollBar { +diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss +index 1b0c20650..639f062f1 100644 +--- a/data/theme/gnome-shell-sass/_common.scss ++++ b/data/theme/gnome-shell-sass/_common.scss +@@ -749,60 +749,65 @@ StScrollBar { + -panel-corner-background-color: rgba(0, 0, 0, 0.35); + -panel-corner-border-width: 2px; + -panel-corner-border-color: transparent; + + &:active, &:overview, &:focus { + -panel-corner-border-color: lighten($selected_bg_color,5%); + } + + &.lock-screen, &.login-screen, &.unlock-screen { + -panel-corner-radius: 0; + -panel-corner-background-color: transparent; + -panel-corner-border-color: transparent; + } + } + + .panel-button { + -natural-hpadding: 12px; + -minimum-hpadding: 6px; + font-weight: bold; + color: #eee; + text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); + transition-duration: 100ms; + + .app-menu-icon { -st-icon-style: symbolic; margin-left: 4px; - margin-right: 4px; } -+ #panel .panel-button .panel-logo-icon { + margin-right: 4px; + //dimensions of the icon are hardcoded + } + ++ .panel-logo-icon { + padding-right: .4em; -+ icon-size: 1em; } - #panel .panel-button .system-status-icon, - #panel .panel-button .app-menu-icon > StIcon, - #panel .panel-button .popup-menu-arrow { ++ icon-size: 1em; ++ } ++ + .system-status-icon, + .app-menu-icon > StIcon, + .popup-menu-arrow { + icon-shadow: 0px 1px 2px rgba(0, 0, 0, 0.9); + } + + &:hover { + color: lighten($fg_color, 10%); + text-shadow: 0px 1px 6px rgba(0, 0, 0, 1); + + .system-status-icon, + .app-menu-icon > StIcon, + .popup-menu-arrow { + icon-shadow: 0px 1px 6px rgba(0, 0, 0, 1); + } + } + + &:active, &:overview, &:focus, &:checked { + // Trick due to St limitations. It needs a background to draw + // a box-shadow + background-color: rgba(0, 0, 0, 0.01); + box-shadow: inset 0 -2px 0px lighten($selected_bg_color,5%); + color: lighten($fg_color,10%); + + & > .system-status-icon { icon-shadow: black 0 2px 2px; } + } + + .system-status-icon { icon-size: 1.09em; padding: 0 5px; } + .unlock-screen &, + .login-screen &, diff --git a/js/ui/panel.js b/js/ui/panel.js -index d7c8397b5..3ec43210e 100644 +index 2f593247d..d1a572503 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js -@@ -409,11 +409,18 @@ var ActivitiesButton = new Lang.Class({ +@@ -379,65 +379,72 @@ var AppMenuButton = new Lang.Class({ + } + if (this._overviewShowingId > 0) { + Main.overview.disconnect(this._overviewShowingId); + this._overviewShowingId = 0; + } + if (this._showsAppMenuId > 0) { + this._gtkSettings.disconnect(this._showsAppMenuId); + this._showsAppMenuId = 0; + } + if (this._switchWorkspaceNotifyId > 0) { + global.window_manager.disconnect(this._switchWorkspaceNotifyId); + this._switchWorkspaceNotifyId = 0; + } + + this.parent(); + } + }); + + Signals.addSignalMethods(AppMenuButton.prototype); + + var ActivitiesButton = new Lang.Class({ + Name: 'ActivitiesButton', + Extends: PanelMenu.Button, + + _init() { + this.parent(0.0, null, true); + this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON; this.actor.name = 'panelActivities'; @@ -62,6 +129,33 @@ index d7c8397b5..3ec43210e 100644 this.actor.label_actor = this._label; + this.actor.connect('captured-event', this._onCapturedEvent.bind(this)); + this.actor.connect_after('key-release-event', this._onKeyRelease.bind(this)); + + Main.overview.connect('showing', () => { + this.actor.add_style_pseudo_class('overview'); + this.actor.add_accessible_state (Atk.StateType.CHECKED); + }); + Main.overview.connect('hiding', () => { + this.actor.remove_style_pseudo_class('overview'); + this.actor.remove_accessible_state (Atk.StateType.CHECKED); + }); + + this._xdndTimeOut = 0; + }, + + handleDragOver(source, actor, x, y, time) { + if (source != Main.xdndHandler) + return DND.DragMotionResult.CONTINUE; + + if (this._xdndTimeOut != 0) + Mainloop.source_remove(this._xdndTimeOut); + this._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT, () => { + this._xdndToggleOverview(actor); + }); + GLib.Source.set_name_by_id(this._xdndTimeOut, '[gnome-shell] this._xdndToggleOverview'); + + return DND.DragMotionResult.CONTINUE; -- -2.14.2 +2.17.1 diff --git a/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch b/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch index 4e78dcb..cbe3819 100644 --- a/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch +++ b/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch @@ -1,4 +1,4 @@ -From 7d9fa52a96cd5698ccb4773ffb71ab23b2a22a3d Mon Sep 17 00:00:00 2001 +From c4fc8a8db952a1ab349014db2e1429479ec8a7a5 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 3 Jul 2015 13:54:36 -0400 Subject: [PATCH] screenShield: unblank when inserting smartcard @@ -13,21 +13,21 @@ action to get the screen to unblank. 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js -index 9f3ff84ad..8d3eb43d4 100644 +index 2d8d9b3f6..ebba6c82a 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js -@@ -516,8 +516,10 @@ var ScreenShield = new Lang.Class({ +@@ -515,8 +515,10 @@ var ScreenShield = new Lang.Class({ this._smartcardManager = SmartcardManager.getSmartcardManager(); this._smartcardManager.connect('smartcard-inserted', - Lang.bind(this, function(manager, token) { + (manager, token) => { - if (this._isLocked && token.UsedToLogin) + if (this._isLocked && token.UsedToLogin) { + this._wakeUpScreen(); this._liftShield(true, 0); + } - })); + }); this._oVirtCredentialsManager = OVirt.getOVirtCredentialsManager(); -- -2.14.2 +1.8.3.1 diff --git a/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch b/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch index 5e3f861..ba1ef79 100644 --- a/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch +++ b/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch @@ -28,7 +28,7 @@ index 3fd24d275..d9f36b281 100644 ExtensionDownloader.checkForUpdates(); }, -+ LoadUserExtension: function(uuid) { ++ LoadUserExtension(uuid) { + let extension = ExtensionUtils.extensions[uuid]; + if (extension) + return true; @@ -46,7 +46,7 @@ index 3fd24d275..d9f36b281 100644 + ShellVersion: Config.PACKAGE_VERSION, - _extensionStateChanged: function(_, newState) { + _extensionStateChanged(_, newState) { -- 2.14.2 diff --git a/SOURCES/0001-system-don-t-throw-an-exception-if-power-off-disable.patch b/SOURCES/0001-system-don-t-throw-an-exception-if-power-off-disable.patch index 0c6d5fe..8b4ced5 100644 --- a/SOURCES/0001-system-don-t-throw-an-exception-if-power-off-disable.patch +++ b/SOURCES/0001-system-don-t-throw-an-exception-if-power-off-disable.patch @@ -1,6 +1,6 @@ -From 3ff1be9fe127a51092b1f5b97d65af7fff75041d Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Mon, 13 Nov 2017 14:17:18 -0500 +From 5bd84b34622a3e5919e979b99d1d4872d355d18d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Mon, 4 Jun 2018 13:48:02 -0400 Subject: [PATCH] system: don't throw an exception if power off disabled --- @@ -8,18 +8,18 @@ Subject: [PATCH] system: don't throw an exception if power off disabled 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/js/ui/status/system.js b/js/ui/status/system.js -index 2a8ca47..37d140a 100644 +index 68a0b4b5b..2ab38419f 100644 --- a/js/ui/status/system.js +++ b/js/ui/status/system.js @@ -40,66 +40,69 @@ var AltSwitcher = new Lang.Class({ - this._clickAction.connect('long-press', Lang.bind(this, this._onLongPress)); + this._clickAction.connect('long-press', this._onLongPress.bind(this)); this.actor = new St.Bin(); - this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); + this.actor.connect('destroy', this._onDestroy.bind(this)); this.actor.connect('notify::mapped', () => { this._flipped = false; }); }, - _sync: function() { + _sync() { let childToShow = null; if (this._standard.visible && this._alternate.visible) { @@ -65,14 +65,14 @@ index 2a8ca47..37d140a 100644 this.actor.visible = (childToShow != null); }, - _onDestroy: function() { + _onDestroy() { if (this._capturedEventId > 0) { global.stage.disconnect(this._capturedEventId); this._capturedEventId = 0; } }, - _onCapturedEvent: function(actor, event) { + _onCapturedEvent(actor, event) { let type = event.type(); if (type == Clutter.EventType.KEY_PRESS || type == Clutter.EventType.KEY_RELEASE) { let key = event.get_key_symbol(); @@ -83,9 +83,9 @@ index 2a8ca47..37d140a 100644 return Clutter.EVENT_PROPAGATE; }, - _onLongPress: function(action, actor, state) { + _onLongPress(action, actor, state) { if (state == Clutter.LongPressState.QUERY || state == Clutter.LongPressState.CANCEL) -- -2.14.3 +2.17.1 diff --git a/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch b/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch index f5ff41f..395c2a0 100644 --- a/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch +++ b/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch @@ -1,4 +1,4 @@ -From 8d085a574b5b5d1055451a1b430fcf5cb9af4859 Mon Sep 17 00:00:00 2001 +From aa5dbcf4cd7caa9ff1ba2c2c8b65f007314f521a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 14 Mar 2017 17:04:36 +0100 Subject: [PATCH] windowMenu: Bring back workspaces submenu for static @@ -13,12 +13,12 @@ are used. 1 file changed, 16 insertions(+) diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js -index 7aa57beb3..8751c4c4d 100644 +index f0e564b7e..8c97a1eec 100644 --- a/js/ui/windowMenu.js +++ b/js/ui/windowMenu.js -@@ -119,6 +119,22 @@ var WindowMenu = new Lang.Class({ - window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN)); - })); +@@ -123,6 +123,22 @@ var WindowMenu = new Lang.Class({ + window.change_workspace(workspace.get_neighbor(dir)); + }); } + + let nWorkspaces = global.screen.n_workspaces; @@ -30,9 +30,9 @@ index 7aa57beb3..8751c4c4d 100644 + for (let i = 0; i < nWorkspaces; i++) { + let index = i; + let name = Meta.prefs_get_workspace_name(i); -+ let subitem = item.menu.addAction(name, Lang.bind(this, function() { ++ let subitem = item.menu.addAction(name, () => { + window.change_workspace_by_index(index, false); -+ })); ++ }); + subitem.setSensitive(currentIndex != i); + } + } @@ -40,5 +40,5 @@ index 7aa57beb3..8751c4c4d 100644 } -- -2.14.2 +2.17.1 diff --git a/SOURCES/0002-Revert-build-Remove-included-Makefiles-as-well.patch b/SOURCES/0002-Revert-build-Remove-included-Makefiles-as-well.patch deleted file mode 100644 index cb02016..0000000 --- a/SOURCES/0002-Revert-build-Remove-included-Makefiles-as-well.patch +++ /dev/null @@ -1,299 +0,0 @@ -From 878e3442d6da7f38a872336de08defeedfcb46c4 Mon Sep 17 00:00:00 2001 -From: Olivier Fourdan -Date: Fri, 15 Sep 2017 10:44:21 +0200 -Subject: [PATCH 2/2] Revert "build: Remove included Makefiles as well" - -This reverts commit 6d704cddea54f6398b12ac626006af9a538e2368. ---- - src/Makefile-calendar-server.am | 39 ++++++++++ - src/Makefile-hotplug-sniffer.am | 23 ++++++ - src/Makefile-st.am | 169 ++++++++++++++++++++++++++++++++++++++++ - src/Makefile-tray.am | 24 ++++++ - 4 files changed, 255 insertions(+) - create mode 100644 src/Makefile-calendar-server.am - create mode 100644 src/Makefile-hotplug-sniffer.am - create mode 100644 src/Makefile-st.am - create mode 100644 src/Makefile-tray.am - -diff --git a/src/Makefile-calendar-server.am b/src/Makefile-calendar-server.am -new file mode 100644 -index 000000000..9ec04eb07 ---- /dev/null -+++ b/src/Makefile-calendar-server.am -@@ -0,0 +1,39 @@ -+service_in_files += calendar-server/org.gnome.Shell.CalendarServer.service.in -+ -+libexec_PROGRAMS += gnome-shell-calendar-server -+ -+gnome_shell_calendar_server_SOURCES = \ -+ calendar-server/calendar-debug.h \ -+ calendar-server/calendar-sources.c calendar-server/calendar-sources.h \ -+ calendar-server/gnome-shell-calendar-server.c \ -+ $(NULL) -+ -+desktopdir=$(datadir)/applications -+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) -+desktop_in_files = calendar-server/evolution-calendar.desktop.in -+ -+%.desktop:%.desktop.in -+ @$(MKDIR_P) $(builddir)/calendar-server -+ $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ -+ -+gnome_shell_calendar_server_CFLAGS = \ -+ -I$(top_srcdir)/src \ -+ -DPREFIX=\""$(prefix)"\" \ -+ -DLIBDIR=\""$(libdir)"\" \ -+ -DDATADIR=\""$(datadir)"\" \ -+ -DG_LOG_DOMAIN=\"ShellCalendarServer\" \ -+ $(CALENDAR_SERVER_CFLAGS) \ -+ $(NULL) -+ -+gnome_shell_calendar_server_LDADD = \ -+ $(CALENDAR_SERVER_LIBS) \ -+ $(NULL) -+ -+EXTRA_DIST += \ -+ calendar-server/README \ -+ calendar-server/org.gnome.Shell.CalendarServer.service.in \ -+ $(desktop_in_files) \ -+ $(NULL) -+ -+CLEANFILES += \ -+ $(desktop_DATA) -diff --git a/src/Makefile-hotplug-sniffer.am b/src/Makefile-hotplug-sniffer.am -new file mode 100644 -index 000000000..4a475c119 ---- /dev/null -+++ b/src/Makefile-hotplug-sniffer.am -@@ -0,0 +1,23 @@ -+service_in_files += hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service.in -+ -+libexec_PROGRAMS += gnome-shell-hotplug-sniffer -+ -+gnome_shell_hotplug_sniffer_SOURCES = \ -+ hotplug-sniffer/hotplug-mimetypes.h \ -+ hotplug-sniffer/shell-mime-sniffer.h \ -+ hotplug-sniffer/shell-mime-sniffer.c \ -+ hotplug-sniffer/hotplug-sniffer.c \ -+ $(NULL) -+ -+gnome_shell_hotplug_sniffer_CFLAGS = \ -+ -I$(top_srcdir)/src \ -+ $(SHELL_HOTPLUG_SNIFFER_CFLAGS) \ -+ $(NULL) -+ -+gnome_shell_hotplug_sniffer_LDFLAGS = \ -+ $(SHELL_HOTPLUG_SNIFFER_LIBS) \ -+ $(NULL) -+ -+EXTRA_DIST += \ -+ hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service.in \ -+ $(NULL) -diff --git a/src/Makefile-st.am b/src/Makefile-st.am -new file mode 100644 -index 000000000..f44598e12 ---- /dev/null -+++ b/src/Makefile-st.am -@@ -0,0 +1,169 @@ -+st_cflags = \ -+ -I$(top_srcdir)/src \ -+ -DPREFIX=\""$(prefix)"\" \ -+ -DLIBDIR=\""$(libdir)"\" \ -+ -DG_LOG_DOMAIN=\"St\" \ -+ -DST_COMPILATION \ -+ -DCLUTTER_ENABLE_EXPERIMENTAL_API \ -+ -DCOGL_ENABLE_EXPERIMENTAL_API \ -+ -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \ -+ $(ST_CFLAGS) \ -+ $(NULL) -+ -+st_built_sources = \ -+ st-enum-types.h \ -+ st-enum-types.c -+ -+BUILT_SOURCES += $(st_built_sources) -+ -+EXTRA_DIST += \ -+ st/test-theme.css \ -+ st/st-enum-types.h.in \ -+ st/st-enum-types.c.in -+ -+CLEANFILES += stamp-st-enum-types.h -+ -+st-enum-types.h: stamp-st-enum-types.h Makefile -+ @true -+stamp-st-enum-types.h: $(source_h) $(srcdir)/st/st-enum-types.h.in $(st_source_h) -+ $(AM_V_GEN) ( \ -+ $(GLIB_MKENUMS) \ -+ --template $(srcdir)/st/st-enum-types.h.in \ -+ $(addprefix $(srcdir)/, $(st_source_h)) ) >> $@.tmp && \ -+ (cmp -s $@.tmp st-enum-types.h || cp $@.tmp st-enum-types.h) && \ -+ rm -f $@.tmp && \ -+ echo timestamp > $(@F) -+ -+st-enum-types.c: stamp-st-enum-types.h $(srcdir)/st/st-enum-types.c.in -+ $(AM_V_GEN) ( \ -+ $(GLIB_MKENUMS) \ -+ --template $(srcdir)/st/st-enum-types.c.in \ -+ $(addprefix $(srcdir)/,$(st_source_h)) ) >> $@.tmp && \ -+ cp $@.tmp $@ && \ -+ rm -f $@.tmp -+ -+# please, keep this sorted alphabetically -+st_source_h = \ -+ st/st-adjustment.h \ -+ st/st-bin.h \ -+ st/st-border-image.h \ -+ st/st-box-layout.h \ -+ st/st-box-layout-child.h \ -+ st/st-button.h \ -+ st/st-clipboard.h \ -+ st/st-drawing-area.h \ -+ st/st-entry.h \ -+ st/st-focus-manager.h \ -+ st/st-generic-accessible.h \ -+ st/st-icon.h \ -+ st/st-icon-colors.h \ -+ st/st-im-text.h \ -+ st/st-label.h \ -+ st/st-private.h \ -+ st/st-scrollable.h \ -+ st/st-scroll-bar.h \ -+ st/st-scroll-view.h \ -+ st/st-shadow.h \ -+ st/st-texture-cache.h \ -+ st/st-theme.h \ -+ st/st-theme-context.h \ -+ st/st-theme-node.h \ -+ st/st-types.h \ -+ st/st-widget.h \ -+ st/st-widget-accessible.h \ -+ $(NULL) -+ -+st.h: stamp-st.h -+ @true -+stamp-st.h: Makefile -+ $(AM_V_GEN) (echo "#define ST_H_INSIDE 1"; \ -+ for name in $(st_source_h); do \ -+ echo "#include <"$$name">"; \ -+ done; echo "#undef ST_H_INSIDE") > $@.tmp && \ -+ (cmp -s $@.tmp st.h || cp $@.tmp st.h) && \ -+ rm -f $@.tmp && \ -+ echo timestamp > $(@F) -+ -+BUILT_SOURCES += st.h -+CLEANFILES += stamp-st.h -+ -+st-scroll-view-fade-generated.c: stamp-st-scroll-view-fade-generated.c -+ @true -+stamp-st-scroll-view-fade-generated.c: $(srcdir)/st/st-scroll-view-fade.glsl $(srcdir)/data-to-c.pl -+ $(AM_V_GEN) $(srcdir)/data-to-c.pl $(srcdir)/st/st-scroll-view-fade.glsl st_scroll_view_fade_glsl > $@.tmp && \ -+ (cmp -s $@.tmp st-scroll-view-fade-generated.c || cp $@.tmp st-scroll-view-fade-generated.c) && \ -+ rm -f $@.tmp && \ -+ echo timestamp > $(@F) -+ -+BUILT_SOURCES += st-scroll-view-fade-generated.c -+CLEANFILES += stamp-st-scroll-view-fade-generated.c -+EXTRA_DIST += \ -+ st/st-scroll-view-fade.glsl \ -+ data-to-c.pl \ -+ $(NULL) -+ -+st_source_private_h = \ -+ st/st-private.h \ -+ st/st-theme-private.h \ -+ st/st-theme-node-private.h \ -+ st/st-theme-node-transition.h -+ -+# please, keep this sorted alphabetically -+st_source_c = \ -+ st/st-adjustment.c \ -+ st/st-bin.c \ -+ st/st-border-image.c \ -+ st/st-box-layout.c \ -+ st/st-box-layout-child.c \ -+ st/st-button.c \ -+ st/st-clipboard.c \ -+ st/st-drawing-area.c \ -+ st/st-entry.c \ -+ st/st-focus-manager.c \ -+ st/st-generic-accessible.c \ -+ st/st-icon.c \ -+ st/st-icon-colors.c \ -+ st/st-im-text.c \ -+ st/st-label.c \ -+ st/st-private.c \ -+ st/st-scrollable.c \ -+ st/st-scroll-bar.c \ -+ st/st-scroll-view.c \ -+ st/st-shadow.c \ -+ st/st-texture-cache.c \ -+ st/st-theme.c \ -+ st/st-theme-context.c \ -+ st/st-theme-node.c \ -+ st/st-theme-node-drawing.c \ -+ st/st-theme-node-transition.c \ -+ st/st-widget.c \ -+ $(NULL) -+ -+st_non_gir_sources = \ -+ st/st-scroll-view-fade.c \ -+ st/st-scroll-view-fade.h \ -+ $(NULL) -+ -+noinst_LTLIBRARIES += libst-1.0.la -+ -+libst_1_0_la_LIBADD = -lm $(ST_LIBS) -+libst_1_0_la_SOURCES = \ -+ $(st_source_c) \ -+ $(st_non_gir_sources) \ -+ $(st_source_private_h) \ -+ $(st_source_private_c) \ -+ $(st_source_h) \ -+ $(NULL) -+nodist_libst_1_0_la_SOURCES = \ -+ $(st_built_sources) \ -+ st.h \ -+ $(NULL) -+libst_1_0_la_CPPFLAGS = $(st_cflags) -+libst_1_0_la_LDFLAGS = $(LDADD) -+ -+noinst_PROGRAMS += test-theme -+ -+test_theme_CPPFLAGS = $(st_cflags) -+test_theme_LDADD = libst-1.0.la -+ -+test_theme_SOURCES = st/test-theme.c -diff --git a/src/Makefile-tray.am b/src/Makefile-tray.am -new file mode 100644 -index 000000000..b814c1f7b ---- /dev/null -+++ b/src/Makefile-tray.am -@@ -0,0 +1,24 @@ -+tray_cflags = \ -+ -I$(top_srcdir)/src \ -+ -DG_LOG_DOMAIN=\"notification_area\" \ -+ $(TRAY_CFLAGS) \ -+ $(NULL) -+ -+# please, keep this sorted alphabetically -+tray_source = \ -+ tray/na-tray-child.c \ -+ tray/na-tray-child.h \ -+ tray/na-tray-manager.c \ -+ tray/na-tray-manager.h \ -+ $(NULL) -+ -+noinst_LTLIBRARIES += libtray.la -+ -+libtray_la_LIBADD = $(TRAY_LIBS) -+libtray_la_SOURCES = \ -+ $(tray_source) \ -+ $(NULL) -+libtray_la_CPPFLAGS = $(tray_cflags) -+libtray_la_LDFLAGS = $(LDADD) -+ -+CLEANFILES += $(TRAY_STAMP_FILES) $(BUILT_SOURCES) --- -2.13.5 - diff --git a/SOURCES/0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch b/SOURCES/0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch index 1c1bbd7..2e8eb33 100644 --- a/SOURCES/0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch +++ b/SOURCES/0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch @@ -1,19 +1,18 @@ -From 1383483a7c9707c2528c5a47fd71217cf253c6ff Mon Sep 17 00:00:00 2001 +From e5214fb2992c1ef5d8bde63295d9f54dbb3daa24 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 17 Jul 2017 16:48:03 -0400 -Subject: [PATCH 2/2] gdmUtil: enable support for GDM's ChoiceList PAM - extension +Subject: [PATCH] gdmUtil: enable support for GDM's ChoiceList PAM extension This commit hooks up support for GDM's ChoiceList PAM extension. --- - js/gdm/authPrompt.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++- - js/gdm/loginDialog.js | 5 ++++ - js/gdm/util.js | 28 +++++++++++++++++++ - js/ui/unlockDialog.js | 9 ++++++- + js/gdm/authPrompt.js | 74 ++++++++++++++++++++++++++++++++++++++++++- + js/gdm/loginDialog.js | 5 +++ + js/gdm/util.js | 28 ++++++++++++++++ + js/ui/unlockDialog.js | 9 +++++- 4 files changed, 114 insertions(+), 2 deletions(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 366f34687..7f23f0087 100644 +index e44281117..27a55246a 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -9,6 +9,7 @@ const Signals = imports.signals; @@ -26,13 +25,13 @@ index 366f34687..7f23f0087 100644 const Meta = imports.gi.Meta; @@ -61,6 +62,7 @@ var AuthPrompt = new Lang.Class({ - this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion)); - this._userVerifier.connect('show-message', Lang.bind(this, this._onShowMessage)); -+ this._userVerifier.connect('show-choice-list', Lang.bind(this, this._onShowChoiceList)); - this._userVerifier.connect('verification-failed', Lang.bind(this, this._onVerificationFailed)); - this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete)); - this._userVerifier.connect('reset', Lang.bind(this, this._onReset)); -@@ -125,6 +127,28 @@ var AuthPrompt = new Lang.Class({ + this._userVerifier.connect('ask-question', this._onAskQuestion.bind(this)); + this._userVerifier.connect('show-message', this._onShowMessage.bind(this)); ++ this._userVerifier.connect('show-choice-list', this._onShowChoiceList.bind(this)); + this._userVerifier.connect('verification-failed', this._onVerificationFailed.bind(this)); + this._userVerifier.connect('verification-complete', this._onVerificationComplete.bind(this)); + this._userVerifier.connect('reset', this._onReset.bind(this)); +@@ -123,6 +125,28 @@ var AuthPrompt = new Lang.Class({ this.actor.add(this._timedLoginIndicator); @@ -61,11 +60,11 @@ index 366f34687..7f23f0087 100644 this._message = new St.Label({ opacity: 0, styleClass: 'login-dialog-message' }); this._message.clutter_text.line_wrap = true; -@@ -276,6 +300,21 @@ var AuthPrompt = new Lang.Class({ +@@ -266,6 +290,21 @@ var AuthPrompt = new Lang.Class({ this.emit('prompted'); }, -+ _onShowChoiceList: function(userVerifier, serviceName, promptMessage, choiceList) { ++ _onShowChoiceList(userVerifier, serviceName, promptMessage, choiceList) { + if (this._queryingService) + this.clear(); + @@ -80,19 +79,19 @@ index 366f34687..7f23f0087 100644 + this.emit('prompted'); + }, + - _onOVirtUserAuthenticated: function() { + _onOVirtUserAuthenticated() { if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED) this.reset(); -@@ -404,6 +443,8 @@ var AuthPrompt = new Lang.Class({ - clear: function() { +@@ -394,6 +433,8 @@ var AuthPrompt = new Lang.Class({ + clear() { this._entry.text = ''; this.stopSpinning(); + this._authList.clear(); + this._authList.actor.hide(); }, - setPasswordChar: function(passwordChar) { -@@ -419,12 +460,42 @@ var AuthPrompt = new Lang.Class({ + setPasswordChar(passwordChar) { +@@ -409,12 +450,42 @@ var AuthPrompt = new Lang.Class({ this._label.set_text(question); @@ -103,7 +102,7 @@ index 366f34687..7f23f0087 100644 this._entry.grab_key_focus(); }, -+ _fadeInChoiceList: function() { ++ _fadeInChoiceList() { + this._authList.actor.opacity = 0; + this._authList.actor.show(); + this._authList.actor.reactive = false; @@ -117,7 +116,7 @@ index 366f34687..7f23f0087 100644 + }); + }, + -+ setChoiceList: function(promptMessage, choiceList) { ++ setChoiceList(promptMessage, choiceList) { + this._authList.clear(); + this._authList.label.text = promptMessage; + for (let key in choiceList) { @@ -132,10 +131,10 @@ index 366f34687..7f23f0087 100644 + this._fadeInChoiceList(); + }, + - getAnswer: function() { + getAnswer() { let text; -@@ -460,6 +531,7 @@ var AuthPrompt = new Lang.Class({ +@@ -450,6 +521,7 @@ var AuthPrompt = new Lang.Class({ else this._message.remove_style_class_name('login-dialog-message-hint'); @@ -143,20 +142,20 @@ index 366f34687..7f23f0087 100644 if (message) { Tweener.removeTweens(this._message); this._message.text = message; -@@ -475,7 +547,7 @@ var AuthPrompt = new Lang.Class({ +@@ -465,7 +537,7 @@ var AuthPrompt = new Lang.Class({ }, - updateSensitivity: function(sensitive) { + updateSensitivity(sensitive) { - this._updateNextButtonSensitivity(sensitive && (this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING)); + this._updateNextButtonSensitivity(sensitive && !this._authList.actor.visible && (this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING)); this._entry.reactive = sensitive; this._entry.clutter_text.editable = sensitive; }, diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 6f6de00da..764a96e06 100644 +index 65d9edf1a..912c0e0ca 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js -@@ -435,6 +435,11 @@ var LoginDialog = new Lang.Class({ +@@ -418,6 +418,11 @@ var LoginDialog = new Lang.Class({ this._userManager = AccountsService.UserManager.get_default() this._gdmClient = new Gdm.Client(); @@ -169,7 +168,7 @@ index 6f6de00da..764a96e06 100644 this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY, diff --git a/js/gdm/util.js b/js/gdm/util.js -index 83a12fb6c..9fc61f55a 100644 +index f5f9d5e5d..04a0cb9bf 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -200,6 +200,10 @@ var ShellUserVerifier = new Lang.Class({ @@ -187,14 +186,14 @@ index 83a12fb6c..9fc61f55a 100644 this._oVirtCredentialsManager = null; }, -+ selectChoice: function(serviceName, key) { ++ selectChoice(serviceName, key) { + this._userVerifierChoiceList.call_select_choice(serviceName, key, this._cancellable, null); + }, + - answerQuery: function(serviceName, answer) { + answerQuery(serviceName, answer) { if (!this.hasPendingMessages) { this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null); -@@ -368,6 +376,11 @@ var ShellUserVerifier = new Lang.Class({ +@@ -367,6 +375,11 @@ var ShellUserVerifier = new Lang.Class({ return; } @@ -206,7 +205,7 @@ index 83a12fb6c..9fc61f55a 100644 this.reauthenticating = true; this._connectSignals(); this._beginVerification(); -@@ -385,6 +398,11 @@ var ShellUserVerifier = new Lang.Class({ +@@ -384,6 +397,11 @@ var ShellUserVerifier = new Lang.Class({ return; } @@ -218,32 +217,32 @@ index 83a12fb6c..9fc61f55a 100644 this._connectSignals(); this._beginVerification(); this._hold.release(); -@@ -398,6 +416,9 @@ var ShellUserVerifier = new Lang.Class({ - this._userVerifier.connect('conversation-stopped', Lang.bind(this, this._onConversationStopped)); - this._userVerifier.connect('reset', Lang.bind(this, this._onReset)); - this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete)); +@@ -397,6 +415,9 @@ var ShellUserVerifier = new Lang.Class({ + this._userVerifier.connect('conversation-stopped', this._onConversationStopped.bind(this)); + this._userVerifier.connect('reset', this._onReset.bind(this)); + this._userVerifier.connect('verification-complete', this._onVerificationComplete.bind(this)); + + if (this._userVerifierChoiceList) -+ this._userVerifierChoiceList.connect('choice-query', Lang.bind(this, this._onChoiceListQuery)); ++ this._userVerifierChoiceList.connect('choice-query', this._onChoiceListQuery.bind(this)); }, - _getForegroundService: function() { -@@ -474,6 +495,13 @@ var ShellUserVerifier = new Lang.Class({ + _getForegroundService() { +@@ -473,6 +494,13 @@ var ShellUserVerifier = new Lang.Class({ this._startService(FINGERPRINT_SERVICE_NAME); }, -+ _onChoiceListQuery: function(client, serviceName, promptMessage, list) { ++ _onChoiceListQuery(client, serviceName, promptMessage, list) { + if (!this.serviceIsForeground(serviceName)) + return; + + this.emit('show-choice-list', serviceName, promptMessage, list.deep_unpack()); + }, + - _onInfo: function(client, serviceName, info) { + _onInfo(client, serviceName, info) { if (this.serviceIsForeground(serviceName)) { this._queueMessage(info, MessageType.INFO); diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js -index baead5a6f..d525959c5 100644 +index 1adaf417e..b5272be20 100644 --- a/js/ui/unlockDialog.js +++ b/js/ui/unlockDialog.js @@ -51,7 +51,14 @@ var UnlockDialog = new Lang.Class({ @@ -259,9 +258,9 @@ index baead5a6f..d525959c5 100644 + } + + this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_ONLY); - this._authPrompt.connect('failed', Lang.bind(this, this._fail)); - this._authPrompt.connect('cancelled', Lang.bind(this, this._fail)); - this._authPrompt.connect('reset', Lang.bind(this, this._onReset)); + this._authPrompt.connect('failed', this._fail.bind(this)); + this._authPrompt.connect('cancelled', this._fail.bind(this)); + this._authPrompt.connect('reset', this._onReset.bind(this)); -- -2.14.2 +2.17.1 diff --git a/SOURCES/0003-build-Remove-check-for-missing-disthook.patch b/SOURCES/0003-build-Remove-check-for-missing-disthook.patch deleted file mode 100644 index b5302d3..0000000 --- a/SOURCES/0003-build-Remove-check-for-missing-disthook.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 49102593eb5776e2edc535147e8277cdcad1e5d9 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Fri, 6 Oct 2017 18:58:21 +0200 -Subject: [PATCH] build: Remove check-for-missing disthook - -The script has been removed upstream, but the re-added autotools -support still references it; we don't have any use for a disthook -downstream, so just update the Makefile accordingly. ---- - Makefile.am | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index eba7d2b28..107a00a05 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -14,8 +14,7 @@ endif - EXTRA_DIST = \ - .project \ - .settings \ -- autogen.sh \ -- tools/check-for-missing.py -+ autogen.sh - - # These are files checked into Git that we don't want to distribute - DIST_EXCLUDE = \ -@@ -26,8 +25,4 @@ DIST_EXCLUDE = \ - MAINTAINERS \ - tools/build/* - --distcheck-hook: -- @echo "Checking disted files against files in git" -- @$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE) -- - DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man --- -2.14.2 - diff --git a/SOURCES/0004-Revert-build-Use-new-mkenums_simple-function.patch b/SOURCES/0004-Revert-build-Use-new-mkenums_simple-function.patch deleted file mode 100644 index a52a104..0000000 --- a/SOURCES/0004-Revert-build-Use-new-mkenums_simple-function.patch +++ /dev/null @@ -1,200 +0,0 @@ -From 20f85200472835180a6302928f05b86063dfb00d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Tue, 24 Oct 2017 02:45:00 +0200 -Subject: [PATCH 4/4] Revert "build: Use new mkenums_simple() function" - -This reverts commit ab0e98dfdd49d73373eb4367a299593b96211f80. ---- - src/meson.build | 6 ++++-- - src/shell-enum-types.c.in | 30 ++++++++++++++++++++++++++++++ - src/shell-enum-types.h.in | 25 +++++++++++++++++++++++++ - src/st/meson.build | 8 +++----- - src/st/st-enum-types.c.in | 33 +++++++++++++++++++++++++++++++++ - src/st/st-enum-types.h.in | 29 +++++++++++++++++++++++++++++ - 6 files changed, 124 insertions(+), 7 deletions(-) - create mode 100644 src/shell-enum-types.c.in - create mode 100644 src/shell-enum-types.h.in - create mode 100644 src/st/st-enum-types.c.in - create mode 100644 src/st/st-enum-types.h.in - -diff --git a/src/meson.build b/src/meson.build -index 3e5557351..1e88bf5d5 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -182,8 +182,10 @@ if enable_recorder - endif - - --libshell_enums = gnome.mkenums_simple('shell-enum-types', -- sources: libshell_public_headers -+libshell_enums = gnome.mkenums('shell-enum-types', -+ sources: libshell_public_headers, -+ c_template: 'shell-enum-types.c.in', -+ h_template: 'shell-enum-types.h.in' - ) - - libshell_gir_sources = [ -diff --git a/src/shell-enum-types.c.in b/src/shell-enum-types.c.in -new file mode 100644 -index 000000000..b350d0016 ---- /dev/null -+++ b/src/shell-enum-types.c.in -@@ -0,0 +1,30 @@ -+/*** BEGIN file-header ***/ -+#include "shell-enum-types.h" -+/*** END file-header ***/ -+ -+/*** BEGIN file-production ***/ -+/* enumerations from "@filename@" */ -+#include "@filename@" -+/*** END file-production ***/ -+ -+/*** BEGIN value-header ***/ -+GType -+@enum_name@_get_type(void) { -+ static GType enum_type_id = 0; -+ if (G_UNLIKELY (!enum_type_id)) -+ { -+ static const G@Type@Value values[] = { -+/*** END value-header ***/ -+ -+/*** BEGIN value-production ***/ -+ { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, -+/*** END value-production ***/ -+ -+/*** BEGIN value-tail ***/ -+ { 0, NULL, NULL } -+ }; -+ enum_type_id = g_@type@_register_static("@EnumName@", values); -+ } -+ return enum_type_id; -+} -+/*** END value-tail ***/ -diff --git a/src/shell-enum-types.h.in b/src/shell-enum-types.h.in -new file mode 100644 -index 000000000..a6aea7d17 ---- /dev/null -+++ b/src/shell-enum-types.h.in -@@ -0,0 +1,25 @@ -+/*** BEGIN file-header ***/ -+#ifndef __SHELL_ENUM_TYPES_H__ -+#define __SHELL_ENUM_TYPES_H__ -+ -+#include -+ -+G_BEGIN_DECLS -+ -+/*** END file-header ***/ -+ -+/*** BEGIN file-production ***/ -+/* enumerations from "@filename@" */ -+/*** END file-production ***/ -+ -+/*** BEGIN file-tail ***/ -+G_END_DECLS -+ -+#endif /* !__SHELL_ENUM_TYPES_H__ */ -+/*** END file-tail ***/ -+ -+/*** BEGIN value-header ***/ -+GType @enum_name@_get_type (void) G_GNUC_CONST; -+#define SHELL_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) -+ -+/*** END value-header ***/ -diff --git a/src/st/meson.build b/src/st/meson.build -index fa9d6bbf4..46378a2f1 100644 ---- a/src/st/meson.build -+++ b/src/st/meson.build -@@ -82,12 +82,10 @@ st_sources = [ - 'st-widget.c' - ] - --st_enums = gnome.mkenums_simple('st-enum-types', -+st_enums = gnome.mkenums('st-enum-types', - sources: st_headers, -- header_prefix: ''' --#if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION) --#error "Only can be included directly.h" --#endif''' -+ c_template: 'st-enum-types.c.in', -+ h_template: 'st-enum-types.h.in' - ) - - st_gir_sources = st_sources + st_private_headers + st_headers + st_enums -diff --git a/src/st/st-enum-types.c.in b/src/st/st-enum-types.c.in -new file mode 100644 -index 000000000..bf0c54470 ---- /dev/null -+++ b/src/st/st-enum-types.c.in -@@ -0,0 +1,33 @@ -+/*** BEGIN file-header ***/ -+#ifndef ST_COMPILATION -+#define ST_COMPILATION -+#endif -+#include "st-enum-types.h" -+/*** END file-header ***/ -+ -+/*** BEGIN file-production ***/ -+/* enumerations from "@filename@" */ -+#include "@filename@" -+/*** END file-production ***/ -+ -+/*** BEGIN value-header ***/ -+GType -+@enum_name@_get_type(void) { -+ static GType enum_type_id = 0; -+ if (G_UNLIKELY (!enum_type_id)) -+ { -+ static const G@Type@Value values[] = { -+/*** END value-header ***/ -+ -+/*** BEGIN value-production ***/ -+ { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, -+/*** END value-production ***/ -+ -+/*** BEGIN value-tail ***/ -+ { 0, NULL, NULL } -+ }; -+ enum_type_id = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); -+ } -+ return enum_type_id; -+} -+/*** END value-tail ***/ -diff --git a/src/st/st-enum-types.h.in b/src/st/st-enum-types.h.in -new file mode 100644 -index 000000000..b3dd0e74e ---- /dev/null -+++ b/src/st/st-enum-types.h.in -@@ -0,0 +1,29 @@ -+/*** BEGIN file-header ***/ -+#if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION) -+#error "Only can be included directly.h" -+#endif -+ -+#ifndef __ST_ENUM_TYPES_H__ -+#define __ST_ENUM_TYPES_H__ -+ -+#include -+ -+G_BEGIN_DECLS -+ -+/*** END file-header ***/ -+ -+/*** BEGIN file-production ***/ -+/* enumerations from "@filename@" */ -+/*** END file-production ***/ -+ -+/*** BEGIN file-tail ***/ -+G_END_DECLS -+ -+#endif /* !__ST_ENUM_TYPES_H__ */ -+/*** END file-tail ***/ -+ -+/*** BEGIN value-header ***/ -+GType @enum_name@_get_type (void) G_GNUC_CONST; -+#define ST_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) -+ -+/*** END value-header ***/ --- -2.14.2 - diff --git a/SOURCES/allow-timed-login-with-no-user-list.patch b/SOURCES/allow-timed-login-with-no-user-list.patch index 279a55b..8cdeb14 100644 --- a/SOURCES/allow-timed-login-with-no-user-list.patch +++ b/SOURCES/allow-timed-login-with-no-user-list.patch @@ -1,45 +1,38 @@ -From fb872747e5697098c87e97bab13c4095b653053b Mon Sep 17 00:00:00 2001 +From 10a47a23aab29d805a4e87ef181d4141d5500707 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 19 Apr 2016 13:12:46 -0400 Subject: [PATCH] loginDialog: allow timed login with disabled user list +At the moment the timed login feature is implemented in the user list. +If there's no user list, we don't show the indicator anywhere and +don't proceed with timed login. + +This commit allows timed login to work when the user list is disabled. +It accomplishes this by putting the timed login indicator on the +auth prompt, in that scenario. --- - data/theme/gnome-shell-high-contrast.css | 3 +++ - data/theme/gnome-shell.css | 3 +++ - js/gdm/authPrompt.js | 41 ++++++++++++++++++++++++++++++++ - js/gdm/loginDialog.js | 29 +++++++++++++++++++--- - 4 files changed, 73 insertions(+), 3 deletions(-) + data/theme/gnome-shell-sass/_common.scss | 4 +++ + js/gdm/authPrompt.js | 40 ++++++++++++++++++++++++ + js/gdm/loginDialog.js | 28 +++++++++++++++-- + 3 files changed, 70 insertions(+), 2 deletions(-) -diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css -index e7b94624a..364725de3 100644 ---- a/data/theme/gnome-shell-high-contrast.css -+++ b/data/theme/gnome-shell-high-contrast.css -@@ -1716,6 +1716,9 @@ StScrollBar { - padding-bottom: 12px; - spacing: 8px; - width: 23em; } -+ .login-dialog-prompt-layout .login-dialog-timed-login-indicator { -+ height: 2px; -+ background-color: #8b8b8b; } - - .login-dialog-prompt-label { - color: #bebeb6; -diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index c1207dcd5..5d754a2bb 100644 ---- a/data/theme/gnome-shell.css -+++ b/data/theme/gnome-shell.css -@@ -1716,6 +1716,9 @@ StScrollBar { - padding-bottom: 12px; - spacing: 8px; - width: 23em; } -+ .login-dialog-prompt-layout .login-dialog-timed-login-indicator { -+ height: 2px; -+ background-color: #8b8b8b; } - - .login-dialog-prompt-label { - color: #bebeb6; +diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss +index 2f05098df..4e82ef58b 100644 +--- a/data/theme/gnome-shell-sass/_common.scss ++++ b/data/theme/gnome-shell-sass/_common.scss +@@ -1825,6 +1825,10 @@ StScrollBar { + padding-bottom: 12px; + spacing: 8px; + width: 23em; ++ .login-dialog-timed-login-indicator { ++ height: 2px; ++ background-color: darken($fg_color,40%); ++ } + } + + .login-dialog-prompt-label { diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 9affbdd5f..366f34687 100644 +index 89cef4d5d..e44281117 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -2,6 +2,7 @@ @@ -50,7 +43,7 @@ index 9affbdd5f..366f34687 100644 const Lang = imports.lang; const Pango = imports.gi.Pango; const Signals = imports.signals; -@@ -119,6 +120,11 @@ var AuthPrompt = new Lang.Class({ +@@ -117,6 +118,11 @@ var AuthPrompt = new Lang.Class({ this._entry.grab_key_focus(); @@ -62,38 +55,37 @@ index 9affbdd5f..366f34687 100644 this._message = new St.Label({ opacity: 0, styleClass: 'login-dialog-message' }); this._message.clutter_text.line_wrap = true; -@@ -144,6 +150,41 @@ var AuthPrompt = new Lang.Class({ +@@ -142,6 +148,40 @@ var AuthPrompt = new Lang.Class({ this._defaultButtonWell.add_child(this._spinner.actor); }, -+ showTimedLoginIndicator: function(time) { ++ showTimedLoginIndicator(time) { + let hold = new Batch.Hold(); + + this.hideTimedLoginIndicator(); + + let startTime = GLib.get_monotonic_time(); + -+ this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT, -+ 33, -+ Lang.bind(this, function() { -+ let currentTime = GLib.get_monotonic_time(); -+ let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; -+ this._timedLoginIndicator.scale_x = elapsedTime / time; -+ if (elapsedTime >= time) { -+ this._timedLoginTimeoutId = 0; -+ hold.release(); -+ return GLib.SOURCE_REMOVE; -+ } -+ -+ return GLib.SOURCE_CONTINUE; -+ })); ++ this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT, 33, ++ () => { ++ let currentTime = GLib.get_monotonic_time(); ++ let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; ++ this._timedLoginIndicator.scale_x = elapsedTime / time; ++ if (elapsedTime >= time) { ++ this._timedLoginTimeoutId = 0; ++ hold.release(); ++ return GLib.SOURCE_REMOVE; ++ } ++ ++ return GLib.SOURCE_CONTINUE; ++ }); + + GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId'); + + return hold; + }, + -+ hideTimedLoginIndicator: function() { ++ hideTimedLoginIndicator() { + if (this._timedLoginTimeoutId) { + GLib.source_remove(this._timedLoginTimeoutId); + this._timedLoginTimeoutId = 0; @@ -101,14 +93,14 @@ index 9affbdd5f..366f34687 100644 + this._timedLoginIndicator.scale_x = 0.; + }, + - _onDestroy: function() { + _onDestroy() { if (this._preemptiveAnswerWatchId) { this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index c1262b1e8..6f6de00da 100644 +index 4a93545af..65d9edf1a 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js -@@ -756,6 +756,9 @@ var LoginDialog = new Lang.Class({ +@@ -738,6 +738,9 @@ var LoginDialog = new Lang.Class({ if (this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING) this._authPrompt.reset(); @@ -118,61 +110,52 @@ index c1262b1e8..6f6de00da 100644 } }, -@@ -1014,6 +1017,9 @@ var LoginDialog = new Lang.Class({ +@@ -1019,17 +1022,33 @@ var LoginDialog = new Lang.Class({ }, - _showTimedLoginAnimation: function() { -+ if (this._disableUserList) { -+ return this._authPrompt.showTimedLoginIndicator(this._timedLoginAnimationTime); -+ } - this._timedLoginItem.actor.grab_key_focus(); - return this._timedLoginItem.showTimedLoginIndicator(this._timedLoginAnimationTime); - }, -@@ -1041,19 +1047,31 @@ var LoginDialog = new Lang.Class({ - }, - - _startTimedLogin: function(userName, delay) { + _startTimedLogin(userName, delay) { + this._timedLoginUserName = userName; this._timedLoginItem = null; this._timedLoginDelay = delay; this._timedLoginAnimationTime = delay; -- - let tasks = [function() { -- return this._waitForItemForUser(userName); + +- let tasks = [() => this._waitForItemForUser(userName), ++ let tasks = [() => { + if (this._disableUserList) + return; + + this._timedLoginUserListHold = this._waitForItemForUser(userName); + + return this._timedLoginUserListHold; - }, ++ }, - function() { + () => { + this._timedLoginUserListHold = null; + + if (this._disableUserList) + return; ++ this._timedLoginItem = this._userList.getItemFromUserName(userName); }, - function() { + () => { + if (this._disableUserList) + return; + // If we're just starting out, start on the right // item. if (!this._userManager.is_loaded) { -@@ -1064,6 +1082,9 @@ var LoginDialog = new Lang.Class({ +@@ -1040,6 +1059,9 @@ var LoginDialog = new Lang.Class({ this._blockTimedLoginUntilIdle, - function() { + () => { + if (this._disableUserList) + return; + this._userList.scrollToItem(this._timedLoginItem); }, -@@ -1088,7 +1109,9 @@ var LoginDialog = new Lang.Class({ +@@ -1064,7 +1086,9 @@ var LoginDialog = new Lang.Class({ if (this._timedLoginItem) this._timedLoginItem.hideTimedLoginIndicator(); @@ -184,5 +167,5 @@ index c1262b1e8..6f6de00da 100644 if (userName) this._startTimedLogin(userName, this._timedLoginDelay); -- -2.14.2 +2.17.1 diff --git a/SOURCES/disable-unlock-entry-until-question.patch b/SOURCES/disable-unlock-entry-until-question.patch index 50ffcc2..da16a72 100644 --- a/SOURCES/disable-unlock-entry-until-question.patch +++ b/SOURCES/disable-unlock-entry-until-question.patch @@ -1,4 +1,4 @@ -From f941682d22a0e6f40e1109df8043291398783ff4 Mon Sep 17 00:00:00 2001 +From 6a698c70044709e53f1a517165360037c070770d Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 30 Sep 2015 12:51:24 -0400 Subject: [PATCH 1/3] authPrompt: don't fade out auth messages if user types @@ -12,23 +12,23 @@ front, before a password is asked. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index a436431be..dedf39f99 100644 +index 481cd3a77..0ad3d2338 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js -@@ -185,7 +185,7 @@ var AuthPrompt = new Lang.Class({ +@@ -176,7 +176,7 @@ var AuthPrompt = new Lang.Class({ + this._updateNextButtonSensitivity(this._entry.text.length > 0); - this._entry.clutter_text.connect('text-changed', - Lang.bind(this, function() { -- if (!this._userVerifier.hasPendingMessages) -+ if (!this._userVerifier.hasPendingMessages && this._queryingService && !this._preemptiveAnswer) - this._fadeOutMessage(); + this._entry.clutter_text.connect('text-changed', () => { +- if (!this._userVerifier.hasPendingMessages) ++ if (!this._userVerifier.hasPendingMessages && this._queryingService && !this._preemptiveAnswer) + this._fadeOutMessage(); - this._updateNextButtonSensitivity(this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING); + this._updateNextButtonSensitivity(this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING); -- -2.14.2 +1.8.3.1 -From 7b83ebcdc1d667438de5a0f41cb7b194b2792d1f Mon Sep 17 00:00:00 2001 +From 867988ad707dfc7a7e2bae2ead774bc7369add8c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 30 Sep 2015 14:36:33 -0400 Subject: [PATCH 2/3] authPrompt: don't spin unless answering question @@ -38,24 +38,24 @@ Subject: [PATCH 2/3] authPrompt: don't spin unless answering question 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index dedf39f99..b3ff91789 100644 +index 0ad3d2338..f18ef41f2 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -66,8 +66,8 @@ var AuthPrompt = new Lang.Class({ - this.connect('next', Lang.bind(this, function() { - this.updateSensitivity(false); -- this.startSpinning(); - if (this._queryingService) { -+ this.startSpinning(); - this._userVerifier.answerQuery(this._queryingService, this._entry.text); - } else { - this._preemptiveAnswer = this._entry.text; + this.connect('next', () => { + this.updateSensitivity(false); +- this.startSpinning(); + if (this._queryingService) { ++ this.startSpinning(); + this._userVerifier.answerQuery(this._queryingService, this._entry.text); + } else { + this._preemptiveAnswer = this._entry.text; -- -2.14.2 +1.8.3.1 -From 76e455916f6411c695f4528bffbb49c5832ec568 Mon Sep 17 00:00:00 2001 +From bcbb4c2044344a6ab4fda5975478b8bee07e01f5 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 5 Oct 2015 15:26:18 -0400 Subject: [PATCH 3/3] authPrompt: stop accepting preemptive answer if user @@ -69,11 +69,11 @@ Typing ahead the password is just a convenience for users who don't want to manually lift the shift before typing their passwords, after all. --- - js/gdm/authPrompt.js | 38 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 38 insertions(+) + js/gdm/authPrompt.js | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index b3ff91789..9affbdd5f 100644 +index f18ef41f2..89cef4d5d 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js @@ -10,6 +10,7 @@ const St = imports.gi.St; @@ -94,21 +94,21 @@ index b3ff91789..9affbdd5f 100644 if (this._mode == AuthPromptMode.UNLOCK_ONLY) reauthenticationOnly = true; @@ -71,6 +74,11 @@ var AuthPrompt = new Lang.Class({ - this._userVerifier.answerQuery(this._queryingService, this._entry.text); - } else { - this._preemptiveAnswer = this._entry.text; + this._userVerifier.answerQuery(this._queryingService, this._entry.text); + } else { + this._preemptiveAnswer = this._entry.text; + -+ if (this._preemptiveAnswerWatchId) { -+ this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); -+ this._preemptiveAnswerWatchId = 0; -+ } - } - })); ++ if (this._preemptiveAnswerWatchId) { ++ this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); ++ this._preemptiveAnswerWatchId = 0; ++ } + } + }); -@@ -137,6 +145,11 @@ var AuthPrompt = new Lang.Class({ +@@ -135,6 +143,11 @@ var AuthPrompt = new Lang.Class({ }, - _onDestroy: function() { + _onDestroy() { + if (this._preemptiveAnswerWatchId) { + this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); + this._preemptiveAnswerWatchId = 0; @@ -117,10 +117,10 @@ index b3ff91789..9affbdd5f 100644 this._userVerifier.destroy(); this._userVerifier = null; }, -@@ -358,6 +371,11 @@ var AuthPrompt = new Lang.Class({ +@@ -349,6 +362,11 @@ var AuthPrompt = new Lang.Class({ }, - setQuestion: function(question) { + setQuestion(question) { + if (this._preemptiveAnswerWatchId) { + this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); + this._preemptiveAnswerWatchId = 0; @@ -129,11 +129,11 @@ index b3ff91789..9affbdd5f 100644 this._label.set_text(question); this._label.show(); -@@ -443,12 +461,32 @@ var AuthPrompt = new Lang.Class({ +@@ -434,12 +452,31 @@ var AuthPrompt = new Lang.Class({ } }, -+ _onUserStoppedTypePreemptiveAnswer: function() { ++ _onUserStoppedTypePreemptiveAnswer() { + if (!this._preemptiveAnswerWatchId || + this._preemptiveAnswer || + this._queryingService) @@ -146,7 +146,7 @@ index b3ff91789..9affbdd5f 100644 + this.updateSensitivity(false); + }, + - reset: function() { + reset() { let oldStatus = this.verificationStatus; this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; this.cancelButton.reactive = true; @@ -156,12 +156,11 @@ index b3ff91789..9affbdd5f 100644 + this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); + } + this._preemptiveAnswerWatchId = this._idleMonitor.add_idle_watch (500, -+ Lang.bind(this, -+ this._onUserStoppedTypePreemptiveAnswer)); ++ this._onUserStoppedTypePreemptiveAnswer.bind(this)); + if (this._userVerifier) this._userVerifier.cancel(); -- -2.14.2 +1.8.3.1 diff --git a/SOURCES/enforce-smartcard-at-unlock.patch b/SOURCES/enforce-smartcard-at-unlock.patch index 07782e2..6206154 100644 --- a/SOURCES/enforce-smartcard-at-unlock.patch +++ b/SOURCES/enforce-smartcard-at-unlock.patch @@ -1,4 +1,4 @@ -From 59b6d50061f3c8e5858230a881267014e8395594 Mon Sep 17 00:00:00 2001 +From b675ef2be8b5938b036714cbe42e9653b348227b Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 28 Sep 2015 10:57:02 -0400 Subject: [PATCH 1/3] smartcardManager: add way to detect if user logged using @@ -16,10 +16,10 @@ This commit adds the necessary api to detect that case. 1 file changed, 7 insertions(+) diff --git a/js/misc/smartcardManager.js b/js/misc/smartcardManager.js -index 4388f286d..75e9836e9 100644 +index 60808b371..503f78836 100644 --- a/js/misc/smartcardManager.js +++ b/js/misc/smartcardManager.js -@@ -113,6 +113,13 @@ var SmartcardManager = new Lang.Class({ +@@ -112,6 +112,13 @@ var SmartcardManager = new Lang.Class({ return false; return true; @@ -34,10 +34,10 @@ index 4388f286d..75e9836e9 100644 }); -- -2.14.2 +1.8.3.1 -From b25d32c8fef60dec567f05e6681214a6995656fc Mon Sep 17 00:00:00 2001 +From 8af02156a99145ebfb5cea9488b78495e25002b8 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 28 Sep 2015 19:56:53 -0400 Subject: [PATCH 2/3] gdm: only unlock with smartcard, if smartcard used for @@ -50,13 +50,13 @@ gets used for unlock, too. 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/js/gdm/util.js b/js/gdm/util.js -index bae46bfe0..a44184c17 100644 +index 261e1e433..3d6d69c10 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -134,7 +134,6 @@ var ShellUserVerifier = new Lang.Class({ this._settings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); this._settings.connect('changed', - Lang.bind(this, this._updateDefaultService)); + this._updateDefaultService.bind(this)); - this._updateDefaultService(); this._fprintManager = Fprint.FprintManager(); @@ -68,12 +68,12 @@ index bae46bfe0..a44184c17 100644 + this._updateDefaultService(); + this._smartcardInsertedId = this._smartcardManager.connect('smartcard-inserted', - Lang.bind(this, this._checkForSmartcard)); + this._checkForSmartcard.bind(this)); this._smartcardRemovedId = this._smartcardManager.connect('smartcard-removed', -@@ -413,7 +414,9 @@ var ShellUserVerifier = new Lang.Class({ +@@ -412,7 +413,9 @@ var ShellUserVerifier = new Lang.Class({ }, - _updateDefaultService: function() { + _updateDefaultService() { - if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY)) + if (this._smartcardManager.loggedInWithToken()) + this._defaultService = SMARTCARD_SERVICE_NAME; @@ -82,10 +82,10 @@ index bae46bfe0..a44184c17 100644 else if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) this._defaultService = SMARTCARD_SERVICE_NAME; -- -2.14.2 +1.8.3.1 -From 3309c476c6815e03f17359155f565118a2ad57b2 Mon Sep 17 00:00:00 2001 +From 49557edf36b817e33fb9f008f88e28a805b7665b Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 28 Sep 2015 19:57:36 -0400 Subject: [PATCH 3/3] gdm: update default service when smartcard inserted @@ -98,10 +98,10 @@ after we get a smartcard insertion event. 1 file changed, 2 insertions(+) diff --git a/js/gdm/util.js b/js/gdm/util.js -index a44184c17..83a12fb6c 100644 +index 3d6d69c10..f5f9d5e5d 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -336,6 +336,8 @@ var ShellUserVerifier = new Lang.Class({ +@@ -335,6 +335,8 @@ var ShellUserVerifier = new Lang.Class({ else if (this._preemptingService == SMARTCARD_SERVICE_NAME) this._preemptingService = null; @@ -111,5 +111,5 @@ index a44184c17..83a12fb6c 100644 } }, -- -2.14.2 +1.8.3.1 diff --git a/SOURCES/gnome-shell-python3.patch b/SOURCES/gnome-shell-python3.patch new file mode 100644 index 0000000..8211466 --- /dev/null +++ b/SOURCES/gnome-shell-python3.patch @@ -0,0 +1,265 @@ +From 5e252bd9d9c64cae3ef153338dfdd7638c4cd9e5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 14 Jun 2018 17:11:30 +0200 +Subject: [PATCH] build: Revert Python3 port + +This is mostly a revert of commit be3c3c64c1, with slight adjustments +due to the build system switch. +--- + meson.build | 2 +- + src/gnome-shell-extension-tool.in | 40 +++++++++++++++--------------- + src/gnome-shell-perf-tool.in | 41 ++++++++++++++++--------------- + 3 files changed, 42 insertions(+), 41 deletions(-) + +diff --git a/meson.build b/meson.build +index 978ed6506..663a4d06f 100644 +--- a/meson.build ++++ b/meson.build +@@ -137,7 +137,7 @@ if get_option('man') + endif + + mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir') +-python = find_program('python3') ++python = find_program('python2') + sassc = find_program('sassc') + + cc = meson.get_compiler('c') +diff --git a/src/gnome-shell-extension-tool.in b/src/gnome-shell-extension-tool.in +index f6c37629c..ab9c951ba 100755 +--- a/src/gnome-shell-extension-tool.in ++++ b/src/gnome-shell-extension-tool.in +@@ -14,7 +14,7 @@ except ImportError: + try: + import simplejson as json + except ImportError: +- print('The Python simplejson module is required') ++ print 'The Python simplejson module is required' + sys.exit(1) + + from gi.repository import Gio, GLib +@@ -88,36 +88,36 @@ function disable() { + } + + def create_extension(): +- print() +- print('''Name should be a very short (ideally descriptive) string. ++ print ++ print '''Name should be a very short (ideally descriptive) string. + Examples are: "Click To Focus", "Adblock", "Shell Window Shrinker". +-''') +- name = input('Name: ').strip() +- print() +- print('''Description is a single-sentence explanation of what your extension does. ++''' ++ name = raw_input('Name: ').strip() ++ print ++ print '''Description is a single-sentence explanation of what your extension does. + Examples are: "Make windows visible on click", "Block advertisement popups" + "Animate windows shrinking on minimize" +-''') +- description = input('Description: ').strip() ++''' ++ description = raw_input('Description: ').strip() + underifier = re.compile('[^A-Za-z]') + sample_uuid = underifier.sub('_', name) + # TODO use evolution data server + hostname = socket.gethostname() + sample_uuid = sample_uuid + '@' + hostname + +- print() +- print('''Uuid is a globally-unique identifier for your extension. ++ print ++ print '''Uuid is a globally-unique identifier for your extension. + This should be in the format of an email address (foo.bar@extensions.example.com), but + need not be an actual email address, though it's a good idea to base the uuid on your + email address. For example, if your email address is janedoe@example.com, you might +-use an extension title clicktofocus@janedoe.example.com.''') +- uuid = input('Uuid [%s]: ' % (sample_uuid, )).strip() ++use an extension title clicktofocus@janedoe.example.com.''' ++ uuid = raw_input('Uuid [%s]: ' % (sample_uuid, )).strip() + if uuid == '': + uuid = sample_uuid + + extension_path = os.path.join(os.path.expanduser('~/.local'), 'share', 'gnome-shell', 'extensions', uuid) + if os.path.exists(extension_path): +- print("Extension path %r already exists" % (extension_path, )) ++ print "Extension path %r already exists" % (extension_path, ) + sys.exit(0) + os.makedirs(extension_path) + meta = { 'name': name, +@@ -132,13 +132,13 @@ use an extension title clicktofocus@janedoe.example.com.''') + f.write(json.write(meta) + '\n') + f.close() + +- for filename, contents in SAMPLE_EXTENSION_FILES.items(): ++ for filename, contents in SAMPLE_EXTENSION_FILES.iteritems(): + path = os.path.join(extension_path, filename) + f = open(path, 'w') + f.write(contents) + f.close() + +- print("Created extension in %r" % (extension_path, )) ++ print "Created extension in %r" % (extension_path, ) + extensionjs_path = os.path.join(extension_path, 'extension.js') + subprocess.Popen(['xdg-open', extensionjs_path]) + +@@ -149,19 +149,19 @@ def enable_extension(uuid): + extensions = settings.get_strv(ENABLED_EXTENSIONS_KEY) + + if uuid in extensions: +- print("%r is already enabled." % (uuid,), file=sys.stderr) ++ print >> sys.stderr, "%r is already enabled." % (uuid,) + sys.exit(1) + + extensions.append(uuid) + settings.set_strv(ENABLED_EXTENSIONS_KEY, extensions) +- print("%r is now enabled." % (uuid,), file=sys.stderr) ++ print >> sys.stderr, "%r is now enabled." % (uuid,) + + def disable_extension(uuid): + settings = Gio.Settings(schema='org.gnome.shell') + extensions = settings.get_strv(ENABLED_EXTENSIONS_KEY) + + if uuid not in extensions: +- print("%r is not enabled or installed." % (uuid,), file=sys.stderr) ++ print >> sys.stderr, "%r is not enabled or installed." % (uuid,) + sys.exit(1) + + # Use a while loop here to remove *all* mentions instances +@@ -170,7 +170,7 @@ def disable_extension(uuid): + extensions.remove(uuid) + + settings.set_strv(ENABLED_EXTENSIONS_KEY, extensions) +- print("%r is now disabled." % (uuid,), file=sys.stderr) ++ print >> sys.stderr, "%r is now disabled." % (uuid,) + + def reload_extension(uuid): + settings = Gio.Settings(schema='org.gnome.shell') +diff --git a/src/gnome-shell-perf-tool.in b/src/gnome-shell-perf-tool.in +index b2a4521a3..55bfdf39f 100755 +--- a/src/gnome-shell-perf-tool.in ++++ b/src/gnome-shell-perf-tool.in +@@ -14,14 +14,15 @@ import subprocess + import sys + import tempfile + import base64 +-from configparser import RawConfigParser ++from ConfigParser import RawConfigParser + import hashlib + import hmac +-from http import client +-from urllib import parse ++import httplib ++import urlparse ++import urllib + + def show_version(option, opt_str, value, parser): +- print("GNOME Shell Performance Test @VERSION@") ++ print "GNOME Shell Performance Test @VERSION@" + sys.exit() + + def wait_for_dbus_name(wait_name): +@@ -40,7 +41,7 @@ def wait_for_dbus_name(wait_name): + None) + + def on_timeout(): +- print("\nFailed to start %s: timed out" % (wait_name,)) ++ print "\nFailed to start %s: timed out" % (wait_name,) + sys.exit(1) + GLib.timeout_add_seconds(7, on_timeout) + +@@ -130,15 +131,15 @@ def upload_performance_report(report_text): + base_url = config.get('upload', 'url') + system_name = config.get('upload', 'name') + secret_key = config.get('upload', 'key') +- except Exception as e: +- print("Can't read upload configuration from %s: %s" % (config_file, str(e))) ++ except Exception, e: ++ print "Can't read upload configuration from %s: %s" % (config_file, str(e)) + sys.exit(1) + + # Determine host, port and upload URL from provided data, we're + # a bit extra-careful about normalization since the URL is part + # of the signature. + +- split = parse.urlsplit(base_url) ++ split = urlparse.urlsplit(base_url) + scheme = split[0].lower() + netloc = split[1] + base_path = split[2] +@@ -150,7 +151,7 @@ def upload_performance_report(report_text): + host, port = m.group(1), None + + if scheme != "http": +- print("'%s' is not a HTTP URL" % base_url) ++ print "'%s' is not a HTTP URL" % base_url + sys.exit(1) + + if port is None: +@@ -165,7 +166,7 @@ def upload_performance_report(report_text): + normalized_base = "%s://%s:%d%s" % (scheme, host, port, base_path) + + upload_url = normalized_base + '/system/%s/upload' % system_name +- upload_path = parse.urlsplit(upload_url)[2] # path portion ++ upload_path = urlparse.urlsplit(upload_url)[2] # path portion + + # Create signature based on upload URL and the report data + +@@ -173,7 +174,7 @@ def upload_performance_report(report_text): + h = hmac.new(secret_key, digestmod=hashlib.sha1) + h.update(signature_data) + h.update(report_text) +- signature = parse.quote(base64.b64encode(h.digest()), "~") ++ signature = urllib.quote(base64.b64encode(h.digest()), "~") + + headers = { + 'User-Agent': 'gnome-shell-performance-tool/@VERSION@', +@@ -181,15 +182,15 @@ def upload_performance_report(report_text): + 'X-Shell-Signature': 'HMAC-SHA1 ' + signature + }; + +- connection = client.HTTPConnection(host, port) ++ connection = httplib.HTTPConnection(host, port) + connection.request('POST', upload_path, report_text, headers) + response = connection.getresponse() + + if response.status == 200: +- print("Performance report upload succeeded") ++ print "Performance report upload succeeded" + else: +- print("Performance report upload failed with status %d" % response.status) +- print(response.read()) ++ print "Performance report upload failed with status %d" % response.status ++ print response.read() + + def gnome_hwtest_log(*args): + command = ['gnome-hwtest-log', '-t', 'gnome-shell-perf-tool'] +@@ -206,7 +207,7 @@ def run_performance_test(): + + start_perf_helper() + +- for i in range(0, iters): ++ for i in xrange(0, iters): + # We create an empty temporary file that the shell will overwrite + # with the contents. + handle, output_file = tempfile.mkstemp(".json", "gnome-shell-perf.") +@@ -305,12 +306,12 @@ def run_performance_test(): + gnome_hwtest_log('--finished') + else: + # Write a human readable summary +- print('------------------------------------------------------------') ++ print '------------------------------------------------------------'; + for metric in sorted(metric_summaries.keys()): + summary = metric_summaries[metric] +- print("#", summary['description']) +- print(metric, ", ".join((str(x) for x in summary['values']))) +- print('------------------------------------------------------------') ++ print "#", summary['description'] ++ print metric, ", ".join((str(x) for x in summary['values'])) ++ print '------------------------------------------------------------'; + + return True + +-- +2.17.1 + diff --git a/SPECS/gnome-shell.spec b/SPECS/gnome-shell.spec index 8b04859..e9c1898 100644 --- a/SPECS/gnome-shell.spec +++ b/SPECS/gnome-shell.spec @@ -1,6 +1,6 @@ Name: gnome-shell -Version: 3.26.2 -Release: 5%{?dist} +Version: 3.28.3 +Release: 6%{?dist} Summary: Window management and application launching for GNOME Group: User Interface/Desktops @@ -8,23 +8,19 @@ License: GPLv2+ Provides: desktop-notification-daemon URL: https://wiki.gnome.org/Projects/GnomeShell #VCS: git:git://git.gnome.org/gnome-shell -Source0: http://download.gnome.org/sources/gnome-shell/3.26/%{name}-%{version}.tar.xz +Source0: http://download.gnome.org/sources/gnome-shell/3.28/%{name}-%{version}.tar.xz Source1: org.gnome.shell.gschema.override +Source2: https://github.com/sass/sassc/archive/3.4.1.tar.gz +Source3: https://github.com/sass/libsass/archive/3.4.5.tar.gz # Replace Epiphany with Firefox in the default favourite apps list Patch1: gnome-shell-favourite-apps-firefox.patch Patch2: gnome-shell-favourite-apps-yelp.patch Patch3: gnome-shell-favourite-apps-terminal.patch - -# el7 build fixes -Patch5: 0001-Revert-build-Drop-autotools-support.patch -Patch6: 0002-Revert-build-Remove-included-Makefiles-as-well.patch -Patch7: 0003-build-Remove-check-for-missing-disthook.patch -Patch8: 0004-Revert-build-Use-new-mkenums_simple-function.patch +# Fix the build with Python 2 +Patch4: gnome-shell-python3.patch # GDM/Lock stuff -Patch10: 0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch -Patch11: 0001-gdm-use-password-authentication-if-all-schemes-are-d.patch Patch12: 0001-screenShield-unblank-when-inserting-smartcard.patch Patch13: enforce-smartcard-at-unlock.patch Patch14: disable-unlock-entry-until-question.patch @@ -33,60 +29,59 @@ Patch16: 0001-data-install-process-working.svg-to-filesystem.patch Patch17: 0001-loginDialog-make-info-messages-themed.patch Patch18: 0001-gdm-add-AuthList-control.patch Patch19: 0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch -Patch20: 0001-loginDialog-only-emit-session-activated-on-user-acti.patch # Misc. Patch30: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch Patch31: 0001-extensions-Add-a-SESSION_MODE-extension-type.patch -Patch32: 0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch Patch33: 0001-extensionSystem-Notify-about-extension-issues-on-upd.patch Patch34: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch Patch35: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch Patch36: 0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch Patch37: 0001-global-Allow-overriding-the-override-schema.patch Patch38: 0001-system-don-t-throw-an-exception-if-power-off-disable.patch -Patch39: 0001-padOsd-Ensure-to-pick-pad-devices-only.patch +Patch39: 0001-appDisplay-Show-full-app-name-on-hover.patch -%define gnome_bluetooth_version 1:3.9.0 -%define gobject_introspection_version 1.45.4 -%define gjs_version 1.47.0 -%define mutter_version 3.25.90 -%define gtk3_version 3.15.0 -%define eds_version 3.13.90 +# Backported from upstream +Patch50: 0001-keyboard-Handle-no-window-case-in-FocusTracker.patch + +Patch51: 0001-keyboard-Listen-to-IbusPanelService-focus-in-out-to-.patch + +%define libcroco_version 0.6.8 +%define eds_version 3.17.2 %define gnome_desktop_version 3.7.90 +%define glib2_version 2.56.0 +%define gobject_introspection_version 1.49.1 +%define gjs_version 1.51.90 +%define gtk3_version 3.15.0 %define json_glib_version 0.13.2 +%define mutter_version 3.28.0 +%define polkit_version 0.100 %define gsettings_desktop_schemas_version 3.21.3 -%define caribou_version 0.4.8 -%define libcroco_version 0.6.8 -%define telepathy_logger_version 0.2.6 +%define ibus_version 1.5.2 +%define gnome_bluetooth_version 1:3.9.0 %define gstreamer_version 1.4.5 -## Needed when we re-autogen -BuildRequires: autoconf >= 2.53 -BuildRequires: automake >= 1.10 -BuildRequires: gettext-devel +BuildRequires: meson BuildRequires: git -BuildRequires: gnome-common >= 2.2.0 -BuildRequires: libtool >= 1.4.3 -BuildRequires: caribou-devel >= %{caribou_version} +BuildRequires: ibus-devel >= %{ibus_version} BuildRequires: chrpath BuildRequires: dbus-glib-devel BuildRequires: desktop-file-utils BuildRequires: evolution-data-server-devel >= %{eds_version} BuildRequires: gcr-devel BuildRequires: gjs-devel >= %{gjs_version} -BuildRequires: glib2-devel +BuildRequires: glib2-devel >= %{glib2_version} BuildRequires: gobject-introspection >= %{gobject_introspection_version} BuildRequires: json-glib-devel >= %{json_glib_version} BuildRequires: upower-devel BuildRequires: libgnome-keyring-devel -BuildRequires: libnm-gtk-devel BuildRequires: mesa-libGL-devel -BuildRequires: NetworkManager-glib-devel -BuildRequires: polkit-devel +BuildRequires: NetworkManager-libnm-devel +BuildRequires: pkgconfig(libsystemd) +BuildRequires: polkit-devel >= %{polkit_version} BuildRequires: startup-notification-devel -BuildRequires: telepathy-glib-devel -BuildRequires: telepathy-logger-devel >= %{telepathy_logger_version} +# for theme generation +BuildRequires: ruby # for screencast recorder functionality BuildRequires: gstreamer1-devel >= %{gstreamer_version} BuildRequires: gtk3-devel >= %{gtk3_version} @@ -110,34 +105,39 @@ BuildRequires: gnome-bluetooth-libs-devel >= %{gnome_bluetooth_version} %endif BuildRequires: control-center # Bootstrap requirements -BuildRequires: gtk-doc gnome-common +BuildRequires: gtk-doc %ifnarch s390 s390x Requires: gnome-bluetooth%{?_isa} >= %{gnome_bluetooth_version} %endif Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version} +%if 0%{?fedora} +# Disabled on RHEL to allow logging into KDE session by default +Requires: gnome-session-xsession +%endif # wrapper script uses to restart old GNOME session if run --replace # from the command line Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version} Requires: gjs%{?_isa} >= %{gjs_version} Requires: gtk3%{?_isa} >= %{gtk3_version} +Requires: libnma%{?_isa} # needed for loading SVG's via gdk-pixbuf Requires: librsvg2%{?_isa} # needed as it is now split from Clutter Requires: json-glib%{?_isa} >= %{json_glib_version} -# For $libdir/mozilla/plugins -Requires: mozilla-filesystem%{?_isa} Requires: mutter%{?_isa} >= %{mutter_version} Requires: upower%{?_isa} -Requires: polkit%{?_isa} >= 0.100 +Requires: polkit%{?_isa} >= %{polkit_version} Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version} +Requires: glib2%{?_isa} >= %{glib2_version} Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version} Requires: libcroco%{?_isa} >= %{libcroco_version} -Requires: telepathy-logger%{?_isa} >= %{telepathy_logger_version} +Requires: telepathy-logger%{?_isa} +Requires: telepathy-glib%{?_isa} Requires: gstreamer1%{?_isa} >= %{gstreamer_version} # needed for schemas Requires: at-spi2-atk%{?_isa} # needed for on-screen keyboard -Requires: caribou%{?_isa} >= %{caribou_version} +Requires: ibus%{?_isa} >= %{ibus_version} # needed for the user menu Requires: accountsservice-libs%{?_isa} Requires: gdm-libs%{?_isa} @@ -154,6 +154,23 @@ Requires: python3%{_isa} # needed for clocks/weather integration Requires: geoclue2-libs%{?_isa} Requires: libgweather%{?_isa} +# Needed for launching flatpak apps etc +Requires: xdg-desktop-portal-gtk + +%if 0%{?rhel} +# In Fedora, fedora-obsolete-packages obsoletes caribou +Obsoletes: caribou < 0.4.21-10 +Obsoletes: caribou-antler < 0.4.21-10 +Obsoletes: caribou-devel < 0.4.21-10 +Obsoletes: caribou-gtk2-module < 0.4.21-10 +Obsoletes: caribou-gtk3-module < 0.4.21-10 +Obsoletes: python-caribou < 0.4.21-10 +Obsoletes: python2-caribou < 0.4.21-10 +Obsoletes: python3-caribou < 0.4.21-10 + +# Removed in RHEL 7.6 +Obsoletes: gnome-shell-browser-plugin < 3.28.3-4 +%endif %description GNOME Shell provides core user interface functions for the GNOME 3 desktop, @@ -162,34 +179,26 @@ advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience. -%package browser-plugin -Summary: Browser plugin to install extensions from extensions.gnome.org -Requires: %{name} = %{version}-%{release} -Requires: mozilla-filesystem%{?_isa} - -%description browser-plugin -The "GNOME Shell Integration" plugin provides integration with -Gnome Shell for live extension enabling and disabling. It can -be used only by extensions.gnome.org. - %prep +%setup -q -n libsass-3.4.5 -b3 -T +%setup -q -n sassc-3.4.1 -b2 -T %autosetup -S git %build -%if 0%{?rhel} -# Use Python 2 -sed -i -e 's/AM_PATH_PYTHON(\[3\])/AM_PATH_PYTHON([2.5])/' configure.ac -autoreconf -fi -%endif - -(if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; fi; - %configure --disable-static --disable-compile-warnings) -make V=1 %{?_smp_mflags} +(cd ../libsass-3.4.5; + export LIBSASS_VERSION=3.4.5 + make %{?_smp_mflags}) +(cd ../sassc-3.4.1; + %make_build LDFLAGS="$RPM_OPT_FLAGS $PWD/../libsass-3.4.5/lib/libsass.a" \ + CFLAGS="$RPM_OPT_FLAGS -I$PWD/../libsass-3.4.5/include" \ + CXXFLAGS="$RPM_OPT_FLAGS" \ + SASS_LIBSASS_PATH=$PWD/../libsass-3.4.5) +export PATH=$PWD/../sassc-3.4.1/bin:$PATH +%meson -Dbrowser_plugin=false +%meson_build %install -%make_install - -rm -rf %{buildroot}/%{_libdir}/mozilla/plugins/*.la +%meson_install # Create empty directories where other packages can drop extensions mkdir -p %{buildroot}%{_datadir}/gnome-shell/extensions @@ -224,9 +233,7 @@ glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null %{_datadir}/applications/evolution-calendar.desktop %{_datadir}/applications/org.gnome.Shell.PortalHelper.desktop %{_datadir}/gnome-control-center/keybindings/50-gnome-shell-system.xml -%{_datadir}/gnome-shell -%{_datadir}/gnome-shell/theme -%{_datadir}/gnome-shell/theme/*.svg +%{_datadir}/gnome-shell/ %{_datadir}/dbus-1/services/org.gnome.Shell.CalendarServer.service %{_datadir}/dbus-1/services/org.gnome.Shell.HotplugSniffer.service %{_datadir}/dbus-1/services/org.gnome.Shell.PortalHelper.service @@ -250,13 +257,44 @@ glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null %dir %{_datadir}/GConf/gsettings %{_datadir}/GConf/gsettings/gnome-shell-overrides.convert %{_mandir}/man1/%{name}.1.gz -# exclude as these should be in a devel package for st etc -%exclude %{_datadir}/gtk-doc - -%files browser-plugin -%{_libdir}/mozilla/plugins/*.so %changelog +* Wed Sep 19 2018 Carlos Garnacho - 3.28.3-6 +- Track IBus focus for X11 OSK +- Resolves: #1625700 + +* Thu Sep 13 2018 Kalev Lember - 3.28.3-5 +- Require xdg-desktop-portal-gtk +- Related: #1570030 + +* Mon Sep 10 2018 Kalev Lember - 3.28.3-4 +- Remove gnome-shell-browser-plugin subpackage +- Resolves: #1626104 + +* Mon Sep 10 2018 Kalev Lember - 3.28.3-3 +- Obsolete caribou +- Resolves: #1625882 + +* Tue Sep 04 2018 Kalev Lember - 3.28.3-2 +- keyboard: Handle no-window case in FocusTracker +- Resolves: #1612983 + +* Wed Aug 01 2018 Kalev Lember - 3.28.3-1 +- Update to 3.28.3 +- Resolves: #1568624 + +* Fri Jun 22 2018 Florian Müllner - 3.28.2-2 +- Update rebased downstream patches + Related: #1568624 +- Revert port to python3 of some utility tools + Resolves: #1493526 +- Add tooltips to app names in overview + Resolves: #1541180 + +* Tue May 08 2018 Florian Müllner - 3.28.2-1 +- Update to 3.28.2 +- Resolves: #1568624 + * Wed Feb 14 2018 Ray Strode - 3.26.2-5 - Make session selection bullet isn't shown on wrong item Resolves: #1527145