From 09aa9725eb35e30c3101ac858129ac665e6f6475 Mon Sep 17 00:00:00 2001 From: "bryner%brianryner.com" Date: Thu, 15 Jul 2004 20:43:57 +0000 Subject: [PATCH] Implement nsIShellService for GNOME (bug 242254). r=biesi, sr=shaver. Note: set as wallpaper for images that use transparency will be broken until bug 250531 is fixed. git-svn-id: svn://10.0.0.236/branches/AVIARY_1_0_20040515_BRANCH@159287 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/Makefile.in | 4 + mozilla/allmakefiles.sh | 10 + mozilla/browser/app/Makefile.in | 7 +- mozilla/browser/app/document.png | Bin 0 -> 3154 bytes mozilla/browser/base/Makefile.in | 4 + mozilla/browser/base/content/browser-sets.inc | 2 +- mozilla/browser/base/content/browser.js | 82 +- mozilla/browser/base/content/browser.xul | 2 +- mozilla/browser/base/content/setWallpaper.xul | 21 +- .../browser/base/content/utilityOverlay.js | 10 + mozilla/browser/components/build/Makefile.in | 11 +- mozilla/browser/components/build/nsModule.cpp | 8 +- .../browser/components/prefwindow/Makefile.in | 3 + .../prefwindow/content/pref-navigator.js | 17 +- .../prefwindow/content/pref-navigator.xul | 7 +- .../shell/public/nsIShellService.idl | 6 + .../shell/public/nsIWindowsShellService.idl | 7 - .../browser/components/shell/src/Makefile.in | 8 +- .../shell/src/nsGNOMEShellService.cpp | 552 ++++++- .../shell/src/nsGNOMEShellService.h | 14 +- .../shell/src/nsSetDefaultBrowser.js | 10 +- .../browser/installer/unix/packages-static | 10 + mozilla/client.mk | 7 +- mozilla/config/autoconf.mk.in | 6 + mozilla/configure | 1461 ++++++++++------- mozilla/configure.in | 33 +- mozilla/gfx/public/nsColor.h | 8 +- mozilla/gfx/src/nsColor.cpp | 22 +- .../branding/firefox/Makefile.in | 3 + .../branding/firefox/document.png | Bin 0 -> 3274 bytes mozilla/toolkit/components/gnome/Makefile.in | 81 + .../components/gnome/nsGConfService.cpp | 233 +++ .../toolkit/components/gnome/nsGConfService.h | 63 + .../components/gnome/nsGnomeModule.cpp | 57 + .../components/gnome/nsGnomeVFSService.cpp | 277 ++++ .../components/gnome/nsGnomeVFSService.h | 56 + .../components/gnome/nsIGConfService.idl | 75 + .../components/gnome/nsIGnomeVFSService.idl | 150 ++ 38 files changed, 2606 insertions(+), 721 deletions(-) create mode 100644 mozilla/browser/app/document.png create mode 100644 mozilla/other-licenses/branding/firefox/document.png create mode 100644 mozilla/toolkit/components/gnome/Makefile.in create mode 100644 mozilla/toolkit/components/gnome/nsGConfService.cpp create mode 100644 mozilla/toolkit/components/gnome/nsGConfService.h create mode 100644 mozilla/toolkit/components/gnome/nsGnomeModule.cpp create mode 100644 mozilla/toolkit/components/gnome/nsGnomeVFSService.cpp create mode 100644 mozilla/toolkit/components/gnome/nsGnomeVFSService.h create mode 100644 mozilla/toolkit/components/gnome/nsIGConfService.idl create mode 100644 mozilla/toolkit/components/gnome/nsIGnomeVFSService.idl diff --git a/mozilla/Makefile.in b/mozilla/Makefile.in index ebfffce9607..2bc23a42c10 100644 --- a/mozilla/Makefile.in +++ b/mozilla/Makefile.in @@ -238,6 +238,10 @@ ifndef MOZ_XUL tier_9_dirs += embedding/minimo/chromelite endif +ifdef MOZ_ENABLE_GTK2 +tier_9_dirs += toolkit/components/gnome +endif + # # tier 40 - security # diff --git a/mozilla/allmakefiles.sh b/mozilla/allmakefiles.sh index fb75b9e4f90..65bb27d8993 100755 --- a/mozilla/allmakefiles.sh +++ b/mozilla/allmakefiles.sh @@ -1080,6 +1080,12 @@ if [ ! "$SYSTEM_PNG" ]; then MAKEFILES_libimg="$MAKEFILES_libimg modules/libimg/png/Makefile" fi +MAKEFILES_gnome=" + toolkit/Makefile + toolkit/components/Makefile + toolkit/components/gnome/Makefile +" + # # l10n/ # @@ -1478,6 +1484,10 @@ if test -z "$MOZ_XUL"; then add_makefiles "$MAKEFILES_minimo" fi +if test -n "$MOZ_ENABLE_GTK2"; then + add_makefiles "$MAKEFILES_gnome" +fi + else # Standalone modules go here diff --git a/mozilla/browser/app/Makefile.in b/mozilla/browser/app/Makefile.in index 33dc72b6782..f95765699e2 100644 --- a/mozilla/browser/app/Makefile.in +++ b/mozilla/browser/app/Makefile.in @@ -213,9 +213,8 @@ ifneq (,$(filter-out OS2 WINNT,$(OS_ARCH))) firefox:: mozilla.in Makefile.in Makefile $(DEPTH)/config/autoconf.mk cat $< | sed -e "s|%MOZAPPDIR%|$(mozappdir)|" \ - -e "s|%MOZ_USER_DIR%|.firefox|" \ - -e "s|%MREDIR%|$(mredir)|" \ - -e "s|%MOZILLA-BIN%|$(PROGRAM)|g" > $@ + -e "s|%MOZ_USER_DIR%|.mozilla/firefox|" \ + -e "s|%MREDIR%|$(mredir)|" > $@ chmod +x $@ libs:: firefox @@ -234,6 +233,7 @@ ifneq (,$(filter gtk gtk2,$(MOZ_WIDGET_TOOLKIT))) ICON_FILES = \ $(DIST)/branding/mozicon50.xpm \ $(DIST)/branding/mozicon16.xpm \ + $(DIST)/branding/document.png \ $(NULL) libs:: $(ICON_FILES) @@ -268,6 +268,7 @@ endif ifneq (,$(filter gtk gtk2,$(MOZ_WIDGET_TOOLKIT))) cp $(srcdir)/mozicon16.xpm $(DIST)/branding/mozicon16.xpm cp $(srcdir)/mozicon50.xpm $(DIST)/branding/mozicon50.xpm + cp $(srcdir)/document.png $(DIST)/branding/document.png endif ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2) cp $(srcdir)/default.xpm $(DIST)/branding/default.xpm diff --git a/mozilla/browser/app/document.png b/mozilla/browser/app/document.png new file mode 100644 index 0000000000000000000000000000000000000000..be4a022e668b597a653d4a0024ac1bc2391fab0b GIT binary patch literal 3154 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 literal 0 HcmV?d00001 diff --git a/mozilla/browser/base/Makefile.in b/mozilla/browser/base/Makefile.in index 8e02e041182..8f94eb6df4a 100644 --- a/mozilla/browser/base/Makefile.in +++ b/mozilla/browser/base/Makefile.in @@ -29,3 +29,7 @@ include $(DEPTH)/config/autoconf.mk include $(topsrcdir)/config/config.mk include $(topsrcdir)/config/rules.mk + +ifneq (,$(filter windows gtk2, $(MOZ_WIDGET_TOOLKIT))) +DEFINES += -DHAVE_SHELL_SERVICE=1 +endif diff --git a/mozilla/browser/base/content/browser-sets.inc b/mozilla/browser/base/content/browser-sets.inc index fcb73da9a80..2dc32d37951 100644 --- a/mozilla/browser/base/content/browser-sets.inc +++ b/mozilla/browser/base/content/browser-sets.inc @@ -81,7 +81,7 @@ -#ifdef XP_WIN +#ifdef HAVE_SHELL_SERVICE #endif diff --git a/mozilla/browser/base/content/browser.js b/mozilla/browser/base/content/browser.js index b494d959672..0b23e25dd9f 100644 --- a/mozilla/browser/base/content/browser.js +++ b/mozilla/browser/base/content/browser.js @@ -1149,31 +1149,35 @@ function delayedStartup() gQuickFindTimeoutLength = gPrefService.getIntPref("accessibility.typeaheadfind.timeout"); -#ifdef XP_WIN +#ifdef HAVE_SHELL_SERVICE // Perform default browser checking (after window opens). - var shell = Components.classes["@mozilla.org/browser/shell-service;1"] - .getService(Components.interfaces.nsIShellService); - var shouldCheck = shell.shouldCheckDefaultBrowser; - if (shouldCheck && !shell.isDefaultBrowser(true)) { - var brandBundle = document.getElementById("bundle_brand"); - var shellBundle = document.getElementById("bundle_shell"); - - var brandShortName = brandBundle.getString("brandShortName"); - var promptTitle = shellBundle.getString("setDefaultBrowserTitle"); - var promptMessage = shellBundle.getFormattedString("setDefaultBrowserMessage", - [brandShortName]); - var checkboxLabel = shellBundle.getString("setDefaultBrowserDontAsk"); - const IPS = Components.interfaces.nsIPromptService; - var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] - .getService(IPS); - var checkEveryTime = { value: shouldCheck }; - var rv = ps.confirmEx(window, promptTitle, promptMessage, - (IPS.BUTTON_TITLE_YES * IPS.BUTTON_POS_0) + - (IPS.BUTTON_TITLE_NO * IPS.BUTTON_POS_1), - null, null, null, checkboxLabel, checkEveryTime); - if (rv == 0) - shell.setDefaultBrowser(true, false); - shell.shouldCheckDefaultBrowser = checkEveryTime.value; + var shell = getShellService(); + if (shell) { + var shouldCheck = shell.shouldCheckDefaultBrowser; + if (shouldCheck && !shell.isDefaultBrowser(true)) { + var brandBundle = document.getElementById("bundle_brand"); + var shellBundle = document.getElementById("bundle_shell"); + + var brandShortName = brandBundle.getString("brandShortName"); + var promptTitle = shellBundle.getString("setDefaultBrowserTitle"); + var promptMessage = shellBundle.getFormattedString("setDefaultBrowserMessage", + [brandShortName]); + var checkboxLabel = shellBundle.getString("setDefaultBrowserDontAsk"); + const IPS = Components.interfaces.nsIPromptService; + var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] + .getService(IPS); + var checkEveryTime = { value: shouldCheck }; + var rv = ps.confirmEx(window, promptTitle, promptMessage, + (IPS.BUTTON_TITLE_YES * IPS.BUTTON_POS_0) + + (IPS.BUTTON_TITLE_NO * IPS.BUTTON_POS_1), + null, null, null, checkboxLabel, checkEveryTime); + if (rv == 0) + shell.setDefaultBrowser(true, false); + shell.shouldCheckDefaultBrowser = checkEveryTime.value; + } + } else { + // We couldn't get the shell service; go hide the mail toolbar button. + document.getElementById("mail-button").hidden = true; } #endif @@ -3678,11 +3682,17 @@ nsContextMenu.prototype = { this.showItem( "context-viewinfo", !( this.inDirList || this.onImage || this.isTextSelected || this.onLink || this.onTextInput ) ); this.showItem( "context-sep-properties", !( this.inDirList || this.isTextSelected || this.onTextInput ) ); - // Set As Wallpaper depends on whether an image was clicked on, and only works on Windows. - var isWin = navigator.appVersion.indexOf("Windows") != -1; - this.showItem( "context-setWallpaper", isWin && this.onImage ); + // Set As Wallpaper depends on whether an image was clicked on, and only works if we have a shell service. + var haveSetWallpaper = false; +#ifdef HAVE_SHELL_SERVICE + // Only enable set as wallpaper if we can get the shell service. + var shell = getShellService(); + if (shell) + haveSetWallpaper = true; +#endif + this.showItem( "context-setWallpaper", haveSetWallpaper && this.onImage ); - if( isWin && this.onImage ) + if( haveSetWallpaper && this.onImage ) // Disable the Set As Wallpaper menu item if we're still trying to load the image this.setItemAttr( "context-setWallpaper", "disabled", (("complete" in this.target) && !this.target.complete) ? "true" : null ); @@ -5242,25 +5252,26 @@ var MailIntegration = { var extProtocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService); if (extProtocolSvc) extProtocolSvc.loadUrl(aURL); -#ifdef XP_WIN +#ifdef HAVE_SHELL_SERVICE }, readMail: function () { - const ss = Components.interfaces.nsIShellService; - var shell = Components.classes["@mozilla.org/browser/shell-service;1"].getService(ss); - shell.openPreferredApplication(ss.APPLICATION_MAIL); + var shell = getShellService(); + if (shell) + shell.openPreferredApplication(Components.interfaces.nsIShellService.APPLICATION_MAIL); }, readNews: function () { - const ss = Components.interfaces.nsIShellService; - var shell = Components.classes["@mozilla.org/browser/shell-service;1"].getService(Components.interfaces.nsIShellService); - shell.openPreferredApplication(ss.APPLICATION_NEWS); + var shell = window.getShellService(); + if (shell) + shell.openPreferredApplication(Components.interfaces.nsIShellService.APPLICATION_NEWS); }, updateUnreadCount: function () { +#ifdef XP_WIN var shell = Components.classes["@mozilla.org/browser/shell-service;1"] .getService(Components.interfaces.nsIWindowsShellService); var unreadCount = shell.unreadMailCount; @@ -5271,6 +5282,7 @@ var MailIntegration = { message = gNavigatorBundle.getFormattedString("mailUnreadMenuitem", [unreadCount]); element = document.getElementById("Browser:ReadMail"); element.setAttribute("label", message); +#endif } #else } diff --git a/mozilla/browser/base/content/browser.xul b/mozilla/browser/base/content/browser.xul index ed13504d2b8..4332c50f8cf 100644 --- a/mozilla/browser/base/content/browser.xul +++ b/mozilla/browser/base/content/browser.xul @@ -316,7 +316,7 @@ observes="viewHistorySidebar" tooltiptext="&historyButton.tooltip;"/> -#ifdef XP_WIN +#ifdef HAVE_SHELL_SERVICE +