1 # HG changeset patch |
1 # HG changeset patch |
2 # Parent 97234138e3aafe66fc7f17c8f530e7c534af2fc2 |
2 # Parent 9cc0c990890e64f69ed068cf1a4534535bcc50a7 |
3 Description: Add KDE integration to Firefox (toolkit parts) |
3 Description: Add KDE integration to Firefox (toolkit parts) |
4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> |
4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> |
5 Author: Lubos Lunak <lunak@suse.com> |
5 Author: Lubos Lunak <lunak@suse.com> |
6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 |
6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 |
7 https://bugzilla.novell.com/show_bug.cgi?id=170055 |
7 https://bugzilla.novell.com/show_bug.cgi?id=170055 |
151 self.base = base |
151 self.base = base |
152 self.flags = Flags(*flags) |
152 self.flags = Flags(*flags) |
153 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build |
153 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build |
154 --- a/toolkit/components/downloads/moz.build |
154 --- a/toolkit/components/downloads/moz.build |
155 +++ b/toolkit/components/downloads/moz.build |
155 +++ b/toolkit/components/downloads/moz.build |
156 @@ -17,9 +17,13 @@ XPIDL_SOURCES += [ |
156 @@ -41,10 +41,14 @@ EXTRA_JS_MODULES += [ |
157 XPIDL_MODULE = 'downloads' |
157 |
158 |
158 if CONFIG['MOZ_PLACES']: |
159 UNIFIED_SOURCES += [ |
159 EXTRA_JS_MODULES += [ |
160 'nsDownloadManager.cpp' |
160 'DownloadHistory.jsm', |
161 ] |
161 ] |
162 |
162 |
163 FINAL_LIBRARY = 'xul' |
163 FINAL_LIBRARY = 'xul' |
164 |
164 |
165 +LOCAL_INCLUDES += [ |
165 +LOCAL_INCLUDES += [ |
166 + '/toolkit/xre' |
166 + '/toolkit/xre' |
167 +] |
167 +] |
168 + |
168 + |
169 CXXFLAGS += CONFIG['TK_CFLAGS'] |
169 with Files('**'): |
|
170 BUG_COMPONENT = ('Toolkit', 'Download Manager') |
170 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn |
171 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn |
171 --- a/toolkit/content/jar.mn |
172 --- a/toolkit/content/jar.mn |
172 +++ b/toolkit/content/jar.mn |
173 +++ b/toolkit/content/jar.mn |
173 @@ -67,16 +67,18 @@ toolkit.jar: |
174 @@ -69,16 +69,18 @@ toolkit.jar: |
174 content/global/bindings/checkbox.xml (widgets/checkbox.xml) |
175 content/global/bindings/checkbox.xml (widgets/checkbox.xml) |
175 content/global/bindings/colorpicker.xml (widgets/colorpicker.xml) |
176 content/global/bindings/colorpicker.xml (widgets/colorpicker.xml) |
176 content/global/bindings/datekeeper.js (widgets/datekeeper.js) |
177 content/global/bindings/datekeeper.js (widgets/datekeeper.js) |
177 content/global/bindings/datepicker.js (widgets/datepicker.js) |
178 content/global/bindings/datepicker.js (widgets/datepicker.js) |
178 content/global/bindings/datetimepopup.xml (widgets/datetimepopup.xml) |
179 content/global/bindings/datetimepopup.xml (widgets/datetimepopup.xml) |
191 content/global/bindings/menulist.xml (widgets/menulist.xml) |
192 content/global/bindings/menulist.xml (widgets/menulist.xml) |
192 diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml |
193 diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml |
193 new file mode 100644 |
194 new file mode 100644 |
194 --- /dev/null |
195 --- /dev/null |
195 +++ b/toolkit/content/widgets/dialog-kde.xml |
196 +++ b/toolkit/content/widgets/dialog-kde.xml |
196 @@ -0,0 +1,477 @@ |
197 @@ -0,0 +1,478 @@ |
197 +<?xml version="1.0"?> |
198 +<?xml version="1.0"?> |
198 +<!-- This Source Code Form is subject to the terms of the Mozilla Public |
199 +<!-- This Source Code Form is subject to the terms of the Mozilla Public |
199 + - License, v. 2.0. If a copy of the MPL was not distributed with this |
200 + - License, v. 2.0. If a copy of the MPL was not distributed with this |
200 + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
201 + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
201 + |
202 + |
207 +<bindings id="dialogBindings" |
208 +<bindings id="dialogBindings" |
208 + xmlns="http://www.mozilla.org/xbl" |
209 + xmlns="http://www.mozilla.org/xbl" |
209 + xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" |
210 + xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" |
210 + xmlns:xbl="http://www.mozilla.org/xbl"> |
211 + xmlns:xbl="http://www.mozilla.org/xbl"> |
211 + |
212 + |
212 + <binding id="dialog" extends="chrome://global/content/bindings/general.xml#root-element"> |
213 + <binding id="dialog"> |
213 + <resources> |
214 + <resources> |
214 + <stylesheet src="chrome://global/skin/dialog.css"/> |
215 + <stylesheet src="chrome://global/skin/dialog.css"/> |
215 + </resources> |
216 + </resources> |
216 + <content> |
217 + <content> |
217 + <xul:vbox class="box-inherit dialog-content-box" flex="1"> |
218 + <xul:vbox class="box-inherit dialog-content-box" flex="1"> |
446 + <getter> |
447 + <getter> |
447 + <![CDATA[ |
448 + <![CDATA[ |
448 + if (!this._mStrBundle) { |
449 + if (!this._mStrBundle) { |
449 + // need to create string bundle manually instead of using <xul:stringbundle/> |
450 + // need to create string bundle manually instead of using <xul:stringbundle/> |
450 + // see bug 63370 for details |
451 + // see bug 63370 for details |
451 + this._mStrBundle = Components.classes["@mozilla.org/intl/stringbundle;1"] |
452 + this._mStrBundle = Cc["@mozilla.org/intl/stringbundle;1"] |
452 + .getService(Components.interfaces.nsIStringBundleService) |
453 + .getService(Ci.nsIStringBundleService) |
453 + .createBundle("chrome://global/locale/dialog.properties"); |
454 + .createBundle("chrome://global/locale/dialog.properties"); |
454 + } |
455 + } |
455 + return this._mStrBundle; |
456 + return this._mStrBundle; |
456 + ]]></getter> |
457 + ]]></getter> |
457 + </property> |
458 + </property> |
458 + |
459 + |
623 + // handle any xml attribute event handlers |
624 + // handle any xml attribute event handlers |
624 + var handler = this.getAttribute("ondialog" + aDlgType); |
625 + var handler = this.getAttribute("ondialog" + aDlgType); |
625 + if (handler != "") { |
626 + if (handler != "") { |
626 + var fn = new Function("event", handler); |
627 + var fn = new Function("event", handler); |
627 + var returned = fn(event); |
628 + var returned = fn(event); |
|
629 + // eslint-disable-next-line mozilla/no-compare-against-boolean-literals |
628 + if (returned == false) |
630 + if (returned == false) |
629 + noCancel = false; |
631 + noCancel = false; |
630 + } |
632 + } |
631 + |
633 + |
632 + return noCancel; |
634 + return noCancel; |
661 + <handler event="keypress" key="." modifiers="meta" phase="capturing" action="this.cancelDialog();"/> |
663 + <handler event="keypress" key="." modifiers="meta" phase="capturing" action="this.cancelDialog();"/> |
662 +#else |
664 +#else |
663 + <handler event="focus" phase="capturing"> |
665 + <handler event="focus" phase="capturing"> |
664 + var btn = this.getButton(this.defaultButton); |
666 + var btn = this.getButton(this.defaultButton); |
665 + if (btn) |
667 + if (btn) |
666 + btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Components.interfaces.nsIDOMXULButtonElement)); |
668 + btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Ci.nsIDOMXULButtonElement)); |
667 + </handler> |
669 + </handler> |
668 +#endif |
670 +#endif |
669 + </handlers> |
671 + </handlers> |
670 + |
672 + |
671 + </binding> |
673 + </binding> |
672 + |
674 + |
673 +</bindings> |
675 +</bindings> |
674 diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js |
676 diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js |
675 --- a/toolkit/mozapps/downloads/nsHelperAppDlg.js |
677 --- a/toolkit/mozapps/downloads/nsHelperAppDlg.js |
676 +++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js |
678 +++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js |
677 @@ -626,17 +626,17 @@ nsUnknownContentTypeDialog.prototype = { |
679 @@ -627,17 +627,17 @@ nsUnknownContentTypeDialog.prototype = { |
678 else |
680 else |
679 typeString = mimeInfo.MIMEType; |
681 typeString = mimeInfo.MIMEType; |
680 } |
682 } |
681 // When the length is unknown, contentLength would be -1 |
683 // When the length is unknown, contentLength would be -1 |
682 if (this.mLauncher.contentLength >= 0) { |
684 if (this.mLauncher.contentLength >= 0) { |
710 |
712 |
711 // Enable Ok button if ok to press. |
713 // Enable Ok button if ok to press. |
712 this.mDialog.document.documentElement.getButton("accept").disabled = !ok; |
714 this.mDialog.document.documentElement.getButton("accept").disabled = !ok; |
713 }, |
715 }, |
714 |
716 |
715 @@ -1065,30 +1065,57 @@ nsUnknownContentTypeDialog.prototype = { |
717 @@ -1066,30 +1066,57 @@ nsUnknownContentTypeDialog.prototype = { |
716 |
718 |
717 if (params.handlerApp && |
719 if (params.handlerApp && |
718 params.handlerApp.executable && |
720 params.handlerApp.executable && |
719 params.handlerApp.executable.isFile()) { |
721 params.handlerApp.executable.isFile()) { |
720 // Remember the file they chose to run. |
722 // Remember the file they chose to run. |
721 this.chosenApp = params.handlerApp; |
723 this.chosenApp = params.handlerApp; |
722 } |
724 } |
723 } else if ("@mozilla.org/applicationchooser;1" in Components.classes) { |
725 } else if ("@mozilla.org/applicationchooser;1" in Cc) { |
724 - var nsIApplicationChooser = Components.interfaces.nsIApplicationChooser; |
726 - var nsIApplicationChooser = Ci.nsIApplicationChooser; |
725 - var appChooser = Components.classes["@mozilla.org/applicationchooser;1"] |
727 - var appChooser = Cc["@mozilla.org/applicationchooser;1"] |
726 - .createInstance(nsIApplicationChooser); |
728 - .createInstance(nsIApplicationChooser); |
727 - appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle")); |
729 - appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle")); |
728 - var contentTypeDialogObj = this; |
730 - var contentTypeDialogObj = this; |
729 - let appChooserCallback = function appChooserCallback_done(aResult) { |
731 - let appChooserCallback = function appChooserCallback_done(aResult) { |
730 - if (aResult) { |
732 - if (aResult) { |
731 - contentTypeDialogObj.chosenApp = aResult.QueryInterface(Components.interfaces.nsILocalHandlerApp); |
733 - contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp); |
732 + // handle the KDE case which is implemented in the filepicker |
734 + // handle the KDE case which is implemented in the filepicker |
733 + // therefore falling back to Gtk2 like behaviour if KDE is running |
735 + // therefore falling back to Gtk2 like behaviour if KDE is running |
734 + // FIXME this should be better handled in the nsIApplicationChooser |
736 + // FIXME this should be better handled in the nsIApplicationChooser |
735 + // interface |
737 + // interface |
736 + var env = Components.classes["@mozilla.org/process/environment;1"] |
738 + var env = Components.classes["@mozilla.org/process/environment;1"] |
748 + |
750 + |
749 + if (fp.show() == nsIFilePicker.returnOK && fp.file) { |
751 + if (fp.show() == nsIFilePicker.returnOK && fp.file) { |
750 + // Remember the file they chose to run. |
752 + // Remember the file they chose to run. |
751 + var localHandlerApp = |
753 + var localHandlerApp = |
752 + Components.classes["@mozilla.org/uriloader/local-handler-app;1"]. |
754 + Components.classes["@mozilla.org/uriloader/local-handler-app;1"]. |
753 + createInstance(Components.interfaces.nsILocalHandlerApp); |
755 + createInstance(Components.interfaces.nsILocalHandlerApp); |
754 + localHandlerApp.executable = fp.file; |
756 + localHandlerApp.executable = fp.file; |
755 + this.chosenApp = localHandlerApp; |
757 + this.chosenApp = localHandlerApp; |
756 } |
758 } |
757 - contentTypeDialogObj.finishChooseApp(); |
759 - contentTypeDialogObj.finishChooseApp(); |
758 - }; |
760 - }; |
759 - appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback); |
761 - appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback); |
760 - // The finishChooseApp is called from appChooserCallback |
762 - // The finishChooseApp is called from appChooserCallback |
761 - return; |
763 - return; |
762 + } else { |
764 + } else { |
763 + var nsIApplicationChooser = Components.interfaces.nsIApplicationChooser; |
765 + var nsIApplicationChooser = Ci.nsIApplicationChooser; |
764 + var appChooser = Components.classes["@mozilla.org/applicationchooser;1"] |
766 + var appChooser = Cc["@mozilla.org/applicationchooser;1"] |
765 + .createInstance(nsIApplicationChooser); |
767 + .createInstance(nsIApplicationChooser); |
766 + appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle")); |
768 + appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle")); |
767 + var contentTypeDialogObj = this; |
769 + var contentTypeDialogObj = this; |
768 + let appChooserCallback = function appChooserCallback_done(aResult) { |
770 + let appChooserCallback = function appChooserCallback_done(aResult) { |
769 + if (aResult) { |
771 + if (aResult) { |
770 + contentTypeDialogObj.chosenApp = aResult.QueryInterface(Components.interfaces.nsILocalHandlerApp); |
772 + contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp); |
771 + } |
773 + } |
772 + contentTypeDialogObj.finishChooseApp(); |
774 + contentTypeDialogObj.finishChooseApp(); |
773 + }; |
775 + }; |
774 + appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback); |
776 + appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback); |
775 + // The finishChooseApp is called from appChooserCallback |
777 + // The finishChooseApp is called from appChooserCallback |
776 + return; |
778 + return; |
777 + } |
779 + } |
778 } else { |
780 } else { |
779 var nsIFilePicker = Components.interfaces.nsIFilePicker; |
781 var nsIFilePicker = Ci.nsIFilePicker; |
780 var fp = Components.classes["@mozilla.org/filepicker;1"] |
782 var fp = Cc["@mozilla.org/filepicker;1"] |
781 .createInstance(nsIFilePicker); |
783 .createInstance(nsIFilePicker); |
782 fp.init(this.mDialog, |
784 fp.init(this.mDialog, |
783 this.dialogElement("strings").getString("chooseAppFilePickerTitle"), |
785 this.dialogElement("strings").getString("chooseAppFilePickerTitle"), |
784 nsIFilePicker.modeOpen); |
786 nsIFilePicker.modeOpen); |
785 |
787 |
786 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp |
788 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp |
878 +} |
880 +} |
879 + |
881 + |
880 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build |
882 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build |
881 --- a/toolkit/xre/moz.build |
883 --- a/toolkit/xre/moz.build |
882 +++ b/toolkit/xre/moz.build |
884 +++ b/toolkit/xre/moz.build |
883 @@ -61,17 +61,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co |
885 @@ -65,17 +65,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co |
884 '../components/printingui', |
886 '../components/printingui', |
885 ] |
887 ] |
886 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': |
888 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': |
887 UNIFIED_SOURCES += [ |
889 UNIFIED_SOURCES += [ |
888 'nsNativeAppSupportDefault.cpp', |
890 'nsNativeAppSupportDefault.cpp', |
1877 GtkWindow *parent_widget = |
1879 GtkWindow *parent_widget = |
1878 GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)); |
1880 GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)); |
1879 |
1881 |
1880 GtkFileChooserAction action = GetGtkFileChooserAction(mMode); |
1882 GtkFileChooserAction action = GetGtkFileChooserAction(mMode); |
1881 |
1883 |
1882 @@ -603,8 +630,233 @@ nsFilePicker::Done(GtkWidget* file_choos |
1884 @@ -608,8 +635,233 @@ nsFilePicker::Done(GtkWidget* file_choos |
1883 if (mCallback) { |
1885 if (mCallback) { |
1884 mCallback->Done(result); |
1886 mCallback->Done(result); |
1885 mCallback = nullptr; |
1887 mCallback = nullptr; |
1886 } else { |
1888 } else { |
1887 mResult = result; |
1889 mResult = result; |
2156 struct ManifestDirective |
2158 struct ManifestDirective |
2157 { |
2159 { |
2158 const char* directive; |
2160 const char* directive; |
2159 int argc; |
2161 int argc; |
2160 |
2162 |
2161 @@ -466,16 +467,17 @@ ParseManifest(NSLocationType aType, File |
2163 @@ -444,16 +445,17 @@ ParseManifest(NSLocationType aType, File |
2162 NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled"); |
2164 NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled"); |
2163 NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired"); |
2165 NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired"); |
2164 NS_NAMED_LITERAL_STRING(kApplication, "application"); |
2166 NS_NAMED_LITERAL_STRING(kApplication, "application"); |
2165 NS_NAMED_LITERAL_STRING(kAppVersion, "appversion"); |
2167 NS_NAMED_LITERAL_STRING(kAppVersion, "appversion"); |
2166 NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion"); |
2168 NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion"); |
2174 #endif |
2176 #endif |
2175 |
2177 |
2176 NS_NAMED_LITERAL_STRING(kMain, "main"); |
2178 NS_NAMED_LITERAL_STRING(kMain, "main"); |
2177 NS_NAMED_LITERAL_STRING(kContent, "content"); |
2179 NS_NAMED_LITERAL_STRING(kContent, "content"); |
2178 |
2180 |
2179 @@ -526,44 +528,49 @@ ParseManifest(NSLocationType aType, File |
2181 @@ -499,44 +501,49 @@ ParseManifest(NSLocationType aType, File |
2180 CopyUTF8toUTF16(s, abi); |
2182 CopyUTF8toUTF16(s, abi); |
2181 abi.Insert(char16_t('_'), 0); |
2183 abi.Insert(char16_t('_'), 0); |
2182 abi.Insert(osTarget, 0); |
2184 abi.Insert(osTarget, 0); |
2183 } |
2185 } |
2184 } |
2186 } |
2224 process = kContent; |
2226 process = kContent; |
2225 } else { |
2227 } else { |
2226 process = kMain; |
2228 process = kMain; |
2227 } |
2229 } |
2228 |
2230 |
2229 @@ -666,25 +673,27 @@ ParseManifest(NSLocationType aType, File |
2231 @@ -638,25 +645,27 @@ ParseManifest(NSLocationType aType, File |
2230 TriState stOsVersion = eUnspecified; |
2232 TriState stOsVersion = eUnspecified; |
2231 TriState stOs = eUnspecified; |
2233 TriState stOs = eUnspecified; |
2232 TriState stABI = eUnspecified; |
2234 TriState stABI = eUnspecified; |
2233 TriState stProcess = eUnspecified; |
2235 TriState stProcess = eUnspecified; |
2234 #if defined(MOZ_WIDGET_ANDROID) |
2236 #if defined(MOZ_WIDGET_ANDROID) |
2290 if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: |
2292 if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: |
2291 CXXFLAGS += CONFIG['TK_CFLAGS'] |
2293 CXXFLAGS += CONFIG['TK_CFLAGS'] |
2292 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp |
2294 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp |
2293 --- a/xpcom/io/nsLocalFileUnix.cpp |
2295 --- a/xpcom/io/nsLocalFileUnix.cpp |
2294 +++ b/xpcom/io/nsLocalFileUnix.cpp |
2296 +++ b/xpcom/io/nsLocalFileUnix.cpp |
2295 @@ -45,16 +45,17 @@ |
2297 @@ -46,16 +46,17 @@ |
2296 #include "prproces.h" |
2298 #include "prproces.h" |
2297 #include "nsIDirectoryEnumerator.h" |
2299 #include "nsIDirectoryEnumerator.h" |
2298 #include "nsISimpleEnumerator.h" |
2300 #include "nsISimpleEnumerator.h" |
2299 #include "private/pprio.h" |
2301 #include "private/pprio.h" |
2300 #include "prlink.h" |
2302 #include "prlink.h" |