Difference between revisions of "GTK+ 3 migration"
(→Deprecated symbols: GtkRuler needs merging) |
(→Switch to gobject: note about SPCanvasItem rewrite) |
||
Line 8: | Line 8: | ||
=== Switch to gobject === | === Switch to gobject === | ||
The GtkType and GtkObject API has been replaced by the gobject library. | <https://bugs.launchpad.net/inkscape/+bug/813212> | ||
The GtkType and GtkObject API has been replaced by the gobject library. One of the few remaining issues here is that SPCanvasItem is a subclass of GtkObject. However, this part of the class hierarchy is currently being rewritten, and will be based on a different parent class. | |||
=== Use accessor functions to GtkWidget === | === Use accessor functions to GtkWidget === |
Revision as of 15:32, 23 July 2011
Inkscape currently makes use of the GTK+ 2.20 library API. Ultimately, we will need to switch to the new GTK+ 3 API. This version of the library introduces a number of major changes that are incompatible with GTK, so we need to make some changes to Inkscape.
Guidance from upstream
The GTK+ 3 reference manual offers some guidance for the upgrade process.
Deprecated symbols
Inkscape currently makes use of a number of deprecated GTK+ symbols. We need to get rid of all of these before we can upgrade. Some are very easy to replace. Some are a little more challenging. We need to ensure that Inkscape still builds correctly when the "-DGTK_DISABLE_DEPRECATED" compiler flag is applied. An incomplete "to do" list follows:
Switch to gobject
<https://bugs.launchpad.net/inkscape/+bug/813212>
The GtkType and GtkObject API has been replaced by the gobject library. One of the few remaining issues here is that SPCanvasItem is a subclass of GtkObject. However, this part of the class hierarchy is currently being rewritten, and will be based on a different parent class.
Use accessor functions to GtkWidget
Accessor functions such as gtk_widget_has_focus()
should be used instead of deprecated macros such as GTK_WIDGET_HAS_FOCUS()
Get rid of "visual" functions for GtkWidgets
The visual for a widget, and also the default visual is now derived from the colormap for the widget and the default colormap. gtk_widget_set_visual()
, gtk_widget_set_default_visual()
, gtk_widget_push_visual()
and gtk_widget_pop_visual()
now do nothing. Since the visual always had to match that of the colormap, it is safe to simply delete all references to these functions.
- Done Valavanisalex 09:55, 23 June 2011 (UTC)
Don't use GtkNotebookPage
The GtkNotebookPage
structure has been removed from the public header files; this was never meant to be a public structure, and all functionality that could be done by accessing the struct fields of this structure should be accessible otherwise.
Switch from GtkCombo to GtkComboBoxEntry
See [1]
- Done. A few symbols are left in #if/#else blocks in src/dialogs/text-edit.cpp to allow build compatibility with GTK+ 2.20. These can be removed once Inkscape has bumped its dependency level to GTK+ >= 2.24. Valavanisalex 09:46, 23 June 2011 (UTC)
Get rid of GtkAction proxy functions
gtk_action_connect_proxy has been deprecated since version 2.16 and should not be used in newly-written code. Use gtk_activatable_set_related_action() instead.
Merge GtkRuler into Inkscape
The GtkRuler class has been completely removed from GTK+ 3, and will not be replaced. GIMP got around the problem by merging the GtkRuler code into their own project.