firefox-cross-desktop.patch
changeset 0 ad87c5e85a41
child 223 4555a5d0d661
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/firefox-cross-desktop.patch	Sat Nov 28 13:56:10 2009 +0100
@@ -0,0 +1,69 @@
+From: Wolfgang Rosenauer
+Subject: NonGnome/KDE integration
+References:
+https://bugzilla.novell.com/show_bug.cgi?id=170055
+Caveats: desktop file name of Firefox is hardcoded to MozillaFirefox
+
+diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js
+--- a/browser/base/content/nsContextMenu.js
++++ b/browser/base/content/nsContextMenu.js
+@@ -210,13 +210,15 @@ nsContextMenu.prototype = {
+     // Set as Desktop background depends on whether an image was clicked on,
+     // and only works if we have a shell service.
+     var haveSetDesktopBackground = false;
+ #ifdef HAVE_SHELL_SERVICE
+     // Only enable Set as Desktop Background if we can get the shell service.
+     var shell = getShellService();
+-    if (shell)
++    var env = Components.classes["@mozilla.org/process/environment;1"]
++                        .getService(Components.interfaces.nsIEnvironment);
++    if (shell && env.get('DESKTOP_SESSION') == "gnome")
+       haveSetDesktopBackground = true;
+ #endif
+     this.showItem("context-setDesktopBackground",
+                   haveSetDesktopBackground && this.onLoadedImage);
+ 
+     if (haveSetDesktopBackground && this.onLoadedImage) {
+diff --git a/browser/components/preferences/advanced.js b/browser/components/preferences/advanced.js
+--- a/browser/components/preferences/advanced.js
++++ b/browser/components/preferences/advanced.js
+@@ -594,20 +594,38 @@ var gAdvancedPane = {
+     var brandShortName = brandBundle.getString("brandShortName");
+     var promptTitle = shellBundle.getString("setDefaultBrowserTitle");
+     var promptMessage;
+     const IPS = Components.interfaces.nsIPromptService;
+     var psvc = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+                          .getService(IPS);
++
++    var env = Components.classes["@mozilla.org/process/environment;1"]
++                        .getService(Components.interfaces.nsIEnvironment);
++    var kde_session = 0;
++    if (env.get('KDE_FULL_SESSION') == "true")
++      kde_session = 1;
++     
+     if (!shellSvc.isDefaultBrowser(false)) {
+       promptMessage = shellBundle.getFormattedString("setDefaultBrowserMessage", 
+                                                      [brandShortName]);
+       var rv = psvc.confirmEx(window, promptTitle, promptMessage, 
+                               IPS.STD_YES_NO_BUTTONS,
+                               null, null, null, null, { });
+-      if (rv == 0)
++      if (rv == 0) {
+         shellSvc.setDefaultBrowser(true, false);
++        if (kde_session == 1) {
++          var shellObj = Components.classes["@mozilla.org/file/local;1"]
++                                   .createInstance(Components.interfaces.nsILocalFile);
++          shellObj.initWithPath("/usr/bin/kwriteconfig");
++          var process = Components.classes["@mozilla.org/process/util;1"]
++                                  .createInstance(Components.interfaces.nsIProcess);
++          process.init(shellObj);
++          var args = ["--file", "kdeglobals", "--group", "General", "--key", "BrowserApplication", "MozillaFirefox"];
++          process.run(false, args, args.length);
++        }
++      }
+     }
+     else {
+       promptMessage = shellBundle.getFormattedString("alreadyDefaultBrowser",
+                                                      [brandShortName]);
+       psvc.alert(window, promptTitle, promptMessage);
+     }