diff --git a/nautilus-monitor-change.patch b/nautilus-monitor-change.patch new file mode 100644 index 0000000..e0025ac --- /dev/null +++ b/nautilus-monitor-change.patch @@ -0,0 +1,47 @@ +diff --git a/eel/eel-background.c b/eel/eel-background.c +index 9c40629..2854a07 100644 +--- a/eel/eel-background.c ++++ b/eel/eel-background.c +@@ -94,6 +94,8 @@ struct EelBackgroundDetails { + gboolean is_desktop; + /* Desktop screen size watcher */ + gulong screen_size_handler; ++ /* Desktop monitors configuration watcher */ ++ gulong screen_monitors_handler; + /* Can we use common pixmap for root window and desktop window */ + gboolean use_common_pixmap; + guint change_idle_id; +@@ -869,7 +871,6 @@ screen_size_changed (GdkScreen *screen, EelBackground *background) + g_signal_emit (background, signals[APPEARANCE_CHANGED], 0); + } + +- + static void + widget_realized_setup (GtkWidget *widget, gpointer data) + { +@@ -891,6 +892,13 @@ widget_realized_setup (GtkWidget *widget, gpointer data) + background->details->screen_size_handler = + g_signal_connect (screen, "size_changed", + G_CALLBACK (screen_size_changed), background); ++ if (background->details->screen_monitors_handler > 0) { ++ g_signal_handler_disconnect (screen, ++ background->details->screen_monitors_handler); ++ } ++ background->details->screen_monitors_handler = ++ g_signal_connect (screen, "monitors-changed", ++ G_CALLBACK (screen_size_changed), background); + + root_window = gdk_screen_get_root_window(screen); + +@@ -928,6 +936,11 @@ widget_unrealize_cb (GtkWidget *widget, gpointer data) + background->details->screen_size_handler); + background->details->screen_size_handler = 0; + } ++ if (background->details->screen_monitors_handler > 0) { ++ g_signal_handler_disconnect (gtk_widget_get_screen (GTK_WIDGET (widget)), ++ background->details->screen_monitors_handler); ++ background->details->screen_monitors_handler = 0; ++ } + background->details->use_common_pixmap = FALSE; + } + diff --git a/nautilus.spec b/nautilus.spec index 38d75e9..a1f588f 100644 --- a/nautilus.spec +++ b/nautilus.spec @@ -15,7 +15,7 @@ Name: nautilus Summary: File manager for GNOME Version: 2.28.1 -Release: 2%{?dist} +Release: 3%{?dist} License: GPLv2+ Group: User Interface/Desktops Source: http://download.gnome.org/sources/%{name}/2.28/%{name}-%{version}.tar.bz2 @@ -96,6 +96,8 @@ Patch18: nautilus-2.28.0-revert-bg-fade-break.patch # TODO: push upstream once confirmed as fixed Patch19: nautilus-2.28.2-infopanel-selection-crash.patch +# https://bugzilla.gnome.org/show_bug.cgi?id=147808 +Patch20: nautilus-monitor-change.patch %description Nautilus is the file manager and graphical shell for the GNOME desktop @@ -136,6 +138,7 @@ for developing nautilus extensions. %patch17 -p0 -b .symlink %patch18 -p1 -b .revert-bg-fade-break %patch19 -p1 -b .infopanel-crash +%patch20 -p1 -b .nautilus-monitor-change %build @@ -271,6 +274,9 @@ fi %changelog +* Mon Nov 9 2009 Matthias Clasen - 2.28.1-3 +- Handle monitor changes when drawing the background (gnome #147808) + * Mon Nov 2 2009 Tomas Bzatek - 2.28.1-2 - Don't crash in infopanel on invalid selection (#531826)