Closed Bug 225148 Opened 21 years ago Closed 21 years ago

Implement moz-icon channel for linux/gtk2

Categories

(Core :: Graphics: ImageLib, defect, P1)

x86
Linux
defect

Tracking

()

RESOLVED FIXED
mozilla1.7beta

People

(Reporter: Biesinger, Assigned: Biesinger)

References

(Depends on 1 open bug, )

Details

Attachments

(5 files, 4 obsolete files)

per the above url, this should be possible
Am I missing something? How is one supposed to use this "filename without path information" that this function returns??
ok that function doesn't really work. I was pointed to http://cvs.gnome.org/bonsai/cvsblame.cgi?file=libgnomeui%2Flibgnomeui/gnome-icon-lookup.c&rev=&root=/cvs/gnome#212 which seems to be what we want, together with the functions from gnome-icon-theme.h. taking bug.
Assignee: jdunn → cbiesinger
Priority: -- → P1
Target Milestone: --- → mozilla1.7beta
Attached patch patch (obsolete) — Splinter Review
GtkIconTheme requires Gtk 2.3, so that's out :)
Attachment #141784 - Flags: review?(bryner)
note that this patch does have one problem: not all icons are available in all sizes, so gnome may give me an icon that is larger than I want and expect me to scale it... however, from this code here is it not really possible to do scaling. there's not much I can do about this...
Status: NEW → ASSIGNED
Comment on attachment 141784 [details] [diff] [review] patch >+ if (!gnome_program_get()) { >+ char* empty[] = { "" }; >+ gnome_init("Gecko", "1.0", 1, empty); >+ } >+ This will have to change at some point; see bug 230144. I have a work in progress patch to use brandShortName from brand.properties instead. >+ // XXX should we pass a GnomeVFSFileInfo here? >+ char* name = gnome_icon_lookup(t, NULL, spec.get(), NULL, NULL, type.get(), GNOME_ICON_LOOKUP_FLAGS_NONE, NULL); It looks like you probably should, yes. I don't think it's an issue with the current implementation in libgnomeui, but it's not documented as optional. You may want to use gnome_icon_lookup_sync() instead, which does not require this parameter (it fetches the needed info itself). Looks good other than that, thanks for doing this.
Attachment #141784 - Flags: review?(bryner) → review+
hmm... if I use the _sync function, I can't specify a mime type. I do want to specify one... I guess I'll just get the GnomeVFSFileInfo myself. hm... if I just call gnome_vfs_get_file_info that will probably make an http request for an http url... I guess I'll only call it for file uris, and create an GnomeVFSFileInfo myself for other types
Comment on attachment 141784 [details] [diff] [review] patch I mentioned over IRC that this: > case "$MOZ_WIDGET_TOOLKIT" in > gtk) > MOZ_ENABLE_GTK=1 > MOZ_ENABLE_XREMOTE=1 >+ MOZ_ENABLE_GNOMEUI=1 > TK_CFLAGS='$(MOZ_GTK_CFLAGS)' > TK_LIBS='$(MOZ_GTK_LDFLAGS)' > AC_DEFINE(MOZ_WIDGET_GTK) > ;; > > gtk2) > MOZ_ENABLE_GTK2=1 > MOZ_ENABLE_XREMOTE=1 >+ MOZ_ENABLE_GNOMEUI=1 > TK_CFLAGS='$(MOZ_GTK2_CFLAGS)' > TK_LIBS='$(MOZ_GTK2_LIBS)' > AC_DEFINE(MOZ_WIDGET_GTK2) > ;; > > xlib) > MOZ_ENABLE_XLIB=1 > MOZ_ENABLE_XREMOTE=1 >+ MOZ_ENABLE_GNOMEUI=1 > TK_CFLAGS='$(MOZ_XLIB_CFLAGS)' > TK_LIBS='$(MOZ_XLIB_LDFLAGS)' > AC_DEFINE(MOZ_WIDGET_XLIB) > ;; Can be replaced with this: >+if test "$_X11_TOOLKIT" >+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)
Attached patch patch v2 (obsolete) — Splinter Review
ok, changes: what darin said, plus always pass a GnomeVFSFileInfo to gnome_icon_lookup
Attachment #141784 - Attachment is obsolete: true
Attachment #142196 - Flags: review?(bryner)
Comment on attachment 142196 [details] [diff] [review] patch v2 contains a few mistakes...
Attachment #142196 - Attachment is obsolete: true
Attachment #142196 - Flags: review?(bryner) → review-
Attached patch patch v3 (obsolete) — Splinter Review
Attachment #142386 - Flags: review?(bryner)
Attachment #142386 - Flags: review?(bryner) → review+
Attachment #142386 - Flags: superreview?(darin)
Comment on attachment 142386 [details] [diff] [review] patch v3 >Index: modules/libpr0n/decoders/icon/gnome/Makefile.in >+# 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/ tri-license? >Index: modules/libpr0n/decoders/icon/gnome/nsIconChannel.cpp >+ GnomeVFSFileInfo* fileInfo = gnome_vfs_file_info_new(); >+ nsCAutoString spec; >+ nsCOMPtr<nsIURI> fileURI; >+ rv = mURI->GetIconFile(getter_AddRefs(fileURI)); >+ if (NS_SUCCEEDED(rv) && fileURI) { >+ fileURI->GetSpec(spec); use GetAsciiSpec since we don't know for certain the GnomeVFS will be ok with UTF-8, and ASCII-only URIs should always work. >+ if (fileInfo && NS_SUCCEEDED(fileURI->SchemeIs("file", &isFile)) && isFile) { >+ gnome_vfs_get_file_info(spec.get(), fileInfo, GNOME_VFS_FILE_INFO_DEFAULT); >+ } >+ else if (fileInfo) { nit: these two branches could just be wrapped in one |if (fileInfo) { ... }| block, but see below. i don't think you need to heap allocate fileInfo. >+ // We have to get a leaf name from our uri... >+ nsCOMPtr<nsIURL> url(do_QueryInterface(fileURI)); >+ if (url) { >+ nsCAutoString name; >+ url->GetFileName(name); >+ fileInfo->name = g_strdup(name.get()); GetFileName returns UTF-8, are you sure that is valid here? do you need to convert to the filesystem charset since this string is going to be passed down to gnome? also, what about escaped characters in the |name| value? it seems like you might need to unescape name since gnome probably doesn't handle %-escaped file names. >+ if (fileInfo) >+ gnome_vfs_file_info_unref(fileInfo); nit: you could allocate your GnomeVFSFileInfo on the stack. there's no reason to allocate it on the heap. use gnome_vfs_file_info_clear to release any memory owned by the fileInfo object. >+ if (!name) { >+ g_object_unref(G_OBJECT(t)); so, this code requires GLIB-2? do we ensure that in the autoconf stuff? >+ char* file = gnome_icon_theme_lookup_icon(t, name, iconSize, NULL, NULL); what charset does this return? necko assumes file pathes will be in the native charset, so i think passing this string to NS_NewURI may be incorrect. you should construct a local file from this path, and then call NS_NewFileURI instead. or, if you know that |file| is in UTF-8, then you need to manually convert that to either UTF-16 or the "native" charset and still construct a nsILocalFile. appending this string to "file://" is potentially very broken. interesting detail about file:// URLs... at present they are always ASCII. they are in fact %-escaped native pathes. you probably don't want to have to know that here, so that's why i recommend creating a nsILocalFile instead.
Attachment #142386 - Flags: superreview?(darin) → superreview-
>use GetAsciiSpec since we don't know for certain the GnomeVFS will be ok >with UTF-8, and ASCII-only URIs should always work. of course there's the issue that we don't know what charset GnomeVFS uses for file:// URLs. does it use the %-escaped filesystem charset like gecko, or does it use %-escaped UTF-8? if the latter, then we'd need to do a messy charset conversion.
(In reply to comment #13) > so, this code requires GLIB-2? do we ensure that in the autoconf > stuff? We do, implicitly... gnome-vfs 2 requires glib 2. (still have to look at that charset stuff)
(In reply to comment #14) > of course there's the issue that we don't know what charset GnomeVFS uses for > file:// URLs. does it use the %-escaped filesystem charset like gecko, or does > it use %-escaped UTF-8? if the latter, then we'd need to do a messy charset > conversion. The following url clarifies that gnomevfs uses the escaped native charset for file: urls. http://lists.gnome.org/archives/gnome-vfs-list/2004-March/msg00049.html however, this patch requires updating: o) allowing to enable this when the toolkit is gtk1 will lead to problems o) some themes apparently don't provide 16x16 icons for everything, that means e.g. download manager shows like the top 16 pixels of an 48x48 icon, that's really ugly. I guess I'll change this to use GdkPixbuf to scale the file and convert it to a PNG file. That may also bring support for SVG themes. o) + // XXX "Gecko" will have to change, see bug 230144 As that bug is basically fixed, I should change this here too...
(In reply to comment #16) > really ugly. I guess I'll change this to use GdkPixbuf to scale the file and hmm, I was thinking of http://developer.gnome.org/doc/API/2.0/gtk/GtkIconTheme.html#gtk-icon-theme-load-icon there, but that's only in gtk 2.4...
OK; all changes made, except that this doesn't do any scaling
Attachment #142386 - Attachment is obsolete: true
Attached patch patch v4 variant 2 (obsolete) — Splinter Review
variant 2: Scales using GdkPixbuf. Does not require Gtk 2.4. Looks nice in the dl manager :) scrolling performance is not quite ideal in the dl manager... variant 3 requires gtk 2.4, I'll do that tomorrow.
OK; this is the version that requires gtk 2.4. the code looks much nicer :) and doesn't require creating temporary files. it's also faster.
Comment on attachment 145522 [details] [diff] [review] patch v4 variant 2 ok... I think I prefer this patch - the unscaled icons do look ugly; but I don't think requiring gtk 2.4 is a good idea... re-requesting review, this added quite a bit of code
Attachment #145522 - Flags: review?(bryner)
Comment on attachment 145522 [details] [diff] [review] patch v4 variant 2 >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ modules/libpr0n/decoders/icon/gnome/nsIconChannel.cpp 6 Apr 2004 00:38:56 -0000 >+ // scale... >+ GdkPixbuf* scaled = gdk_pixbuf_scale_simple(buf, iconSize, iconSize, GDK_INTERP_BILINEAR); Should we avoid this call if the starting icon size matches iconSize? >+ // Now we have to create an uri for the file... "a uri" Looks good other than that. You're right, gtk 2.4 is _much_ nicer for this. I wonder if it would be worth checking for the needed symbols at runtime and using the new API if it's available. Something to think about, but it shouldn't hold this patch up.
Attachment #145522 - Flags: review?(bryner) → review+
Comment on attachment 145522 [details] [diff] [review] patch v4 variant 2 wow, gdk-pixbuf itself does not seem to do that optimization... ok; I'll change: + // 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; to: + GdkPixbuf* scaled = buf; + if (gdk_pixbuf_get_width(buf) == iconSize && gdk_pixbuf_get_height(buf) == iconSize) { + // scale... + scaled = gdk_pixbuf_scale_simple(buf, iconSize, iconSize, GDK_INTERP_BILINEAR); + gdk_pixbuf_unref(buf); + if (!scaled) + return NS_ERROR_OUT_OF_MEMORY; + } (correctly indented, this textbox is a bit small to tell whether it is now...)
Attachment #145522 - Flags: superreview?(darin)
er, oops, make that + if (gdk_pixbuf_get_width(buf) != iconSize || + gdk_pixbuf_get_height(buf) != iconSize) {
Comment on attachment 145522 [details] [diff] [review] patch v4 variant 2 >Index: configure.in >+if test "$_X11_TOOLKIT" && test -z "$MOZ_ENABLE_GTK" shouldn't this test for MOZ_ENABLE_GTK2 instead? i mean, i suppose with this test you could theoretically use this code in the XLIB build, but if we extend that approach couldn't we end up with the XLIB build including some optional GTK1 stuff here and some optional GTK2 stuff there. might be better to make this specific to the GTK2 builds. >Index: modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp >+ nsIconChannel* channel = new nsIconChannel; >+ if (!channel) >+ return NS_ERROR_OUT_OF_MEMORY; > >+ nsresult rv = channel->Init(url); >+ if (NS_FAILED(rv)) { >+ delete channel; >+ return rv; >+ } BTW, just a heads up: this is in general a risky code pattern. if Init() ever happened to AddRef |this| as a side-effect, and then failed for some reason, you'd end up with a crash... having called delete on an object that is still referenced. I looked over Init and it doesn't look like a problem in this case, but you never know what someone down the road might do. >Index: modules/libpr0n/decoders/icon/gnome/Makefile.in >+REQUIRES = xpcom \ >+ string \ >+ necko \ >+ intl \ >+ mimetype \ >+ exthandler \ >+ $(NULL) indentation in REQUIRES line is inconsistent. >Index: modules/libpr0n/decoders/icon/gnome/nsIconChannel.cpp >+nsIconChannel::Init(nsIURI* aURI) { >+ 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); ... >+ gnome_init(NS_ConvertUTF16toUTF8(appName).get(), "1.0", 1, empty); >+ } ouch! you're adding a new libpr0n dependency on strres/intl. this sounds like something that requires MOA. perhaps you could create a nsIGnomeSession type service or something. then you could hide all the Gnome initialization details in there. or, maybe we should just always initialize Gnome in the apprunner code. why bother doing this lazily? it seems to me that as we increase our integration with Gnome, we are going to have more places that are going to need to perform this Gnome init logic, which suggests that we should put it someplace central or that we should not do it lazily. >+ PRUint32 iconSize; >+ nsresult rv = mURI->GetImageSize(&iconSize); >+ if (NS_FAILED(rv)) >+ iconSize = 16; is this really non-fatal? what does it mean for the image to not know its size? in fact, it looks like nsIconURI already never returns failure here, and it also seems to return 16 as its default value if all else fails. how about simply asserting that this function doesn't fail since we know that it never will? >+ GnomeVFSFileInfo fileInfo; >+ memset(&fileInfo, 0, sizeof(fileInfo)); maybe just do this instead ot initialize to zero: GnomeVFSFileInfo fileInfo = {0}; >+ fileInfo.refcount = 1; // In case some GnomeVFS function addrefs and releases it do you think we need the same safety check in extensions/gnomevfs? hmm, so i guess this patch makes it so that our GTK2 builds will require GnomeVFS2. so, there should be no reason not to allow static linking of extensions/gnomevfs, right? >+ nsCAutoString spec; >+ nsCOMPtr<nsIURI> fileURI; >+ rv = mURI->GetIconFile(getter_AddRefs(fileURI)); >+ if (NS_SUCCEEDED(rv) && fileURI) { GetIconFile also never fails. maybe it is okay to count on the behavior of code in your own module? >+ nsCOMPtr<nsIURL> url(do_QueryInterface(fileURI)); >+ if (url) { >+ nsCAutoString name; >+ // The filename we get is UTF-8, which matches gnome expectations. no, |name| might end up containing %-escaped binary junk. you can only assume that the string you get back is UTF-8 encoded, not that the filename is UTF-8 encoded! ;-) >+ // 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." >+ url->GetFileName(name); >+ fileInfo.name = g_strdup(name.get()); >+ nsUnescape(fileInfo.name); now, fileInfo.name might be ISO-8859-1 or Shift-JIS. necko only guarantees that the string you got back from GetFileName is itself UTF-8. once you unescape all bets are off. i suggest that you don't unescape since presumably this filename corresponds to something on a remote server, right? or is there a reason why unescaping this string is required? >+ // Now we have to create an uri for the file... >+ // We know the name is ASCII >+ nsCOMPtr<nsIURI> realURI; >+ rv = NS_NewURI(getter_AddRefs(realURI), NS_LITERAL_CSTRING("file://") + nsDependentCString(tmpfile)); >+ if (NS_FAILED(rv)) { >+ close(fd); >+ remove(tmpfile); >+ return rv; >+ } >+ >+ // Create a channel to file >+ rv = NS_NewChannel(getter_AddRefs(mRealChannel), realURI); >+ close(fd); >+ >+ // We can't delete the file right now, the channel needs to be able to access >+ // it have you considered using nsIFileInputStream in conjunction with nsIInputStreamChannel? you can configure nsIFileInputStream to delete the file on close. you could: 1) create a localfile from tmpfile, 2) create a local file input stream from that, 3) create a nsIURI from the nsIFile using NS_NewFileURI, and finally call NS_NewInputStreamChannel. or do you truly need this tmpfile to hang around until the end of the application?
Attachment #145522 - Flags: superreview?(darin) → superreview-
+FORCE_SHARED_LIB = 1 (In reply to comment #25) > shouldn't this test for MOZ_ENABLE_GTK2 instead? i mean, i suppose > with this test you could theoretically use this code in the XLIB > build, yep, that's what I was thinking > but if we extend that approach couldn't we end up with the > XLIB build including some optional GTK1 stuff here and some optional > GTK2 stuff there. might be better to make this specific to the GTK2 > builds. but this is a good point. I'll change it to test for gtk2. > BTW, just a heads up: this is in general a risky code pattern. > if Init() ever happened to AddRef |this| as a side-effect, and > then failed for some reason, you'd end up with a crash... oh, hm, good point - I'll move the NS_ADDREF below the OOM check (I don't need a NS_RELEASE in failure case, as I use |delete| here) > or, maybe we should just always initialize Gnome in the apprunner code. > why bother doing this lazily? if I were to do that, mozilla would require gnome, no? I'll need to think about this some more... > how about simply asserting that this function doesn't fail since we know > that it never will? sounds good, will do. > >+ fileInfo.refcount = 1; // In case some GnomeVFS function addrefs and releases it > > do you think we need the same safety check in extensions/gnomevfs? I do think that would be a good idea. > hmm, so i guess this patch makes it so that our GTK2 builds will require > GnomeVFS2. eh? no, that's an optional dependency. I'm using FORCE_SHARED_LIB; so if gnome or gnomevfs aren't present, the component will simply fail to load. I don't think I'd want to add such a dependency. > GetIconFile also never fails. maybe it is okay to count on the behavior of > code > in your own module? hm, true. but it certainly can return a null uri. (e.g. for moz-icon://.txt) I guess I could remove the NS_SUCCEEDED part of the if. > no, |name| might end up containing %-escaped binary junk. you can only > assume that the string you get back is UTF-8 encoded, not that the > filename is UTF-8 encoded! ;-) ok :) > now, fileInfo.name might be ISO-8859-1 or Shift-JIS. necko only guarantees > that the string you got back from GetFileName is itself UTF-8. once you > unescape all bets are off. i suggest that you don't unescape since > presumably this filename corresponds to something on a remote server, right? > or is there a reason why unescaping this string is required? good point. I think we can avoid unescaping here, then. > have you considered using nsIFileInputStream in conjunction with > nsIInputStreamChannel? you can configure nsIFileInputStream to > delete the file on close. ah, excellent - I was not aware of that. I like that much more, I'll use that.
OS: Windows 2000 → Linux
Ah.. I didn't realize that you were developing the icon decoder as a standalone DSO. I think this means that you will also need to go through and update all the different installer packaging stuff (for seamonkey and firefox). Should we maybe consolidate the gnomevfs stuff and this stuff into one DSO then? Unfortunately, it doesn't look like it is easy to keep parts of the icon decoder code where it is and move other parts into extensions/gnome-support/ (<-- or whatever we choose to call it)
(In reply to comment #27) > Ah.. I didn't realize that you were developing the icon decoder as a standalone > DSO. I think this means that you will also need to go through and update all > the different installer packaging stuff (for seamonkey and firefox). ah... right... > Should we maybe consolidate the gnomevfs stuff and this stuff into one DSO then? > Unfortunately, it doesn't look like it is easy to keep parts of the icon > decoder code where it is and move other parts into extensions/gnome-support/ > (<-- or whatever we choose to call it) I hear caillon wants to extend this code to also support gtk-only environments. hence, I wouldn't want this to live in a gnome-specific dir. (this is why I renamed the directory from "gnome" to "gtk" in the next version of the patch)
Attachment #145522 - Attachment is obsolete: true
Attachment #148530 - Flags: superreview?(darin)
Comment on attachment 148530 [details] [diff] [review] patch v5 variant 2 >Index: modules/libpr0n/decoders/icon/nsIconProtocolHandler.cpp >+ nsIconChannel* channel = new nsIconChannel; >+ if (!channel) >+ return NS_ERROR_OUT_OF_MEMORY; >+ NS_ADDREF(channel); > >+ nsresult rv = channel->Init(url); >+ if (NS_FAILED(rv)) { >+ delete channel; oops, i'm sure you meant "NS_RELEASE(channel)" >Index: modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp >+NS_IMPL_ISUPPORTS2(nsIconChannel, >+ nsIRequest, >+ nsIChannel); bogus semicolon. >+static nsresult pngfile_to_channel(const char* aFilename, nsIChannel** aChannel) { nit: add a line break after return type? i.e.: static nsresult pngfile_to_channel(const char* aFilename, nsIChannel** aChannel) { >Index: modules/libpr0n/decoders/icon/gtk/nsIconChannel.h >+ nsIconChannel() {} >+ ~nsIconChannel() {} maybe remove these altogether? sr=darin
Attachment #148530 - Flags: superreview?(darin) → superreview+
ok, checked in, with comments addressed. note that I did mean delete there (I have a concrete pointer to this class here, and wanted to save the indirection...) but I guess NS_RELEASE is better, in case Init passes |this| somewhere else which addrefs...
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
> note that I did mean delete there (I have a concrete pointer to this class here, > and wanted to save the indirection...) but I guess NS_RELEASE is better, in case > Init passes |this| somewhere else which addrefs... exactly! :)
On fedora core1 this checkin causes a crash when the component is used, ./mozilla-bin: relocation error: /home/tor/mopt/dist/bin/components/libimgicon.so: undefined symbol: _Z20gnome_icon_theme_newv gnome-icon-theme.h is missing its G_BEGIN_DECLS. Adding a extern "C" {} block around the include of this file fixes the problem. It doesn't appear as though the chrome is using the icons properly. With the classic theme the download manager looks pretty messed up (image attached).
Christian, this patch has broken the Thunderbird trunk Linux build: http://tinderbox.mozilla.org/showbuilds.cgi?tree=Thunderbird An excerpt of the errors: nsIconChannel.cpp:179: error: `GnomeIconTheme' undeclared (first use this function) nsIconChannel.cpp:179: error: (Each undeclared identifier is reported only once for each function it appears in.) nsIconChannel.cpp:179: error: `t' undeclared (first use this function) nsIconChannel.cpp:179: error: `gnome_icon_theme_new' undeclared (first use this function) nsIconChannel.cpp:186: error: `GNOME_ICON_LOOKUP_FLAGS_NONE' undeclared (first use this function) nsIconChannel.cpp:186: error: `gnome_icon_lookup' undeclared (first use this Can you take a look? Thanks!
perhaps christian was compiling against a new version of the gnome libs that didn't have those problems? older versions of the gnomevfs headers are known to be missing extern "C" wrappers for C++.
Man, you really need scaling support in the tree widget. I just checked with Gnome 2.6, icons in the download manager are just too large.
I forgot to mention that the scrolling was very slow due to the icon loading.
(In reply to comment #33) > On fedora core1 this checkin causes a crash when the component is used, > > ./mozilla-bin: relocation error: > /home/tor/mopt/dist/bin/components/libimgicon.so: undefined symbol: > _Z20gnome_icon_theme_newv > > gnome-icon-theme.h is missing its G_BEGIN_DECLS. Adding a extern "C" {} > block around the include of this file fixes the problem. *sigh*, gnome starts to annoy me... > It doesn't appear as though the chrome is using the icons properly. With > the classic theme the download manager looks pretty messed up (image > attached). sorry... I made a stupid typo. should be fixed now. (In reply to comment #37) > Man, you really need scaling support in the tree widget. I just checked with > Gnome 2.6, icons in the download manager are just too large. yeah, unfortunately the checked in version only took the "scale" codepath when requested width == real width, not !=. I checked in a fix. I'll take a look at the thunderbird bustage in a seocnd.
OK... so http://search.cpan.org/src/MLEHMANN/Gnome2-0.49/xs/GnomeIconLookup.xs indicates GnomeIconTheme is new in libgnomui 2.0.6 does anyone know which version of that is installed on egg?
This should fix: o) bustage with some test versions (have to use = not ==) o) the problem with missing extern "C" in some libgnomeui versions o) lack of GnomeIconTheme in older libgnomeui versions
Comment on attachment 148855 [details] [diff] [review] fix bustages (checked in) I checked this bustage fix in; but with 2.1.0 as version, since that's what seems to first contain the required functions
Attachment #148855 - Attachment description: fix bustages → fix bustages (checked in)
I would recommend not using 2.1.0 as the minimum required version, as that was an unstable development snapshot.
(In reply to comment #43) > I would recommend not using 2.1.0 as the minimum required version, as that was > an unstable development snapshot. so you'd prefer it if I used 2.2.0? why should I not use the first version this appeared in?
(In reply to comment #44) > so you'd prefer it if I used 2.2.0? why should I not use the first version this > appeared in? Yes, use 2.2.x. 2.1.x is unsupported, undocumented, not guaranteed to work, etc. Additionally, much like the Mozilla Foundation probably wouldn't like random Gecko based projects to ship with random development snapshots (say of this past weekend with the 3 major blockers that closed the entire tree) just because they contain X feature, I don't think the GNOME Foundation would like to have external projects relying on unstable, development versions of its software in return. Not only that, but I don't think the Mozilla Foundation wants to be in a position to have to field bugs against potential crashes, or other bugs caused by the "support" of development versions.
Depends on: 402742
Depends on: 486925
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: