1 /* 2 * Header file to make compatibility with older GTK versions less 3 * painful, by #defining various things that are pure spelling changes 4 * between GTK1 and GTK2, or between 2 and 3. 5 */ 6 7 #if !GTK_CHECK_VERSION(2,0,0) 8 9 #include <ctype.h> 10 #include <X11/X.h> 11 12 /* Helper macro used in definitions below. Note that although it 13 * *expands* w and flag twice, it does not *evaluate* them twice 14 * because the evaluations are in exclusive branches of ?:. So it's 15 * a side-effect-safe macro. */ 16 #define gtk1_widget_set_unset_flag(w, flag, b) \ 17 ((b) ? GTK_WIDGET_SET_FLAGS(w, flag) : GTK_WIDGET_UNSET_FLAGS(w, flag)) 18 19 #define GType GtkType 20 #define GObject GtkObject 21 #define G_CALLBACK(x) GTK_SIGNAL_FUNC(x) 22 #define G_OBJECT(x) GTK_OBJECT(x) 23 #define G_TYPE_CHECK_INSTANCE_TYPE GTK_CHECK_TYPE 24 #define G_TYPE_CHECK_INSTANCE_CAST GTK_CHECK_CAST 25 #define G_TYPE_CHECK_CLASS_TYPE GTK_CHECK_CLASS_TYPE 26 #define G_TYPE_CHECK_CLASS_CAST GTK_CHECK_CLASS_CAST 27 28 #define g_ascii_isspace(x) (isspace((unsigned char)(x))) 29 #define g_signal_connect gtk_signal_connect 30 #define g_signal_connect_swapped gtk_signal_connect_object 31 #define g_signal_stop_emission_by_name gtk_signal_emit_stop_by_name 32 #define g_signal_emit_by_name gtk_signal_emit_by_name 33 #define g_signal_handler_disconnect gtk_signal_disconnect 34 #define g_object_get_data gtk_object_get_data 35 #define g_object_set_data gtk_object_set_data 36 #define g_object_set_data_full gtk_object_set_data_full 37 #define g_object_ref_sink(x) do { \ 38 gtk_object_ref(x); \ 39 gtk_object_sink(x); \ 40 } while (0) 41 42 #define GDK_GRAB_SUCCESS GrabSuccess 43 44 #define GDK_WINDOW_XID GDK_WINDOW_XWINDOW 45 46 #define gtk_widget_set_size_request gtk_widget_set_usize 47 #define gtk_radio_button_get_group gtk_radio_button_group 48 #define gtk_notebook_set_current_page gtk_notebook_set_page 49 #define gtk_color_selection_set_has_opacity_control \ 50 gtk_color_selection_set_opacity 51 52 #define gtk_dialog_get_content_area(dlg) ((dlg)->vbox) 53 #define gtk_dialog_get_action_area(dlg) ((dlg)->action_area) 54 #define gtk_dialog_set_can_default(dlg) ((dlg)->action_area) 55 #define gtk_widget_get_window(w) ((w)->window) 56 #define gtk_widget_get_parent(w) ((w)->parent) 57 #define gtk_widget_set_allocation(w, a) ((w)->allocation = *(a)) 58 #define gtk_container_get_border_width(c) ((c)->border_width) 59 #define gtk_container_get_focus_child(c) ((c)->focus_child) 60 #define gtk_bin_get_child(b) ((b)->child) 61 #define gtk_color_selection_dialog_get_color_selection(cs) ((cs)->colorsel) 62 #define gtk_selection_data_get_target(sd) ((sd)->target) 63 #define gtk_selection_data_get_data_type(sd) ((sd)->type) 64 #define gtk_selection_data_get_data(sd) ((sd)->data) 65 #define gtk_selection_data_get_length(sd) ((sd)->length) 66 #define gtk_selection_data_get_format(sd) ((sd)->format) 67 #define gtk_adjustment_set_lower(a, val) ((a)->lower = (val)) 68 #define gtk_adjustment_set_upper(a, val) ((a)->upper = (val)) 69 #define gtk_adjustment_set_page_size(a, val) ((a)->page_size = (val)) 70 #define gtk_adjustment_set_page_increment(a, val) ((a)->page_increment = (val)) 71 #define gtk_adjustment_set_step_increment(a, val) ((a)->step_increment = (val)) 72 #define gtk_adjustment_get_value(a) ((a)->value) 73 #define gtk_selection_data_get_selection(a) ((a)->selection) 74 #define gdk_display_beep(disp) gdk_beep() 75 76 #define gtk_widget_set_has_window(w, b) \ 77 gtk1_widget_set_unset_flag(w, GTK_NO_WINDOW, !(b)) 78 #define gtk_widget_set_mapped(w, b) \ 79 gtk1_widget_set_unset_flag(w, GTK_MAPPED, (b)) 80 #define gtk_widget_set_can_default(w, b) \ 81 gtk1_widget_set_unset_flag(w, GTK_CAN_DEFAULT, (b)) 82 #define gtk_widget_get_visible(w) GTK_WIDGET_VISIBLE(w) 83 #define gtk_widget_get_mapped(w) GTK_WIDGET_MAPPED(w) 84 #define gtk_widget_get_realized(w) GTK_WIDGET_REALIZED(w) 85 #define gtk_widget_get_state(w) GTK_WIDGET_STATE(w) 86 #define gtk_widget_get_can_focus(w) GTK_WIDGET_CAN_FOCUS(w) 87 #define gtk_widget_is_drawable(w) GTK_WIDGET_DRAWABLE(w) 88 #define gtk_widget_is_sensitive(w) GTK_WIDGET_IS_SENSITIVE(w) 89 #define gtk_widget_has_focus(w) GTK_WIDGET_HAS_FOCUS(w) 90 91 /* This is a bit of a bodge because it relies on us only calling this 92 * macro as GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), so under 93 * GTK1 it makes sense to omit the contained function call and just 94 * return the GDK default display. */ 95 #define GDK_DISPLAY_XDISPLAY(x) GDK_DISPLAY() 96 97 #define GDK_KEY_C ('C') 98 #define GDK_KEY_V ('V') 99 #define GDK_KEY_c ('c') 100 #define GDK_KEY_v ('v') 101 102 #endif /* 2.0 */ 103 104 #if !GTK_CHECK_VERSION(2,22,0) 105 106 #define gdk_visual_get_depth(v) ((v)->depth) 107 108 #endif /* 2.22 */ 109 110 #if !GTK_CHECK_VERSION(2,24,0) 111 112 #define GDK_KEY_Alt_L GDK_Alt_L 113 #define GDK_KEY_Alt_R GDK_Alt_R 114 #define GDK_KEY_BackSpace GDK_BackSpace 115 #define GDK_KEY_Begin GDK_Begin 116 #define GDK_KEY_Break GDK_Break 117 #define GDK_KEY_Delete GDK_Delete 118 #define GDK_KEY_Down GDK_Down 119 #define GDK_KEY_End GDK_End 120 #define GDK_KEY_Escape GDK_Escape 121 #define GDK_KEY_F10 GDK_F10 122 #define GDK_KEY_F11 GDK_F11 123 #define GDK_KEY_F12 GDK_F12 124 #define GDK_KEY_F13 GDK_F13 125 #define GDK_KEY_F14 GDK_F14 126 #define GDK_KEY_F15 GDK_F15 127 #define GDK_KEY_F16 GDK_F16 128 #define GDK_KEY_F17 GDK_F17 129 #define GDK_KEY_F18 GDK_F18 130 #define GDK_KEY_F19 GDK_F19 131 #define GDK_KEY_F1 GDK_F1 132 #define GDK_KEY_F20 GDK_F20 133 #define GDK_KEY_F2 GDK_F2 134 #define GDK_KEY_F3 GDK_F3 135 #define GDK_KEY_F4 GDK_F4 136 #define GDK_KEY_F5 GDK_F5 137 #define GDK_KEY_F6 GDK_F6 138 #define GDK_KEY_F7 GDK_F7 139 #define GDK_KEY_F8 GDK_F8 140 #define GDK_KEY_F9 GDK_F9 141 #define GDK_KEY_Home GDK_Home 142 #define GDK_KEY_Insert GDK_Insert 143 #define GDK_KEY_ISO_Left_Tab GDK_ISO_Left_Tab 144 #define GDK_KEY_KP_0 GDK_KP_0 145 #define GDK_KEY_KP_1 GDK_KP_1 146 #define GDK_KEY_KP_2 GDK_KP_2 147 #define GDK_KEY_KP_3 GDK_KP_3 148 #define GDK_KEY_KP_4 GDK_KP_4 149 #define GDK_KEY_KP_5 GDK_KP_5 150 #define GDK_KEY_KP_6 GDK_KP_6 151 #define GDK_KEY_KP_7 GDK_KP_7 152 #define GDK_KEY_KP_8 GDK_KP_8 153 #define GDK_KEY_KP_9 GDK_KP_9 154 #define GDK_KEY_KP_Add GDK_KP_Add 155 #define GDK_KEY_KP_Begin GDK_KP_Begin 156 #define GDK_KEY_KP_Decimal GDK_KP_Decimal 157 #define GDK_KEY_KP_Delete GDK_KP_Delete 158 #define GDK_KEY_KP_Divide GDK_KP_Divide 159 #define GDK_KEY_KP_Down GDK_KP_Down 160 #define GDK_KEY_KP_End GDK_KP_End 161 #define GDK_KEY_KP_Enter GDK_KP_Enter 162 #define GDK_KEY_KP_Home GDK_KP_Home 163 #define GDK_KEY_KP_Insert GDK_KP_Insert 164 #define GDK_KEY_KP_Left GDK_KP_Left 165 #define GDK_KEY_KP_Multiply GDK_KP_Multiply 166 #define GDK_KEY_KP_Page_Down GDK_KP_Page_Down 167 #define GDK_KEY_KP_Page_Up GDK_KP_Page_Up 168 #define GDK_KEY_KP_Right GDK_KP_Right 169 #define GDK_KEY_KP_Subtract GDK_KP_Subtract 170 #define GDK_KEY_KP_Up GDK_KP_Up 171 #define GDK_KEY_Left GDK_Left 172 #define GDK_KEY_Meta_L GDK_Meta_L 173 #define GDK_KEY_Meta_R GDK_Meta_R 174 #define GDK_KEY_Num_Lock GDK_Num_Lock 175 #define GDK_KEY_Page_Down GDK_Page_Down 176 #define GDK_KEY_Page_Up GDK_Page_Up 177 #define GDK_KEY_Return GDK_Return 178 #define GDK_KEY_Right GDK_Right 179 #define GDK_KEY_Tab GDK_Tab 180 #define GDK_KEY_Up GDK_Up 181 #define GDK_KEY_greater GDK_greater 182 #define GDK_KEY_less GDK_less 183 184 #define gdk_window_get_screen(w) gdk_drawable_get_screen(w) 185 #define gtk_combo_box_new_with_model_and_entry(t) gtk_combo_box_entry_new_with_model(t, 1) 186 187 #endif /* 2.24 */ 188 189 #if !GTK_CHECK_VERSION(3,0,0) 190 #define GDK_IS_X11_WINDOW(window) (1) 191 #endif 192 193 #if GTK_CHECK_VERSION(3,0,0) 194 #define STANDARD_OK_LABEL "_OK" 195 #define STANDARD_OPEN_LABEL "_Open" 196 #define STANDARD_CANCEL_LABEL "_Cancel" 197 #else 198 #define STANDARD_OK_LABEL GTK_STOCK_OK 199 #define STANDARD_OPEN_LABEL GTK_STOCK_OPEN 200 #define STANDARD_CANCEL_LABEL GTK_STOCK_CANCEL 201 #endif 202 203 #if GTK_CHECK_VERSION(3,0,0) 204 #define gtk_hseparator_new() gtk_separator_new(GTK_ORIENTATION_HORIZONTAL) 205 /* Fortunately, my hboxes and vboxes never actually set homogeneous to 206 * true, so I can just wrap these deprecated constructors with a macro 207 * without also having to arrange a call to gtk_box_set_homogeneous. */ 208 #define gtk_hbox_new(homogeneous, spacing) \ 209 gtk_box_new(GTK_ORIENTATION_HORIZONTAL, spacing) 210 #define gtk_vbox_new(homogeneous, spacing) \ 211 gtk_box_new(GTK_ORIENTATION_VERTICAL, spacing) 212 #define gtk_vscrollbar_new(adjust) \ 213 gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, adjust) 214 215 #define gdk_get_display() gdk_display_get_name(gdk_display_get_default()) 216 217 #define gdk_cursor_new(cur) \ 218 gdk_cursor_new_for_display(gdk_display_get_default(), cur) 219 220 #endif /* 3.0 */ 221