firefox-cross-desktop.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Fri, 12 Nov 2010 09:11:22 +0100
changeset 198 447791e42c9b
parent 0 ad87c5e85a41
child 223 4555a5d0d661
permissions -rw-r--r--
Package searchplugins into langpack chrome and load from there

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);
     }