[mate-desktop] add upstream commits patch

leigh123linux leigh123linux at fedoraproject.org
Wed Nov 21 23:52:54 UTC 2012


commit 8770faf44eb0a5254d65adbd4d0e524d900ec13d
Author: leigh123linux <leigh123linux at googlemail.com>
Date:   Wed Nov 21 23:52:43 2012 +0000

    add upstream commits patch

 commits_rollup.patch | 1884 ++++++++++++++++++++++++++++++++++++++++++++++++++
 mate-desktop.spec    |   11 +-
 2 files changed, 1894 insertions(+), 1 deletions(-)
---
diff --git a/commits_rollup.patch b/commits_rollup.patch
new file mode 100644
index 0000000..b39c5d2
--- /dev/null
+++ b/commits_rollup.patch
@@ -0,0 +1,1884 @@
+diff --git a/Makefile.am b/Makefile.am
+index 217eb8a..c0d5b64 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,9 +1,4 @@
+-SUBDIRS = \
+-	po \
+-	libmate-desktop \
+-	docs \
+-	man \
+-	schemas
++SUBDIRS = libmate-desktop man docs po schemas
+ 
+ if MATE_ABOUT_ENABLED
+ SUBDIRS += mate-about
+@@ -14,10 +9,13 @@ endif
+ 
+ ACLOCAL_AMFLAGS = -I m4
+ 
++DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --disable-scrollkeeper
++
+ if MATE_ABOUT_ENABLED
+-versiondir=$(datadir)/mate-about
+-version_DATA=mate-version.xml
++versiondir = $(datadir)/mate-about
++version_DATA = mate-version.xml
+ endif
++
+ @INTLTOOL_XML_RULE@
+ 
+ EXTRA_DIST =			\
+@@ -27,8 +25,6 @@ EXTRA_DIST =			\
+ 	mate-version.xml.in.in  \
+ 	mate-doc-utils.make
+ 
+-DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --disable-scrollkeeper
+-
+ CLEANFILES = \
+ 	$(version_DATA)
+ 
+diff --git a/configure.ac b/configure.ac
+index 91b8711..6114659 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -60,14 +60,14 @@ MATE_DEBUG_CHECK
+ MATE_COMPILE_WARNINGS([maximum])
+ MATE_MAINTAINER_MODE_DEFINES
+ 
+-# As a special favour for vuntz, support --disable-deprecations
+-
+-AC_ARG_ENABLE([deprecations],
+-	[AS_HELP_STRING([--disable-deprecations],[dont warn about deprecated usages])],
+-	[],[enable_deprecations=yes])
+-if test "$enable_deprecations" = "no"; then
+-	DISABLE_DEPRECATED=""
+-	AC_SUBST([DISABLE_DEPRECATED])
++AC_ARG_ENABLE(deprecation_flags,
++              [AC_HELP_STRING([--enable-deprecation-flags],
++                              [use *_DISABLE_DEPRECATED flags @<:@default=no@:>@])],,
++              [enable_deprecation_flags=no])
++
++if test "x$enable_deprecation_flags" = "xyes"; then
++   DISABLE_DEPRECATED_CFLAGS=$DISABLE_DEPRECATED
++   AC_SUBST(DISABLE_DEPRECATED_CFLAGS)
+ fi
+ 
+ # Should we build mate-about or the shared desktop docs? Useful for people who
+@@ -105,7 +105,7 @@ dnl ----------------------------------------------------------------------------
+ dnl GTK library version
+ dnl ----------------------------------------------------------------------------
+ GTK_API_VERSION=2.0
+-GTK_REQUIRED=2.18.0
++GTK_REQUIRED=2.24.0
+ 
+ AC_MSG_CHECKING([which gtk+ version to compile against])
+ AC_ARG_WITH([gtk],
+@@ -119,7 +119,7 @@ AC_MSG_RESULT([$with_gtk])
+ 
+ case "$with_gtk" in
+   2.0) GTK_API_VERSION=2.0
+-       GTK_REQUIRED=2.18.0
++       GTK_REQUIRED=2.24.0
+        ;;
+   3.0) GTK_API_VERSION=3.0
+        GTK_REQUIRED=3.0.0
+@@ -333,7 +333,7 @@ mate-desktop $VERSION `echo mate-desktop $VERSION | sed "s/./=/g"`
+     compiler:                     ${CC}
+     cflags:                       ${CFLAGS}
+     Maintainer mode:              ${USE_MAINTAINER_MODE}
+-    Warn about deprecations:      ${enable_deprecations}
++    Use *_DISABLE_DEPRECATED:     ${enable_deprecation_flags}
+ 
+     Gtk+ version:                 ${GTK_API_VERSION}
+     Build mate-about:             ${enable_mate_about}
+diff --git a/libmate-desktop/Makefile.am b/libmate-desktop/Makefile.am
+index 322963e..878303d 100644
+--- a/libmate-desktop/Makefile.am
++++ b/libmate-desktop/Makefile.am
+@@ -1,14 +1,16 @@
+ SUBDIRS = libmate libmateui
+ 
+-INCLUDES =							\
+-	-DMATELOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale\""  \
+-	-DPNP_IDS=\""$(PNP_IDS)"\"				\
+-	$(WARN_CFLAGS)						\
+-	$(DISABLE_DEPRECATED)					\
++lib_LTLIBRARIES = libmate-desktop-2.la
++
++AM_CPPFLAGS =							\
++	$(MATE_DESKTOP_CFLAGS)					\
+ 	$(XLIB_CFLAGS)						\
+-	$(MATE_DESKTOP_CFLAGS)
++	-DG_LOG_DOMAIN=\"MateDesktop\"				\
++	-DMATELOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale\""	\
++	-DPNP_IDS=\""$(PNP_IDS)"\"				\
++	$(DISABLE_DEPRECATED_CFLAGS)
+ 
+-lib_LTLIBRARIES = libmate-desktop-2.la
++AM_CFLAGS = $(WARN_CFLAGS)
+ 
+ noinst_PROGRAMS = test-ditem
+ 
+@@ -47,11 +49,11 @@ test_ditem_LDADD = \
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = mate-desktop-2.0.pc
+ 
+-pnpdata_DATA_dist = pnp.ids
+ if USE_INTERNAL_PNP_IDS
+ pnpdatadir = $(datadir)/libmate-desktop
+ pnpdata_DATA = pnp.ids
+ endif
++pnpdata_DATA_dist = pnp.ids
+ 
+ check:
+ 	test -s $(top_srcdir)/libmate-desktop/pnp.ids
+diff --git a/libmate-desktop/libmateui/Makefile.am b/libmate-desktop/libmateui/Makefile.am
+index ca42525..413fee0 100644
+--- a/libmate-desktop/libmateui/Makefile.am
++++ b/libmate-desktop/libmateui/Makefile.am
+@@ -1,10 +1,10 @@
+ libmateui_desktopdir = $(includedir)/mate-desktop-2.0/libmateui
+-libmateui_desktop_HEADERS =	\
+-	mate-bg.h		\
+-	mate-bg-crossfade.h	\
+-	mate-desktop-thumbnail.h \
+-	mate-rr.h		\
+-	mate-rr-config.h	\
++libmateui_desktop_HEADERS =		\
++	mate-bg.h			\
++	mate-bg-crossfade.h		\
++	mate-desktop-thumbnail.h	\
++	mate-rr.h			\
++	mate-rr-config.h		\
+ 	mate-rr-labeler.h
+ 
+ -include $(top_srcdir)/git.mk
+diff --git a/libmate-desktop/libmateui/mate-bg-crossfade.h b/libmate-desktop/libmateui/mate-bg-crossfade.h
+index 2f8b3cb..28c1e28 100644
+--- a/libmate-desktop/libmateui/mate-bg-crossfade.h
++++ b/libmate-desktop/libmateui/mate-bg-crossfade.h
+@@ -16,8 +16,8 @@
+ 
+    You should have received a copy of the GNU Library General Public
+    License along with the Mate Library; see the file COPYING.LIB.  If not,
+-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+-   Boston, MA 02111-1307, USA.
++   write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
++   Floor, Boston, MA 02110-1301 US.
+ 
+    Author: Ray Strode <rstrode at redhat.com>
+ */
+@@ -66,11 +66,15 @@ MateBGCrossfade *mate_bg_crossfade_new (int width, int height);
+ 
+ 
+ #if GTK_CHECK_VERSION(3, 0, 0)
+-	gboolean mate_bg_crossfade_set_start_pixmap(MateBGCrossfade* fade, cairo_surface_t* pixmap);
+-	gboolean mate_bg_crossfade_set_end_pixmap(MateBGCrossfade* fade, cairo_surface_t* pixmap);
++gboolean          mate_bg_crossfade_set_start_surface (MateBGCrossfade *fade,
++						       cairo_surface_t *surface);
++gboolean          mate_bg_crossfade_set_end_surface (MateBGCrossfade *fade,
++						     cairo_surface_t *surface);
+ #else
+-	gboolean mate_bg_crossfade_set_start_pixmap(MateBGCrossfade* fade, GdkPixmap* pixmap);
+-	gboolean mate_bg_crossfade_set_end_pixmap(MateBGCrossfade* fade, GdkPixmap* pixmap);
++gboolean          mate_bg_crossfade_set_start_pixmap (MateBGCrossfade *fade,
++						      GdkPixmap *pixmap);
++gboolean          mate_bg_crossfade_set_end_pixmap (MateBGCrossfade *fade,
++						    GdkPixmap *pixmap);
+ #endif
+ 
+ void              mate_bg_crossfade_start (MateBGCrossfade *fade,
+diff --git a/libmate-desktop/libmateui/mate-bg.h b/libmate-desktop/libmateui/mate-bg.h
+index 45b3615..61e2a01 100644
+--- a/libmate-desktop/libmateui/mate-bg.h
++++ b/libmate-desktop/libmateui/mate-bg.h
+@@ -96,10 +96,14 @@ void             mate_bg_draw                  (MateBG               *bg,
+                                                  gboolean               is_root);
+ 
+ #if GTK_CHECK_VERSION(3, 0, 0)
+-	cairo_surface_t* mate_bg_create_pixmap(MateBG* bg, GdkWindow* window, int width, int height, gboolean root);
++cairo_surface_t *mate_bg_create_surface        (MateBG               *bg,
+ #else
+-	GdkPixmap* mate_bg_create_pixmap(MateBG* bg, GdkWindow* window, int width, int height, gboolean root);
++GdkPixmap       *mate_bg_create_pixmap         (MateBG               *bg,
+ #endif
++						GdkWindow            *window,
++						int                   width,
++						int                   height,
++						gboolean              root);
+ 
+ gboolean         mate_bg_get_image_size        (MateBG               *bg,
+ 						 MateDesktopThumbnailFactory *factory,
+@@ -124,20 +128,25 @@ GdkPixbuf *      mate_bg_create_frame_thumbnail (MateBG              *bg,
+ 						 int                    dest_height,
+ 						 int                    frame_num);
+ 
+-/* Set a pixmap as root - not a MateBG method. At some point
++/* Set a surface as root - not a MateBG method. At some point
+  * if we decide to stabilize the API then we may want to make
+- * these object methods, drop mate_bg_create_pixmap, etc.
++ * these object methods, drop mate_bg_create_surface, etc.
+  */
+-
+ #if GTK_CHECK_VERSION(3, 0, 0)
+-	void mate_bg_set_pixmap_as_root(GdkScreen* screen, cairo_surface_t* pixmap);
+-	MateBGCrossfade* mate_bg_set_pixmap_as_root_with_crossfade(GdkScreen* screen, cairo_surface_t* pixmap);
+-	cairo_surface_t* mate_bg_get_pixmap_from_root(GdkScreen* screen);
+-#else
+-	void mate_bg_set_pixmap_as_root(GdkScreen* screen, GdkPixmap* pixmap);
+-	MateBGCrossfade* mate_bg_set_pixmap_as_root_with_crossfade(GdkScreen* screen, GdkPixmap* pixmap);
+-	GdkPixmap* mate_bg_get_pixmap_from_root(GdkScreen* screen);
+-#endif
++void             mate_bg_set_surface_as_root   (GdkScreen            *screen,
++						cairo_surface_t    *surface);
++MateBGCrossfade *mate_bg_set_surface_as_root_with_crossfade (GdkScreen       *screen,
++							     cairo_surface_t *surface);
++cairo_surface_t *mate_bg_get_surface_from_root (GdkScreen *screen);
++
++#else /* GTK_CHECK_VERSION(3, 0, 0) */
++
++void             mate_bg_set_pixmap_as_root    (GdkScreen          *screen,
++						GdkPixmap          *pixmap);
++MateBGCrossfade *mate_bg_set_pixmap_as_root_with_crossfade  (GdkScreen       *screen,
++							     GdkPixmap       *pixmap);
++GdkPixmap *mate_bg_get_pixmap_from_root (GdkScreen *screen);
++#endif /* GTK_CHECK_VERSION(3, 0, 0) */
+ 
+ #ifdef __cplusplus
+ }
+diff --git a/libmate-desktop/mate-bg-crossfade.c b/libmate-desktop/mate-bg-crossfade.c
+index 48afc37..c3667cd 100644
+--- a/libmate-desktop/mate-bg-crossfade.c
++++ b/libmate-desktop/mate-bg-crossfade.c
+@@ -1,4 +1,4 @@
+-/* mate-bg-crossfade.h - fade window background between two pixmaps
++/* mate-bg-crossfade.h - fade window background between two surfaces
+  *
+  * Copyright (C) 2008 Red Hat, Inc.
+  *
+@@ -38,24 +38,24 @@
+ #include <libmateui/mate-bg.h>
+ #include "libmateui/mate-bg-crossfade.h"
+ 
++#if !GTK_CHECK_VERSION(3, 0, 0)
++#define cairo_surface_t GdkPixmap
++#define cairo_create gdk_cairo_create
++#define cairo_set_source_surface gdk_cairo_set_source_pixmap
++#define cairo_surface_destroy g_object_unref
++#endif
++
+ struct _MateBGCrossfadePrivate
+ {
+-	GdkWindow *window;
+-	int        width;
+-	int        height;
+-
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_surface_t* fading_pixmap;
+-		cairo_surface_t* end_pixmap;
+-	#else
+-		GdkPixmap* fading_pixmap;
+-		GdkPixmap* end_pixmap;
+-	#endif
+-
+-	gdouble    start_time;
+-	gdouble    total_duration;
+-	guint      timeout_id;
+-	guint      is_first_frame : 1;
++	GdkWindow       *window;
++	int              width;
++	int              height;
++	cairo_surface_t *fading_surface;
++	cairo_surface_t *end_surface;
++	gdouble          start_time;
++	gdouble          total_duration;
++	guint            timeout_id;
++	guint            is_first_frame : 1;
+ };
+ 
+ enum {
+@@ -138,14 +138,14 @@ mate_bg_crossfade_finalize (GObject *object)
+ 
+ 	mate_bg_crossfade_stop (fade);
+ 
+-	if (fade->priv->fading_pixmap != NULL) {
+-		g_object_unref (fade->priv->fading_pixmap);
+-		fade->priv->fading_pixmap = NULL;
++	if (fade->priv->fading_surface != NULL) {
++		cairo_surface_destroy (fade->priv->fading_surface);
++		fade->priv->fading_surface = NULL;
+ 	}
+ 
+-	if (fade->priv->end_pixmap != NULL) {
+-		g_object_unref (fade->priv->end_pixmap);
+-		fade->priv->end_pixmap = NULL;
++	if (fade->priv->end_surface != NULL) {
++		cairo_surface_destroy (fade->priv->end_surface);
++		fade->priv->end_surface = NULL;
+ 	}
+ }
+ 
+@@ -164,7 +164,7 @@ mate_bg_crossfade_class_init (MateBGCrossfadeClass *fade_class)
+ 	 * MateBGCrossfade:width:
+ 	 *
+ 	 * When a crossfade is running, this is width of the fading
+-	 * pixmap.
++	 * surface.
+ 	 */
+ 	g_object_class_install_property (gobject_class,
+ 					 PROP_WIDTH,
+@@ -178,7 +178,7 @@ mate_bg_crossfade_class_init (MateBGCrossfadeClass *fade_class)
+ 	 * MateBGCrossfade:height:
+ 	 *
+ 	 * When a crossfade is running, this is height of the fading
+-	 * pixmap.
++	 * surface.
+ 	 */
+ 	g_object_class_install_property (gobject_class,
+ 					 PROP_HEIGHT,
+@@ -193,7 +193,7 @@ mate_bg_crossfade_class_init (MateBGCrossfadeClass *fade_class)
+ 	 * @window: the #GdkWindow the crossfade happend on.
+ 	 *
+ 	 * When a crossfade finishes, @window will have a copy
+-	 * of the end pixmap as its background, and this signal will
++	 * of the end surface as its background, and this signal will
+ 	 * get emitted.
+ 	 */
+ 	signals[FINISHED] = g_signal_new ("finished",
+@@ -210,8 +210,8 @@ mate_bg_crossfade_init (MateBGCrossfade *fade)
+ {
+ 	fade->priv = MATE_BG_CROSSFADE_GET_PRIVATE (fade);
+ 
+-	fade->priv->fading_pixmap = NULL;
+-	fade->priv->end_pixmap = NULL;
++	fade->priv->fading_surface = NULL;
++	fade->priv->end_surface = NULL;
+ 	fade->priv->timeout_id = 0;
+ }
+ 
+@@ -221,11 +221,11 @@ mate_bg_crossfade_init (MateBGCrossfade *fade)
+  * @height: The height of the crossfading window
+  *
+  * Creates a new object to manage crossfading a
+- * window background between two #GdkPixmap drawables.
++ * window background between two #cairo_surface_ts.
+  *
+  * Return value: the new #MateBGCrossfade
+  **/
+-MateBGCrossfade* mate_bg_crossfade_new(int width, int height)
++MateBGCrossfade* mate_bg_crossfade_new (int width, int height)
+ {
+ 	GObject* object;
+ 
+@@ -237,28 +237,37 @@ MateBGCrossfade* mate_bg_crossfade_new(int width, int height)
+ 	return (MateBGCrossfade*) object;
+ }
+ 
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	static cairo_surface_t* tile_pixmap(cairo_surface_t* pixmap, int width, int height)
+-#else
+-	static GdkPixmap* tile_pixmap(GdkPixmap* pixmap, int width, int height)
+-#endif
++static cairo_surface_t *
++tile_surface (cairo_surface_t *surface,
++              int              width,
++              int              height)
+ {
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_surface_t* copy;
+-	#else
+-		GdkPixmap* copy;
+-	#endif
+-
++	cairo_surface_t *copy;
+ 	cairo_t *cr;
+ 
+-	copy = gdk_pixmap_new(pixmap, width, height, pixmap == NULL? 24 : -1);
++#if GTK_CHECK_VERSION (3, 0, 0)
++	if (surface == NULL)
++	{
++		copy = gdk_window_create_similar_surface (gdk_get_default_root_window (),
++		                                          CAIRO_CONTENT_COLOR,
++		                                          width, height);
++	}
++	else
++	{
++		copy = cairo_surface_create_similar (surface,
++		                                     cairo_surface_get_content (surface),
++		                                     width, height);
++	}
++#else
++	copy = gdk_pixmap_new(surface, width, height, surface == NULL? 24 : -1);
++#endif
+ 
+-	cr = gdk_cairo_create(copy);
++	cr = cairo_create (copy);
+ 
+-	if (pixmap != NULL)
++	if (surface != NULL)
+ 	{
+ 		cairo_pattern_t *pattern;
+-		gdk_cairo_set_source_pixmap (cr, pixmap, 0.0, 0.0);
++		cairo_set_source_surface (cr, surface, 0.0, 0.0);
+ 		pattern = cairo_get_source (cr);
+ 		cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
+ 	}
+@@ -273,7 +282,7 @@ MateBGCrossfade* mate_bg_crossfade_new(int width, int height)
+ 
+ 	if (cairo_status (cr) != CAIRO_STATUS_SUCCESS)
+ 	{
+-		g_object_unref (copy);
++		cairo_surface_destroy (copy);
+ 		copy = NULL;
+ 	}
+ 
+@@ -283,36 +292,37 @@ MateBGCrossfade* mate_bg_crossfade_new(int width, int height)
+ }
+ 
+ /**
+- * mate_bg_crossfade_set_start_pixmap:
++ * mate_bg_crossfade_set_start_surface:
+  * @fade: a #MateBGCrossfade
+- * @pixmap: The #GdkPixmap to fade from
++ * @surface: The cairo surface to fade from
+  *
+  * Before initiating a crossfade with mate_bg_crossfade_start()
+- * a start and end pixmap have to be set.  This function sets
+- * the pixmap shown at the beginning of the crossfade effect.
++ * a start and end surface have to be set.  This function sets
++ * the surface shown at the beginning of the crossfade effect.
+  *
+- * Return value: %TRUE if successful, or %FALSE if the pixmap
++ * Return value: %TRUE if successful, or %FALSE if the surface
+  * could not be copied.
+  **/
++gboolean
+ #if GTK_CHECK_VERSION(3, 0, 0)
+-	gboolean mate_bg_crossfade_set_start_pixmap(MateBGCrossfade* fade, cairo_surface_t* pixmap)
++mate_bg_crossfade_set_start_surface (MateBGCrossfade* fade, cairo_surface_t *surface)
+ #else
+-	gboolean mate_bg_crossfade_set_start_pixmap(MateBGCrossfade* fade, GdkPixmap* pixmap)
++mate_bg_crossfade_set_start_pixmap (MateBGCrossfade* fade, GdkPixmap *surface)
+ #endif
+ {
+ 	g_return_val_if_fail (MATE_IS_BG_CROSSFADE (fade), FALSE);
+ 
+-	if (fade->priv->fading_pixmap != NULL)
++	if (fade->priv->fading_surface != NULL)
+ 	{
+-		g_object_unref (fade->priv->fading_pixmap);
+-		fade->priv->fading_pixmap = NULL;
++		cairo_surface_destroy (fade->priv->fading_surface);
++		fade->priv->fading_surface = NULL;
+ 	}
+ 
+-	fade->priv->fading_pixmap = tile_pixmap(pixmap,
+-	                                        fade->priv->width,
+-	                                        fade->priv->height);
++	fade->priv->fading_surface = tile_surface (surface,
++						   fade->priv->width,
++						   fade->priv->height);
+ 
+-	return fade->priv->fading_pixmap != NULL;
++	return fade->priv->fading_surface != NULL;
+ }
+ 
+ static gdouble
+@@ -331,38 +341,39 @@ get_current_time (void)
+ }
+ 
+ /**
+- * mate_bg_crossfade_set_end_pixmap:
++ * mate_bg_crossfade_set_end_surface:
+  * @fade: a #MateBGCrossfade
+- * @pixmap: The #GdkPixmap to fade to
++ * @surface: The cairo surface to fade to
+  *
+  * Before initiating a crossfade with mate_bg_crossfade_start()
+- * a start and end pixmap have to be set.  This function sets
+- * the pixmap shown at the end of the crossfade effect.
++ * a start and end surface have to be set.  This function sets
++ * the surface shown at the end of the crossfade effect.
+  *
+- * Return value: %TRUE if successful, or %FALSE if the pixmap
++ * Return value: %TRUE if successful, or %FALSE if the surface
+  * could not be copied.
+  **/
++gboolean
+ #if GTK_CHECK_VERSION(3, 0, 0)
+-	gboolean mate_bg_crossfade_set_end_pixmap(MateBGCrossfade* fade, cairo_surface_t* pixmap)
++mate_bg_crossfade_set_end_surface (MateBGCrossfade* fade, cairo_surface_t *surface)
+ #else
+-	gboolean mate_bg_crossfade_set_end_pixmap(MateBGCrossfade* fade, GdkPixmap* pixmap)
++mate_bg_crossfade_set_end_pixmap (MateBGCrossfade* fade, GdkPixmap *surface)
+ #endif
+ {
+ 	g_return_val_if_fail (MATE_IS_BG_CROSSFADE (fade), FALSE);
+ 
+-	if (fade->priv->end_pixmap != NULL) {
+-		g_object_unref (fade->priv->end_pixmap);
+-		fade->priv->end_pixmap = NULL;
++	if (fade->priv->end_surface != NULL) {
++		cairo_surface_destroy (fade->priv->end_surface);
++		fade->priv->end_surface = NULL;
+ 	}
+ 
+-	fade->priv->end_pixmap = tile_pixmap (pixmap,
+-					      fade->priv->width,
+-					      fade->priv->height);
++	fade->priv->end_surface = tile_surface (surface,
++					        fade->priv->width,
++					        fade->priv->height);
+ 
+ 	/* Reset timer in case we're called while animating
+ 	 */
+ 	fade->priv->start_time = get_current_time ();
+-	return fade->priv->end_pixmap != NULL;
++	return fade->priv->end_surface != NULL;
+ }
+ 
+ static gboolean
+@@ -374,11 +385,7 @@ animations_are_disabled (MateBGCrossfade *fade)
+ 
+ 	g_assert (fade->priv->window != NULL);
+ 
+-	#if GTK_CHECK_VERSION(2, 24, 0)
+-		screen = gdk_window_get_screen(fade->priv->window);
+-	#else // since 2.2
+-		screen = gdk_drawable_get_screen(GDK_DRAWABLE(fade->priv->window));
+-	#endif
++	screen = gdk_window_get_screen(fade->priv->window);
+ 
+ 	settings = gtk_settings_get_for_screen (screen);
+ 
+@@ -391,9 +398,12 @@ static void
+ draw_background (MateBGCrossfade *fade)
+ {
+ 	if (GDK_WINDOW_TYPE (fade->priv->window) == GDK_WINDOW_ROOT) {
+-		GdkDisplay *display;
+-		display = gdk_drawable_get_display (fade->priv->window);
+-		gdk_window_clear (fade->priv->window);
++		XClearArea (GDK_WINDOW_XDISPLAY (fade->priv->window),
++			    GDK_WINDOW_XID (fade->priv->window),
++			    0, 0,
++			    gdk_window_get_width (fade->priv->window),
++			    gdk_window_get_height (fade->priv->window),
++			    False);
+ 		gdk_flush ();
+ 	} else {
+ 		gdk_window_invalidate_rect (fade->priv->window, NULL, FALSE);
+@@ -425,7 +435,7 @@ on_tick (MateBGCrossfade *fade)
+ 		return on_tick (fade);
+ 	}
+ 
+-	if (fade->priv->fading_pixmap == NULL) {
++	if (fade->priv->fading_surface == NULL) {
+ 		return FALSE;
+ 	}
+ 
+@@ -441,10 +451,10 @@ on_tick (MateBGCrossfade *fade)
+ 	 * even the fastest machines will get *some* fade because the framerate
+ 	 * is capped.
+ 	 */
+-	cr = gdk_cairo_create (fade->priv->fading_pixmap);
++	cr = cairo_create (fade->priv->fading_surface);
+ 
+-	gdk_cairo_set_source_pixmap (cr, fade->priv->end_pixmap,
+-				     0.0, 0.0);
++	cairo_set_source_surface (cr, fade->priv->end_surface,
++				  0.0, 0.0);
+ 	cairo_paint_with_alpha (cr, percent_done);
+ 
+ 	status = cairo_status (cr);
+@@ -462,20 +472,27 @@ on_finished (MateBGCrossfade *fade)
+ 	if (fade->priv->timeout_id == 0)
+ 		return;
+ 
+-	g_assert (fade->priv->end_pixmap != NULL);
++	g_assert (fade->priv->end_surface != NULL);
+ 
++#if GTK_CHECK_VERSION (3, 0, 0)
++	cairo_pattern_t *pattern;
++	pattern = cairo_pattern_create_for_surface (fade->priv->end_surface);
++	gdk_window_set_background_pattern (fade->priv->window, pattern);
++	cairo_pattern_destroy (pattern);
++#else
+ 	gdk_window_set_back_pixmap (fade->priv->window,
+-				    fade->priv->end_pixmap,
++				    fade->priv->end_surface,
+ 				    FALSE);
++#endif
+ 	draw_background (fade);
+ 
+-	g_object_unref (fade->priv->end_pixmap);
+-	fade->priv->end_pixmap = NULL;
++	cairo_surface_destroy (fade->priv->end_surface);
++	fade->priv->end_surface = NULL;
+ 
+-	g_assert (fade->priv->fading_pixmap != NULL);
++	g_assert (fade->priv->fading_surface != NULL);
+ 
+-	g_object_unref (fade->priv->fading_pixmap);
+-	fade->priv->fading_pixmap = NULL;
++	cairo_surface_destroy (fade->priv->fading_surface);
++	fade->priv->fading_surface = NULL;
+ 
+ 	fade->priv->timeout_id = 0;
+ 	g_signal_emit (fade, signals[FINISHED], 0, fade->priv->window);
+@@ -486,11 +503,11 @@ on_finished (MateBGCrossfade *fade)
+  * @fade: a #MateBGCrossfade
+  * @window: The #GdkWindow to draw crossfade on
+  *
+- * This function initiates a quick crossfade between two pixmaps on
++ * This function initiates a quick crossfade between two surfaces on
+  * the background of @window.  Before initiating the crossfade both
+  * mate_bg_crossfade_start() and mate_bg_crossfade_end() need to
+  * be called. If animations are disabled, the crossfade is skipped,
+- * and the window background is set immediately to the end pixmap.
++ * and the window background is set immediately to the end surface.
+  **/
+ void
+ mate_bg_crossfade_start (MateBGCrossfade *fade,
+@@ -501,8 +518,8 @@ mate_bg_crossfade_start (MateBGCrossfade *fade,
+ 
+ 	g_return_if_fail (MATE_IS_BG_CROSSFADE (fade));
+ 	g_return_if_fail (window != NULL);
+-	g_return_if_fail (fade->priv->fading_pixmap != NULL);
+-	g_return_if_fail (fade->priv->end_pixmap != NULL);
++	g_return_if_fail (fade->priv->fading_surface != NULL);
++	g_return_if_fail (fade->priv->end_surface != NULL);
+ 	g_return_if_fail (!mate_bg_crossfade_is_started (fade));
+ 	g_return_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_FOREIGN);
+ 
+@@ -516,9 +533,16 @@ mate_bg_crossfade_start (MateBGCrossfade *fade,
+ 	g_source_unref (source);
+ 
+ 	fade->priv->window = window;
++#if GTK_CHECK_VERSION (3, 0, 0)
++	cairo_pattern_t *pattern;
++	pattern = cairo_pattern_create_for_surface (fade->priv->fading_surface);
++	gdk_window_set_background_pattern (fade->priv->window, pattern);
++	cairo_pattern_destroy (pattern);
++#else
+ 	gdk_window_set_back_pixmap (fade->priv->window,
+-				    fade->priv->fading_pixmap,
++				    fade->priv->fading_surface,
+ 				    FALSE);
++#endif
+ 	draw_background (fade);
+ 
+ 	fade->priv->is_first_frame = TRUE;
+diff --git a/libmate-desktop/mate-bg.c b/libmate-desktop/mate-bg.c
+index 0e95471..a02eb95 100644
+--- a/libmate-desktop/mate-bg.c
++++ b/libmate-desktop/mate-bg.c
+@@ -34,19 +34,24 @@ Author: Soren Sandmann <sandmann at redhat.com>
+ 
+ #include <gio/gio.h>
+ 
+-#include <gdk/gdk.h>
+ #include <gdk/gdkx.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xatom.h>
+ 
+ #include <cairo.h>
+ 
+-#include <gio/gio.h>
+-
+ #define MATE_DESKTOP_USE_UNSTABLE_API
+ #include <libmateui/mate-bg.h>
+ #include <libmateui/mate-bg-crossfade.h>
+ 
++#if GTK_CHECK_VERSION (3, 0, 0)
++# include <cairo-xlib.h>
++#else
++#define cairo_surface_t GdkPixmap
++#define cairo_create gdk_cairo_create
++#define cairo_surface_destroy g_object_unref
++#endif
++
+ #define BG_KEY_DRAW_BACKGROUND    "draw-background"
+ #define BG_KEY_PRIMARY_COLOR      "primary-color"
+ #define BG_KEY_SECONDARY_COLOR    "secondary-color"
+@@ -97,9 +102,6 @@ struct _MateBG {
+ 	GdkColor primary;
+ 	GdkColor secondary;
+ 
+-	gint last_pixmap_width;
+-	gint last_pixmap_height;
+-
+ 	GFileMonitor* file_monitor;
+ 
+ 	guint changed_id;
+@@ -129,11 +131,13 @@ static guint signals[N_SIGNALS] = {0};
+ 
+ G_DEFINE_TYPE(MateBG, mate_bg, G_TYPE_OBJECT)
+ 
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	static cairo_surface_t* make_root_pixmap(GdkScreen* screen, gint width, gint height);
++#if GTK_CHECK_VERSION (3, 0, 0)
++static cairo_surface_t *make_root_pixmap     (GdkScreen  *screen,
+ #else
+-	static GdkPixmap* make_root_pixmap(GdkScreen* screen, gint width, gint height);
++static GdkPixmap       *make_root_pixmap     (GdkScreen  *screen,
+ #endif
++                                              gint        width,
++                                              gint        height);
+ 
+ /* Pixbuf utils */
+ static guint32    pixbuf_average_value (GdkPixbuf  *pixbuf);
+@@ -144,12 +148,11 @@ static GdkPixbuf *pixbuf_scale_to_min  (GdkPixbuf  *src,
+ 					int         min_width,
+ 					int         min_height);
+ 
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	static void pixbuf_draw_gradient(GdkPixbuf* pixbuf, gboolean horizontal, GdkColor* c1, GdkColor* c2, cairo_rectangle_int_t* rect);
+-#else
+-	static void pixbuf_draw_gradient(GdkPixbuf* pixbuf, gboolean horizontal, GdkColor* c1, GdkColor* c2, GdkRectangle* rect);
+-#endif
+-
++static void       pixbuf_draw_gradient (GdkPixbuf    *pixbuf,
++					gboolean      horizontal,
++					GdkColor     *c1,
++					GdkColor     *c2,
++					GdkRectangle *rect);
+ 
+ static void       pixbuf_tile          (GdkPixbuf  *src,
+ 					GdkPixbuf  *dest);
+@@ -615,27 +618,20 @@ mate_bg_set_filename (MateBG     *bg,
+ 	}
+ }
+ 
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	static void draw_color_area(MateBG* bg, GdkPixbuf* dest, cairo_rectangle_int_t* rect)
+-#else
+-	static void draw_color_area(MateBG* bg, GdkPixbuf* dest, GdkRectangle* rect)
+-#endif
++static void
++draw_color_area (MateBG *bg,
++		 GdkPixbuf *dest,
++		 GdkRectangle *rect)
+ {
+ 	guint32 pixel;
+-
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_rectangle_int_t extent;
+-	#else
+-		GdkRectangle extent;
+-	#endif
+-
++	GdkRectangle extent;
+ 
+         extent.x = 0;
+         extent.y = 0;
+         extent.width = gdk_pixbuf_get_width (dest);
+         extent.height = gdk_pixbuf_get_height (dest);
+ 
+-	gdk_rectangle_intersect(rect, &extent, rect);
++	gdk_rectangle_intersect (rect, &extent, rect);
+ 
+ 	switch (bg->color_type) {
+ 	case MATE_BG_COLOR_SOLID:
+@@ -666,11 +662,7 @@ draw_color (MateBG *bg,
+ 	    GdkPixbuf *dest,
+ 	    GdkScreen *screen)
+ {
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_rectangle_int_t rect;
+-	#else
+-		GdkRectangle rect;
+-	#endif
++	GdkRectangle rect;
+ 
+ 	rect.x = 0;
+ 	rect.y = 0;
+@@ -684,11 +676,7 @@ draw_color_each_monitor (MateBG *bg,
+ 			 GdkPixbuf *dest,
+ 			 GdkScreen *screen)
+ {
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_rectangle_int_t rect;
+-	#else
+-		GdkRectangle rect;
+-	#endif
++	GdkRectangle rect;
+ 	gint num_monitors;
+ 	int monitor;
+ 
+@@ -780,11 +768,11 @@ get_scaled_pixbuf (MateBGPlacement placement,
+ }
+ 
+ 
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	static void draw_image_area(MateBGPlacement placement, GdkPixbuf* pixbuf, GdkPixbuf* dest, cairo_rectangle_int_t* area)
+-#else
+-	static void draw_image_area(MateBGPlacement placement, GdkPixbuf* pixbuf, GdkPixbuf* dest, GdkRectangle* area)
+-#endif
++static void
++draw_image_area (MateBGPlacement   placement,
++		 GdkPixbuf        *pixbuf,
++		 GdkPixbuf        *dest,
++		 GdkRectangle     *area)
+ {
+ 	int dest_width = area->width;
+ 	int dest_height = area->height;
+@@ -822,11 +810,7 @@ draw_image (MateBGPlacement  placement,
+ 	    GdkPixbuf        *pixbuf,
+ 	    GdkPixbuf        *dest)
+ {
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_rectangle_int_t rect;
+-	#else
+-		GdkRectangle rect;
+-	#endif
++	GdkRectangle rect;
+ 
+ 	rect.x = 0;
+ 	rect.y = 0;
+@@ -841,12 +825,7 @@ draw_once (MateBG   *bg,
+ 	   GdkPixbuf *dest,
+ 	   GdkScreen *screen)
+ {
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_rectangle_int_t rect;
+-	#else
+-		GdkRectangle rect;
+-	#endif
+-
++	GdkRectangle rect;
+ 	GdkPixbuf   *pixbuf;
+ 
+ 	rect.x = 0;
+@@ -869,11 +848,7 @@ draw_each_monitor (MateBG   *bg,
+ 		   GdkPixbuf *dest,
+ 		   GdkScreen *screen)
+ {
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_rectangle_int_t rect;
+-	#else
+-		GdkRectangle rect;
+-	#endif
++	GdkRectangle rect;
+ 	gint num_monitors;
+ 	int monitor;
+ 
+@@ -962,78 +937,76 @@ mate_bg_get_pixmap_size (MateBG   *bg,
+ }
+ 
+ /**
+- * mate_bg_get_pixmap:
++ * mate_bg_create_surface:
+  * @bg: MateBG
+  * @window:
+  * @width:
+  * @height:
++ * @is_root:
+  *
+- * Create a pixmap that can be set as background for @window. If @root is TRUE,
+- * the pixmap created will be created by a temporary X server connection so
+- * that if someone calls XKillClient on it, it won't affect the application who
+- * created it.
+- *
+- * Since: 2.20
++ * Create a surface that can be set as background for @window. If @is_root is
++ * TRUE, the surface created will be created by a temporary X server connection
++ * so that if someone calls XKillClient on it, it won't affect the application
++ * who created it.
+  **/
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	cairo_surface_t* mate_bg_create_pixmap(MateBG* bg, GdkWindow* window, int width, int height, gboolean is_root)
++#if GTK_CHECK_VERSION (3, 0, 0)
++cairo_surface_t *
++mate_bg_create_surface (MateBG      *bg,
+ #else
+-	GdkPixmap* mate_bg_create_pixmap(MateBG* bg, GdkWindow* window, int width, int height, gboolean is_root)
++GdkPixmap *
++mate_bg_create_pixmap  (MateBG      *bg,
+ #endif
++		 	GdkWindow   *window,
++			int	     width,
++			int	     height,
++			gboolean     is_root)
+ {
+ 	int pm_width, pm_height;
+ 
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_surface_t* pixmap;
+-	#else
+-		GdkPixmap* pixmap;
+-	#endif
++	cairo_surface_t *surface;
+ 	cairo_t *cr;
+ 
+ 	g_return_val_if_fail (bg != NULL, NULL);
+ 	g_return_val_if_fail (window != NULL, NULL);
+ 
+-	if (bg->last_pixmap_width != width ||
+-	    bg->last_pixmap_height != height)  {
+-		if (bg->pixbuf_cache) {
+-			g_object_unref (bg->pixbuf_cache);
+-			bg->pixbuf_cache = NULL;
+-		}
++	if (bg->pixbuf_cache &&
++	    gdk_pixbuf_get_width (bg->pixbuf_cache) != width &&
++	    gdk_pixbuf_get_height (bg->pixbuf_cache) != height)
++	{
++		g_object_unref (bg->pixbuf_cache);
++		bg->pixbuf_cache = NULL;
+ 	}
+-	bg->last_pixmap_width = width;
+-	bg->last_pixmap_height = height;
+ 
+ 	/* has the side effect of loading and caching pixbuf only when in tile mode */
+ 	mate_bg_get_pixmap_size (bg, width, height, &pm_width, &pm_height);
+ 
+-	if (is_root) {
+-
+-		#if GTK_CHECK_VERSION(2, 24, 0)
+-			pixmap = make_root_pixmap(gdk_window_get_screen(window), pm_width, pm_height);
+-		#else // since 2.2
+-			pixmap = make_root_pixmap(gdk_drawable_get_screen(GDK_DRAWABLE(window)), pm_width, pm_height);
+-		#endif
+-
++	if (is_root)
++	{
++		surface = make_root_pixmap (gdk_window_get_screen(window),
++					    pm_width, pm_height);
+ 	}
+-	else {
+-		pixmap = gdk_pixmap_new (window, pm_width, pm_height, -1);
++	else
++	{
++#if GTK_CHECK_VERSION (3, 0, 0)
++		surface = gdk_window_create_similar_surface (window,
++                                                             CAIRO_CONTENT_COLOR,
++                                                             pm_width, pm_height);
++#else
++		surface = gdk_pixmap_new (window, pm_width, pm_height, -1);
++#endif
+ 	}
+ 
+-	cr = gdk_cairo_create (pixmap);
++	cr = cairo_create (surface);
+ 	if (!bg->filename && bg->color_type == MATE_BG_COLOR_SOLID) {
+ 		gdk_cairo_set_source_color (cr, &(bg->primary));
+ 	}
+-	else {
++	else
++	{
+ 		GdkPixbuf *pixbuf;
+ 
+-		pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, width, height);
+-
+-		#if GTK_CHECK_VERSION(2, 24, 0)
+-			mate_bg_draw(bg, pixbuf, gdk_window_get_screen(window), is_root);
+-		#else // since 2.2
+-			mate_bg_draw(bg, pixbuf, gdk_drawable_get_screen(GDK_DRAWABLE(window)), is_root);
+-		#endif
+-
++		pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8,
++					 width, height);
++		mate_bg_draw (bg, pixbuf, gdk_window_get_screen (window), is_root);
+ 		gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+ 		g_object_unref (pixbuf);
+ 	}
+@@ -1042,7 +1015,7 @@ mate_bg_get_pixmap_size (MateBG   *bg,
+ 
+ 	cairo_destroy (cr);
+ 
+-	return pixmap;
++	return surface;
+ }
+ 
+ 
+@@ -1092,23 +1065,17 @@ mate_bg_is_dark (MateBG *bg,
+  * Create a persistent pixmap. We create a separate display
+  * and set the closedown mode on it to RetainPermanent.
+  */
+-
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	static cairo_surface_t* make_root_pixmap(GdkScreen* screen, gint width, gint height)
++#if GTK_CHECK_VERSION (3, 0, 0)
++static cairo_surface_t *
+ #else
+-	static GdkPixmap* make_root_pixmap(GdkScreen* screen, gint width, gint height)
++static GdkPixmap *
+ #endif
++make_root_pixmap (GdkScreen *screen, gint width, gint height)
+ {
+-	Display* display;
+-	const char* display_name;
++	Display *display;
++	const char *display_name;
+ 	Pixmap result;
+-
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_surface_t* gdk_pixmap;
+-	#else
+-		GdkPixmap* gdk_pixmap;
+-	#endif
+-
++	cairo_surface_t *surface;
+ 	int screen_num;
+ 	int depth;
+ 
+@@ -1141,14 +1108,21 @@ mate_bg_is_dark (MateBG *bg,
+ 
+ 	XCloseDisplay (display);
+ 
+-	gdk_pixmap = gdk_pixmap_foreign_new_for_screen (screen, result,
++#if GTK_CHECK_VERSION (3, 0, 0)
++	surface = cairo_xlib_surface_create (GDK_SCREEN_XDISPLAY (screen),
++                                             result,
++                                             GDK_VISUAL_XVISUAL (gdk_screen_get_system_visual (screen)),
++        				     width, height);
++#else
++	surface = gdk_pixmap_foreign_new_for_screen (screen, result,
+ 							width, height, depth);
+ 
+ 	gdk_drawable_set_colormap (
+-		GDK_DRAWABLE (gdk_pixmap),
++		GDK_DRAWABLE (surface),
+ 		gdk_drawable_get_colormap (gdk_screen_get_root_window (screen)));
++#endif
+ 
+-	return gdk_pixmap;
++	return surface;
+ }
+ 
+ static gboolean
+@@ -1256,21 +1230,23 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ }
+ 
+ /**
+- * mate_bg_get_pixmap_from_root:
++ * mate_bg_get_surface_from_root:
+  * @screen: a #GdkScreen
+  *
+  * This function queries the _XROOTPMAP_ID property from
+  * the root window associated with @screen to determine
+- * the current root window background pixmap and returns
++ * the current root window background surface and returns
+  * a copy of it. If the _XROOTPMAP_ID is not set, then
+- * a black pixmap is returned.
++ * a black surface is returned.
+  *
+- * Return value: a #GdkPixmap if successful or %NULL
++ * Return value: a #cairo_surface_t if successful or %NULL
+  **/
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	cairo_surface_t* mate_bg_get_pixmap_from_root(GdkScreen* screen)
++#if GTK_CHECK_VERSION (3, 0, 0)
++cairo_surface_t *
++mate_bg_get_surface_from_root (GdkScreen *screen)
+ #else
+-	GdkPixmap* mate_bg_get_pixmap_from_root(GdkScreen* screen)
++GdkPixmap *
++mate_bg_get_pixmap_from_root (GdkScreen *screen)
+ #endif
+ {
+ 	int result;
+@@ -1281,17 +1257,10 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ 	Atom type;
+ 	Display *display;
+ 	int screen_num;
+-
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_surface_t* pixmap;
+-		cairo_surface_t* source_pixmap;
+-	#else
+-		GdkPixmap* pixmap;
+-		GdkPixmap* source_pixmap;
+-	#endif
++	cairo_surface_t *surface;
++	cairo_surface_t *source_pixmap;
+ 	int width, height;
+ 	cairo_t *cr;
+-	cairo_pattern_t *pattern;
+ 
+ 	display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
+ 	screen_num = gdk_screen_get_number (screen);
+@@ -1302,7 +1271,7 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ 				     0L, 1L, False, XA_PIXMAP,
+ 				     &type, &format, &nitems, &bytes_after,
+ 				     &data);
+-	pixmap = NULL;
++	surface = NULL;
+ 	source_pixmap = NULL;
+ 
+ 	if (result != Success || type != XA_PIXMAP ||
+@@ -1313,6 +1282,26 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ 
+ 	if (data != NULL) {
+ 		gdk_error_trap_push ();
++
++#if GTK_CHECK_VERSION (3, 0, 0)
++		Pixmap xpixmap = *(Pixmap *) data;
++		Window root_return;
++		int x_ret, y_ret;
++		unsigned int w_ret, h_ret, bw_ret, depth_ret;
++
++		if (XGetGeometry (GDK_SCREEN_XDISPLAY (screen),
++				  xpixmap,
++				  &root_return,
++				  &x_ret, &y_ret, &w_ret, &h_ret, &bw_ret, &depth_ret))
++		{
++			source_pixmap = cairo_xlib_surface_create (GDK_SCREEN_XDISPLAY (screen),
++								   xpixmap,
++								   GDK_VISUAL_XVISUAL (gdk_screen_get_system_visual (screen)),
++								   w_ret, h_ret);
++		}
++
++		gdk_error_trap_pop_ignored ();
++#else
+ 		source_pixmap = gdk_pixmap_foreign_new (*(Pixmap *) data);
+ 		gdk_error_trap_pop ();
+ 
+@@ -1320,19 +1309,44 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ 			gdk_drawable_set_colormap (source_pixmap,
+ 						   gdk_screen_get_default_colormap (screen));
+ 		}
++#endif
+ 	}
+ 
+ 	width = gdk_screen_get_width (screen);
+ 	height = gdk_screen_get_height (screen);
+ 
+-	pixmap = gdk_pixmap_new (source_pixmap != NULL? source_pixmap :
++#if GTK_CHECK_VERSION (3, 0, 0)
++	if (source_pixmap) {
++		surface = cairo_surface_create_similar (source_pixmap,
++							CAIRO_CONTENT_COLOR,
++							width, height);
++
++		cr = cairo_create (surface);
++		cairo_set_source_surface (cr, source_pixmap, 0, 0);
++		cairo_paint (cr);
++
++		if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) {
++			cairo_surface_destroy (surface);
++			surface = NULL;
++		}
++
++		cairo_destroy (cr);
++	}
++
++	if (surface == NULL) {
++		surface = gdk_window_create_similar_surface (gdk_screen_get_root_window (screen),
++							     CAIRO_CONTENT_COLOR,
++							     width, height);
++	}
++#else
++	surface = gdk_pixmap_new (source_pixmap != NULL? source_pixmap :
+ 				 gdk_screen_get_root_window (screen),
+ 				 width, height, -1);
+ 
+-	cr = gdk_cairo_create (pixmap);
++	cr = gdk_cairo_create (surface);
+ 	if (source_pixmap != NULL) {
+ 		gdk_cairo_set_source_pixmap (cr, source_pixmap, 0, 0);
+-		pattern = cairo_get_source (cr);
++		cairo_pattern_t *pattern = cairo_get_source (cr);
+ 		cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
+ 	} else {
+ 		cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+@@ -1340,25 +1354,24 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ 	cairo_paint (cr);
+ 
+ 	if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) {
+-		g_object_unref (pixmap);
+-		pixmap = NULL;
++		g_object_unref (surface);
++		surface = NULL;
+ 	}
+ 	cairo_destroy (cr);
++#endif
+ 
+ 	if (source_pixmap != NULL)
+-		g_object_unref (source_pixmap);
++		cairo_surface_destroy (source_pixmap);
+ 
+ 	if (data != NULL)
+ 		XFree (data);
+ 
+-	return pixmap;
++	return surface;
+ }
+ 
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	static void mate_bg_set_root_pixmap_id(GdkScreen* screen, cairo_surface_t* pixmap)
+-#else
+-	static void mate_bg_set_root_pixmap_id(GdkScreen* screen, GdkPixmap* pixmap)
+-#endif
++static void
++mate_bg_set_root_pixmap_id (GdkScreen       *screen,
++			    cairo_surface_t *surface)
+ {
+ 	int      result;
+ 	gint     format;
+@@ -1389,13 +1402,21 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ 		    nitems == 1) {
+ 			gdk_error_trap_push ();
+ 			XKillClient (display, *(Pixmap *)data_esetroot);
++#if GTK_CHECK_VERSION (3, 0, 0)
++			gdk_error_trap_pop_ignored ();
++#else
+ 			gdk_flush ();
+ 			gdk_error_trap_pop ();
++#endif
+ 		}
+ 		XFree (data_esetroot);
+ 	}
+ 
+-	pixmap_id = GDK_WINDOW_XWINDOW (pixmap);
++#if GTK_CHECK_VERSION (3, 0, 0)
++	pixmap_id = cairo_xlib_surface_get_drawable (surface);
++#else
++	pixmap_id = GDK_WINDOW_XWINDOW (surface);
++#endif
+ 
+ 	XChangeProperty (display, RootWindow (display, screen_num),
+ 			 gdk_x11_get_xatom_by_name ("ESETROOT_PMAP_ID"),
+@@ -1408,28 +1429,34 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ }
+ 
+ /**
+- * mate_bg_set_pixmap_as_root:
++ * mate_bg_set_surface_as_root:
+  * @screen: the #GdkScreen to change root background on
+- * @pixmap: the #GdkPixmap to set root background from
++ * @surface: the #cairo_surface_t to set root background from.
++ *   Must be an xlib surface backing a pixmap.
+  *
+  * Set the root pixmap, and properties pointing to it. We
+  * do this atomically with a server grab to make sure that
+  * we won't leak the pixmap if somebody else it setting
+  * it at the same time. (This assumes that they follow the
+- * same conventions we do).  @pixmap should come from a call
+- * to mate_bg_create_pixmap().
++ * same conventions we do).  @surface should come from a call
++ * to mate_bg_create_surface().
+  **/
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	void mate_bg_set_pixmap_as_root(GdkScreen* screen, cairo_surface_t* pixmap)
++void
++#if GTK_CHECK_VERSION (3, 0, 0)
++mate_bg_set_surface_as_root (GdkScreen *screen, cairo_surface_t *surface)
+ #else
+-	void mate_bg_set_pixmap_as_root(GdkScreen* screen, GdkPixmap* pixmap)
++mate_bg_set_pixmap_as_root  (GdkScreen *screen, GdkPixmap *surface)
+ #endif
+ {
+ 	Display *display;
+ 	int      screen_num;
+ 
+ 	g_return_if_fail (screen != NULL);
+-	g_return_if_fail (pixmap != NULL);
++#if GTK_CHECK_VERSION (3, 0, 0)
++	g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_XLIB);
++#else
++	g_return_if_fail (surface != NULL);
++#endif
+ 
+ 	screen_num = gdk_screen_get_number (screen);
+ 
+@@ -1437,10 +1464,14 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ 
+ 	gdk_x11_display_grab (gdk_screen_get_display (screen));
+ 
+-	mate_bg_set_root_pixmap_id (screen, pixmap);
++	mate_bg_set_root_pixmap_id (screen, surface);
+ 
+ 	XSetWindowBackgroundPixmap (display, RootWindow (display, screen_num),
+-				    GDK_PIXMAP_XID (pixmap));
++#if GTK_CHECK_VERSION (3, 0, 0)
++				    cairo_xlib_surface_get_drawable (surface));
++#else
++				    GDK_PIXMAP_XID (surface));
++#endif
+ 	XClearWindow (display, RootWindow (display, screen_num));
+ 
+ 	gdk_display_flush (gdk_screen_get_display (screen));
+@@ -1448,39 +1479,36 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ }
+ 
+ /**
+- * mate_bg_set_pixmap_as_root_with_crossfade:
++ * mate_bg_set_surface_as_root_with_crossfade:
+  * @screen: the #GdkScreen to change root background on
+- * @pixmap: the #GdkPixmap to set root background from
++ * @surface: the cairo xlib surface to set root background from
+  * @context: a #GMainContext or %NULL
+  *
+  * Set the root pixmap, and properties pointing to it.
+- * This function differs from mate_bg_set_pixmap_as_root()
++ * This function differs from mate_bg_set_surface_as_root()
+  * in that it adds a subtle crossfade animation from the
+  * current root pixmap to the new one.
+- * same conventions we do).
+  *
+  * Return value: a #MateBGCrossfade object
+  **/
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	MateBGCrossfade* mate_bg_set_pixmap_as_root_with_crossfade(GdkScreen* screen, cairo_surface_t* pixmap)
++MateBGCrossfade *
++#if GTK_CHECK_VERSION (3, 0, 0)
++mate_bg_set_surface_as_root_with_crossfade (GdkScreen       *screen,
++		 			    cairo_surface_t *surface)
+ #else
+-	MateBGCrossfade* mate_bg_set_pixmap_as_root_with_crossfade(GdkScreen* screen, GdkPixmap* pixmap)
++mate_bg_set_pixmap_as_root_with_crossfade (GdkScreen *screen,
++		 			   GdkPixmap *surface)
+ #endif
+ {
+ 	GdkDisplay *display;
+ 	GdkWindow *root_window;
+-
+-	#if GTK_CHECK_VERSION(3, 0, 0)
+-		cairo_surface_t* old_pixmap;
+-	#else
+-		GdkPixmap* old_pixmap;
+-	#endif
++	cairo_surface_t *old_surface;
+ 
+ 	int      width, height;
+ 	MateBGCrossfade *fade;
+ 
+ 	g_return_val_if_fail (screen != NULL, NULL);
+-	g_return_val_if_fail (pixmap != NULL, NULL);
++	g_return_val_if_fail (surface != NULL, NULL);
+ 
+ 	root_window = gdk_screen_get_root_window (screen);
+ 
+@@ -1491,11 +1519,19 @@ mate_bg_create_thumbnail (MateBG               *bg,
+ 
+ 	display = gdk_screen_get_display (screen);
+ 	gdk_x11_display_grab (display);
+-	old_pixmap = mate_bg_get_pixmap_from_root (screen);
+-	mate_bg_set_root_pixmap_id (screen, pixmap);
+-	mate_bg_crossfade_set_start_pixmap (fade, old_pixmap);
+-	g_object_unref (old_pixmap);
+-	mate_bg_crossfade_set_end_pixmap (fade, pixmap);
++#if GTK_CHECK_VERSION (3, 0, 0)
++	old_surface = mate_bg_get_surface_from_root (screen);
++	mate_bg_set_root_pixmap_id (screen, surface);
++	mate_bg_crossfade_set_start_surface (fade, old_surface);
++	cairo_surface_destroy (old_surface);
++	mate_bg_crossfade_set_end_surface (fade, surface);
++#else
++	old_surface = mate_bg_get_pixmap_from_root (screen);
++	mate_bg_set_root_pixmap_id (screen, surface);
++	mate_bg_crossfade_set_start_pixmap (fade, old_surface);
++	cairo_surface_destroy (old_surface);
++	mate_bg_crossfade_set_end_pixmap (fade, surface);
++#endif
+ 	gdk_display_flush (display);
+ 	gdk_x11_display_ungrab (display);
+ 
+@@ -1722,9 +1758,12 @@ get_as_pixbuf_for_size (MateBG    *bg,
+ 
+ 		/* If scalable choose maximum size */
+ 		format = gdk_pixbuf_get_file_info (filename, NULL, NULL);
+-		if (format != NULL)
+-            tmp = gdk_pixbuf_format_get_name (format);
+-		if (format != NULL &&
++		if (format != NULL) {
++			tmp = gdk_pixbuf_format_get_name (format);
++		} else {
++			tmp = NULL;
++		}
++		if (tmp != NULL &&
+ 		    g_strcmp0 (tmp, "svg") == 0 &&
+ 		    (best_width > 0 && best_height > 0) &&
+ 		    (bg->placement == MATE_BG_PLACEMENT_FILL_SCREEN ||
+@@ -2363,11 +2402,12 @@ create_gradient (const GdkColor *primary,
+ 	return result;
+ }
+ 
+-#if GTK_CHECK_VERSION(3, 0, 0)
+-	static void pixbuf_draw_gradient(GdkPixbuf* pixbuf, gboolean horizontal, GdkColor* primary, GdkColor* secondary, cairo_rectangle_int_t* rect)
+-#else
+-	static void pixbuf_draw_gradient(GdkPixbuf* pixbuf, gboolean horizontal, GdkColor* primary, GdkColor* secondary, GdkRectangle* rect)
+-#endif
++static void
++pixbuf_draw_gradient (GdkPixbuf    *pixbuf,
++		      gboolean      horizontal,
++		      GdkColor     *primary,
++		      GdkColor     *secondary,
++		      GdkRectangle *rect)
+ {
+ 	int width;
+ 	int height;
+diff --git a/libmate-desktop/mate-rr-labeler.c b/libmate-desktop/mate-rr-labeler.c
+index 577a33a..c649f81 100644
+--- a/libmate-desktop/mate-rr-labeler.c
++++ b/libmate-desktop/mate-rr-labeler.c
+@@ -1,4 +1,6 @@
+-/* mate-rr-labeler.c - Utility to label monitors to identify them
++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
++ *
++ * mate-rr-labeler.c - Utility to label monitors to identify them
+  * while they are being configured.
+  *
+  * Copyright 2008, Novell, Inc.
+@@ -30,6 +32,12 @@
+ #include "libmateui/mate-rr-labeler.h"
+ #include <gtk/gtk.h>
+ 
++#include <X11/Xproto.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++#include <X11/Xatom.h>
++#include <gdk/gdkx.h>
++
+ struct _MateRRLabeler {
+ 	GObject parent;
+ 
+@@ -39,6 +47,9 @@ struct _MateRRLabeler {
+ 
+ 	GdkColor *palette;
+ 	GtkWidget **windows;
++
++	GdkScreen  *screen;
++	Atom        workarea_atom;
+ };
+ 
+ struct _MateRRLabelerClass {
+@@ -48,11 +59,105 @@ struct _MateRRLabelerClass {
+ G_DEFINE_TYPE (MateRRLabeler, mate_rr_labeler, G_TYPE_OBJECT);
+ 
+ static void mate_rr_labeler_finalize (GObject *object);
++static void create_label_windows (MateRRLabeler *labeler);
++
++static gboolean
++get_work_area (MateRRLabeler *labeler,
++	       GdkRectangle   *rect)
++{
++	Atom            workarea;
++	Atom            type;
++	Window          win;
++	int             format;
++	gulong          num;
++	gulong          leftovers;
++	gulong          max_len = 4 * 32;
++	guchar         *ret_workarea;
++	long           *workareas;
++	int             result;
++	int             disp_screen;
++	Display        *display;
++
++	display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (labeler->screen));
++	workarea = XInternAtom (display, "_NET_WORKAREA", True);
++
++	disp_screen = GDK_SCREEN_XNUMBER (labeler->screen);
++
++	/* Defaults in case of error */
++	rect->x = 0;
++	rect->y = 0;
++	rect->width = gdk_screen_get_width (labeler->screen);
++	rect->height = gdk_screen_get_height (labeler->screen);
++
++	if (workarea == None)
++		return FALSE;
++
++	win = XRootWindow (display, disp_screen);
++	result = XGetWindowProperty (display,
++				     win,
++				     workarea,
++				     0,
++				     max_len,
++				     False,
++				     AnyPropertyType,
++				     &type,
++				     &format,
++				     &num,
++				     &leftovers,
++				     &ret_workarea);
++
++	if (result != Success
++	    || type == None
++	    || format == 0
++	    || leftovers
++	    || num % 4) {
++		return FALSE;
++	}
++
++	workareas = (long *) ret_workarea;
++	rect->x = workareas[disp_screen * 4];
++	rect->y = workareas[disp_screen * 4 + 1];
++	rect->width = workareas[disp_screen * 4 + 2];
++	rect->height = workareas[disp_screen * 4 + 3];
++
++	XFree (ret_workarea);
++
++	return TRUE;
++}
++
++static GdkFilterReturn
++screen_xevent_filter (GdkXEvent      *xevent,
++		      GdkEvent       *event,
++		      MateRRLabeler *labeler)
++{
++	XEvent *xev;
++
++	xev = (XEvent *) xevent;
++
++	if (xev->type == PropertyNotify &&
++	    xev->xproperty.atom == labeler->workarea_atom) {
++		/* update label positions */
++		mate_rr_labeler_hide (labeler);
++		create_label_windows (labeler);
++	}
++
++	return GDK_FILTER_CONTINUE;
++}
+ 
+ static void
+ mate_rr_labeler_init (MateRRLabeler *labeler)
+ {
+-	/* nothing */
++	GdkWindow *gdkwindow;
++
++	labeler->workarea_atom = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
++					      "_NET_WORKAREA",
++					      True);
++
++	labeler->screen = gdk_screen_get_default ();
++	/* code is not really designed to handle multiple screens so *shrug* */
++	gdkwindow = gdk_screen_get_root_window (labeler->screen);
++	gdk_window_add_filter (gdkwindow, (GdkFilterFunc) screen_xevent_filter, labeler);
++	gdk_window_set_events (gdkwindow, gdk_window_get_events (gdkwindow) | GDK_PROPERTY_CHANGE_MASK);
+ }
+ 
+ static void
+@@ -69,9 +174,13 @@ static void
+ mate_rr_labeler_finalize (GObject *object)
+ {
+ 	MateRRLabeler *labeler;
++	GdkWindow      *gdkwindow;
+ 
+ 	labeler = MATE_RR_LABELER (object);
+ 
++	gdkwindow = gdk_screen_get_root_window (labeler->screen);
++	gdk_window_remove_filter (gdkwindow, (GdkFilterFunc) screen_xevent_filter, labeler);
++
+ 	/* We don't destroy the labeler->config (a MateRRConfig*) here; let our
+ 	 * caller do that instead.
+ 	 */
+@@ -141,16 +250,21 @@ make_palette (MateRRLabeler *labeler)
+ #define LABEL_WINDOW_PADDING 12
+ 
+ static gboolean
++#if GTK_CHECK_VERSION (3, 0, 0)
++label_window_draw_event_cb (GtkWidget *widget, cairo_t *cr, gpointer data)
++#else
+ label_window_expose_event_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data)
++#endif
+ {
+-	cairo_t *cr;
+ 	GdkColor *color;
+ 	GtkAllocation allocation;
+ 
+ 	color = g_object_get_data (G_OBJECT (widget), "color");
+ 	gtk_widget_get_allocation (widget, &allocation);
+ 
+-	cr = gdk_cairo_create (gtk_widget_get_window (widget));
++#if !GTK_CHECK_VERSION (3, 0, 0)
++	cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (widget));
++#endif
+ 
+ 	/* edge outline */
+ 
+@@ -173,11 +287,33 @@ label_window_expose_event_cb (GtkWidget *widget, GdkEventExpose *event, gpointer
+ 			 allocation.height - LABEL_WINDOW_EDGE_THICKNESS * 2);
+ 	cairo_fill (cr);
+ 
++#if !GTK_CHECK_VERSION (3, 0, 0)
+ 	cairo_destroy (cr);
++#endif
+ 
+ 	return FALSE;
+ }
+ 
++static void
++position_window (MateRRLabeler  *labeler,
++		 GtkWidget       *window,
++		 int              x,
++		 int              y)
++{
++	GdkRectangle    workarea;
++	GdkRectangle    monitor;
++	int             monitor_num;
++
++	get_work_area (labeler, &workarea);
++	monitor_num = gdk_screen_get_monitor_at_point (labeler->screen, x, y);
++	gdk_screen_get_monitor_geometry (labeler->screen,
++                                         monitor_num,
++                                         &monitor);
++	gdk_rectangle_intersect (&monitor, &workarea, &workarea);
++
++	gtk_window_move (GTK_WINDOW (window), workarea.x, workarea.y);
++}
++
+ static GtkWidget *
+ create_label_window (MateRRLabeler *labeler, MateOutputInfo *output, GdkColor *color)
+ {
+@@ -198,8 +334,13 @@ create_label_window (MateRRLabeler *labeler, MateOutputInfo *output, GdkColor *c
+ 	 */
+ 	g_object_set_data (G_OBJECT (window), "color", color);
+ 
++#if GTK_CHECK_VERSION (3, 0, 0)
++	g_signal_connect (window, "draw",
++			  G_CALLBACK (label_window_draw_event_cb), labeler);
++#else
+ 	g_signal_connect (window, "expose-event",
+ 			  G_CALLBACK (label_window_expose_event_cb), labeler);
++#endif
+ 
+ 	if (labeler->config->clone) {
+ 		/* Keep this string in sync with mate-control-center/capplets/display/xrandr-capplet.c:get_display_name() */
+@@ -227,7 +368,7 @@ create_label_window (MateRRLabeler *labeler, MateOutputInfo *output, GdkColor *c
+ 	gtk_container_add (GTK_CONTAINER (window), widget);
+ 
+ 	/* Should we center this at the top edge of the monitor, instead of using the upper-left corner? */
+-	gtk_window_move (GTK_WINDOW (window), output->x, output->y);
++	position_window (labeler, window, output->x, output->y);
+ 
+ 	gtk_widget_show_all (window);
+ 
+diff --git a/libmate-desktop/mate-rr.c b/libmate-desktop/mate-rr.c
+index 5c73ce9..22852d4 100644
+--- a/libmate-desktop/mate-rr.c
++++ b/libmate-desktop/mate-rr.c
+@@ -486,8 +486,12 @@ fill_out_screen_info (Display *xdisplay,
+     if (info->screen->rr_major_version == 1 && info->screen->rr_minor_version >= 3) {
+         gdk_error_trap_push ();
+         info->primary = XRRGetOutputPrimary (xdisplay, xroot);
++      #if GTK_CHECK_VERSION (3, 0, 0)
++	gdk_error_trap_pop_ignored ();
++      #else
+ 	gdk_flush ();
+ 	gdk_error_trap_pop (); /* ignore error */
++      #endif
+     }
+ #endif
+ 
+@@ -746,8 +750,12 @@ mate_rr_screen_set_size (MateRRScreen *screen,
+     gdk_error_trap_push ();
+     XRRSetScreenSize (screen->xdisplay, screen->xroot,
+ 		      width, height, mm_width, mm_height);
++  #if GTK_CHECK_VERSION (3, 0, 0)
++    gdk_error_trap_pop_ignored ();
++  #else
+     gdk_flush ();
+     gdk_error_trap_pop (); /* ignore error */
++  #endif
+ #endif
+ }
+ 
+diff --git a/schemas/org.mate.accessibility-keyboard.gschema.xml.in.in b/schemas/org.mate.accessibility-keyboard.gschema.xml.in.in
+index b7e7a84..f5f42fd 100644
+--- a/schemas/org.mate.accessibility-keyboard.gschema.xml.in.in
++++ b/schemas/org.mate.accessibility-keyboard.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.accessibility-keyboard" path="/desktop/mate/accessibility/keyboard/">
++  <schema id="org.mate.accessibility-keyboard" path="/org/mate/desktop/accessibility/keyboard/">
+     <key name="enable" type="b">
+       <default>false</default>
+     </key>
+diff --git a/schemas/org.mate.accessibility-startup.gschema.xml.in.in b/schemas/org.mate.accessibility-startup.gschema.xml.in.in
+index 0b0cc75..5011c13 100644
+--- a/schemas/org.mate.accessibility-startup.gschema.xml.in.in
++++ b/schemas/org.mate.accessibility-startup.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.accessibility-startup" path="/desktop/mate/accessibility/startup/">
++  <schema id="org.mate.accessibility-startup" path="/org/mate/desktop/accessibility/startup/">
+     <key name="exec-ats" type="as">
+       <default>[]</default>
+       <_summary>Startup Assistive Technology Applications</_summary>
+diff --git a/schemas/org.mate.applications-at-mobility.gschema.xml.in.in b/schemas/org.mate.applications-at-mobility.gschema.xml.in.in
+index d0466cd..0e4b65e 100644
+--- a/schemas/org.mate.applications-at-mobility.gschema.xml.in.in
++++ b/schemas/org.mate.applications-at-mobility.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.applications-at-mobility" path="/desktop/mate/applications/at/mobility/">
++  <schema id="org.mate.applications-at-mobility" path="/org/mate/desktop/applications/at/mobility/">
+     <key name="exec" type="s">
+       <default>'dasher'</default>
+       <_summary>Preferred Mobility assistive technology application</_summary>
+diff --git a/schemas/org.mate.applications-at-visual.gschema.xml.in.in b/schemas/org.mate.applications-at-visual.gschema.xml.in.in
+index bb14ffb..b7ac679 100644
+--- a/schemas/org.mate.applications-at-visual.gschema.xml.in.in
++++ b/schemas/org.mate.applications-at-visual.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.applications-at-visual" path="/desktop/mate/applications/at/visual/">
++  <schema id="org.mate.applications-at-visual" path="/org/mate/desktop/applications/at/visual/">
+     <key name="exec" type="s">
+       <default>'orca'</default>
+       <_summary>Preferred Visual assistive technology application</_summary>
+diff --git a/schemas/org.mate.applications-browser.gschema.xml.in.in b/schemas/org.mate.applications-browser.gschema.xml.in.in
+index 6fbfc78..57c49d3 100644
+--- a/schemas/org.mate.applications-browser.gschema.xml.in.in
++++ b/schemas/org.mate.applications-browser.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.applications-browsser" path="/desktop/mate/applications/browser/">
++  <schema id="org.mate.applications-browser" path="/org/mate/desktop/applications/browser/">
+     <key name="exec" type="s">
+       <default>'mozilla'</default>
+       <_summary>Default browser</_summary>
+diff --git a/schemas/org.mate.applications-office.gschema.xml.in.in b/schemas/org.mate.applications-office.gschema.xml.in.in
+index c891a86..5ad64cf 100644
+--- a/schemas/org.mate.applications-office.gschema.xml.in.in
++++ b/schemas/org.mate.applications-office.gschema.xml.in.in
+@@ -1,9 +1,9 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.applications-office" path="/desktop/mate/applications/">
++  <schema id="org.mate.applications-office" path="/org/mate/desktop/applications/">
+     <child name="calendar" schema="org.mate.applications-office.calendar"/>
+     <child name="tasks" schema="org.mate.applications-office.tasks"/>
+   </schema>
+-  <schema id="org.mate.applications-office.calendar" path="/desktop/mate/applications/calendar/">
++  <schema id="org.mate.applications-office.calendar" path="/org/mate/desktop/applications/calendar/">
+     <key name="exec" type="s">
+       <default>'evolution'</default>
+       <_summary>Default calendar</_summary>
+@@ -15,7 +15,7 @@
+       <_description>Whether the default calendar application needs a terminal to run</_description>
+     </key>
+   </schema>
+-  <schema id="org.mate.applications-office.tasks" path="/desktop/mate/applications/tasks/">
++  <schema id="org.mate.applications-office.tasks" path="/org/mate/desktop/applications/tasks/">
+     <key name="exec" type="s">
+       <default>'evolution'</default>
+       <_summary>Default tasks</_summary>
+diff --git a/schemas/org.mate.applications-terminal.gschema.xml.in.in b/schemas/org.mate.applications-terminal.gschema.xml.in.in
+index c5a3240..adeca8f 100644
+--- a/schemas/org.mate.applications-terminal.gschema.xml.in.in
++++ b/schemas/org.mate.applications-terminal.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.applications-terminal" path="/desktop/mate/applications/terminal/">
++  <schema id="org.mate.applications-terminal" path="/org/mate/desktop/applications/terminal/">
+     <key name="exec" type="s">
+       <default>'mate-terminal'</default>
+       <_summary>Terminal application</_summary>
+diff --git a/schemas/org.mate.background.gschema.xml.in.in b/schemas/org.mate.background.gschema.xml.in.in
+index e9bca5b..d3a29aa 100644
+--- a/schemas/org.mate.background.gschema.xml.in.in
++++ b/schemas/org.mate.background.gschema.xml.in.in
+@@ -12,7 +12,7 @@
+ 	<value nick="horizontal-gradient" value="1"/>
+ 	<value nick="vertical-gradient" value="2"/>
+   </enum>
+-  <schema id="org.mate.background" path="/desktop/mate/background/">
++  <schema id="org.mate.background" path="/org/mate/desktop/background/">
+     <key name="draw-background" type="b">
+       <default>true</default>
+       <_summary>Draw Desktop Background</_summary>
+diff --git a/schemas/org.mate.file-views.gschema.xml.in.in b/schemas/org.mate.file-views.gschema.xml.in.in
+index 54289ee..9396dd6 100644
+--- a/schemas/org.mate.file-views.gschema.xml.in.in
++++ b/schemas/org.mate.file-views.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.file-views" path="/desktop/mate/file-views/">
++  <schema id="org.mate.file-views" path="/org/mate/desktop/file-views/">
+     <key name="icon-theme" type="s">
+       <default>'crux_teal'</default>
+       <_summary>File Icon Theme</_summary>
+diff --git a/schemas/org.mate.interface.gschema.xml.in.in b/schemas/org.mate.interface.gschema.xml.in.in
+index d92b342..d7f60d5 100644
+--- a/schemas/org.mate.interface.gschema.xml.in.in
++++ b/schemas/org.mate.interface.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.interface" path="/desktop/mate/interface/">
++  <schema id="org.mate.interface" path="/org/mate/desktop/interface/">
+     <key name="accessibility" type="b">
+       <default>false</default>
+       <_summary>Enable Accessibility</_summary>
+diff --git a/schemas/org.mate.lockdown.gschema.xml.in.in b/schemas/org.mate.lockdown.gschema.xml.in.in
+index c18c4a4..7505146 100644
+--- a/schemas/org.mate.lockdown.gschema.xml.in.in
++++ b/schemas/org.mate.lockdown.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.lockdown" path="/desktop/mate/lockdown/">
++  <schema id="org.mate.lockdown" path="/org/mate/desktop/lockdown/">
+     <key name="disable-command-line" type="b">
+       <default>false</default>
+       <_summary>Disable command line</_summary>
+diff --git a/schemas/org.mate.peripherals-keyboard.gschema.xml.in.in b/schemas/org.mate.peripherals-keyboard.gschema.xml.in.in
+index 03c7a43..ebe4d5e 100644
+--- a/schemas/org.mate.peripherals-keyboard.gschema.xml.in.in
++++ b/schemas/org.mate.peripherals-keyboard.gschema.xml.in.in
+@@ -4,7 +4,7 @@
+     <value nick="on" value="1"/>
+     <value nick="unknown" value="2"/>
+   </enum>
+-  <schema id="org.mate.peripherals-keyboard" path="/desktop/mate/peripherals/keyboard/">
++  <schema id="org.mate.peripherals-keyboard" path="/org/mate/desktop/peripherals/keyboard/">
+     <key name="repeat" type="b">
+       <default>true</default>
+     </key>
+diff --git a/schemas/org.mate.peripherals-mouse.gschema.xml.in.in b/schemas/org.mate.peripherals-mouse.gschema.xml.in.in
+index a439871..fd7b908 100644
+--- a/schemas/org.mate.peripherals-mouse.gschema.xml.in.in
++++ b/schemas/org.mate.peripherals-mouse.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.peripherals-mouse" path="/desktop/mate/peripherals/mouse/">
++  <schema id="org.mate.peripherals-mouse" path="/org/mate/desktop/peripherals/mouse/">
+     <key name="left-handed" type="b">
+       <default>false</default>
+       <_summary>Mouse button orientation</_summary>
+diff --git a/schemas/org.mate.sound.gschema.xml.in.in b/schemas/org.mate.sound.gschema.xml.in.in
+index 7905007..ad412b8 100644
+--- a/schemas/org.mate.sound.gschema.xml.in.in
++++ b/schemas/org.mate.sound.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.sound" path="/desktop/mate/sound/">
++  <schema id="org.mate.sound" path="/org/mate/desktop/sound/">
+     <key name="default-mixer-device" type="s">
+       <default>''</default>
+       <_summary>Default mixer device</_summary>
+diff --git a/schemas/org.mate.thumbnail-cache.gschema.xml.in.in b/schemas/org.mate.thumbnail-cache.gschema.xml.in.in
+index 35ecf14..9c240ad 100644
+--- a/schemas/org.mate.thumbnail-cache.gschema.xml.in.in
++++ b/schemas/org.mate.thumbnail-cache.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.thumbnail-cache" path="/desktop/mate/thumbnail-cache/">
++  <schema id="org.mate.thumbnail-cache" path="/org/mate/desktop/thumbnail-cache/">
+     <key name="maximum-age" type="i">
+       <default>180</default>
+       <_description>Maximum age for thumbnails in the cache, in days. Set to -1 to disable cleaning.</_description>
+diff --git a/schemas/org.mate.thumbnailers.gschema.xml.in.in b/schemas/org.mate.thumbnailers.gschema.xml.in.in
+index edbc939..7d7eb56 100644
+--- a/schemas/org.mate.thumbnailers.gschema.xml.in.in
++++ b/schemas/org.mate.thumbnailers.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.thumbnailers" path="/desktop/mate/thumbnailers/">
++  <schema id="org.mate.thumbnailers" path="/org/mate/desktop/thumbnailers/">
+     <key name="disable-all" type="b">
+       <default>false</default>
+       <_summary>Disable all external thumbnailers</_summary>
+diff --git a/schemas/org.mate.typing-break.gschema.xml.in.in b/schemas/org.mate.typing-break.gschema.xml.in.in
+index 7b96e21..3da4086 100644
+--- a/schemas/org.mate.typing-break.gschema.xml.in.in
++++ b/schemas/org.mate.typing-break.gschema.xml.in.in
+@@ -1,5 +1,5 @@
+ <schemalist gettext-domain="@GETTEXT_PACKAGE@">
+-  <schema id="org.mate.typing-break" path="/desktop/mate/typing-break/">
++  <schema id="org.mate.typing-break" path="/org/mate/desktop/typing-break/">
+     <key name="type-time" type="i">
+       <default>60</default>
+       <_summary>Type time</_summary>
diff --git a/mate-desktop.spec b/mate-desktop.spec
index 6c8b26b..82b331a 100644
--- a/mate-desktop.spec
+++ b/mate-desktop.spec
@@ -1,11 +1,16 @@
 Summary:	Shared code for mate-panel, mate-session, mate-file-manager, etc
 Name:		mate-desktop
 Version:	1.5.3
-Release:	5%{?dist}
+Release:	6%{?dist}
 URL:		http://mate-desktop.org
 Source0:	http://pub.mate-desktop.org/releases/1.5/%{name}-%{version}.tar.xz
 Source1:        user-dirs-update-mate.desktop
 
+# upstream commits
+# highlights
+# https://github.com/mate-desktop/mate-desktop/pull/36
+Patch0:         commit_rollup.patch
+
 License:	GPLv2+ and LGPLv2+ and MIT
 
 BuildRequires:	mate-common
@@ -47,6 +52,7 @@ libmatedesktop.
 
 %prep
 %setup -q
+%patch0 -p1
 NOCONFIGURE=1 ./autogen.sh
 
 
@@ -116,6 +122,9 @@ fi
 
 
 %changelog
+* Wed Nov 21 2012 Leigh Scott <leigh123linux at googlemail.com> - 1.5.3-6
+- add upstream commits patch
+
 * Thu Nov 15 2012 Leigh Scott <leigh123linux at googlemail.com> - 1.5.3-5
 - remove omf directory hack and do it properly
 


More information about the scm-commits mailing list