0
|
1 |
From: Wolfgang Rosenauer
|
|
2 |
Subject: NonGnome/KDE integration
|
|
3 |
References:
|
|
4 |
https://bugzilla.novell.com/show_bug.cgi?id=170055
|
|
5 |
Caveats: desktop file name of Firefox is hardcoded to MozillaFirefox
|
|
6 |
|
|
7 |
diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js
|
|
8 |
--- a/browser/base/content/nsContextMenu.js
|
|
9 |
+++ b/browser/base/content/nsContextMenu.js
|
|
10 |
@@ -210,13 +210,15 @@ nsContextMenu.prototype = {
|
|
11 |
// Set as Desktop background depends on whether an image was clicked on,
|
|
12 |
// and only works if we have a shell service.
|
|
13 |
var haveSetDesktopBackground = false;
|
|
14 |
#ifdef HAVE_SHELL_SERVICE
|
|
15 |
// Only enable Set as Desktop Background if we can get the shell service.
|
|
16 |
var shell = getShellService();
|
|
17 |
- if (shell)
|
|
18 |
+ var env = Components.classes["@mozilla.org/process/environment;1"]
|
|
19 |
+ .getService(Components.interfaces.nsIEnvironment);
|
|
20 |
+ if (shell && env.get('DESKTOP_SESSION') == "gnome")
|
|
21 |
haveSetDesktopBackground = true;
|
|
22 |
#endif
|
|
23 |
this.showItem("context-setDesktopBackground",
|
|
24 |
haveSetDesktopBackground && this.onLoadedImage);
|
|
25 |
|
|
26 |
if (haveSetDesktopBackground && this.onLoadedImage) {
|
|
27 |
diff --git a/browser/components/preferences/advanced.js b/browser/components/preferences/advanced.js
|
|
28 |
--- a/browser/components/preferences/advanced.js
|
|
29 |
+++ b/browser/components/preferences/advanced.js
|
|
30 |
@@ -594,20 +594,38 @@ var gAdvancedPane = {
|
|
31 |
var brandShortName = brandBundle.getString("brandShortName");
|
|
32 |
var promptTitle = shellBundle.getString("setDefaultBrowserTitle");
|
|
33 |
var promptMessage;
|
|
34 |
const IPS = Components.interfaces.nsIPromptService;
|
|
35 |
var psvc = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
|
|
36 |
.getService(IPS);
|
|
37 |
+
|
|
38 |
+ var env = Components.classes["@mozilla.org/process/environment;1"]
|
|
39 |
+ .getService(Components.interfaces.nsIEnvironment);
|
|
40 |
+ var kde_session = 0;
|
|
41 |
+ if (env.get('KDE_FULL_SESSION') == "true")
|
|
42 |
+ kde_session = 1;
|
|
43 |
+
|
|
44 |
if (!shellSvc.isDefaultBrowser(false)) {
|
|
45 |
promptMessage = shellBundle.getFormattedString("setDefaultBrowserMessage",
|
|
46 |
[brandShortName]);
|
|
47 |
var rv = psvc.confirmEx(window, promptTitle, promptMessage,
|
|
48 |
IPS.STD_YES_NO_BUTTONS,
|
|
49 |
null, null, null, null, { });
|
|
50 |
- if (rv == 0)
|
|
51 |
+ if (rv == 0) {
|
|
52 |
shellSvc.setDefaultBrowser(true, false);
|
|
53 |
+ if (kde_session == 1) {
|
|
54 |
+ var shellObj = Components.classes["@mozilla.org/file/local;1"]
|
|
55 |
+ .createInstance(Components.interfaces.nsILocalFile);
|
|
56 |
+ shellObj.initWithPath("/usr/bin/kwriteconfig");
|
|
57 |
+ var process = Components.classes["@mozilla.org/process/util;1"]
|
|
58 |
+ .createInstance(Components.interfaces.nsIProcess);
|
|
59 |
+ process.init(shellObj);
|
|
60 |
+ var args = ["--file", "kdeglobals", "--group", "General", "--key", "BrowserApplication", "MozillaFirefox"];
|
|
61 |
+ process.run(false, args, args.length);
|
|
62 |
+ }
|
|
63 |
+ }
|
|
64 |
}
|
|
65 |
else {
|
|
66 |
promptMessage = shellBundle.getFormattedString("alreadyDefaultBrowser",
|
|
67 |
[brandShortName]);
|
|
68 |
psvc.alert(window, promptTitle, promptMessage);
|
|
69 |
}
|