diff --git a/.gitignore b/.gitignore index 63c3b81..12a2ded 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /caja-1.15.1.tar.xz /caja-1.15.2.tar.xz /caja-1.15.3.tar.xz +/caja-1.15.4.tar.xz diff --git a/caja.spec b/caja.spec index 19c2c66..6931e40 100644 --- a/caja.spec +++ b/caja.spec @@ -14,9 +14,9 @@ Name: caja Summary: File manager for MATE -Version: %{branch}.3 +Version: %{branch}.4 %if 0%{?rel_build} -Release: 3%{?dist} +Release: 1%{?dist} %else Release: 0.3%{?git_rel}%{?dist} %endif @@ -32,9 +32,6 @@ URL: http://mate-desktop.org Patch0: caja_add-xfce-to-desktop-file.patch Patch1: caja_0033-do-not-show-property-browser-in-menu.patch -# https://github.com/mate-desktop/caja/pull/607 -Patch2: caja_0001-Fix-background-rendering-in-noncomposited-case.patch -Patch3: caja_0062-GTK-3.21-destop-window-add-caja_desktop_window_final.patch BuildRequires: dbus-glib-devel BuildRequires: desktop-file-utils @@ -115,8 +112,6 @@ sed -i s/StartupNotify=true/StartupNotify=false/g data/caja.desktop.in.in %patch0 -p1 -b .add-xfce-to-desktop-file %patch1 -p1 -b .0033 -%patch2 -p1 -b .0001 -%patch3 -p1 -b .0062 %if 0%{?rel_build} #NOCONFIGURE=1 ./autogen.sh @@ -234,6 +229,9 @@ fi %changelog +* Sat Aug 13 2016 Wolfgang Ulbrich - 1.15.4-1 +- update to 1.15.4 release + * Wed Aug 10 2016 Wolfgang Ulbrich - 1.15.3-3 - fix crash on changing wallpapers in non-compositor mode diff --git a/caja_0001-Fix-background-rendering-in-noncomposited-case.patch b/caja_0001-Fix-background-rendering-in-noncomposited-case.patch deleted file mode 100644 index cb0ebdd..0000000 --- a/caja_0001-Fix-background-rendering-in-noncomposited-case.patch +++ /dev/null @@ -1,272 +0,0 @@ -From 8c926115c99100a581abfd20dced5dfbe4922792 Mon Sep 17 00:00:00 2001 -From: lukefromdc -Date: Mon, 8 Aug 2016 02:57:55 -0400 -Subject: [PATCH] Fix background rendering in noncomposited case -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Apply Alberts Muktupāvels' https://bugzilla.gnome.org/attachment.cgi?id=332444&action=diff to Caja, it just plain works. -Remove previous fallback background code. -Add GTK 3.21 selectors missed in caja_desktop_window_class_init, clean up a couple tabs ---- - src/caja-desktop-window.c | 152 ++++++++++++++++++++++++++------ - src/file-manager/fm-desktop-icon-view.c | 10 --- - 2 files changed, 126 insertions(+), 36 deletions(-) - -diff --git a/src/caja-desktop-window.c b/src/caja-desktop-window.c -index cea694d..42f4214 100644 ---- a/src/caja-desktop-window.c -+++ b/src/caja-desktop-window.c -@@ -34,18 +34,110 @@ - #include - #include - #include --#include -+#include -+#if GTK_CHECK_VERSION(3, 21, 0) -+#define MATE_DESKTOP_USE_UNSTABLE_API -+#include -+#endif - - struct CajaDesktopWindowDetails - { - gulong size_changed_id; - - gboolean loaded; -+#if GTK_CHECK_VERSION(3, 21, 0) -+ gboolean composited; -+ cairo_surface_t *surface; -+#endif - }; - - G_DEFINE_TYPE (CajaDesktopWindow, caja_desktop_window, - CAJA_TYPE_SPATIAL_WINDOW); - -+#if GTK_CHECK_VERSION(3, 21, 0) -+ -+static void -+background_changed (CajaDesktopWindow *window) -+{ -+ GdkScreen *screen = gdk_screen_get_default (); -+ -+ if (window->details->surface) { -+ cairo_surface_destroy (window->details->surface); -+ } -+ -+ window->details->surface = mate_bg_get_surface_from_root (screen); -+ gtk_widget_queue_draw (GTK_WIDGET (window)); -+} -+ -+static GdkFilterReturn -+filter_func (GdkXEvent *xevent, -+ GdkEvent *event, -+ CajaDesktopWindow *window) -+{ -+ XEvent *xev = (XEvent *) xevent; -+ GdkAtom gdkatom; -+ -+ if (xev->type != PropertyNotify) { -+ return GDK_FILTER_CONTINUE; -+ } -+ -+ gdkatom = gdk_atom_intern_static_string ("_XROOTPMAP_ID"); -+ if (xev->xproperty.atom != gdk_x11_atom_to_xatom (gdkatom)) { -+ return GDK_FILTER_CONTINUE; -+ } -+ -+ background_changed (window); -+ -+ return GDK_FILTER_CONTINUE; -+} -+ -+static void -+caja_desktop_window_composited_changed (GtkWidget *widget) -+{ -+ CajaDesktopWindow *window = CAJA_DESKTOP_WINDOW (widget); -+ GdkScreen *screen = gdk_screen_get_default (); -+ gboolean composited = gdk_screen_is_composited (screen); -+ GdkWindow *root; -+ -+ if (window->details->composited == composited) { -+ return; -+ } -+ -+ window->details->composited = composited; -+ root = gdk_screen_get_root_window (screen); -+ -+ if (composited) { -+ gdk_window_remove_filter (root, (GdkFilterFunc) filter_func, window); -+ -+ if (window->details->surface) { -+ cairo_surface_destroy (window->details->surface); -+ window->details->surface = NULL; -+ } -+ } else { -+ gint events = gdk_window_get_events (root); -+ -+ gdk_window_set_events (root, events | GDK_PROPERTY_CHANGE_MASK); -+ gdk_window_add_filter (root, (GdkFilterFunc) filter_func, window); -+ background_changed (window); -+ } -+} -+ -+static gboolean -+caja_desktop_window_draw (GtkWidget *widget, -+ cairo_t *cr) -+{ -+ CajaDesktopWindow *window = CAJA_DESKTOP_WINDOW (widget); -+ -+ if (window->details->surface) { -+ cairo_set_source_surface (cr, window->details->surface, 0, 0); -+ cairo_paint (cr); -+ } -+ -+ return GTK_WIDGET_CLASS (caja_desktop_window_parent_class)->draw (widget, cr); -+} -+ -+#endif -+ - static void - caja_desktop_window_init (CajaDesktopWindow *window) - { -@@ -62,6 +154,11 @@ caja_desktop_window_init (CajaDesktopWindow *window) - gtk_style_context_add_class (context, "caja-desktop-window"); - #endif - -+#if GTK_CHECK_VERSION(3, 21, 0) -+ window->details->composited = TRUE; -+ caja_desktop_window_composited_changed (GTK_WIDGET (window)); -+#endif -+ - gtk_window_move (GTK_WINDOW (window), 0, 0); - - /* shouldn't really be needed given our semantic type -@@ -84,9 +181,9 @@ caja_desktop_window_init (CajaDesktopWindow *window) - /* Set the accessible name so that it doesn't inherit the cryptic desktop URI. */ - accessible = gtk_widget_get_accessible (GTK_WIDGET (window)); - -- if (accessible) { -+ if (accessible) { - atk_object_set_name (accessible, _("Desktop")); -- } -+ } - } - - static gint -@@ -180,11 +277,11 @@ static void - unrealize (GtkWidget *widget) - { - CajaDesktopWindow *window; -- CajaDesktopWindowDetails *details; -+ CajaDesktopWindowDetails *details; - GdkWindow *root_window; - - window = CAJA_DESKTOP_WINDOW (widget); -- details = window->details; -+ details = window->details; - - root_window = gdk_screen_get_root_window ( - gtk_window_get_screen (GTK_WINDOW (window))); -@@ -192,11 +289,11 @@ unrealize (GtkWidget *widget) - gdk_property_delete (root_window, - gdk_atom_intern ("CAJA_DESKTOP_WINDOW_ID", TRUE)); - -- if (details->size_changed_id != 0) { -- g_signal_handler_disconnect (gtk_window_get_screen (GTK_WINDOW (window)), -- details->size_changed_id); -- details->size_changed_id = 0; -- } -+ if (details->size_changed_id != 0) { -+ g_signal_handler_disconnect (gtk_window_get_screen (GTK_WINDOW (window)), -+ details->size_changed_id); -+ details->size_changed_id = 0; -+ } - - GTK_WIDGET_CLASS (caja_desktop_window_parent_class)->unrealize (widget); - } -@@ -242,12 +339,12 @@ static void - realize (GtkWidget *widget) - { - CajaDesktopWindow *window; -- CajaDesktopWindowDetails *details; -+ CajaDesktopWindowDetails *details; - #if GTK_CHECK_VERSION(3, 21, 0) -- GdkVisual *visual; -+ GdkVisual *visual; - #endif - window = CAJA_DESKTOP_WINDOW (widget); -- details = window->details; -+ details = window->details; - - /* Make sure we get keyboard events */ - gtk_widget_set_events (widget, gtk_widget_get_events (widget) -@@ -266,9 +363,9 @@ realize (GtkWidget *widget) - - set_desktop_window_id (window, gtk_widget_get_window (widget)); - -- details->size_changed_id = -- g_signal_connect (gtk_window_get_screen (GTK_WINDOW (window)), "size_changed", -- G_CALLBACK (caja_desktop_window_screen_size_changed), window); -+ details->size_changed_id = -+ g_signal_connect (gtk_window_get_screen (GTK_WINDOW (window)), "size_changed", -+ G_CALLBACK (caja_desktop_window_screen_size_changed), window); - } - - static char * -@@ -287,18 +384,21 @@ real_get_icon (CajaWindow *window, - static void - caja_desktop_window_class_init (CajaDesktopWindowClass *klass) - { -- GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); -- CajaWindowClass *nclass = CAJA_WINDOW_CLASS (klass); -- -- wclass->realize = realize; -- wclass->unrealize = unrealize; -- wclass->map = map; -+ GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); -+ CajaWindowClass *nclass = CAJA_WINDOW_CLASS (klass); - -- nclass->window_type = CAJA_WINDOW_DESKTOP; -- nclass->get_title = real_get_title; -- nclass->get_icon = real_get_icon; -+ wclass->realize = realize; -+ wclass->unrealize = unrealize; -+ wclass->map = map; -+#if GTK_CHECK_VERSION(3, 21, 0) -+ wclass->composited_changed = caja_desktop_window_composited_changed; -+ wclass->draw = caja_desktop_window_draw; -+#endif -+ nclass->window_type = CAJA_WINDOW_DESKTOP; -+ nclass->get_title = real_get_title; -+ nclass->get_icon = real_get_icon; - -- g_type_class_add_private (klass, sizeof (CajaDesktopWindowDetails)); -+ g_type_class_add_private (klass, sizeof (CajaDesktopWindowDetails)); - } - - gboolean -diff --git a/src/file-manager/fm-desktop-icon-view.c b/src/file-manager/fm-desktop-icon-view.c -index 7214926..1637532 100644 ---- a/src/file-manager/fm-desktop-icon-view.c -+++ b/src/file-manager/fm-desktop-icon-view.c -@@ -476,16 +476,6 @@ realized_callback (GtkWidget *widget, FMDesktopIconView *desktop_icon_view) - desktop_icon_view_property_filter, - desktop_icon_view); - -- /*Set up a fallback background style class for the noncompositing case */ --#if GTK_CHECK_VERSION(3, 21, 0) -- gboolean -- composited = gtk_widget_is_composited (GTK_WIDGET(desktop_icon_view)); -- if (!composited){ -- GtkStyleContext *context; -- context = gtk_widget_get_style_context (GTK_WIDGET(desktop_icon_view)); -- gtk_style_context_add_class(context,"caja-fallback-desktop-background"); -- } --#endif - } - - static CajaZoomLevel --- -2.7.4 - diff --git a/caja_0062-GTK-3.21-destop-window-add-caja_desktop_window_final.patch b/caja_0062-GTK-3.21-destop-window-add-caja_desktop_window_final.patch deleted file mode 100644 index 78ff373..0000000 --- a/caja_0062-GTK-3.21-destop-window-add-caja_desktop_window_final.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 67417a23577d2145b6415cec6943697f8cfa171d Mon Sep 17 00:00:00 2001 -From: raveit65 -Date: Wed, 10 Aug 2016 13:23:31 +0200 -Subject: [PATCH] GTK+-3.21 destop-window: add caja_desktop_window_finalize - function - ---- - src/caja-desktop-window.c | 24 ++++++++++++++++++++++++ - 1 file changed, 24 insertions(+) - -diff --git a/src/caja-desktop-window.c b/src/caja-desktop-window.c -index 42f4214..9e84f17 100644 ---- a/src/caja-desktop-window.c -+++ b/src/caja-desktop-window.c -@@ -136,6 +136,25 @@ caja_desktop_window_draw (GtkWidget *widget, - return GTK_WIDGET_CLASS (caja_desktop_window_parent_class)->draw (widget, cr); - } - -+static void -+caja_desktop_window_finalize (GObject *obj) -+{ -+ CajaDesktopWindow *window = CAJA_DESKTOP_WINDOW (obj); -+ -+ if (window->details->composited == FALSE) { -+ GdkScreen *screen = gdk_screen_get_default (); -+ GdkWindow *root = gdk_screen_get_root_window (screen); -+ -+ gdk_window_remove_filter (root, (GdkFilterFunc) filter_func, window); -+ } -+ -+ if (window->details->surface) { -+ cairo_surface_destroy (window->details->surface); -+ window->details->surface = NULL; -+ } -+ -+ G_OBJECT_CLASS (caja_desktop_window_parent_class)->finalize (obj); -+} - #endif - - static void -@@ -386,6 +405,11 @@ caja_desktop_window_class_init (CajaDesktopWindowClass *klass) - { - GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); - CajaWindowClass *nclass = CAJA_WINDOW_CLASS (klass); -+#if GTK_CHECK_VERSION(3, 21, 0) -+ GObjectClass *object_class = G_OBJECT_CLASS (klass); -+ -+ object_class->finalize = caja_desktop_window_finalize; -+#endif - - wclass->realize = realize; - wclass->unrealize = unrealize; --- -2.7.4 - diff --git a/sources b/sources index 835bacd..9e3e7d2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -42c563badcdea419ba8a8bf0763c9dd7 caja-1.15.3.tar.xz +eef008b02d6a6e923a512092d622a92f caja-1.15.4.tar.xz