]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - unix/gtkcompat.h
GTK2: Return 2.20 compatibility back
[PuTTY.git] / unix / gtkcompat.h
index 3518e53ccf87feb31183f3223e8f188028db3dfb..a218598d12271f96fad6fe415c506583d7e8a950 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Header file to make compatibility with older GTK versions less
  * painful, by #defining various things that are pure spelling changes
- * between GTK1 and GTK2.
+ * between GTK1 and GTK2, or between 2 and 3.
  */
 
 #if !GTK_CHECK_VERSION(2,0,0)
 
 #define GDK_GRAB_SUCCESS GrabSuccess
 
+#define GDK_WINDOW_XID GDK_WINDOW_XWINDOW
+
 #define gtk_widget_set_size_request gtk_widget_set_usize
+#define gtk_radio_button_get_group gtk_radio_button_group
+#define gtk_notebook_set_current_page gtk_notebook_set_page
+#define gtk_color_selection_set_has_opacity_control \
+    gtk_color_selection_set_opacity
 
 #define gtk_dialog_get_content_area(dlg) ((dlg)->vbox)
 #define gtk_dialog_get_action_area(dlg) ((dlg)->action_area)
@@ -59,7 +65,6 @@
 #define gtk_adjustment_set_page_increment(a, val) ((a)->page_increment = (val))
 #define gtk_adjustment_set_step_increment(a, val) ((a)->step_increment = (val))
 #define gtk_adjustment_get_value(a) ((a)->value)
-#define gdk_visual_get_depth(v) ((v)->depth)
 
 #define gtk_widget_set_has_window(w, b)                 \
     gtk1_widget_set_unset_flag(w, GTK_NO_WINDOW, !(b))
 #define gtk_widget_get_realized(w) GTK_WIDGET_REALIZED(w)
 #define gtk_widget_get_state(w) GTK_WIDGET_STATE(w)
 
+/* This is a bit of a bodge because it relies on us only calling this
+ * macro as GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), so under
+ * GTK1 it makes sense to omit the contained function call and just
+ * return the GDK default display. */
+#define GDK_DISPLAY_XDISPLAY(x) GDK_DISPLAY()
+
+#endif /* 2.0 */
+
+#if !GTK_CHECK_VERSION(2,22,0)
+
+#define gdk_visual_get_depth(v) ((v)->depth)
+
+#endif /* 2.22 */
+
+#if !GTK_CHECK_VERSION(2,24,0)
+
 #define GDK_KEY_Alt_L                GDK_Alt_L
 #define GDK_KEY_Alt_R                GDK_Alt_R
 #define GDK_KEY_BackSpace            GDK_BackSpace
 #define GDK_KEY_Right                GDK_Right
 #define GDK_KEY_Tab                  GDK_Tab
 #define GDK_KEY_Up                   GDK_Up
+#define GDK_KEY_greater              GDK_greater
+#define GDK_KEY_less                 GDK_less
+
+#define gdk_window_get_screen(w) gdk_drawable_get_screen(w)
+#define gtk_combo_box_new_with_model_and_entry(t) gtk_combo_box_entry_new_with_model(t, 1)
+
+#endif /* 2.24 */
 
+#if GTK_CHECK_VERSION(3,0,0)
+#define STANDARD_OK_LABEL "_OK"
+#define STANDARD_OPEN_LABEL "_Open"
+#define STANDARD_CANCEL_LABEL "_Cancel"
+#else
+#define STANDARD_OK_LABEL GTK_STOCK_OK
+#define STANDARD_OPEN_LABEL GTK_STOCK_OPEN
+#define STANDARD_CANCEL_LABEL GTK_STOCK_CANCEL
 #endif
 
+#if GTK_CHECK_VERSION(3,0,0)
+#define gtk_hseparator_new() gtk_separator_new(GTK_ORIENTATION_HORIZONTAL)
+/* Fortunately, my hboxes and vboxes never actually set homogeneous to
+ * TRUE, so I can just wrap these deprecated constructors with a macro
+ * without also having to arrange a call to gtk_box_set_homogeneous. */
+#define gtk_hbox_new(homogeneous, spacing) \
+    gtk_box_new(GTK_ORIENTATION_HORIZONTAL, spacing)
+#define gtk_vbox_new(homogeneous, spacing) \
+    gtk_box_new(GTK_ORIENTATION_VERTICAL, spacing)
+#define gtk_vscrollbar_new(adjust) \
+    gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, adjust)
+
+#define gdk_get_display() gdk_display_get_name(gdk_display_get_default())
+
+#define gdk_cursor_new(cur) \
+    gdk_cursor_new_for_display(gdk_display_get_default(), cur)
+
+#endif /* 3.0 */