First, most of the code has already been converted to work the same on
the latest copy of GTK 2 and GTK 3. These changes include things like
using GDK_KEY_* and removing all the gdk threading code.
Second, a compatibility file was added to mimic GTK 3 features that will
not be added to GTK 2. This includes things like gtk_box_new.
Third, any other differences are resolved using GTK_CHECK_VERSION.
This was done as a last resort where there are actual differences
between GTK 2 and GTK 3, such as the "expose-event" to "draw" change.