Part V. Migrating from Previous Versions of GTK+

This part describes what you need to change in programs use older versions of GTK+ so that they can use the new features. It also mentions how to convert applications using widgets found in the libgnomeui library to use their counterparts in GTK+.

Table of Contents

Migrating from GTK+ 2.x to GTK+ 3
Preparation in GTK+ 2.x
Do not include individual headers
Do not use deprecated symbols
Use accessor functions instead of direct access
Replace GDK_<keyname> with GDK_KEY_<keyname>
Use GIO for launching applications
Use cairo for drawing
Changes that need to be done at the time of the switch
Replace size_request by get_preferred_width/height
Replace GdkRegion by cairo_region_t
Replace GdkPixmap by cairo surfaces
Replace GdkColormap by GdkVisual
GdkDrawable is gone
Event filtering
Backend-specific code
GtkPlug and GtkSocket
The GtkWidget::draw signal
GtkProgressBar orientation
Check your expand and fill flags
Scrolling changes
GtkObject is gone
GtkEntryCompletion signal parameters
Resize grips
Prevent mixed linkage
Install GTK+ modules in the right place
Theming changes
Migrating themes
Migrating theme engines
Extending the CSS parser
Using the CSS file format
A checklist for widgets
Parsing of custom resources
Bonus points
Migrating from libunique to GApplication or GtkApplication
Uniqueness
Commands and Messages
Migrating from EggSMClient to GtkApplication
Migrating from other containers to GtkGrid
GtkBox versus GtkGrid: packing
GtkBox versus GtkGrid: sizing
GtkBox versus GtkGrid: spacing
Migration Details Checklist
Implement GtkWidget::popup_menu
Use GdkEventExpose.region
Test for modifier keys correctly
Use named icons
Migrating from one GTK+ 3 release to another
Changes in GTK+ 3.2
Changes in GTK+ 3.4
Changes in GTK+ 3.6
Changes in GTK+ 3.8
Changes in GTK+ 3.10
Changes in GTK+ 3.12
Changes in GTK+ 3.14
Changes in GTK+ 3.16
Changes in GTK+ 3.18
Changes in GTK+ 3.20
Changes in GTK+ 3.22