Am 05.04.2013 08:58, schrieb Quentin Glidic:
From: Quentin Glidic sardemff7+git@sardemff7.net
Signed-off-by: Quentin Glidic sardemff7+git@sardemff7.net
src/gtkcompat.h | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/src/gtkcompat.h b/src/gtkcompat.h index ca1c187..7e0276c 100644 --- a/src/gtkcompat.h +++ b/src/gtkcompat.h @@ -92,6 +92,12 @@ G_BEGIN_DECLS compat_widget_set_flag((widget), GTK_NO_WINDOW, !(has_window)) # define gtk_widget_set_can_focus(widget, can_focus) \ compat_widget_set_flag((widget), GTK_CAN_FOCUS, (can_focus)) +# define gtk_widget_set_can_default(widget, can_default) \
compat_widget_set_flag((widget), GTK_CAN_DEFAULT, (can_default))
+# define gtk_widget_get_allocation(widget, alloc) \
do { \
(alloc) = (((GtkWidget *) (widget))->allocation
#endif #if ! GTK_CHECK_VERSION(2, 20, 0) # define gtk_widget_get_mapped(widget) GTK_WIDGET_MAPPED(widget)} while (0)
This isn't right. alloc is a pointer to caller-provided GtkAllocation. If this were a function (inline or not) the pointer would point to something else, but that doesn't affect the caller-provided GtkAllocation which is supposed to be initialized. Since this is a macro I expect it to not even compile (havent tried though). You're calling it in a later patch ("addons: Fix GTK+3 support") like this:
gtk_widget_get_allocation(widget, &allocation);
The macro would expand to:
.. (&allocation) = (((GtkWidget *) (widget))->allocation ..
That isn't valid C.
This should be correct, as it copies the contents over to the caller-provided GtkAllocation: *(alloc) = *((GtkAllocation *) ((((GtkWidget *) (widget))->allocation)); or: mempcy(alloc, ((GtkWidget *) (widget))->allocation, sizeof(GtkAllocation));
Best regards