File theme.patch of Package f-spot

From 1000db3099631fd2da9d8f8e484fec0cb4eaf835 Mon Sep 17 00:00:00 2001
From: sdelcroix <sdelcroix@772769d8-d925-0410-89eb-a6ffa0d40526>
Date: Thu, 6 Nov 2008 10:00:55 +0000
Subject: [PATCH] 2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>

	* src/main.cs:
	* src/UI,Dialog/PreferenceDialog.cs: fix theme loading for gtk+ > 2.12.4

git-svn-id: svn+ssh://svn.gnome.org/svn/f-spot/branches/FSPOT_0_5_0_STABLE@4577 772769d8-d925-0410-89eb-a6ffa0d40526
---
 ChangeLog                         |    5 +++++
 src/UI.Dialog/PreferenceDialog.cs |   36 +++++++++++++++---------------------
 src/main.cs                       |    7 ++++---
 3 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5cb72e0..951e9aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>
+
+	* src/main.cs:
+	* src/UI,Dialog/PreferenceDialog.cs: fix theme loading for gtk+ > 2.12.4
+
 2008-11-05  Stephane Delcroix  <sdelcroix@novell.com>
 
 	* src/TagSelectionWidget.cs:
diff --git a/src/UI.Dialog/PreferenceDialog.cs b/src/UI.Dialog/PreferenceDialog.cs
index 7d1865a..a83056f 100644
--- a/src/UI.Dialog/PreferenceDialog.cs
+++ b/src/UI.Dialog/PreferenceDialog.cs
@@ -130,8 +130,8 @@ namespace FSpot.UI.Dialog {
 			set_saver_button.Clicked += HandleUseFSpot;
 			screensaverall_radio.Toggled += ToggleTagRadio;
 
-			themenone_radio.Toggled += ToggleThemeRadio;
 			themelist_combo = ComboBox.NewText ();
+			themenone_radio.Toggled += ToggleThemeRadio;
 			theme_list = new Dictionary<string, string> ();
 			string gtkrc = Path.Combine ("gtk-2.0", "gtkrc");
 			string [] search = {Path.Combine (Global.HomeDirectory, ".themes"), "/usr/share/themes"};
@@ -242,13 +242,19 @@ namespace FSpot.UI.Dialog {
 			if (themenone_radio.Active) {
 				Preferences.Set (Preferences.GTK_RC, String.Empty);
 #if GTK_2_12_2
-				if (!File.Exists (Path.Combine (Global.BaseDirectory, "gtkrc")))
-					(File.Create (Path.Combine (Global.BaseDirectory, "gtkrc"))).Dispose ();
-				else
-					File.SetLastWriteTime (Path.Combine (Global.BaseDirectory, "gtkrc"), DateTime.Now);
 				Gtk.Rc.DefaultFiles = Global.DefaultRcFiles;
-				Gtk.Rc.ReparseAll ();
+				Gtk.Rc.ReparseAllForSettings (Gtk.Settings.Default, true);
 #endif
+			} else {
+				TreeIter iter;
+				if (themelist_combo.GetActiveIter (out iter)) {
+					Preferences.Set (Preferences.GTK_RC, theme_list [(themelist_combo.Model.GetValue (iter, 0)) as string]);
+#if GTK_2_12_2
+					Gtk.Rc.DefaultFiles = Global.DefaultRcFiles;
+					Gtk.Rc.AddDefaultFile (Preferences.Get<string> (Preferences.GTK_RC));
+					Gtk.Rc.ReparseAllForSettings (Gtk.Settings.Default, true);
+#endif
+				}
 			}
 		}
 
@@ -260,15 +266,9 @@ namespace FSpot.UI.Dialog {
 			if ((o as ComboBox).GetActiveIter (out iter))
 				Preferences.Set (Preferences.GTK_RC, theme_list [((o as ComboBox).Model.GetValue (iter, 0)) as string]);
 #if GTK_2_12_2
-			if (!File.Exists (Path.Combine (Global.BaseDirectory, "gtkrc")))
-				(File.Create (Path.Combine (Global.BaseDirectory, "gtkrc"))).Dispose ();
-			else
-				File.SetLastWriteTime (Path.Combine (Global.BaseDirectory, "gtkrc"), DateTime.Now);
 			Gtk.Rc.DefaultFiles = Global.DefaultRcFiles;
 			Gtk.Rc.AddDefaultFile (Preferences.Get<string> (Preferences.GTK_RC));
-			foreach (string s in Rc.DefaultFiles)
-			Console.WriteLine (s);
-			Gtk.Rc.ReparseAll ();
+			Gtk.Rc.ReparseAllForSettings (Gtk.Settings.Default, true);
 #endif
 		}
 
@@ -277,15 +277,9 @@ namespace FSpot.UI.Dialog {
 			if (theme_filechooser.Filename != null && theme_filechooser.Filename != Preferences.Get<string> (Preferences.GTK_RC)) {
 				Preferences.Set (Preferences.GTK_RC, theme_filechooser.Filename);	
 #if GTK_2_12_2
-				if (!File.Exists (Path.Combine (Global.BaseDirectory, "gtkrc")))
-					(File.Create (Path.Combine (Global.BaseDirectory, "gtkrc"))).Dispose ();
-				else
-					File.SetLastWriteTime (Path.Combine (Global.BaseDirectory, "gtkrc"), DateTime.Now);
 				Gtk.Rc.DefaultFiles = Global.DefaultRcFiles;
 				Gtk.Rc.AddDefaultFile (Preferences.Get<string> (Preferences.GTK_RC));
-				foreach (string s in Rc.DefaultFiles)
-					Console.WriteLine (s);
-				Gtk.Rc.ReparseAll ();
+				Gtk.Rc.ReparseAllForSettings (Gtk.Settings.Default, true);
 #endif
 			}
 		}
@@ -310,7 +304,7 @@ namespace FSpot.UI.Dialog {
 		void HandleRefreshTheme (object o, EventArgs e)
 		{
 #if GTK_2_12_2
-			Gtk.Rc.ReparseAll ();	
+			Gtk.Rc.ReparseAllForSettings (Gtk.Settings.Default, true);	
 #endif
 		}
 
diff --git a/src/main.cs b/src/main.cs
index b77af6a..303fad0 100644
--- a/src/main.cs
+++ b/src/main.cs
@@ -221,13 +221,14 @@ public class Driver {
 						Gnome.Vfs.Vfs.Initialize ();
 
 						if (File.Exists (Preferences.Get<string> (Preferences.GTK_RC))) {
+							if (File.Exists (Path.Combine (Global.BaseDirectory, "gtkrc")))
+								Gtk.Rc.AddDefaultFile (Path.Combine (Global.BaseDirectory, "gtkrc"));
+
 #if GTK_2_12_2
-							if (!File.Exists (Path.Combine (Global.BaseDirectory, "gtkrc")))
-								(File.Create (Path.Combine (Global.BaseDirectory, "gtkrc"))).Dispose ();
-							Gtk.Rc.AddDefaultFile (Path.Combine (Global.BaseDirectory, "gtkrc"));
 							Global.DefaultRcFiles = Gtk.Rc.DefaultFiles;
 #endif
 							Gtk.Rc.AddDefaultFile (Preferences.Get<string> (Preferences.GTK_RC));
+							Gtk.Rc.ReparseAllForSettings (Gtk.Settings.Default, true);
 						}
 						
 						try {
-- 
1.6.0.2

openSUSE Build Service is sponsored by