diff -r 000000000000 -r ad87c5e85a41 firefox-cross-desktop.patch --- /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); + }