Hi,
On Tue, 14 Oct 2008 03:59:26 +0200 Colomban Wendling ban-ubuntu@club-internet.fr wrote:
Hi all,
I've tried to compile Geany with the --disable-deprecated configure option, but I used… GTK+ 2.12 and GLib 2.16. Of course, it hasn't worked (mostly because of the new tooltip API and GObject generalization), but it's not really the reason of my mail.
That option is to disable deprecated elements in Geany's plugin API.
In src/utils.c, g_strcasecmp() is used, but it is deprecated since 2.2. I dunno if the reason why it was deprecated have any incidence on what it is used here (I think not), but it breaks build without deprecated symbols even with 2.6.
But using deprecated functions isn't really a problem until GTK 3.0, no? Anyway thanks for looking at it ;-)
An easy fix is to copy the function (with another name or so) in the Geany's source code.
Either that, or use a replacement GLib function for it. I probably wrote that code, but using the global tags autocompletion I didn't realize it was deprecated (maybe we could use GTK_DISABLE_DEPRECATED etc for tag file generation).
Another think I've noticed is that the tagmanager use GMemChunks for allocating memory, but the new GSlice API seems to be really faster (and simpler). What do you think about using it when compiling with GLib >= 2.10? It is easy to set up, just two macros to update. (patch attached - geany_r3060_tagmanager_gslice.patch)
Probably we could apply this after the 0.15 release.
Last thing: about marshal closures. I dunno if g_cclosure_marshal*() are present in GLib 2.6, but gtk_marshal*() are deprecated now, and I think glib-genmarshal is not a really recent tool. Then, it can be nice to move gtk_marshal*() to corresponding g_cclosure_marshal*() and/or to define which are needed in geany-marshal.[ch] files or so. (another patch attached - geany_r3060_no_gtk_marshal.patch).
No idea about this - but I guess we should apply it to fix deprecation problems.
(I really don't like GObject code in C, maybe we could use Vala for GeanyObject??)
Patch for this is not really good because I'm not really knowing about automake & friends, and a make rule should be created to automatically create geany-marshal.[ch] from geany-marshal.list using glib-genmarshal at compile-time.
Probably a normal Make rule could be put in src/Makefile.am to do that.
I attach a last patch, the global modifications I made do compile with --disable-deprecated with GTK+ 2.12 and GLib 2.16, if this is useful for anyone. Anything works but Scintilla, I've not understood the exact goal of calls using deprecated functions, and it haven't found an easy way to make it use newer functions.
gtk_widget_set_tooltip_text() was only added in GTK+ 2.12, we still support 2.6 (see HACKING). Maybe that function could be mimiced for GTK < 2.12 with something like ui_widget_set_tooltip_text().
To sum up, we can probably apply all these after the 0.15 release, but with some changes. Thanks for submitting them.
Regards, Nick