Date: Thursday, April 11, 2013 @ 02:00:31 Author: bgyorgy Revision: 88075
upgpkg: gnome-panel 3.6.2-3 - Apply two fixes - Introduce the Gnome Flashback session (new upstream project based on the GNOME Fallback mode components) Added: gnome-panel/trunk/0001-Add-the-GNOME-Flashback-session.patch gnome-panel/trunk/18_fix_force_quit_applet.patch gnome-panel/trunk/fix-autoconf.patch gnome-panel/trunk/logout-hang-workaround.patch Modified: gnome-panel/trunk/PKGBUILD --------------------------------------------+ 0001-Add-the-GNOME-Flashback-session.patch | 95 ++++++++++++++++++++++++++ 18_fix_force_quit_applet.patch | 98 +++++++++++++++++++++++++++ PKGBUILD | 61 +++++++++++++--- fix-autoconf.patch | 11 +++ logout-hang-workaround.patch | 15 ++++ 5 files changed, 269 insertions(+), 11 deletions(-) Added: 0001-Add-the-GNOME-Flashback-session.patch =================================================================== --- 0001-Add-the-GNOME-Flashback-session.patch (rev 0) +++ 0001-Add-the-GNOME-Flashback-session.patch 2013-04-11 00:00:31 UTC (rev 88075) @@ -0,0 +1,95 @@ +From a5b951654b856d899e8c6a4116b4ccc4f18aac91 Mon Sep 17 00:00:00 2001 +From: Jeremy Bicha <[email protected]> +Date: Sun, 24 Feb 2013 17:22:29 -0500 +Subject: [PATCH] Add the GNOME Flashback session + +This was removed from gnome-session 3.7.4 so let's it add it back here +(under new name) + +https://bugzilla.gnome.org/show_bug.cgi?id=694625 +--- + data/Makefile.am | 18 +++++++++++++++++- + data/gnome-flashback.desktop.in | 7 +++++++ + data/gnome-flashback.session.desktop.in | 3 +++ + po/POTFILES.in | 2 ++ + 4 files changed, 29 insertions(+), 1 deletion(-) + create mode 100644 data/gnome-flashback.desktop.in + create mode 100644 data/gnome-flashback.session.desktop.in + +diff --git a/data/Makefile.am b/data/Makefile.am +index 83f82e2..84e1954 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -30,17 +30,33 @@ gsettings_SCHEMAS = $(gsettings_schemas_in:.xml.in=.xml) + + @GSETTINGS_RULES@ + ++sessiondir = $(datadir)/gnome-session/sessions ++session_in_files = gnome-flashback.session.desktop.in ++session_DATA = $(session_in_files:.session.desktop.in=.session) ++ ++xsessiondir = $(datadir)/xsessions ++xsession_in_files = gnome-flashback.desktop.in ++xsession_DATA = $(xsession_in_files:.desktop.in=.desktop) ++ ++%.session: %.session.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ ++ ++@INTLTOOL_DESKTOP_RULE@ ++ + default_layoutdir = $(datadir)/gnome-panel + default_layout_DATA = panel-default-layout.layout + + EXTRA_DIST = \ + $(gsettings_schemas_in_in) \ ++ $(session_in_files) \ ++ $(xsession_in_files) \ + $(default_layout_DATA) + + CLEANFILES = \ + $(gsettings__enum_file) \ + $(gsettings_SCHEMAS_in) \ + $(gsettings_SCHEMAS) \ +- *.gschema.valid ++ *.gschema.valid \ ++ $(session_DATA) \ ++ $(xsession_DATA) + + -include $(top_srcdir)/git.mk +diff --git a/data/gnome-flashback.desktop.in b/data/gnome-flashback.desktop.in +new file mode 100644 +index 0000000..4856f75 +--- /dev/null ++++ b/data/gnome-flashback.desktop.in +@@ -0,0 +1,7 @@ ++[Desktop Entry] ++_Name=GNOME Flashback ++_Comment=This session logs you into GNOME with the traditional panel ++Exec=gnome-session --session=gnome-flashback ++TryExec=gnome-session ++Icon= ++Type=Application +diff --git a/data/gnome-flashback.session.desktop.in b/data/gnome-flashback.session.desktop.in +new file mode 100644 +index 0000000..c012c58 +--- /dev/null ++++ b/data/gnome-flashback.session.desktop.in +@@ -0,0 +1,3 @@ ++[GNOME Session] ++_Name=GNOME Flashback ++RequiredComponents=gnome-panel;gnome-settings-daemon;gnome-screensaver;metacity;nautilus-classic;notification-daemon; +diff --git a/po/POTFILES.in b/po/POTFILES.in +index bc65c4c..a6aa6c7 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -23,6 +23,8 @@ applets/wncklet/window-menu.c + applets/wncklet/wncklet.c + applets/wncklet/workspace-switcher.c + [type: gettext/glade]applets/wncklet/workspace-switcher.ui ++data/gnome-flashback.desktop.in ++data/gnome-flashback.session.desktop.in + data/org.gnome.gnome-panel.applet.clock.gschema.xml.in.in + data/org.gnome.gnome-panel.applet.fish.gschema.xml.in.in + data/org.gnome.gnome-panel.applet.window-list.gschema.xml.in.in +-- +1.7.10.4 + Added: 18_fix_force_quit_applet.patch =================================================================== --- 18_fix_force_quit_applet.patch (rev 0) +++ 18_fix_force_quit_applet.patch 2013-04-11 00:00:31 UTC (rev 88075) @@ -0,0 +1,98 @@ +Description: Fix Force-Quit panel applet + This patch implements handling of XInput2 extension events in the applet. + Without this patch, the applet fails to recognize such events (either mouse + click for killing application, or escape key for exiting), hence freezing the + desktop. + . + Also fix the event mask in call of gdk_device_grab() for keyboard. +Author: Sébastien Villemot <[email protected]> +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698740 +Forwarded: no +Last-Update: 2013-01-28 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/gnome-panel/panel-force-quit.c ++++ b/gnome-panel/panel-force-quit.c +@@ -32,6 +32,8 @@ + #include <X11/Xlib.h> + #include <X11/keysym.h> + ++#include <X11/extensions/XInput2.h> ++ + #include "panel-icon-names.h" + #include "panel-stock-icons.h" + +@@ -246,22 +248,23 @@ + + static void + handle_button_press_event (GtkWidget *popup, +- XKeyEvent *event) ++ Display *display, ++ Window subwindow) + { + Window window; + + remove_popup (popup); + +- if (event->subwindow == None) ++ if (subwindow == None) + return; + + if (wm_state_atom == None) +- wm_state_atom = XInternAtom (event->display, "WM_STATE", FALSE); ++ wm_state_atom = XInternAtom (display, "WM_STATE", FALSE); + +- window = find_managed_window (event->display, event->subwindow); ++ window = find_managed_window (display, subwindow); + + if (window != None) { +- if (!gdk_x11_window_lookup_for_display (gdk_x11_lookup_xdisplay (event->display), window)) ++ if (!gdk_x11_window_lookup_for_display (gdk_x11_lookup_xdisplay (display), window)) + kill_window_question ((gpointer) window); + } + } +@@ -272,10 +275,12 @@ + GtkWidget *popup) + { + XEvent *xevent = (XEvent *) gdk_xevent; ++ XIEvent *xiev; ++ XIDeviceEvent *xidev; + + switch (xevent->type) { + case ButtonPress: +- handle_button_press_event (popup, &xevent->xkey); ++ handle_button_press_event (popup, xevent->xbutton.display, xevent->xbutton.subwindow); + return GDK_FILTER_REMOVE; + case KeyPress: + if (xevent->xkey.keycode == XKeysymToKeycode (xevent->xany.display, XK_Escape)) { +@@ -283,6 +288,21 @@ + return GDK_FILTER_REMOVE; + } + break; ++ case GenericEvent: ++ xiev = (XIEvent *) xevent->xcookie.data; ++ xidev = (XIDeviceEvent *) xiev; ++ switch (xiev->evtype) { ++ case XI_KeyPress: ++ if (xidev->detail == XKeysymToKeycode (xevent->xany.display, XK_Escape)) { ++ remove_popup (popup); ++ return GDK_FILTER_REMOVE; ++ } ++ break; ++ case XI_ButtonPress: ++ handle_button_press_event (popup, xidev->display, xidev->child); ++ return GDK_FILTER_REMOVE; ++ } ++ break; + default: + break; + } +@@ -331,7 +351,7 @@ + + status = gdk_device_grab (keyboard, root, + GDK_OWNERSHIP_NONE, FALSE, +- GDK_KEY_PRESS | GDK_KEY_RELEASE, ++ GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, + NULL, time); + if (status != GDK_GRAB_SUCCESS) { + g_warning ("Keyboard grab failed\n"); Modified: PKGBUILD =================================================================== --- PKGBUILD 2013-04-10 23:55:34 UTC (rev 88074) +++ PKGBUILD 2013-04-11 00:00:31 UTC (rev 88075) @@ -2,27 +2,36 @@ # Maintainer: Balló György <ballogyor+arch at gmail dot com> # Contributor: Jan de Groot <[email protected]> -pkgname=gnome-panel +pkgbase=gnome-panel +pkgname=('gnome-panel' 'gnome-flashback-session') pkgver=3.6.2 -pkgrel=2 +pkgrel=3 arch=('i686' 'x86_64') license=('GPL') pkgdesc="Legacy GNOME panel" url="https://live.gnome.org/GnomePanel" depends=('dconf' 'evolution-data-server' 'gconf' 'gnome-desktop' 'gnome-menus' 'librsvg' 'libwnck3' 'telepathy-glib') -makedepends=('gobject-introspection' 'intltool' 'itstool' 'networkmanager') -install=$pkgname.install +makedepends=('gobject-introspection' 'intltool' 'yelp-tools' 'networkmanager' 'gnome-common') +install=$pkgbase.install options=('!libtool') -source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver:0:3}/$pkgname-$pkgver.tar.xz +source=(http://ftp.gnome.org/pub/gnome/sources/$pkgbase/${pkgver:0:3}/$pkgbase-$pkgver.tar.xz gnome-desktop-3.8.patch - drop-gweather-xml-include.patch) + drop-gweather-xml-include.patch + 18_fix_force_quit_applet.patch + logout-hang-workaround.patch + 0001-Add-the-GNOME-Flashback-session.patch + fix-autoconf.patch) sha256sums=('a41c45c5512e796b8602ce50bf0d205993eab364c860aae31afa582d77b77079' '3a67f4b07a7dd356fad6b40a43983f3945123ed40080eb153396a481b34efc0c' - 'e3298c62bc577969817c5d6752be83a5129004fd344e4f7998a0d8aa61874305') + 'e3298c62bc577969817c5d6752be83a5129004fd344e4f7998a0d8aa61874305' + '9d742f675d9e09a032bfe00e0523a4ef7e234589a74a6086243bf335ce212775' + 'e98391114fe618d3c9530cd5ad88e5d0d0e3b62890e4494f7db6a76ec3613a47' + 'f313791d246749f18764ad4af13c4efe54483bc327fab371c47f9fbfc25b20a9' + '6828c097505d2dbbf465ed7ff694adbd646a0af2105c8dd864d1061bf0afea71') build() { - cd "$pkgname-$pkgver" + cd "$pkgbase-$pkgver" # Port to gnome-desktop 3.8 patch -Np1 -i "$srcdir/gnome-desktop-3.8.patch" @@ -30,16 +39,46 @@ # Fix build with libgweather 3.8 patch -Np0 -i "$srcdir/drop-gweather-xml-include.patch" - ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$pkgname \ + # Fix force quit applet to avoid freeze + patch -Np1 -i "$srcdir/18_fix_force_quit_applet.patch" + + # Apply a workaround to avoid hang on logout for 15-20 sec + patch -Np1 -i "$srcdir/logout-hang-workaround.patch" + + # Add GNOME Flashback session + # https://bugzilla.gnome.org/show_bug.cgi?id=694625 + patch -Np1 -i "$srcdir/0001-Add-the-GNOME-Flashback-session.patch" + + # Fix build + patch -Np1 -i "$srcdir/fix-autoconf.patch" + + autoreconf -fi + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$pkgbase \ --disable-static --disable-schemas-compile \ PYTHON=/usr/bin/python2 make } -package() { - cd "$pkgname-$pkgver" +package_gnome-panel() { + cd "$pkgbase-$pkgver" make DESTDIR="$pkgdir" install # Remove unneeded script rm "$pkgdir/usr/lib/gnome-panel/gnome-panel-add" + + # Split out the session files + rm -r "$pkgdir"/usr/share/{gnome-session,xsessions} } + +package_gnome-flashback-session() { + pkgdesc="Shell for Gnome 3 which was initially called Gnome Fallback" + url="https://live.gnome.org/GnomeFlashback" + depends=('gnome-screensaver' 'gnome-panel' 'gnome-session' 'gnome-settings-daemon' + 'gnome-settings-daemon-compat' 'gnome-themes-standard' 'metacity' 'nautilus' + 'notification-daemon' 'polkit-gnome') + install= + + cd "$pkgbase-$pkgver" + make -C data DESTDIR="$pkgdir" install-sessionDATA + make -C data DESTDIR="$pkgdir" install-xsessionDATA +} Added: fix-autoconf.patch =================================================================== --- fix-autoconf.patch (rev 0) +++ fix-autoconf.patch 2013-04-11 00:00:31 UTC (rev 88075) @@ -0,0 +1,11 @@ +diff -Naur gnome-panel-3.6.2.orig/configure.ac gnome-panel-3.6.2/configure.ac +--- gnome-panel-3.6.2.orig/configure.ac 2012-11-12 18:51:14.000000000 +0100 ++++ gnome-panel-3.6.2/configure.ac 2013-04-10 14:50:14.132509059 +0200 +@@ -1,6 +1,6 @@ + AC_INIT([gnome-panel], [3.6.2], + [http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-panel]) +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar -Wno-portability]) + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + Added: logout-hang-workaround.patch =================================================================== --- logout-hang-workaround.patch (rev 0) +++ logout-hang-workaround.patch 2013-04-11 00:00:31 UTC (rev 88075) @@ -0,0 +1,15 @@ +diff -Naur gnome-panel-3.6.2.orig/gnome-panel/panel-session.c gnome-panel-3.6.2/gnome-panel/panel-session.c +--- gnome-panel-3.6.2.orig/gnome-panel/panel-session.c 2012-09-03 17:41:42.000000000 +0200 ++++ gnome-panel-3.6.2/gnome-panel/panel-session.c 2013-04-11 00:59:42.125864185 +0200 +@@ -69,11 +69,6 @@ + + egg_sm_client_set_mode (mode); + +- client = egg_sm_client_get (); +- +- g_signal_connect (client, "quit", +- G_CALLBACK (panel_session_handle_quit), NULL); +- + /* We don't want the WM to try and save/restore our + * window position */ + gdk_x11_set_sm_client_id (NULL);
