]> git.saurik.com Git - wxWidgets.git/blame - include/wx/gtk/private/gtk2-compat.h
Add new wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED event. Implement for all backends, exten...
[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
385e8575
PC
57// ----------------------------------------------------------------------------
58// the following were introduced in GTK+ 2.12
59
60static inline void wx_gtk_about_dialog_set_program_name(GtkAboutDialog* about, const gchar* name)
61{
62 gtk_about_dialog_set_name(about, name);
63}
64#define gtk_about_dialog_set_program_name wx_gtk_about_dialog_set_program_name
65
a8886b11
PC
66// ----------------------------------------------------------------------------
67// the following were introduced in GTK+ 2.14
68
69static inline gdouble wx_gtk_adjustment_get_lower(GtkAdjustment* adjustment)
70{
71 return adjustment->lower;
72}
73#define gtk_adjustment_get_lower wx_gtk_adjustment_get_lower
74
75static inline gdouble wx_gtk_adjustment_get_page_increment(GtkAdjustment* adjustment)
76{
77 return adjustment->page_increment;
78}
79#define gtk_adjustment_get_page_increment wx_gtk_adjustment_get_page_increment
80
81static inline gdouble wx_gtk_adjustment_get_page_size(GtkAdjustment* adjustment)
82{
83 return adjustment->page_size;
84}
85#define gtk_adjustment_get_page_size wx_gtk_adjustment_get_page_size
86
87static inline gdouble wx_gtk_adjustment_get_step_increment(GtkAdjustment* adjustment)
88{
89 return adjustment->step_increment;
90}
91#define gtk_adjustment_get_step_increment wx_gtk_adjustment_get_step_increment
92
93static inline gdouble wx_gtk_adjustment_get_upper(GtkAdjustment* adjustment)
94{
95 return adjustment->upper;
96}
97#define gtk_adjustment_get_upper wx_gtk_adjustment_get_upper
98
385e8575
PC
99static inline void wx_gtk_adjustment_set_page_size(GtkAdjustment* adjustment, gdouble page_size)
100{
101 adjustment->page_size = page_size;
102}
103#define gtk_adjustment_set_page_size wx_gtk_adjustment_set_page_size
104
a8886b11
PC
105static inline GtkWidget* wx_gtk_color_selection_dialog_get_color_selection(GtkColorSelectionDialog* csd)
106{
107 return csd->colorsel;
108}
109#define gtk_color_selection_dialog_get_color_selection wx_gtk_color_selection_dialog_get_color_selection
110
111static inline GtkWidget* wx_gtk_dialog_get_content_area(GtkDialog* dialog)
112{
113 return dialog->vbox;
114}
115#define gtk_dialog_get_content_area wx_gtk_dialog_get_content_area
116
117static inline GtkWidget* wx_gtk_dialog_get_action_area(GtkDialog* dialog)
118{
119 return dialog->action_area;
120}
121#define gtk_dialog_get_action_area wx_gtk_dialog_get_action_area
122
385e8575
PC
123static inline guint16 wx_gtk_entry_get_text_length(GtkEntry* entry)
124{
125 return entry->text_length;
126}
127#define gtk_entry_get_text_length wx_gtk_entry_get_text_length
128
a8886b11
PC
129static inline GtkWidget* wx_gtk_font_selection_dialog_get_cancel_button(GtkFontSelectionDialog* fsd)
130{
131 return fsd->cancel_button;
132}
133#define gtk_font_selection_dialog_get_cancel_button wx_gtk_font_selection_dialog_get_cancel_button
134
135static inline GtkWidget* wx_gtk_font_selection_dialog_get_ok_button(GtkFontSelectionDialog* fsd)
136{
137 return fsd->ok_button;
138}
139#define gtk_font_selection_dialog_get_ok_button wx_gtk_font_selection_dialog_get_ok_button
140
385e8575
PC
141static inline const guchar* wx_gtk_selection_data_get_data(GtkSelectionData* selection_data)
142{
143 return selection_data->data;
144}
145#define gtk_selection_data_get_data wx_gtk_selection_data_get_data
146
a8886b11
PC
147static inline GdkAtom wx_gtk_selection_data_get_data_type(GtkSelectionData* selection_data)
148{
149 return selection_data->type;
150}
151#define gtk_selection_data_get_data_type wx_gtk_selection_data_get_data_type
152
153static inline gint wx_gtk_selection_data_get_format(GtkSelectionData* selection_data)
154{
155 return selection_data->format;
156}
157#define gtk_selection_data_get_format wx_gtk_selection_data_get_format
158
159static inline gint wx_gtk_selection_data_get_length(GtkSelectionData* selection_data)
160{
161 return selection_data->length;
162}
163#define gtk_selection_data_get_length wx_gtk_selection_data_get_length
164
165static inline GdkAtom wx_gtk_selection_data_get_target(GtkSelectionData* selection_data)
166{
167 return selection_data->target;
168}
169#define gtk_selection_data_get_target wx_gtk_selection_data_get_target
170
171static inline GdkWindow* wx_gtk_widget_get_window(GtkWidget* widget)
172{
173 return widget->window;
174}
175#define gtk_widget_get_window wx_gtk_widget_get_window
176
385e8575
PC
177static inline GtkWidget* wx_gtk_window_get_default_widget(GtkWindow* window)
178{
179 return window->default_widget;
180}
181#define gtk_window_get_default_widget wx_gtk_window_get_default_widget
182
a8886b11
PC
183// ----------------------------------------------------------------------------
184// the following were introduced in GTK+ 2.16
185
186static inline GdkAtom wx_gtk_selection_data_get_selection(GtkSelectionData* selection_data)
187{
188 return selection_data->selection;
189}
190#define gtk_selection_data_get_selection wx_gtk_selection_data_get_selection
191
192// ----------------------------------------------------------------------------
193// the following were introduced in GTK+ 2.18
194
385e8575
PC
195static inline void wx_gtk_cell_renderer_get_alignment(GtkCellRenderer* cell, gfloat* xalign, gfloat* yalign)
196{
197 *xalign = cell->xalign;
198 *yalign = cell->yalign;
199}
200#define gtk_cell_renderer_get_alignment wx_gtk_cell_renderer_get_alignment
201
202static inline void wx_gtk_cell_renderer_get_padding(GtkCellRenderer* cell, gint* xpad, gint* ypad)
203{
204 *xpad = cell->xpad;
205 *ypad = cell->ypad;
206}
207#define gtk_cell_renderer_get_padding wx_gtk_cell_renderer_get_padding
208
a8886b11
PC
209static inline void wx_gtk_widget_get_allocation(GtkWidget* widget, GtkAllocation* allocation)
210{
211 *allocation = widget->allocation;
212}
213#define gtk_widget_get_allocation wx_gtk_widget_get_allocation
0b669520
VS
214
215inline gboolean wx_gtk_widget_get_has_window(GtkWidget *widget)
216{
217 return !GTK_WIDGET_NO_WINDOW(widget);
218}
219#define gtk_widget_get_has_window wx_gtk_widget_get_has_window
220
221
222inline gboolean wx_gtk_widget_get_has_grab(GtkWidget *widget)
223{
224 return GTK_WIDGET_HAS_GRAB(widget);
225}
226#define gtk_widget_get_has_grab wx_gtk_widget_get_has_grab
227
228
229inline gboolean wx_gtk_widget_get_visible(GtkWidget *widget)
230{
231 return GTK_WIDGET_VISIBLE(widget);
232}
233#define gtk_widget_get_visible wx_gtk_widget_get_visible
234
235
236inline gboolean wx_gtk_widget_get_sensitive(GtkWidget *widget)
237{
a8db6ab7 238 return GTK_WIDGET_SENSITIVE(widget);
0b669520
VS
239}
240#define gtk_widget_get_sensitive wx_gtk_widget_get_sensitive
241
242
243inline gboolean wx_gtk_widget_is_drawable(GtkWidget *widget)
244{
245 return GTK_WIDGET_DRAWABLE(widget);
246}
247#define gtk_widget_is_drawable wx_gtk_widget_is_drawable
248
249
250inline gboolean wx_gtk_widget_get_can_focus(GtkWidget *widget)
251{
252 return GTK_WIDGET_CAN_FOCUS(widget);
253}
254#define gtk_widget_get_can_focus wx_gtk_widget_get_can_focus
255
7c491c85 256inline void wx_gtk_widget_set_can_focus(GtkWidget *widget, gboolean can)
0b669520
VS
257{
258 if ( can )
259 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS);
260 else
261 GTK_WIDGET_UNSET_FLAGS(widget, GTK_CAN_FOCUS);
262}
7c491c85 263#define gtk_widget_set_can_focus wx_gtk_widget_set_can_focus
0b669520
VS
264
265
266inline gboolean wx_gtk_widget_get_can_default(GtkWidget *widget)
267{
268 return GTK_WIDGET_CAN_DEFAULT(widget);
269}
270#define gtk_widget_get_can_default wx_gtk_widget_get_can_default
271
272inline void wx_gtk_widget_set_can_default(GtkWidget *widget, gboolean can)
273{
274 if ( can )
275 GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_DEFAULT);
276 else
277 GTK_WIDGET_UNSET_FLAGS(widget, GTK_CAN_DEFAULT);
278}
279#define gtk_widget_set_can_default wx_gtk_widget_set_can_default
280
281
282inline gboolean wx_gtk_widget_has_default(GtkWidget *widget)
283{
284 return GTK_WIDGET_HAS_DEFAULT(widget);
285}
286#define gtk_widget_has_default wx_gtk_widget_has_default
287
288
289inline GtkStateType wx_gtk_widget_get_state(GtkWidget *widget)
290{
291 return (GtkStateType)GTK_WIDGET_STATE(widget);
292}
293#define gtk_widget_get_state wx_gtk_widget_get_state
294
295
296inline gboolean wx_gtk_widget_get_double_buffered(GtkWidget *widget)
297{
298 return GTK_WIDGET_DOUBLE_BUFFERED(widget);
299}
300#define gtk_widget_get_double_buffered wx_gtk_widget_get_double_buffered
301
a8886b11
PC
302static inline gboolean wx_gtk_widget_has_grab(GtkWidget* widget)
303{
304 return GTK_WIDGET_HAS_GRAB(widget);
305}
306#define gtk_widget_has_grab wx_gtk_widget_has_grab
307
308static inline void wx_gtk_widget_set_allocation(GtkWidget* widget, const GtkAllocation* allocation)
309{
310 widget->allocation = *allocation;
311}
312#define gtk_widget_set_allocation wx_gtk_widget_set_allocation
313
314// ----------------------------------------------------------------------------
315// the following were introduced in GTK+ 2.20
0b669520
VS
316
317inline gboolean wx_gtk_widget_get_realized(GtkWidget *widget)
318{
319 return GTK_WIDGET_REALIZED(widget);
320}
321#define gtk_widget_get_realized wx_gtk_widget_get_realized
322
fc9ab22a 323
0b669520
VS
324inline gboolean wx_gtk_widget_get_mapped(GtkWidget *widget)
325{
326 return GTK_WIDGET_MAPPED(widget);
327}
328#define gtk_widget_get_mapped wx_gtk_widget_get_mapped
fc9ab22a 329
385e8575
PC
330static inline void wx_gtk_widget_get_requisition(GtkWidget* widget, GtkRequisition* requisition)
331{
332 *requisition = widget->requisition;
333}
334#define gtk_widget_get_requisition wx_gtk_widget_get_requisition
335
a8886b11
PC
336static inline GdkWindow* wx_gtk_entry_get_text_window(GtkEntry* entry)
337{
338 return entry->text_area;
339}
340#define gtk_entry_get_text_window wx_gtk_entry_get_text_window
341
0b669520 342#endif // !GTK_CHECK_VERSION(3,0,0) && !defined(GTK_DISABLE_DEPRECATED)
fc9ab22a
VS
343
344
345#endif // _WX_GTK_PRIVATE_COMPAT_H_
346