diff options
-rw-r--r-- | .cvsignore | 1 | ||||
-rw-r--r-- | firefox-RC1-stock-icons-be.patch | 1161 | ||||
-rw-r--r-- | firefox-RC1-stock-icons-fe.patch | 784 | ||||
-rw-r--r-- | firefox-RC1-stock-icons-gnomestripe.patch | 28 | ||||
-rw-r--r-- | firefox.spec | 15 | ||||
-rw-r--r-- | sources | 1 |
6 files changed, 1988 insertions, 2 deletions
@@ -2,3 +2,4 @@ firefox-0.9.3-source.tar.bz2 firefox-1.0PR-source.tar.bz2 firefox-0.10.1-source.tar.bz2 firefox-1.0rc1-source.tar.bz2 +firefox-gnomestripe-0.1.tar.gz diff --git a/firefox-RC1-stock-icons-be.patch b/firefox-RC1-stock-icons-be.patch new file mode 100644 index 0000000..e29aa72 --- /dev/null +++ b/firefox-RC1-stock-icons-be.patch @@ -0,0 +1,1161 @@ +Index: configure.in +=================================================================== +RCS file: /cvsroot/mozilla/configure.in,v +retrieving revision 1.1335.2.6.2.18 +diff -u -r1.1335.2.6.2.18 configure.in +--- configure.in 31 Oct 2004 07:17:58 -0000 1.1335.2.6.2.18 ++++ configure.in 3 Nov 2004 10:03:35 -0000 +@@ -92,6 +92,7 @@ + MAKE_VERSION=3.78 + WINDRES_VERSION=2.14.90 + W32API_VERSION=2.4 ++GNOMEUI_VERSION=2.0.6 + GNOMEVFS_VERSION=2.0 + GCONF_VERSION=1.2.1 + LIBGNOME_VERSION=2.0 +@@ -3588,7 +3589,35 @@ + + AC_SUBST(MOZ_ENABLE_GNOME_COMPONENT) + fi ++dnl = libgnomeui support module ++dnl ======================================================== ++ ++if test "$MOZ_ENABLE_GTK2" ++then ++ MOZ_ENABLE_GNOMEUI=1 ++ ++ MOZ_ARG_DISABLE_BOOL(gnomeui, ++ [ --disable-gnomeui Disable libgnomeui support (default: auto, optional at runtime) ], ++ MOZ_ENABLE_GNOMEUI=, ++ MOZ_ENABLE_GNOMEUI=force) ++ ++ if test "$MOZ_ENABLE_GNOMEUI" ++ then ++ PKG_CHECK_MODULES(MOZ_GNOMEUI, libgnomeui-2.0 >= $GNOMEUI_VERSION, ++ [MOZ_ENABLE_GNOMEUI=1], [ ++ if test "$MOZ_ENABLE_GNOMEUI" = "force" ++ then ++ AC_MSG_ERROR([* * * Could not find libgnomeui-2.0 >= $GNOMEUI_VERSION]) ++ fi ++ MOZ_ENABLE_GNOMEUI= ++ ]) ++ fi + ++ AC_SUBST(MOZ_ENABLE_GNOMEUI) ++ AC_SUBST(MOZ_GNOMEUI_CFLAGS) ++ AC_SUBST(MOZ_GNOMEUI_LIBS) ++ ++fi + dnl ======================================================== + dnl = Setting MOZ_EXTRA_X11CONVERTERS turns on additional + dnl = converters in intl/uconv that are used only by X11 gfx +@@ -3999,6 +4028,17 @@ + MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon" + fi + ;; ++*) ++ if test "$MOZ_ENABLE_GNOMEUI"; then ++ ++ MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon" ++ fi ++ ;; ++*) ++ if test "$MOZ_ENABLE_GNOMEUI"; then ++ MOZ_IMG_DECODERS_DEFAULT="$MOZ_IMG_DECODERS_DEFAULT icon" ++ fi ++ ;; + esac + + MOZ_ARG_ENABLE_STRING(image-decoders, +Index: config/autoconf.mk.in +=================================================================== +RCS file: /cvsroot/mozilla/config/autoconf.mk.in,v +retrieving revision 3.310.6.7 +diff -u -r3.310.6.7 autoconf.mk.in +--- config/autoconf.mk.in 31 Oct 2004 04:29:54 -0000 3.310.6.7 ++++ config/autoconf.mk.in 3 Nov 2004 10:03:54 -0000 +@@ -165,8 +165,14 @@ + endif + endif + MOZ_LIBART_LIBS = @MOZ_LIBART_LIBS@ ++ + MOZ_CAIRO_LIBS = @MOZ_CAIRO_LIBS@ + ++MOZ_ENABLE_GNOMEUI = @MOZ_ENABLE_GNOMEUI@ ++MOZ_GNOMEUI_CFLAGS = @MOZ_GNOMEUI_CFLAGS@ ++MOZ_GNOMEUI_LIBS = @MOZ_GNOMEUI_LIBS@ ++ ++ + MOZ_GNOMEVFS_CFLAGS = @MOZ_GNOMEVFS_CFLAGS@ + MOZ_GNOMEVFS_LIBS = @MOZ_GNOMEVFS_LIBS@ + +Index: modules/libpr0n/decoders/Makefile.in +=================================================================== +RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/Makefile.in,v +retrieving revision 1.10 +diff -u -r1.10 Makefile.in +--- modules/libpr0n/decoders/Makefile.in 1 Jul 2003 03:57:24 -0000 1.10 ++++ modules/libpr0n/decoders/Makefile.in 3 Nov 2004 10:03:59 -0000 +@@ -29,6 +29,9 @@ + DIRS = $(MOZ_IMG_DECODERS) + + ifneq (,$(findstring icon,$(MOZ_IMG_DECODERS))) ++ifdef MOZ_ENABLE_GNOMEUI ++DIRS := icon/gtk $(DIRS) ++endif + ifeq ($(OS_ARCH),WINNT) + DIRS := icon/win $(DIRS) + endif +@@ -39,6 +42,9 @@ + DIRS := icon/mac $(DIRS) + endif + endif # icon ++ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2) ++DIRS := icon/gtk $(DIRS) ++endif + + include $(topsrcdir)/config/rules.mk + +Index: modules/libpr0n/decoders/icon/Makefile.in +=================================================================== +RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/Makefile.in,v +retrieving revision 1.9.20.1 +diff -u -r1.9.20.1 Makefile.in +--- modules/libpr0n/decoders/icon/Makefile.in 22 Jun 2004 22:37:07 -0000 1.9.20.1 ++++ modules/libpr0n/decoders/icon/Makefile.in 3 Nov 2004 10:03:59 -0000 +@@ -35,6 +35,13 @@ + + PACKAGE_FILE = imgicon.pkg + ++ifdef MOZ_ENABLE_GNOMEUI ++EXTRA_DSO_LDOPTS = $(MOZ_GNOMEUI_LIBS) ++PLATFORM = gtk ++FORCE_SHARED_LIB = 1 ++EXPORT_LIBRARY = ++endif ++ + ifeq ($(OS_ARCH),WINNT) + EXTRA_DSO_LIBS = gkgfx + PLATFORM = win +@@ -48,6 +55,10 @@ + PLATFORM = mac + endif + ++ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2) ++PLATFORM = gtk ++endif ++ + DIRS = $(PLATFORM) + + REQUIRES = xpcom \ +@@ -68,7 +79,7 @@ + + SHARED_LIBRARY_LIBS = $(DIST)/lib/$(LIB_PREFIX)imgicon$(PLATFORM)_s.$(LIB_SUFFIX) + +-EXTRA_DSO_LDOPTS = \ ++EXTRA_DSO_LDOPTS += \ + $(EXTRA_DSO_LIBS) \ + $(MOZ_COMPONENT_LIBS) \ + $(NULL) +Index: modules/libpr0n/decoders/icon/nsIIconURI.idl +=================================================================== +RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIIconURI.idl,v +retrieving revision 1.5 +diff -u -r1.5 nsIIconURI.idl +--- modules/libpr0n/decoders/icon/nsIIconURI.idl 27 Apr 2002 05:32:16 -0000 1.5 ++++ modules/libpr0n/decoders/icon/nsIIconURI.idl 3 Nov 2004 10:03:59 -0000 +@@ -21,26 +21,90 @@ + + #include "nsIURI.idl" + +-// +-// moz-icon URLs have the following syntax +-// +-// moz-icon:<file-uri>?size=16&contentType=text/html +-// OR +-// moz-icon://dummyfile.html +-// moz-icon://dummyfile.html?size=32 +-// +-// The content type field is optional. The size field is optional. You only need to specify a file url inside the icon +-// if the file you want the icon for actually exists. Otherwise you can omit the file:// and just place a dummy file name with the extension +-// or content type you want: moz-icon://dummy.html. +-// ++ /** ++ * nsIIconURI ++ * ++ * This interface derives from nsIURI, to provide additional information ++ * about moz-icon URIs. These URIs ++ * ++ * What *is* a moz-icon URI you ask? Well, it has the following syntax: ++ * ++ * moz-icon://[<file-uri> | <file-with-extension>]? ['?'[<parameter-value-pairs>]] ++ * ++ * <file-uri> is a legal file: URI spec. You only need to specify a file: URI inside the icon ++ * if the file you want the icon for actually exists. ++ * ++ * <file-with-extension> is any filename with an extension, e.g. "dummy.html". ++ * If the file you want an icon for isn't known to exist, you can omit the file URI, and just ++ * place a dummy file name with the extension or content type you want: moz-icon://dummy.html. ++ * ++ * <stock-image> is of the format: stock/<icon-name> ++ * ++ * <icon-name> is a valid icon name, such as 'ok', 'cancel', 'yes', 'no'. ++ * XXXcaa document or reference to all 76 (yes, 76) of them. ++ * ++ * Legal parameter value pairs are listed below: ++ * ++ * Parameter: size ++ * Values: [<integer> | button | toolbar | toolbarsmall | menu | dialog] ++ * Description: If integer, this is the desired size in square pixels of the icon ++ * Else, use the OS default for the specified keyword context. ++ * Note that stock images require a keyword, not an integer pixel value. ++ * ++ * Parameter: contentType ++ * Values: <mime-type> ++ * Description: A valid mime type for the icon. ++ */ + + [scriptable, uuid(733A7A16-2D36-11d5-9907-001083010E9B)] + interface nsIMozIconURI : nsIURI + { +- // Returns the file URL contained within this -moz-icon url. +- attribute nsIURI IconFile; // maybe null if there isn't a real file we are trying to fetch ++ /** ++ * iconFile ++ * ++ * the file URL contained within this moz-icon url, or null. ++ */ ++ attribute nsIURI iconFile; ++ /** ++ * imageSize ++ * ++ * The image area in square pixels, defaulting to 16 if unspecified. ++ */ ++ attribute unsigned long imageSize; + +- attribute unsigned long imageSize; // measured by # of pixels in a row. defaults to 16. +- attribute ACString contentType; // may be an empty string ++ /** ++ * contentType ++ * ++ * A valid mime type, or the empty string. ++ */ ++ ++ attribute ACString contentType; ++ ++ /** ++ * fileExtension ++ * ++ * The file extension of the file which we are looking up. ++ */ + readonly attribute ACString fileExtension; ++ ++ /** ++ * stockIcon ++ * ++ * The stock icon name requested from the OS. ++ */ ++ readonly attribute ACString stockIcon; ++ ++ /** ++ * stockIconSize ++ * ++ * The stock icon size requested from the OS. ++ */ ++ readonly attribute ACString stockIconSize; ++ ++ /** ++ * stockIconState ++ * ++ * The stock icon state requested from the OS. ++ */ ++ readonly attribute ACString stockIconState; + }; +Index: modules/libpr0n/decoders/icon/nsIconModule.cpp +=================================================================== +RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIconModule.cpp,v +retrieving revision 1.4 +diff -u -r1.4 nsIconModule.cpp +--- modules/libpr0n/decoders/icon/nsIconModule.cpp 30 Jan 2002 21:05:40 -0000 1.4 ++++ modules/libpr0n/decoders/icon/nsIconModule.cpp 3 Nov 2004 10:03:59 -0000 +@@ -26,6 +26,7 @@ + + #include "nsIconDecoder.h" + #include "nsIconProtocolHandler.h" ++#include "nsIconURI.h" + + // objects that just require generic constructors + /****************************************************************************** +@@ -41,7 +42,8 @@ + { "icon decoder", + NS_ICONDECODER_CID, + "@mozilla.org/image/decoder;2?type=image/icon", +- nsIconDecoderConstructor, }, ++ nsIconDecoderConstructor ++ }, + + { "Icon Protocol Handler", + NS_ICONPROTOCOL_CID, +@@ -50,4 +52,12 @@ + } + }; + +-NS_IMPL_NSGETMODULE(nsIconDecoderModule, components) ++PR_STATIC_CALLBACK(nsresult) ++IconDecoderModuleCtor(nsIModule* aSelf) ++{ ++ nsMozIconURI::InitAtoms(); ++ return NS_OK; ++} ++ ++NS_IMPL_NSGETMODULE_WITH_CTOR(nsIconDecoderModule, components, ++ IconDecoderModuleCtor) +Index: modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp +=================================================================== +RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp,v +retrieving revision 1.12 +diff -u -r1.12 nsIconProtocolHandler.cpp +--- modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp 8 Jan 2003 22:02:55 -0000 1.12 ++++ modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp 3 Nov 2004 10:03:59 -0000 +@@ -89,15 +89,18 @@ + + NS_IMETHODIMP nsIconProtocolHandler::NewChannel(nsIURI* url, nsIChannel* *result) + { +- nsCOMPtr<nsIChannel> channel; +- NS_NEWXPCOM(channel, nsIconChannel); ++ nsIconChannel* channel = new nsIconChannel; ++ if (!channel) ++ return NS_ERROR_OUT_OF_MEMORY; ++ NS_ADDREF(channel); + +- if (channel) +- NS_STATIC_CAST(nsIconChannel*,NS_STATIC_CAST(nsIChannel*, channel))->Init(url); ++ nsresult rv = channel->Init(url); ++ if (NS_FAILED(rv)) { ++ delete channel; ++ return rv; ++ } + + *result = channel; +- NS_IF_ADDREF(*result); +- + return NS_OK; + } + +Index: modules/libpr0n/decoders/icon/nsIconURI.cpp +=================================================================== +RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIconURI.cpp,v +retrieving revision 1.16 +diff -u -r1.16 nsIconURI.cpp +--- modules/libpr0n/decoders/icon/nsIconURI.cpp 17 Mar 2004 21:23:51 -0000 1.16 ++++ modules/libpr0n/decoders/icon/nsIconURI.cpp 3 Nov 2004 10:03:59 -0000 +@@ -26,6 +26,8 @@ + #include "nsCRT.h" + #include "nsReadableUtils.h" + #include "nsPrintfCString.h" ++#include "nsIAtom.h" ++#include "nsStaticAtom.h" + + static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID); + #define DEFAULT_IMAGE_SIZE 16 +@@ -34,17 +36,48 @@ + // from the icon url. + static void extractAttributeValue(const char * searchString, const char * attributeName, char ** result); + ++static nsIAtom *sStockSizeButton = nsnull; ++static nsIAtom *sStockSizeToolbar = nsnull; ++static nsIAtom *sStockSizeToolbarsmall = nsnull; ++static nsIAtom *sStockSizeMenu = nsnull; ++static nsIAtom *sStockSizeDialog = nsnull; ++static nsIAtom *sStockStateNormal = nsnull; ++static nsIAtom *sStockStateDisabled = nsnull; ++ ++/* static */ const nsStaticAtom nsMozIconURI::sSizeAtoms[] = ++{ ++ { "button", &sStockSizeButton }, ++ { "toolbar", &sStockSizeToolbar }, ++ { "toolbarsmall", &sStockSizeToolbarsmall }, ++ { "menu", &sStockSizeMenu }, ++ { "dialog", &sStockSizeDialog } ++}; ++ ++/* static */ const nsStaticAtom nsMozIconURI::sStateAtoms[] = ++{ ++ { "normal", &sStockStateNormal }, ++ { "disabled", &sStockStateDisabled } ++}; ++ + //////////////////////////////////////////////////////////////////////////////// + + nsMozIconURI::nsMozIconURI() ++ : mSize(DEFAULT_IMAGE_SIZE) + { +- mSize = DEFAULT_IMAGE_SIZE; + } + + nsMozIconURI::~nsMozIconURI() + { + } + ++ ++/* static */ void ++nsMozIconURI::InitAtoms() ++{ ++ NS_RegisterStaticAtoms(sSizeAtoms, NS_ARRAY_LENGTH(sSizeAtoms)); ++ NS_RegisterStaticAtoms(sStateAtoms, NS_ARRAY_LENGTH(sStateAtoms)); ++} ++ + NS_IMPL_THREADSAFE_ISUPPORTS2(nsMozIconURI, nsIMozIconURI, nsIURI) + + #define NS_MOZICON_SCHEME "moz-icon:" +@@ -64,6 +97,26 @@ + NS_ENSURE_SUCCESS(rv, rv); + spec += fileIconSpec; + } ++ else if (!mStockIcon.IsEmpty()) ++ { ++ spec += "//stock/"; ++ spec += mStockIcon; ++ if (mStockIconSize) { ++ spec += NS_MOZ_ICON_DELIMITER; ++ spec += "size="; ++ const char *size_string; ++ mStockIconSize->GetUTF8String(&size_string); ++ spec.Append(nsPrintfCString("%s", size_string)); ++ } ++ if (mStockIconState) { ++ spec += NS_MOZ_ICON_DELIMITER; ++ spec += "state="; ++ const char *state_string; ++ mStockIconSize->GetUTF8String(&state_string); ++ spec.Append(nsPrintfCString("%s", state_string)); ++ } ++ return NS_OK; ++ } + else + { + spec += "//"; +@@ -116,12 +169,10 @@ + else // there is nothing left so eat up rest of line. + attributeValue = PL_strdup(startOfAttribute); + } // if we have a attribute value +- + } // if we have a attribute name + } // if we got non-null search string and attribute name values + + *result = attributeValue; // passing ownership of attributeValue into result...no need to +- return; + } + + NS_IMETHODIMP +@@ -138,6 +189,8 @@ + if (strcmp("moz-icon", scheme.get()) != 0) + return NS_ERROR_MALFORMED_URI; + ++ nsXPIDLCString sizeString; ++ nsXPIDLCString stateString; + nsCAutoString mozIconPath(aSpec); + PRInt32 endPos = mozIconPath.FindChar(':') + 1; // guaranteed to exist! + PRInt32 pos = mozIconPath.FindChar(NS_MOZ_ICON_DELIMITER); +@@ -150,26 +203,48 @@ + { + mozIconPath.Mid(mDummyFilePath, endPos, pos - endPos); + // fill in any size and content type values... +- nsXPIDLCString sizeString; + nsXPIDLCString contentTypeString; + extractAttributeValue(mozIconPath.get() + pos, "size=", getter_Copies(sizeString)); ++ extractAttributeValue(mozIconPath.get() + pos, "state=", getter_Copies(stateString)); + extractAttributeValue(mozIconPath.get() + pos, "contentType=", getter_Copies(contentTypeString)); + mContentType = contentTypeString; +- +- if (sizeString.get()) +- { +- PRInt32 sizeValue = atoi(sizeString); +- // if the size value we got back is > 0 then use it +- if (sizeValue) +- mSize = sizeValue; +- } + } + +- // Okay now we have a bit of a hack here...filePath can have two forms: ++ // Okay now we have a bit of a hack here...filePath can have three forms: + // (1) file://<some valid platform specific file url> + // (2) //<some dummy file with an extension> ++ // (3) stock/<icon-identifier> + // We need to determine which case we are and behave accordingly... +- if (mDummyFilePath.Length() > 2) // we should at least have two forward slashes followed by a file or a file:// ++ if (mDummyFilePath.Length() > 2) ++ { ++ if (!strncmp("//stock/", mDummyFilePath.get(), 8)) ++ { ++ // we have a stock icon ++ mStockIcon = Substring(mDummyFilePath, 8); ++ if (!sizeString.IsEmpty()) ++ { ++ nsCOMPtr<nsIAtom> atom = do_GetAtom(sizeString); ++ for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(sSizeAtoms); i++) ++ { ++ if (atom == *(sSizeAtoms[i].mAtom)) ++ { ++ mStockIconSize = atom; ++ break; ++ } ++ } ++ ++ atom = do_GetAtom(stateString); ++ for (PRUint32 i = 0; i < NS_ARRAY_LENGTH(sStateAtoms); i++) ++ { ++ if (atom == *(sStateAtoms[i].mAtom)) ++ { ++ mStockIconState = atom; ++ break; ++ } ++ } ++ } ++ } ++ else + { + if (!nsCRT::strncmp("//", mDummyFilePath.get(), 2))// must not have a url here.. + { +@@ -177,16 +252,22 @@ + // and remember the rest in mDummyFilePath + mDummyFilePath.Cut(0, 2); // cut the first 2 bytes.... + } +- +- if (!nsCRT::strncmp("file://", mDummyFilePath.get(), 7)) ++ else if (!nsCRT::strncmp("file://", mDummyFilePath.get(), 7)) + { + // we have a file url.....so store it... + rv = ioService->NewURI(mDummyFilePath, nsnull, nsnull, getter_AddRefs(mFileIcon)); +- if (NS_FAILED(rv)) return NS_ERROR_MALFORMED_URI; ++ } ++ if (!sizeString.IsEmpty()) ++ { ++ PRInt32 sizeValue = atoi(sizeString); ++ // if the size value we got back is > 0 then use it ++ if (sizeValue) ++ mSize = sizeValue; ++ } + } + } + else +- return NS_ERROR_MALFORMED_URI; // they didn't include a file path... ++ rv = NS_ERROR_MALFORMED_URI; // they didn't include a file path... + return rv; + } + +@@ -436,10 +517,35 @@ + const char * chFileName = fileExtension.get(); // get the underlying buffer + const char * fileExt = strrchr(chFileName, '.'); + if (!fileExt) return NS_ERROR_FAILURE; // no file extension to work from. +- else ++ + aFileExtension = nsDependentCString(fileExt); + + return NS_OK; + } + ++NS_IMETHODIMP ++nsMozIconURI::GetStockIcon(nsACString &aStockIcon) ++{ ++ aStockIcon.Assign(mStockIcon); ++ ++ return NS_OK; ++} ++ ++NS_IMETHODIMP ++nsMozIconURI::GetStockIconSize(nsACString &aSize) ++{ ++ if (mStockIconSize) ++ return mStockIconSize->ToUTF8String(aSize); ++ aSize.Truncate(); ++ return NS_OK; ++} ++ ++NS_IMETHODIMP ++nsMozIconURI::GetStockIconState(nsACString &aState) ++{ ++ if (mStockIconState) ++ return mStockIconState->ToUTF8String(aState); ++ aState.Truncate(); ++ return NS_OK; ++} + //////////////////////////////////////////////////////////////////////////////// +Index: modules/libpr0n/decoders/icon/nsIconURI.h +=================================================================== +RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/nsIconURI.h,v +retrieving revision 1.6 +diff -u -r1.6 nsIconURI.h +--- modules/libpr0n/decoders/icon/nsIconURI.h 6 Mar 2002 07:47:49 -0000 1.6 ++++ modules/libpr0n/decoders/icon/nsIconURI.h 3 Nov 2004 10:04:00 -0000 +@@ -25,6 +25,9 @@ + #include "nsIIconURI.h" + #include "nsCOMPtr.h" + #include "nsString.h" ++class nsStaticAtom; ++ ++class nsIAtom; + + #define NS_MOZICONURI_CID \ + { \ +@@ -41,6 +44,8 @@ + NS_DECL_NSIURI + NS_DECL_NSIMOZICONURI + ++ static void InitAtoms(); ++ + // nsJARURI + nsMozIconURI(); + virtual ~nsMozIconURI(); +@@ -50,6 +55,12 @@ + PRUint32 mSize; // the # of pixels in a row that we want for this image. Typically 16, 32, 128, etc. + nsCString mContentType; // optional field explicitly specifying the content type + nsCString mDummyFilePath; // if we don't have a valid file url, the file path is stored here....i.e if mFileIcon is null..... ++ nsCString mStockIcon; ++ nsCOMPtr<nsIAtom> mStockIconSize; ++ nsCOMPtr<nsIAtom> mStockIconState; ++ ++ static const nsStaticAtom sSizeAtoms[]; ++ static const nsStaticAtom sStateAtoms[]; + + nsresult FormatSpec(nsACString &result); + }; +Index: modules/libpr0n/decoders/icon/win/nsIconChannel.h +=================================================================== +RCS file: /cvsroot/mozilla/modules/libpr0n/decoders/icon/win/nsIconChannel.h,v +retrieving revision 1.6 +diff -u -r1.6 nsIconChannel.h +--- modules/libpr0n/decoders/icon/win/nsIconChannel.h 19 Dec 2003 15:04:27 -0000 1.6 ++++ modules/libpr0n/decoders/icon/win/nsIconChannel.h 3 Nov 2004 10:04:00 -0000 +@@ -45,7 +45,7 @@ + NS_DECL_NSISTREAMLISTENER + + nsIconChannel(); +- virtual ~nsIconChannel(); ++ ~nsIconChannel(); + + nsresult Init(nsIURI* uri); + +Index: caps/src/nsScriptSecurityManager.cpp +=================================================================== +RCS file: /cvsroot/mozilla/caps/src/nsScriptSecurityManager.cpp,v +retrieving revision 1.229.6.6 +diff -u -r1.229.6.6 nsScriptSecurityManager.cpp +--- caps/src/nsScriptSecurityManager.cpp 24 Oct 2004 12:04:33 -0000 1.229.6.6 ++++ caps/src/nsScriptSecurityManager.cpp 3 Nov 2004 10:11:43 -0000 +@@ -1233,6 +1233,7 @@ + // to increase performance + { "http", AllowProtocol }, + { "chrome", ChromeProtocol }, ++ { "moz-icon", ChromeProtocol }, + { "file", PrefControlled }, + { "https", AllowProtocol }, + { "mailbox", DenyProtocol }, +--- /dev/null 2004-11-03 10:29:10.174421952 +0100 ++++ modules/libpr0n/decoders/icon/gtk/Makefile.in 2004-10-17 15:14:05.000000000 +0200 +@@ -0,0 +1,63 @@ ++# ***** BEGIN LICENSE BLOCK ***** ++# Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++# ++# The contents of this file are subject to the Mozilla Public License Version ++# 1.1 (the "License"); you may not use this file except in compliance with ++# the License. You may obtain a copy of the License at ++# http://www.mozilla.org/MPL/ ++# ++# Software distributed under the License is distributed on an "AS IS" basis, ++# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License ++# for the specific language governing rights and limitations under the ++# License. ++# ++# The Original Code is the Makefile for the Gnome icon decoder. ++# ++# The Initial Developer of the Original Code is ++# Christian Biesinger <cbiesinger@web.de>. ++# Portions created by the Initial Developer are Copyright (C) 2004 ++# the Initial Developer. All Rights Reserved. ++# ++# Contributor(s): ++# ++# Alternatively, the contents of this file may be used under the terms of ++# either the GNU General Public License Version 2 or later (the "GPL"), or ++# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ++# in which case the provisions of the GPL or the LGPL are applicable instead ++# of those above. If you wish to allow use of your version of this file only ++# under the terms of either the GPL or the LGPL, and not to allow others to ++# use your version of this file under the terms of the MPL, indicate your ++# decision by deleting the provisions above and replace them with the notice ++# and other provisions required by the GPL or the LGPL. If you do not delete ++# the provisions above, a recipient may use your version of this file under ++# the terms of any one of the MPL, the GPL or the LGPL. ++# ++# ***** END LICENSE BLOCK ***** ++ ++ ++DEPTH = ../../../../.. ++topsrcdir = @top_srcdir@ ++srcdir = @srcdir@ ++VPATH = @srcdir@ ++ ++include $(DEPTH)/config/autoconf.mk ++ ++MODULE = imgicon ++LIBRARY_NAME = imgicongtk_s ++ ++REQUIRES = xpcom \ ++ string \ ++ necko \ ++ intl \ ++ mimetype \ ++ $(NULL) ++ ++CPPSRCS = nsIconChannel.cpp ++ ++LOCAL_INCLUDES += $(MOZ_GNOMEUI_CFLAGS) $(MOZ_GTK2_CFLAGS) ++ ++# we don't want the shared lib, but we want to force the creation of a static lib. ++FORCE_STATIC_LIB = 1 ++ ++include $(topsrcdir)/config/rules.mk ++ +--- /dev/null 2004-11-03 10:29:10.174421952 +0100 ++++ modules/libpr0n/decoders/icon/gtk/nsIconChannel.h 2004-10-17 15:14:05.000000000 +0200 +@@ -0,0 +1,84 @@ ++/* ***** BEGIN LICENSE BLOCK ***** ++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++ * ++ * The contents of this file are subject to the Mozilla Public License Version ++ * 1.1 (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" basis, ++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License ++ * for the specific language governing rights and limitations under the ++ * License. ++ * ++ * The Original Code is the Mozilla icon channel for gnome. ++ * ++ * The Initial Developer of the Original Code is ++ * Christian Biesinger <cbiesinger@web.de>. ++ * Portions created by the Initial Developer are Copyright (C) 2004 ++ * the Initial Developer. All Rights Reserved. ++ * ++ * Contributor(s): ++ * ++ * Alternatively, the contents of this file may be used under the terms of ++ * either the GNU General Public License Version 2 or later (the "GPL"), or ++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ++ * in which case the provisions of the GPL or the LGPL are applicable instead ++ * of those above. If you wish to allow use of your version of this file only ++ * under the terms of either the GPL or the LGPL, and not to allow others to ++ * use your version of this file under the terms of the MPL, indicate your ++ * decision by deleting the provisions above and replace them with the notice ++ * and other provisions required by the GPL or the LGPL. If you do not delete ++ * the provisions above, a recipient may use your version of this file under ++ * the terms of any one of the MPL, the GPL or the LGPL. ++ * ++ * ***** END LICENSE BLOCK ***** */ ++ ++#ifndef nsIconChannel_h_ ++#define nsIconChannel_h_ ++ ++#include "nsIChannel.h" ++#include "nsIStreamListener.h" ++#include "nsIURI.h" ++#include "nsIIconURI.h" ++#include "nsCOMPtr.h" ++ ++/** ++ * This class is the gnome implementation of nsIconChannel. It basically asks ++ * gtk/gnome for an icon, saves it as a tmp icon, and creates a new channel for ++ * that file to which all calls will be proxied. ++ */ ++class nsIconChannel : public nsIChannel ++{ ++ public: ++ NS_DECL_ISUPPORTS ++ NS_FORWARD_NSIREQUEST(mRealChannel->) ++ NS_FORWARD_NSICHANNEL(mRealChannel->) ++ ++ nsIconChannel() {} ++ ~nsIconChannel() {} ++ ++ /** ++ * Called by nsIconProtocolHandler after it creates this channel. ++ * Must be called before calling any other function on this object. ++ * If this method fails, no other function must be called on this object. ++ */ ++ NS_HIDDEN_(nsresult) Init(nsIURI* aURI); ++ private: ++ /** ++ * The channel to the temp icon file (e.g. to /tmp/2qy9wjqw.html). ++ * Will always be non-null after a successful Init. ++ */ ++ nsCOMPtr<nsIChannel> mRealChannel; ++ /** ++ * The moz-icon URI we're loading. Always non-null after a successful Init. ++ */ ++ nsCOMPtr<nsIMozIconURI> mURI; ++ ++ /** ++ * Called by Init if we need to use the gnomeui library. ++ */ ++ nsresult InitWithGnome(); ++}; ++ ++#endif +--- /dev/null 2004-11-03 10:29:10.174421952 +0100 ++++ modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp 2004-10-23 12:15:15.000000000 +0200 +@@ -0,0 +1,352 @@ ++/* vim:set ts=2 sw=2 sts=2 cin et: */ ++/* ***** BEGIN LICENSE BLOCK ***** ++ * Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++ * ++ * The contents of this file are subject to the Mozilla Public License Version ++ * 1.1 (the "License"); you may not use this file except in compliance with ++ * the License. You may obtain a copy of the License at ++ * http://www.mozilla.org/MPL/ ++ * ++ * Software distributed under the License is distributed on an "AS IS" basis, ++ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License ++ * for the specific language governing rights and limitations under the ++ * License. ++ * ++ * The Original Code is the Mozilla icon channel for gnome. ++ * ++ * The Initial Developer of the Original Code is ++ * Christian Biesinger <cbiesinger@web.de>. ++ * Portions created by the Initial Developer are Copyright (C) 2004 ++ * the Initial Developer. All Rights Reserved. ++ * ++ * Contributor(s): ++ * ++ * Alternatively, the contents of this file may be used under the terms of ++ * either the GNU General Public License Version 2 or later (the "GPL"), or ++ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ++ * in which case the provisions of the GPL or the LGPL are applicable instead ++ * of those above. If you wish to allow use of your version of this file only ++ * under the terms of either the GPL or the LGPL, and not to allow others to ++ * use your version of this file under the terms of the MPL, indicate your ++ * decision by deleting the provisions above and replace them with the notice ++ * and other provisions required by the GPL or the LGPL. If you do not delete ++ * the provisions above, a recipient may use your version of this file under ++ * the terms of any one of the MPL, the GPL or the LGPL. ++ * ++ * ***** END LICENSE BLOCK ***** */ ++ ++#include <stdlib.h> ++#include <unistd.h> ++// Older versions of these headers seem to be missing an extern "C" ++extern "C" { ++#include <libgnome/libgnome.h> ++#include <libgnomeui/gnome-icon-theme.h> ++#include <libgnomeui/gnome-icon-lookup.h> ++#include <libgnomeui/gnome-ui-init.h> ++ ++#include <libgnomevfs/gnome-vfs-file-info.h> ++#include <libgnomevfs/gnome-vfs-ops.h> ++} ++ ++#include <gtk/gtk.h> ++#include <gdk/gdk.h> ++ ++#include "nsIMIMEService.h" ++ ++#include "nsIStringBundle.h" ++ ++#include "nsEscape.h" ++#include "nsNetUtil.h" ++#include "nsIURL.h" ++#include "prlink.h" ++#include "nsIconChannel.h" ++ ++NS_IMPL_ISUPPORTS2(nsIconChannel, nsIRequest, nsIChannel) ++ ++/** ++ * Given a path to a PNG Image, creates a channel from it. ++ * Note that the channel will delete the file when it's done with it. ++ * ++ * (When this function fails, the file will NOT be deleted) ++ */ ++static nsresult pngfile_to_channel(const char* aFilename, nsIChannel** aChannel) { ++ // Now we have to create an uri for the file... ++ nsCOMPtr<nsILocalFile> lf; ++ nsresult rv = NS_NewNativeLocalFile(nsDependentCString(aFilename), PR_FALSE, ++ getter_AddRefs(lf)); ++ if (NS_FAILED(rv)) ++ return rv; ++ ++ nsCOMPtr<nsIInputStream> is; ++ rv = NS_NewLocalFileInputStream(getter_AddRefs(is), lf, -1, -1, ++ nsIFileInputStream::DELETE_ON_CLOSE); ++ if (NS_FAILED(rv)) ++ return rv; ++ ++ nsCOMPtr<nsIURI> realURI; ++ rv = NS_NewFileURI(getter_AddRefs(realURI), lf); ++ if (NS_FAILED(rv)) ++ return rv; ++ ++ rv = NS_NewInputStreamChannel(aChannel, realURI, is, ++ NS_LITERAL_CSTRING("image/png")); ++ return rv; ++} ++ ++static nsresult ++moz_gdk_pixbuf_to_channel(GdkPixbuf* aPixbuf, nsIChannel **aChannel) ++{ ++ char tmpfile[] = "/tmp/moziconXXXXXX"; ++ int fd = mkstemp(tmpfile); ++ if (fd == -1) { ++ return NS_ERROR_UNEXPECTED; ++ } ++ ++ GError *err = NULL; ++ gboolean ok = gdk_pixbuf_save(aPixbuf, tmpfile, "png", &err, NULL); ++ if (!ok) { ++ close(fd); ++ remove(tmpfile); ++ if (err) ++ g_error_free(err); ++ return NS_ERROR_UNEXPECTED; ++ } ++ ++ nsresult rv = pngfile_to_channel(tmpfile, aChannel); ++ close(fd); ++ if (NS_FAILED(rv)) ++ remove(tmpfile); ++ return rv; ++} ++ ++static GtkWidget *gProtoWindow = nsnull; ++static GtkWidget *gStockImageWidget = nsnull; ++static GtkIconFactory *gIconFactory = nsnull; ++ ++static void ++ensure_stock_image_widget() ++{ ++ if (!gProtoWindow) { ++ gProtoWindow = gtk_window_new(GTK_WINDOW_POPUP); ++ gtk_widget_realize(gProtoWindow); ++ GtkWidget* protoLayout = gtk_fixed_new(); ++ gtk_container_add(GTK_CONTAINER(gProtoWindow), protoLayout); ++ ++ gStockImageWidget = gtk_image_new(); ++ gtk_container_add(GTK_CONTAINER(protoLayout), gStockImageWidget); ++ gtk_widget_realize(gStockImageWidget); ++ } ++} ++ ++static void ++ensure_icon_factory() ++{ ++ if (!gIconFactory) { ++ gIconFactory = gtk_icon_factory_new(); ++ gtk_icon_factory_add_default (gIconFactory); ++ g_object_unref(gIconFactory); ++ } ++} ++ ++static GtkIconSize ++moz_gtk_icon_size(const char *name) ++{ ++ if (strcmp(name, "button") == 0) ++ return GTK_ICON_SIZE_BUTTON; ++ ++ if (strcmp(name, "menu") == 0) ++ return GTK_ICON_SIZE_MENU; ++ ++ if (strcmp(name, "toolbar") == 0) ++ return GTK_ICON_SIZE_LARGE_TOOLBAR; ++ ++ if (strcmp(name, "toolbarsmall") == 0) ++ return GTK_ICON_SIZE_SMALL_TOOLBAR; ++ ++ if (strcmp(name, "dialog") == 0) ++ return GTK_ICON_SIZE_DIALOG; ++ ++ return GTK_ICON_SIZE_INVALID; ++} ++ ++nsresult ++nsIconChannel::InitWithGnome() ++{ ++ if (!gnome_program_get()) { ++ // Get the brandShortName from the string bundle to pass to GNOME ++ // as the application name. This may be used for things such as ++ // the title of grouped windows in the panel. ++ nsCOMPtr<nsIStringBundleService> bundleService = ++ do_GetService(NS_STRINGBUNDLE_CONTRACTID); ++ ++ NS_ASSERTION(bundleService, "String bundle service must be present!"); ++ ++ nsCOMPtr<nsIStringBundle> bundle; ++ bundleService->CreateBundle("chrome://global/locale/brand.properties", ++ getter_AddRefs(bundle)); ++ nsXPIDLString appName; ++ ++ if (bundle) { ++ bundle->GetStringFromName(NS_LITERAL_STRING("brandShortName").get(), ++ getter_Copies(appName)); ++ } else { ++ NS_WARNING("brand.properties not present, using default application name"); ++ appName.Assign(NS_LITERAL_STRING("Gecko")); ++ } ++ ++ char* empty[] = { "" }; ++ gnome_init(NS_ConvertUTF16toUTF8(appName).get(), "1.0", 1, empty); ++ } ++ ++ PRUint32 iconSize; ++ nsresult rv = mURI->GetImageSize(&iconSize); ++ NS_ASSERTION(NS_SUCCEEDED(rv), "GetImageSize failed"); ++ ++ nsCAutoString type; ++ mURI->GetContentType(type); ++ ++ GnomeVFSFileInfo fileInfo = {0}; ++ fileInfo.refcount = 1; // In case some GnomeVFS function addrefs and releases it ++ ++ nsCAutoString spec; ++ nsCOMPtr<nsIURI> fileURI; ++ rv = mURI->GetIconFile(getter_AddRefs(fileURI)); ++ if (fileURI) { ++ fileURI->GetAsciiSpec(spec); ++ // Only ask gnome-vfs for a GnomeVFSFileInfo for file: uris, to avoid a ++ // network request ++ PRBool isFile; ++ if (NS_SUCCEEDED(fileURI->SchemeIs("file", &isFile)) && isFile) { ++ gnome_vfs_get_file_info(spec.get(), &fileInfo, GNOME_VFS_FILE_INFO_DEFAULT); ++ } ++ else { ++ // We have to get a leaf name from our uri... ++ nsCOMPtr<nsIURL> url(do_QueryInterface(fileURI)); ++ if (url) { ++ nsCAutoString name; ++ // The filename we get is UTF-8-compatible, which matches gnome expectations. ++ // See also: http://lists.gnome.org/archives/gnome-vfs-list/2004-March/msg00049.html ++ // "Whenever we can detect the charset used for the URI type we try to ++ // convert it to/from utf8 automatically inside gnome-vfs." ++ // I'll interpret that as "otherwise, this field is random junk". ++ url->GetFileName(name); ++ fileInfo.name = g_strdup(name.get()); ++ } ++ // If this is no nsIURL, nothing we can do really. ++ ++ if (!type.IsEmpty()) { ++ fileInfo.valid_fields = GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE; ++ fileInfo.mime_type = g_strdup(type.get()); ++ } ++ } ++ } ++ ++ ++ if (type.IsEmpty()) { ++ nsCOMPtr<nsIMIMEService> ms(do_GetService("@mozilla.org/mime;1")); ++ if (ms) { ++ nsCAutoString fileExt; ++ mURI->GetFileExtension(fileExt); ++ nsXPIDLCString extType; ++ ms->GetTypeFromExtension(fileExt.get(), getter_Copies(extType)); ++ fileExt.Assign(extType); ++ } ++ } ++ ++ // Get the icon theme ++ GnomeIconTheme *t = gnome_icon_theme_new(); ++ if (!t) { ++ gnome_vfs_file_info_clear(&fileInfo); ++ return NS_ERROR_NOT_AVAILABLE; ++ } ++ ++ ++ char* name = gnome_icon_lookup(t, NULL, spec.get(), NULL, &fileInfo, type.get(), GNOME_ICON_LOOKUP_FLAGS_NONE, NULL); ++ gnome_vfs_file_info_clear(&fileInfo); ++ if (!name) { ++ g_object_unref(G_OBJECT(t)); ++ return NS_ERROR_NOT_AVAILABLE; ++ } ++ ++ char* file = gnome_icon_theme_lookup_icon(t, name, iconSize, NULL, NULL); ++ g_free(name); ++ g_object_unref(G_OBJECT(t)); ++ if (!file) ++ return NS_ERROR_NOT_AVAILABLE; ++ ++ // Create a GdkPixbuf buffer and scale it ++ GError *err = nsnull; ++ GdkPixbuf* buf = gdk_pixbuf_new_from_file(file, &err); ++ g_free(file); ++ if (!buf) { ++ if (err) ++ g_error_free(err); ++ return NS_ERROR_UNEXPECTED; ++ } ++ ++ // scale... ++ GdkPixbuf* scaled = gdk_pixbuf_scale_simple(buf, iconSize, iconSize, GDK_INTERP_BILINEAR); ++ gdk_pixbuf_unref(buf); ++ if (!scaled) ++ return NS_ERROR_OUT_OF_MEMORY; ++ ++ rv = moz_gdk_pixbuf_to_channel(scaled, getter_AddRefs(mRealChannel)); ++ gdk_pixbuf_unref(scaled); ++ return rv; ++} ++ ++nsresult ++nsIconChannel::Init(nsIURI* aURI) { ++ mURI = do_QueryInterface(aURI); ++ NS_ASSERTION(mURI, "URI passed to nsIconChannel is no nsIMozIconURI!"); ++ ++ nsCAutoString stockIcon; ++ mURI->GetStockIcon(stockIcon); ++ if (stockIcon.IsEmpty()) { ++ return InitWithGnome(); ++ } ++ ++ nsCAutoString iconSizeString; ++ mURI->GetStockIconSize(iconSizeString); ++ ++ nsCAutoString iconStateString; ++ mURI->GetStockIconState(iconStateString); ++ ++ GtkIconSize icon_size = moz_gtk_icon_size(iconSizeString.get()); ++ if (icon_size == GTK_ICON_SIZE_INVALID) { ++ NS_WARNING(iconSizeString.get()); ++ return NS_ERROR_FAILURE; ++ } ++ ++ ensure_stock_image_widget(); ++ ++ gboolean sensitive = strcmp(iconStateString.get(), "disabled"); ++ gtk_widget_set_sensitive (gStockImageWidget, sensitive); ++ ++ GdkPixbuf *icon = gtk_widget_render_icon(gStockImageWidget, stockIcon.get(), ++ icon_size, NULL); ++ if (!icon) { ++ ensure_icon_factory(); ++ ++ GtkIconSet *icon_set = gtk_icon_set_new(); ++ GtkIconSource *icon_source = gtk_icon_source_new(); ++ ++ gtk_icon_source_set_icon_name(icon_source, stockIcon.get()); ++ gtk_icon_set_add_source(icon_set, icon_source); ++ gtk_icon_factory_add(gIconFactory, stockIcon.get(), icon_set); ++ gtk_icon_set_unref(icon_set); ++ gtk_icon_source_free(icon_source); ++ ++ icon = gtk_widget_render_icon(gStockImageWidget, stockIcon.get(), ++ icon_size, NULL); ++ } ++ ++ if (!icon) ++ return NS_ERROR_NOT_AVAILABLE; ++ ++ nsresult rv = moz_gdk_pixbuf_to_channel(icon, getter_AddRefs(mRealChannel)); ++ ++ gdk_pixbuf_unref(icon); ++ ++ return rv; ++} diff --git a/firefox-RC1-stock-icons-fe.patch b/firefox-RC1-stock-icons-fe.patch new file mode 100644 index 0000000..4805452 --- /dev/null +++ b/firefox-RC1-stock-icons-fe.patch @@ -0,0 +1,784 @@ +Index: toolkit/components/filepicker/content/filepicker.js +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/components/filepicker/content/filepicker.js,v +retrieving revision 1.5.18.1.2.1 +diff -u -r1.5.18.1.2.1 filepicker.js +--- toolkit/components/filepicker/content/filepicker.js 10 Aug 2004 00:20:32 -0000 1.5.18.1.2.1 ++++ toolkit/components/filepicker/content/filepicker.js 3 Nov 2004 13:21:22 -0000 +@@ -67,6 +67,7 @@ + if (o.displayDirectory) { + const directory = o.displayDirectory.path; + } ++ + const initialText = o.defaultString; + const filterTitles = o.filters.titles; + const filterTypes = o.filters.types; +@@ -121,13 +122,18 @@ + treeView.showOnlyDirectories = true; + } + ++ // set up the right icon for GNOME stock icons ++ if (filePickerMode == nsIFilePicker.modeSave) ++ okButton.setAttribute("icon","save"); ++ else ++ okButton.setAttribute("icon","open"); ++ + // start out with a filename sort + handleColumnClick("FilenameColumn"); + + document.documentElement.setAttribute("ondialogcancel", "return onCancel();"); + try { +- var buttonLabel = getOKAction(); +- okButton.setAttribute("label", buttonLabel); ++ setOKAction(); + } catch (exception) { + // keep it set to "OK" + } +@@ -496,8 +502,9 @@ + onFileSelected(treeView.selectedFiles); + } + +-function getOKAction(file) { ++function setOKAction(file) { + var buttonLabel; ++ var buttonIcon = "open"; // used in all but one case + + if (file && file.isDirectory() && filePickerMode != nsIFilePicker.modeGetFolder) { + document.documentElement.setAttribute("ondialogaccept", "return openOnOK();"); +@@ -515,11 +522,12 @@ + break; + case nsIFilePicker.modeSave: + buttonLabel = gFilePickerBundle.getString("saveButtonLabel"); ++ buttonIcon = "save"; + break; + } + } +- +- return buttonLabel; ++ okButton.setAttribute("label", buttonLabel); ++ okButton.setAttribute("icon", buttonIcon); + } + + function onSelect(event) { +@@ -558,8 +566,7 @@ + } + + if (validFileSelected) { +- var buttonLabel = getOKAction(file); +- okButton.setAttribute("label", buttonLabel); ++ setOKAction(file); + okButton.disabled = invalidSelection; + } else + okButton.disabled = (textInput.value == ""); +@@ -586,8 +593,7 @@ + } + + function onTextFieldFocus() { +- var buttonLabel = getOKAction(null); +- okButton.setAttribute("label", buttonLabel); ++ setOKAction(null); + doEnabling(); + } + +Index: toolkit/components/filepicker/content/filepicker.xul +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/components/filepicker/content/filepicker.xul,v +retrieving revision 1.4.8.1 +diff -u -r1.4.8.1 filepicker.xul +--- toolkit/components/filepicker/content/filepicker.xul 24 Jul 2004 23:36:19 -0000 1.4.8.1 ++++ toolkit/components/filepicker/content/filepicker.xul 3 Nov 2004 13:21:24 -0000 +@@ -95,7 +95,7 @@ + <hbox class="dialog-button-box" align="center"> + <checkbox label="&showHiddenFiles.label;" oncommand="toggleShowHidden();" + flex="1" align="left" accesskey="&showHiddenFiles.accesskey;"/> +- <button dlgtype="cancel" class="dialog-button"/> +- <button dlgtype="accept" class="dialog-button"/> ++ <button dlgtype="cancel" icon="cancel" class="dialog-button"/> ++ <button dlgtype="accept" icon="accept" class="dialog-button"/> + </hbox> + </dialog> +Index: toolkit/components/passwordmgr/resources/content/passwordManager.xul +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/components/passwordmgr/resources/content/passwordManager.xul,v +retrieving revision 1.2.22.1 +diff -u -r1.2.22.1 passwordManager.xul +--- toolkit/components/passwordmgr/resources/content/passwordManager.xul 16 Jul 2004 16:15:36 -0000 1.2.22.1 ++++ toolkit/components/passwordmgr/resources/content/passwordManager.xul 3 Nov 2004 13:21:25 -0000 +@@ -29,6 +29,7 @@ + title="&windowtitle.label;" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + buttons="accept" ++ buttoniconaccept="close" + onload="Startup()" + onunload="Shutdown()" + persist="screenX screenY width height"> +@@ -66,9 +67,9 @@ + </tree> + <separator class="thin"/> + <hbox> +- <button id="removeSignon" disabled="true" ++ <button id="removeSignon" disabled="true" icon="remove" + label="&remove.label;" oncommand="DeleteSignon();"/> +- <button id="removeAllSignons" ++ <button id="removeAllSignons" icon="remove" + label="&removeall.label;" + oncommand="DeleteAllSignons();"/> + <spacer flex="1"/> +@@ -91,9 +92,9 @@ + </tree> + <separator class="thin"/> + <hbox> +- <button id="removeReject" disabled="true" ++ <button id="removeReject" disabled="true" icon="remove" + label="&remove.label;" oncommand="DeleteReject();"/> +- <button id="removeAllRejects" ++ <button id="removeAllRejects" icon="remove" + label="&removeall.label;" + oncommand="DeleteAllRejects();"/> + </hbox> +Index: toolkit/components/printing/content/printPreviewBindings.xml +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/components/printing/content/printPreviewBindings.xml,v +retrieving revision 1.15 +diff -u -r1.15 printPreviewBindings.xml +--- toolkit/components/printing/content/printPreviewBindings.xml 20 Nov 2003 05:13:57 -0000 1.15 ++++ toolkit/components/printing/content/printPreviewBindings.xml 3 Nov 2004 13:21:27 -0000 +@@ -53,7 +53,7 @@ + + <content> + <xul:button label="&print.label;" accesskey="&print.accesskey;" +- oncommand="PrintUtils.print();"/> ++ oncommand="PrintUtils.print();" icon="print"/> + + <xul:button label="&pageSetup.label;" accesskey="&pageSetup.accesskey;" + oncommand="this.parentNode.doPageSetup();"/> +@@ -118,7 +118,7 @@ + + <xul:toolbarseparator class="toolbarseparator-primary"/> + <xul:button label="&close.label;" accesskey="&close.accesskey;" +- oncommand="PrintUtils.exitPrintPreview();"/> ++ oncommand="PrintUtils.exitPrintPreview();" icon="close"/> + <xul:data value="&customPrompt.title;"/> + </content> + +Index: toolkit/components/printing/content/printProgress.xul +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/components/printing/content/printProgress.xul,v +retrieving revision 1.1 +diff -u -r1.1 printProgress.xul +--- toolkit/components/printing/content/printProgress.xul 16 Aug 2003 11:39:04 -0000 1.1 ++++ toolkit/components/printing/content/printProgress.xul 3 Nov 2004 13:21:28 -0000 +@@ -94,7 +94,7 @@ + </grid> + <separator/> + <hbox id="CancelButton" pack="end"> +- <button id="cancel" label="&dialogCancel.label;" ++ <button id="cancel" label="&dialogCancel.label;" icon="cancel" + oncommand="doCancelButton()"/> + </hbox> + </window> +Index: toolkit/components/printing/content/printdialog.xul +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/components/printing/content/printdialog.xul,v +retrieving revision 1.1 +diff -u -r1.1 printdialog.xul +--- toolkit/components/printing/content/printdialog.xul 16 Aug 2003 11:39:04 -0000 1.1 ++++ toolkit/components/printing/content/printdialog.xul 3 Nov 2004 13:21:29 -0000 +@@ -48,6 +48,7 @@ + onload="onLoad();" + ondialogaccept="return onAccept();" + oncancel="return onCancel();" ++ buttoniconaccept="print" + title="&printDialog.title;" + persist="screenX screenY" + screenX="24" screenY="24"> +@@ -82,14 +83,14 @@ + <menulist id="printerList" flex="1" oncommand="setPrinterDefaultsForSelectedPrinter();"> + <menupopup/> + </menulist> +- <button id="properties" label="&propertiesButton.label;" oncommand="displayPropertiesDialog();"/> ++ <button id="properties" label="&propertiesButton.label;" icon="properties" oncommand="displayPropertiesDialog();"/> + </row> + <row align="center"> + <hbox align="center" pack="end"> + <label id="fileLabel" control="fileInput" value="&fileInput.label;"/> + </hbox> + <textbox id="fileInput" flex="1" onblur="stripTrailingWhitespace(this)"/> +- <button id="chooseFile" label="&chooseButton.label;" oncommand="onChooseFile()"/> ++ <button id="chooseFile" label="&chooseButton.label;" icon="open" oncommand="onChooseFile()"/> + </row> + </rows> + +Index: toolkit/content/customizeCharset.xul +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/content/customizeCharset.xul,v +retrieving revision 1.2 +diff -u -r1.2 customizeCharset.xul +--- toolkit/content/customizeCharset.xul 26 Oct 2003 21:10:16 -0000 1.2 ++++ toolkit/content/customizeCharset.xul 3 Nov 2004 13:21:30 -0000 +@@ -72,7 +72,7 @@ + + <hbox align="center"> + <button id="add_button" oncommand="AddAvailableCharset();" +- label="&add.label;" disabled="true"/> ++ label="&add.label;" icon="add" disabled="true"/> + </hbox> + </vbox> + +@@ -87,7 +87,7 @@ + <separator class="thin"/> + <hbox align="center"> + <button id="remove_button" oncommand="RemoveActiveCharset();" +- disabled="true" ++ disabled="true" icon="remove" + label="&remove.label;"/> + </hbox> + </vbox> +Index: toolkit/content/customizeToolbar.xul +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/content/customizeToolbar.xul,v +retrieving revision 1.9.30.2 +diff -u -r1.9.30.2 customizeToolbar.xul +--- toolkit/content/customizeToolbar.xul 29 Sep 2004 07:08:10 -0000 1.9.30.2 ++++ toolkit/content/customizeToolbar.xul 3 Nov 2004 13:21:31 -0000 +@@ -73,14 +73,14 @@ + + <checkbox id="smallicons" oncommand="updateIconSize(this.checked);" label="&useSmallIcons.label;"/> + +- <button label="&addNewToolbar.label;" oncommand="addNewToolbar();"/> +- <button label="&restoreDefaultSet.label;" oncommand="restoreDefaultSet();"/> ++ <button label="&addNewToolbar.label;" oncommand="addNewToolbar();" icon="add"/> ++ <button label="&restoreDefaultSet.label;" oncommand="restoreDefaultSet();" icon="refresh"/> + </box> + + <separator class="groove"/> + + <hbox align="center" pack="end"> +- <button label="&saveChanges.label;" oncommand="onAccept();" default="true"/> ++ <button label="&saveChanges.label;" oncommand="onAccept();" default="true" icon="close"/> + </hbox> + </vbox> + +Index: toolkit/content/finddialog.xul +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/content/finddialog.xul,v +retrieving revision 1.12 +diff -u -r1.12 finddialog.xul +--- toolkit/content/finddialog.xul 2 Dec 2003 02:47:08 -0000 1.12 ++++ toolkit/content/finddialog.xul 3 Nov 2004 13:21:31 -0000 +@@ -66,8 +66,12 @@ + </vbox> + <vbox flex="1"> + <button id="btnFind" label="&findButton.label;" accesskey="&findButton.accesskey;" +- dlgtype="accept"/> ++ dlgtype="accept" icon="find"/> ++#ifdef XP_UNIX ++ <button label="&closeButton.label;" icon="close" dlgtype="cancel"/> ++#else + <button label="&cancelButton.label;" dlgtype="cancel"/> ++#endif + </vbox> + </hbox> + </dialog> +Index: toolkit/content/widgets/dialog.xml +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/content/widgets/dialog.xml,v +retrieving revision 1.12 +diff -u -r1.12 dialog.xml +--- toolkit/content/widgets/dialog.xml 11 Feb 2004 00:56:15 -0000 1.12 ++++ toolkit/content/widgets/dialog.xml 3 Nov 2004 13:21:33 -0000 +@@ -221,6 +221,30 @@ + button.setAttribute("accesskey", accessKey); + } + } ++ // allow specifying alternate icons in the dialog header ++ if (!button.hasAttribute("icon")) { ++ // if there's an icon specified, use that ++ if (this.hasAttribute("buttonicon"+dlgtype)) ++ button.setAttribute("icon", this.getAttribute("buttonicon"+dlgtype)); ++ // otherwise set defaults ++ else ++ switch (dlgtype) { ++ case "accept": ++ button.setAttribute("icon","accept"); ++ break; ++ case "cancel": ++ button.setAttribute("icon","cancel"); ++ break; ++ case "disclosue": ++ button.setAttribute("icon","properties"); ++ break; ++ case "help": ++ button.setAttribute("icon","help"); ++ break; ++ default: ++ break; ++ } ++ } + } + + // ensure that hitting enter triggers ondialogaccept +Index: toolkit/content/widgets/expander.xml +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/content/widgets/expander.xml,v +retrieving revision 1.2.24.1.2.1 +diff -u -r1.2.24.1.2.1 expander.xml +--- toolkit/content/widgets/expander.xml 16 May 2004 18:16:40 -0000 1.2.24.1.2.1 ++++ toolkit/content/widgets/expander.xml 3 Nov 2004 13:21:36 -0000 +@@ -12,7 +12,7 @@ + <xul:hbox align="center"> + <xul:button type="disclosure" class="expanderButton" anonid="disclosure" xbl:inherits="disabled" mousethrough="always"/> + <xul:label class="header expanderButton" anonid="label" xbl:inherits="value=label,disabled" mousethrough="always" flex="1"/> +- <xul:button anonid="clear-button" xbl:inherits="label=clearlabel,disabled=cleardisabled,hidden=clearhidden" mousethrough="always"/> ++ <xul:button anonid="clear-button" xbl:inherits="label=clearlabel,disabled=cleardisabled,hidden=clearhidden" mousethrough="always" icon="clear"/> + </xul:hbox> + <xul:vbox flex="1" anonid="settings" class="settingsContainer" collapsed="true" xbl:inherits="align"> + <children/> +Index: toolkit/content/widgets/wizard.xml +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/content/widgets/wizard.xml,v +retrieving revision 1.10.6.2 +diff -u -r1.10.6.2 wizard.xml +--- toolkit/content/widgets/wizard.xml 29 Sep 2004 18:11:19 -0000 1.10.6.2 ++++ toolkit/content/widgets/wizard.xml 3 Nov 2004 13:21:38 -0000 +@@ -64,9 +64,19 @@ + if (this.onFirstPage) { + this.canRewind = false; + this.setAttribute("firstpage", "true"); ++#ifdef XP_UNIX ++#ifndef XP_MACOSX ++ this._backButton.setAttribute('hidden', 'true'); ++#endif ++#endif + } else { + this.canRewind = true; + this.setAttribute("firstpage", "false"); ++#ifdef XP_UNIX ++#ifndef XP_MACOSX ++ this._backButton.setAttribute('hidden', 'false'); ++#endif ++#endif + } + + if (this.onLastPage) { +@@ -328,7 +338,11 @@ + var btn = document.getAnonymousElementByAttribute(this._wizardButtons, "dlgtype", aName); + if (btn) { + btn.addEventListener("command", this["_"+aName+"Func"], false); +- btn.setAttribute("label", this._bundle.GetStringFromName("button-"+aName)); ++#ifdef XP_UNIX ++#ifndef XP_MACOSX ++ btn.setAttribute("label", this._bundle.GetStringFromName("button-"+aName+"-gnome")); ++#endif ++#endif + this["_"+aName+"Button"] = btn; + } + return btn; +@@ -478,16 +492,22 @@ + <xul:separator class="wizard-buttons-separator groove"/> + <xul:hbox class="wizard-buttons-box-2"> + <xul:spacer flex="1"/> +- <xul:button class="wizard-button" dlgtype="back"/> ++#ifdef XP_UNIX ++ <xul:button class="wizard-button" dlgtype="cancel" icon="cancel"/> ++ <xul:spacer style="width: 24px"/> ++#endif ++ <xul:button class="wizard-button" dlgtype="back" icon="go-back"/> + <xul:deck class="wizard-next-deck" anonid="WizardButtonDeck"> + <xul:hbox> + <xul:button class="wizard-button" dlgtype="finish" default="true" flex="1"/> + </xul:hbox> + <xul:hbox> +- <xul:button class="wizard-button" dlgtype="next" default="true" flex="1"/> ++ <xul:button class="wizard-button" dlgtype="next" icon="go-forward" default="true" flex="1"/> + </xul:hbox> + </xul:deck> +- <xul:button class="wizard-button" dlgtype="cancel"/> ++#ifdef XP_WIN ++ <xul:button class="wizard-button" dlgtype="cancel" icon="cancel"/> ++#endif + </xul:hbox> + </xul:vbox> + </content> +Index: toolkit/locales/en-US/chrome/global/finddialog.dtd +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/locales/en-US/chrome/global/Attic/finddialog.dtd,v +retrieving revision 1.1.2.2 +diff -u -r1.1.2.2 finddialog.dtd +--- toolkit/locales/en-US/chrome/global/finddialog.dtd 23 Jul 2004 19:26:59 -0000 1.1.2.2 ++++ toolkit/locales/en-US/chrome/global/finddialog.dtd 3 Nov 2004 13:21:38 -0000 +@@ -13,7 +13,7 @@ + <!ENTITY findField.tooltip "Type one or more words to search for"> + <!ENTITY findButton.label "Find Next"> + <!ENTITY findButton.accesskey "F"> +-<!ENTITY cancelButton.label "Cancel"> ++<!ENTITY closeButton.label "Close"> + <!ENTITY up.label "Up"> + <!ENTITY up.accesskey "U"> + <!ENTITY down.label "Down"> +Index: toolkit/mozapps/downloads/content/pref-downloads.xul +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/mozapps/downloads/content/pref-downloads.xul,v +retrieving revision 1.10.16.1 +diff -u -r1.10.16.1 pref-downloads.xul +--- toolkit/mozapps/downloads/content/pref-downloads.xul 13 Jul 2004 03:24:41 -0000 1.10.16.1 ++++ toolkit/mozapps/downloads/content/pref-downloads.xul 3 Nov 2004 13:21:43 -0000 +@@ -59,7 +59,7 @@ + <radio id="alwaysAsk" label="&alwaysAsk.label;" value="false"/> + <hbox flex="1"> + <radio id="neverAsk" label="&neverAsk.label;" value="true"/> +- <button id="showFolder" label="&showFolder.label;" oncommand="showFolder();"/> ++ <button id="showFolder" label="&showFolder.label;" oncommand="showFolder();" icon="open"/> + </hbox> + </radiogroup> + </groupbox> +@@ -154,13 +154,13 @@ + <separator class="thin"/> + <hbox> + <button label="&editFileHandler.label;" accesskey="&editFileHandler.accesskey;" +- id="editFileHandler" oncommand="editFileHandler();"/> ++ id="editFileHandler" oncommand="editFileHandler();" icon="properties"/> + <button label="&removeFileHandler.label;" accesskey="&removeFileHandler.accesskey;" +- id="removeFileHandler" oncommand="removeFileHandler();"/> ++ id="removeFileHandler" oncommand="removeFileHandler();" icon="remove"/> + #ifdef MOZ_PHOENIX + <spring flex="1"/> + <button label="&plugins.label;" accesskey="&plugins.accesskey;" +- id="plugins" oncommand="showPlugins();"/> ++ id="plugins" oncommand="showPlugins();" icon="properties"/> + #endif + </hbox> + </vbox> +Index: toolkit/themes/gnomestripe/global/button.css +=================================================================== +RCS file: /cvsroot/mozilla/toolkit/themes/gnomestripe/global/button.css,v +retrieving revision 1.1.2.3 +diff -u -r1.1.2.3 button.css +--- toolkit/themes/gnomestripe/global/button.css 14 Sep 2004 20:22:51 -0000 1.1.2.3 ++++ toolkit/themes/gnomestripe/global/button.css 3 Nov 2004 13:21:47 -0000 +@@ -162,3 +162,86 @@ + list-style-image: url("chrome://global/skin/tree/twisty-open.png"); + } + ++/* ++ * GNOME Stock Icon Styles ++ */ ++ ++button[icon="accept"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-ok?size=button"); ++} ++ ++button[icon="cancel"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-cancel?size=button"); ++} ++ ++button[icon="help"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-help?size=button"); ++} ++ ++button[icon="open"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-open?size=button"); ++} ++ ++button[icon="save"] .button-icon { ++ list-style-image: url(moz-icon://stock/gtk-save?size=button); ++} ++ ++button[icon="find"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-find?size=button"); ++} ++ ++button[icon="clear"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-clear?size=button"); ++} ++ ++button[icon="yes"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-yes?size=button"); ++} ++ ++button[icon="no"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-no?size=button"); ++} ++ ++button[icon="apply"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-apply?size=button"); ++} ++ ++button[icon="close"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-close?size=button"); ++} ++ ++button[icon="print"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-print?size=button"); ++} ++ ++button[icon="add"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-add?size=button"); ++} ++ ++button[icon="remove"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-remove?size=button"); ++} ++ ++button[icon="refresh"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-refresh?size=button"); ++} ++ ++button[icon="go-forward"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-go-forward?size=button"); ++} ++ ++button[icon="go-back"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-go-back?size=button"); ++} ++ ++button[icon="properties"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-properties?size=button"); ++} ++ ++button[icon="select-font"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-select-font?size=button"); ++} ++ ++button[icon="network"] .button-icon { ++ list-style-image: url("moz-icon://stock/gtk-network?size=button"); ++} +Index: browser/base/content/openLocation.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/base/content/openLocation.xul,v +retrieving revision 1.6 +diff -u -r1.6 openLocation.xul +--- browser/base/content/openLocation.xul 20 Feb 2004 02:21:10 -0000 1.6 ++++ browser/base/content/openLocation.xul 3 Nov 2004 13:22:05 -0000 +@@ -32,6 +32,7 @@ + title="&caption.label;" + onload="onLoad()" + buttonlabelaccept="&openBtn.label;" ++ buttoniconaccept="open" + ondialogaccept="open()" + style="width: 40em;" + persist="screenX screenY" +Index: browser/base/content/pageInfo.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/base/content/pageInfo.xul,v +retrieving revision 1.13.4.1.2.1 +diff -u -r1.13.4.1.2.1 pageInfo.xul +--- browser/base/content/pageInfo.xul 21 Sep 2004 05:00:41 -0000 1.13.4.1.2.1 ++++ browser/base/content/pageInfo.xul 3 Nov 2004 13:22:07 -0000 +@@ -297,7 +297,8 @@ + </rows> + </grid> + <hbox> +- <button label="&mediaSaveAs;" accesskey="&mediaSaveAsAccesskey;" id="imagesaveasbutton" disabled="true" oncommand="saveMedia();"/> ++ <button label="&mediaSaveAs;" accesskey="&mediaSaveAsAccesskey;" id="imagesaveasbutton" ++ icon="save" disabled="true" oncommand="saveMedia();"/> + </hbox> + <vbox class="inset iframe" flex="1" pack="center"> + <hbox id="theimagecontainer" pack="center"> +Index: browser/base/content/pageReport.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/base/content/pageReport.xul,v +retrieving revision 1.9 +diff -u -r1.9 pageReport.xul +--- browser/base/content/pageReport.xul 29 Apr 2003 08:31:45 -0000 1.9 ++++ browser/base/content/pageReport.xul 3 Nov 2004 13:22:07 -0000 +@@ -49,9 +49,9 @@ + <separator class="thin"/> + <hbox> + <button label="&unblock.label;" id="unblockButton" oncommand="whitelistSite();" +- disabled="true" accesskey="&unblock.accesskey;"/> ++ disabled="true" accesskey="&unblock.accesskey;" icon="yes"/> + <spacer flex="1"/> +- <button dlgtype="accept" label="&done.label;" default="true" ++ <button dlgtype="accept" label="&done.label;" default="true" icon="close" + oncommand="window.close();" accesskey="&done.accesskey;"/> + </hbox> + </dialog> +Index: browser/components/bookmarks/content/addBookmark.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/components/bookmarks/content/addBookmark.xul,v +retrieving revision 1.2.16.1 +diff -u -r1.2.16.1 addBookmark.xul +--- browser/components/bookmarks/content/addBookmark.xul 11 Aug 2004 22:34:30 -0000 1.2.16.1 ++++ browser/components/bookmarks/content/addBookmark.xul 3 Nov 2004 13:22:08 -0000 +@@ -93,7 +93,7 @@ + <bookmarks-tree id="bookmarks-view" flex="1" type="folders"/> + <vbox> + <button label="&button.newfolder.label;" accesskey="&button.newfolder.accesskey;" +- oncommand="createNewFolder();"/> ++ oncommand="createNewFolder();" icon="open"/> + <button label="&button.defaultfolder.label;" + accesskey="&button.defaultfolder.accesskey;" + oncommand="useDefaultFolder();"/> +Index: browser/components/bookmarks/content/addBookmark2.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/components/bookmarks/content/addBookmark2.xul,v +retrieving revision 1.13.4.2 +diff -u -r1.13.4.2 addBookmark2.xul +--- browser/components/bookmarks/content/addBookmark2.xul 25 Jul 2004 03:02:16 -0000 1.13.4.2 ++++ browser/components/bookmarks/content/addBookmark2.xul 3 Nov 2004 13:22:08 -0000 +@@ -42,6 +42,8 @@ + buttonlabelextra2="&newFolder.label;" buttonaccesskeyextra2="&newFolder.accesskey;" + #ifdef XP_UNIX + buttonlabelaccept="&acceptButton.label;" ++ buttoniconaccept="add" ++ buttoniconextra2="open" + #endif + title="&newBookmark.title;" title-selectFolder="&selectFolder.label;" + onload="Startup();" +Index: browser/components/cookieviewer/content/CookieExceptions.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/components/cookieviewer/content/CookieExceptions.xul,v +retrieving revision 1.5.12.3 +diff -u -r1.5.12.3 CookieExceptions.xul +--- browser/components/cookieviewer/content/CookieExceptions.xul 11 Aug 2004 05:17:37 -0000 1.5.12.3 ++++ browser/components/cookieviewer/content/CookieExceptions.xul 3 Nov 2004 13:22:19 -0000 +@@ -47,12 +47,12 @@ + <hbox align="start"> + <textbox id="url" flex="1" oninput="gPermissionManager.onHostInput(event.target);"/> + </hbox>
+- <hbox pack="end">
+- <button id="btnBlock" disabled="true"
++ <hbox pack="end"> ++ <button id="btnBlock" disabled="true" icon="no" + label="&block.label;" oncommand="gPermissionManager.addPermission(nsIPermissionManager.DENY_ACTION);"/> +- <button id="btnSession" disabled="true"
++ <button id="btnSession" disabled="true" + label="&session.label;" oncommand="gPermissionManager.addPermission(nsICookiePermission.ACCESS_SESSION);"/> +- <button id="btnAllow" disabled="true" ++ <button id="btnAllow" disabled="true" icon="yes" + label="&allow.label;" oncommand="gPermissionManager.addPermission(nsIPermissionManager.ALLOW_ACTION);"/> + </hbox> + <separator class="thin"/> +@@ -71,9 +71,9 @@ + </tree> + <separator class="thin"/> + <hbox> +- <button id="removePermission" disabled="true" label="&removepermission.label;" ++ <button id="removePermission" disabled="true" icon="remove" label="&removepermission.label;" + oncommand="gPermissionManager.onPermissionDeleted();"/> +- <button id="removeAllPermissions" label="&removeallpermissions.label;" ++ <button id="removeAllPermissions" icon="clear" label="&removeallpermissions.label;" + oncommand="gPermissionManager.onAllPermissionsDeleted();"/> + </hbox> + </dialog> +Index: browser/components/cookieviewer/content/CookieViewer.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/components/cookieviewer/content/CookieViewer.xul,v +retrieving revision 1.4.10.1 +diff -u -r1.4.10.1 CookieViewer.xul +--- browser/components/cookieviewer/content/CookieViewer.xul 25 Apr 2004 20:11:57 -0000 1.4.10.1 ++++ browser/components/cookieviewer/content/CookieViewer.xul 3 Nov 2004 13:22:19 -0000 +@@ -112,10 +112,10 @@ + </grid> + </groupbox> + <hbox> +- <button id="removeCookie" disabled="true" ++ <button id="removeCookie" disabled="true" icon="remove" + label="&button.removecookie.label;" + oncommand="DeleteCookie();"/> +- <button id="removeAllCookies" ++ <button id="removeAllCookies" icon="clear" + label="&button.removeallcookies.label;" + oncommand="DeleteAllCookies();"/> + </hbox> +Index: browser/components/prefwindow/content/pref-advanced.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/components/prefwindow/content/pref-advanced.xul,v +retrieving revision 1.21.12.11 +diff -u -r1.21.12.11 pref-advanced.xul +--- browser/components/prefwindow/content/pref-advanced.xul 30 Oct 2004 04:27:23 -0000 1.21.12.11 ++++ browser/components/prefwindow/content/pref-advanced.xul 3 Nov 2004 13:22:37 -0000 +@@ -112,7 +112,7 @@ + <hbox align="center"> + <button label="&managecerts.button;" + oncommand="openCertManager();" +- id="openCertManagerButton" ++ id="openCertManagerButton" icon="properties" + accesskey="&managecerts.accesskey;" + prefstring="security.disable_button.openCertManager"/> + </hbox> +@@ -125,7 +125,7 @@ + <hbox align="center"> + <button label="&managedevices.button;" + oncommand="openDeviceManager();" +- id="openDeviceManagerButton" ++ id="openDeviceManagerButton" icon="properties" + accesskey="&managedevices.accesskey;" + prefstring="security.disable_button.openDeviceManager"/> + </hbox> +@@ -139,7 +139,7 @@ + <hbox align="center"> + <button label="&validation.managecrls.button;" + oncommand="openCrlManager();" +- id="managecrlbutton" ++ id="managecrlbutton" icon="properties" + accesskey="&validation.managecrls.accesskey;" + prefstring="security.OCSP.disable_button.managecrl"/> + </hbox> +Index: browser/components/prefwindow/content/pref-features-images.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/components/prefwindow/content/pref-features-images.xul,v +retrieving revision 1.3 +diff -u -r1.3 pref-features-images.xul +--- browser/components/prefwindow/content/pref-features-images.xul 23 Aug 2003 19:03:28 -0000 1.3 ++++ browser/components/prefwindow/content/pref-features-images.xul 3 Nov 2004 13:22:40 -0000 +@@ -54,11 +54,11 @@ + <treechildren/> + </tree> + <hbox> +- <button id="removePermission" disabled="true" ++ <button id="removePermission" disabled="true" icon="remove" + label="&removepermission.label;" + oncommand="DeletePermission();"/> + <button id="removeAllPermissions" +- label="&removeallpermissions.label;" ++ label="&removeallpermissions.label;" icon="clear" + oncommand="DeleteAllPermissions();"/> + </hbox> + </dialog> +Index: browser/components/prefwindow/content/pref-navigator.xul +=================================================================== +RCS file: /cvsroot/mozilla/browser/components/prefwindow/content/pref-navigator.xul,v +retrieving revision 1.23.4.3 +diff -u -r1.23.4.3 pref-navigator.xul +--- browser/components/prefwindow/content/pref-navigator.xul 31 Aug 2004 13:38:50 -0000 1.23.4.3 ++++ browser/components/prefwindow/content/pref-navigator.xul 3 Nov 2004 13:22:43 -0000 +@@ -86,7 +86,7 @@ + <caption label="&fonts.caption;"/> + <hbox align="center"> + <description flex="1">&fontsInfo.label;</description> +- <button label="&showFontsAndColors.label;" ++ <button label="&showFontsAndColors.label;" icon="select-font" + accesskey="&showFontsAndColors.accesskey;" + oncommand="showFontsAndColors();"/> + </hbox> +@@ -118,7 +118,7 @@ + <hbox align="center"> + <description flex="1">&proxiesInfo.label;</description> + <button id="catProxiesButton" label="&showConnections.label;" +- accesskey="&showConnections.accesskey;" ++ accesskey="&showConnections.accesskey;" icon="network" + oncommand="showConnections();"/> + </hbox> + </groupbox> +Index: extensions/cookie/resources/content/cookieAcceptDialog.js +=================================================================== +RCS file: /cvsroot/mozilla/extensions/cookie/resources/content/cookieAcceptDialog.js,v +retrieving revision 1.15 +diff -u -r1.15 cookieAcceptDialog.js +--- extensions/cookie/resources/content/cookieAcceptDialog.js 31 Mar 2004 00:38:16 -0000 1.15 ++++ extensions/cookie/resources/content/cookieAcceptDialog.js 3 Nov 2004 13:23:16 -0000 +@@ -62,6 +62,12 @@ + document.getElementById("cancel").label = dialog.getAttribute("cancelLabel"); + document.getElementById("cancel").accessKey = dialog.getAttribute("cancelKey"); + ++ // hook up GNOME stock icons where implemented ++ document.getElementById("ok").setAttribute("icon","accept"); ++ document.getElementById("cancel").setAttribute("icon","cancel"); ++ document.getElementById("Button2").setAttribute("icon","accept"); ++ document.getElementById("disclosureButton").setAttribute("icon","properties"); ++ + if (!gDateService) { + const nsScriptableDateFormat_CONTRACTID = "@mozilla.org/intl/scriptabledateformat;1"; + const nsIScriptableDateFormat = Components.interfaces.nsIScriptableDateFormat; diff --git a/firefox-RC1-stock-icons-gnomestripe.patch b/firefox-RC1-stock-icons-gnomestripe.patch new file mode 100644 index 0000000..f510afb --- /dev/null +++ b/firefox-RC1-stock-icons-gnomestripe.patch @@ -0,0 +1,28 @@ +Index: browser/themes/Makefile.in +=================================================================== +RCS file: /cvsroot/mozilla/browser/themes/Makefile.in,v +retrieving revision 1.1.2.2 +diff -d -u -p -r1.1.2.2 Makefile.in +--- browser/themes/Makefile.in 17 Jun 2004 06:18:32 -0000 1.1.2.2 ++++ browser/themes/Makefile.in 4 Nov 2004 17:46:36 -0000 +@@ -45,14 +45,19 @@ include $(DEPTH)/config/autoconf.mk + # + # Theme Selection + # +-# Windows, GNOME/Linux Winstripe ++# Windows Winstripe + # MacOS X Pinstripe ++# GNOME/Linux Gnomestripe + # + + ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT))) + DIRS = pinstripe + else ++ifneq (,$(filter windows,$(MOZ_WIDGET_TOOLKIT))) + DIRS = winstripe ++else ++DIRS = gnomestripe ++endif + endif + + include $(topsrcdir)/config/rules.mk diff --git a/firefox.spec b/firefox.spec index e84b6ce..01d4e49 100644 --- a/firefox.spec +++ b/firefox.spec @@ -3,12 +3,12 @@ %define desktop_file_utils_version 0.9 -ExclusiveArch: i386 x86_64 ia64 ppc s390 s390x +ExclusiveArch: i386 x86_64 ia64 ppc Summary: Mozilla Firefox Web browser. Name: firefox Version: 0.99 -Release: 1.0RC1.2 +Release: 1.0RC1.3 Epoch: 0 URL: http://www.mozilla.org/projects/firefox/ License: MPL/LGPL @@ -24,6 +24,7 @@ Source7: firefox-xremote-client.sh.in Source8: firefox.1 Source9: firefox-rebuild-databases.pl.in Source10: firefox.xpm +Source20: firefox-gnomestripe-0.1.tar.gz Source100: find-external-requires # build patches @@ -36,6 +37,9 @@ Patch22: firefox-0.7.3-psfonts.patch Patch23: mozilla-1.7.3-pango-render.patch Patch24: firefox-PR1-default-applications.patch Patch25: firefox-PR1-software-update.patch +Patch26: firefox-RC1-stock-icons-be.patch +Patch27: firefox-RC1-stock-icons-fe.patch +Patch28: firefox-RC1-stock-icons-gnomestripe.patch # local bugfixes Patch40: firefox-PR1-gnome-vfs-default-app.patch @@ -80,6 +84,7 @@ compliance, performance and portability. %prep %setup -q -n mozilla +%{__tar} -xzf %{SOURCE20} %if %{freetype_fc3} %patch1 -p0 %endif @@ -89,6 +94,9 @@ compliance, performance and portability. %patch23 -p1 %patch24 -p0 %patch25 -p0 +%patch26 -p0 +%patch27 -p0 +%patch28 -p0 %patch40 -p1 %patch41 -p0 %patch90 -p0 @@ -213,6 +221,9 @@ fi #--------------------------------------------------------------------- %changelog +* Thu Nov 4 2004 Christopher Aillon <caillon@redhat.com> 0:0.99-1.0RC1.3 +- Add support for GNOME stock icons. (bmo #233461) + * Sat Oct 30 2004 Warren Togami <wtogami@redhat.com> 0:0.99-1.0RC1.2 - #136330 BR freetype-devel with conditions - #135050 firefox should own mozilla plugin dir @@ -1 +1,2 @@ 7a0411859fc5d5f647e211c24beaf94b firefox-1.0rc1-source.tar.bz2 +b628d5f24a49ab15d1943b7d694edd90 firefox-gnomestripe-0.1.tar.gz |