]> git.saurik.com Git - wxWidgets.git/blame - include/wx/gtk/private/gtk2-compat.h
yet more avoiding direct struct access
[wxWidgets.git] / include / wx / gtk / private / gtk2-compat.h
CommitLineData
fc9ab22a
VS
1///////////////////////////////////////////////////////////////////////////////
2// Name: wx/gtk/private/compat.h
3// Purpose: Compatibility code for older GTK+ versions
4// Author: Vaclav Slavik
5// Created: 2011-03-25
6// RCS-ID: $Id$
7// Copyright: (c) 2011 Vaclav Slavik <vslavik@fastmail.fm>
8// Licence: wxWindows licence
9///////////////////////////////////////////////////////////////////////////////
10
11#ifndef _WX_GTK_PRIVATE_COMPAT_H_
12#define _WX_GTK_PRIVATE_COMPAT_H_
13
14// ----------------------------------------------------------------------------
15// Implementations of new accessors for older GTK+ versions
16// ----------------------------------------------------------------------------
17
18// GTK+ deprecated direct access to struct members and some other stuff,
19// replacing them with simple accessor functions. These aren't available in
20// older versions, though, so we have to provide them for compatibility.
21//
22// Note: wx_ prefix is used to avoid symbol conflicts at runtime
0b669520
VS
23//
24// Note 2: We support building against newer GTK+ version and using an older
25// one at runtime, so we must provide our implementations of these
26// functions even if GTK_CHECK_VERSION would indicate the function is
27// already available in GTK+.
28
a8886b11
PC
29#if !GTK_CHECK_VERSION(3,0,0) && !(defined(GTK_DISABLE_DEPRECATED) || defined(GSEAL_ENABLE))
30
31// ----------------------------------------------------------------------------
32// the following were introduced in GTK+ 2.8
33
34static inline GtkWidget* wx_gtk_scrolled_window_get_hscrollbar(GtkScrolledWindow* scrolled_window)
35{
36 return scrolled_window->hscrollbar;
37}
38#define gtk_scrolled_window_get_hscrollbar wx_gtk_scrolled_window_get_hscrollbar
39
40static inline GtkWidget* wx_gtk_scrolled_window_get_vscrollbar(GtkScrolledWindow* scrolled_window)
41{
42 return scrolled_window->vscrollbar;
43}
44#define gtk_scrolled_window_get_vscrollbar wx_gtk_scrolled_window_get_vscrollbar
45
46// ----------------------------------------------------------------------------
47// the following were introduced in GLib 2.10
48
49static inline gpointer wx_g_object_ref_sink(gpointer object)
50{
51 g_object_ref(object);
52 gtk_object_sink(GTK_OBJECT(object));
53 return object;
54}
55#define g_object_ref_sink wx_g_object_ref_sink
56
57// ----------------------------------------------------------------------------
58// the following were introduced in GTK+ 2.14
59
60static inline gdouble wx_gtk_adjustment_get_lower(GtkAdjustment* adjustment)
61{
62 return adjustment->lower;
63}
64#define gtk_adjustment_get_lower wx_gtk_adjustment_get_lower
65
66static inline gdouble wx_gtk_adjustment_get_page_increment(GtkAdjustment* adjustment)
67{
68 return adjustment->page_increment;
69}
70#define gtk_adjustment_get_page_increment wx_gtk_adjustment_get_page_increment
71
72static inline gdouble wx_gtk_adjustment_get_page_size(GtkAdjustment* adjustment)
73{
74 return adjustment->page_size;
75}
76#define gtk_adjustment_get_page_size wx_gtk_adjustment_get_page_size
77
78static inline gdouble wx_gtk_adjustment_get_step_increment(GtkAdjustment* adjustment)
79{
80 return adjustment->step_increment;
81}
82#define gtk_adjustment_get_step_increment wx_gtk_adjustment_get_step_increment
83
84static inline gdouble wx_gtk_adjustment_get_upper(GtkAdjustment* adjustment)
85{
86 return adjustment->upper;
87}
88#define gtk_adjustment_get_upper wx_gtk_adjustment_get_upper
89
90static inline GtkWidget* wx_gtk_color_selection_dialog_get_color_selection(GtkColorSelectionDialog* csd)
91{
92 return csd->colorsel;
93}
94#define gtk_color_selection_dialog_get_color_selection wx_gtk_color_selection_dialog_get_color_selection
95
96static inline GtkWidget* wx_gtk_dialog_get_content_area(GtkDialog* dialog)
97{
98 return dialog->vbox;
99}
100#define gtk_dialog_get_content_area wx_gtk_dialog_get_content_area
101
102static inline GtkWidget* wx_gtk_dialog_get_action_area(GtkDialog* dialog)
103{
104 return dialog->action_area;
105}
106#define gtk_dialog_get_action_area wx_gtk_dialog_get_action_area
107
108static inline GtkWidget* wx_gtk_font_selection_dialog_get_cancel_button(GtkFontSelectionDialog* fsd)
109{
110 return fsd->cancel_button;
111}
112#define gtk_font_selection_dialog_get_cancel_button wx_gtk_font_selection_dialog_get_cancel_button
113
114static inline GtkWidget* wx_gtk_font_selection_dialog_get_ok_button(GtkFontSelectionDialog* fsd)
115{
116 return fsd->ok_button;
117}
118#define gtk_font_selection_dialog_get_ok_button wx_gtk_font_selection_dialog_get_ok_button
119
120static inline GdkAtom wx_gtk_selection_data_get_data_type(GtkSelectionData* selection_data)
121{
122 return selection_data->type;
123}
124#define gtk_selection_data_get_data_type wx_gtk_selection_data_get_data_type
125
126static inline gint wx_gtk_selection_data_get_format(GtkSelectionData* selection_data)
127{
128 return selection_data->format;
129}
130#define gtk_selection_data_get_format wx_gtk_selection_data_get_format
131
132static inline gint wx_gtk_selection_data_get_length(GtkSelectionData* selection_data)
133{
134 return selection_data->length;
135}
136#define gtk_selection_data_get_length wx_gtk_selection_data_get_length
137
138static inline GdkAtom wx_gtk_selection_data_get_target(GtkSelectionData* selection_data)
139{
140 return selection_data->target;
141}
142#define gtk_selection_data_get_target wx_gtk_selection_data_get_target
143
144static inline GdkWindow* wx_gtk_widget_get_window(GtkWidget* widget)
145{
146 return widget->window;
147}
148#define gtk_widget_get_window wx_gtk_widget_get_window
149
150// ----------------------------------------------------------------------------
151// the following were introduced in GTK+ 2.16
152
153static inline GdkAtom wx_gtk_selection_data_get_selection(GtkSelectionData* selection_data)
154{
155 return selection_data->selection;
156}
157#define gtk_selection_data_get_selection wx_gtk_selection_data_get_selection
158
159// ----------------------------------------------------------------------------
160// the following were introduced in GTK+ 2.18
161
162static inline void wx_gtk_widget_get_allocation(GtkWidget* widget, GtkAllocation* allocation)
163{
164 *allocation = widget->allocation;
165}
166#define gtk_widget_get_allocation wx_gtk_widget_get_allocation
0b669520
VS
167
168inline gboolean wx_gtk_widget_get_has_window(GtkWidget *widget)
169{
170 return !GTK_WIDGET_NO_WINDOW(widget);
171}
172#define gtk_widget_get_has_window wx_gtk_widget_get_has_window
173
174
175inline gboolean wx_gtk_widget_get_has_grab(GtkWidget *widget)
176{
177 return GTK_WIDGET_HAS_GRAB(widget);
178}
179#define gtk_widget_get_has_grab wx_gtk_widget_get_has_grab
180
181
182inline gboolean wx_gtk_widget_get_visible(GtkWidget *widget)
183{
184 return GTK_WIDGET_VISIBLE(widget);
185}
186#define gtk_widget_get_visible wx_gtk_widget_get_visible
187
188
189inline gboolean wx_gtk_widget_get_sensitive(GtkWidget *widget)
190{
191 return GTK_WIDGET_VISIBLE(widget);
192}
193#define gtk_widget_get_sensitive wx_gtk_widget_get_sensitive
194
195
196inline gboolean wx_gtk_widget_is_drawable(GtkWidget *widget)
197{
198 return GTK_WIDGET_DRAWABLE(widget);
199}
200#define gtk_widget_is_drawable wx_gtk_widget_is_drawable
201
202
203inline gboolean wx_gtk_widget_get_can_focus(GtkWidget *widget)
204{
205 return GTK_WIDGET_CAN_FOCUS(widget);
206}
207#define gtk_widget_get_can_focus wx_gtk_widget_get_can_focus
208
209inline void wx_gtk_widset_set_can_focus(GtkWidget *widget, gboolean can)
210{
211 if ( can )
212 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS);
213 else
214 GTK_WIDGET_UNSET_FLAGS(widget, GTK_CAN_FOCUS);
215}
216#define gtk_widset_set_can_focus wx_gtk_widset_set_can_focus
217
218
219inline gboolean wx_gtk_widget_get_can_default(GtkWidget *widget)
220{
221 return GTK_WIDGET_CAN_DEFAULT(widget);
222}
223#define gtk_widget_get_can_default wx_gtk_widget_get_can_default
224
225inline void wx_gtk_widget_set_can_default(GtkWidget *widget, gboolean can)
226{
227 if ( can )
228 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_DEFAULT);
229 else
230 GTK_WIDGET_UNSET_FLAGS(widget, GTK_CAN_DEFAULT);
231}
232#define gtk_widget_set_can_default wx_gtk_widget_set_can_default
233
234
235inline gboolean wx_gtk_widget_has_default(GtkWidget *widget)
236{
237 return GTK_WIDGET_HAS_DEFAULT(widget);
238}
239#define gtk_widget_has_default wx_gtk_widget_has_default
240
241
242inline GtkStateType wx_gtk_widget_get_state(GtkWidget *widget)
243{
244 return (GtkStateType)GTK_WIDGET_STATE(widget);
245}
246#define gtk_widget_get_state wx_gtk_widget_get_state
247
248
249inline gboolean wx_gtk_widget_get_double_buffered(GtkWidget *widget)
250{
251 return GTK_WIDGET_DOUBLE_BUFFERED(widget);
252}
253#define gtk_widget_get_double_buffered wx_gtk_widget_get_double_buffered
254
a8886b11
PC
255static inline gboolean wx_gtk_widget_has_grab(GtkWidget* widget)
256{
257 return GTK_WIDGET_HAS_GRAB(widget);
258}
259#define gtk_widget_has_grab wx_gtk_widget_has_grab
260
261static inline void wx_gtk_widget_set_allocation(GtkWidget* widget, const GtkAllocation* allocation)
262{
263 widget->allocation = *allocation;
264}
265#define gtk_widget_set_allocation wx_gtk_widget_set_allocation
266
267// ----------------------------------------------------------------------------
268// the following were introduced in GTK+ 2.20
0b669520
VS
269
270inline gboolean wx_gtk_widget_get_realized(GtkWidget *widget)
271{
272 return GTK_WIDGET_REALIZED(widget);
273}
274#define gtk_widget_get_realized wx_gtk_widget_get_realized
275
fc9ab22a 276
0b669520
VS
277inline gboolean wx_gtk_widget_get_mapped(GtkWidget *widget)
278{
279 return GTK_WIDGET_MAPPED(widget);
280}
281#define gtk_widget_get_mapped wx_gtk_widget_get_mapped
fc9ab22a 282
a8886b11
PC
283static inline GdkWindow* wx_gtk_entry_get_text_window(GtkEntry* entry)
284{
285 return entry->text_area;
286}
287#define gtk_entry_get_text_window wx_gtk_entry_get_text_window
288
0b669520 289#endif // !GTK_CHECK_VERSION(3,0,0) && !defined(GTK_DISABLE_DEPRECATED)
fc9ab22a
VS
290
291
292#endif // _WX_GTK_PRIVATE_COMPAT_H_
293