[Geany-devel] About disabling GTK+/GLib deprecated symbols
nick.treleaven at xxxxx
Tue Oct 14 14:38:27 UTC 2008
On Tue, 14 Oct 2008 03:59:26 +0200
Colomban Wendling <ban-ubuntu at 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
(I really don't like GObject code in C, maybe we could use Vala for
> 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.
More information about the Devel