X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/22aff5795eb2923fd6f56c8b4d894daabaea0879..3e8adad7d79dff655b13952764ed603578edf0e9:/src/gtk/win_gtk.c?ds=sidebyside diff --git a/src/gtk/win_gtk.c b/src/gtk/win_gtk.c index 29414cd913..44222ba55c 100644 --- a/src/gtk/win_gtk.c +++ b/src/gtk/win_gtk.c @@ -70,7 +70,7 @@ static void gtk_pizza_forall (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data); - + static void gtk_pizza_allocate_child (GtkPizza *pizza, GtkPizzaChild *child); static void gtk_pizza_adjust_allocations_recurse (GtkWidget *widget, @@ -102,16 +102,18 @@ static void gtk_pizza_scroll_set_adjustments (GtkPizza *pizza, static GtkContainerClass *pizza_parent_class = NULL; #endif +#ifndef __WXGTK20__ static gboolean gravity_works; +#endif -guint +GtkType gtk_pizza_get_type () { - static guint pizza_type = 0; + static GtkType pizza_type = 0; if (!pizza_type) { - + #ifdef __WXGTK20__ static const GTypeInfo pizza_info = { @@ -125,7 +127,7 @@ gtk_pizza_get_type () 16, /* n_preallocs */ (GInstanceInitFunc) gtk_pizza_init, }; - pizza_type = g_type_register_static (GTK_TYPE_CONTAINER, "GtkPizza", &pizza_info, 0); + pizza_type = g_type_register_static (GTK_TYPE_CONTAINER, "GtkPizza", &pizza_info, (GTypeFlags)0); #else GtkTypeInfo pizza_info = { @@ -145,6 +147,47 @@ gtk_pizza_get_type () return pizza_type; } +#ifdef __WXGTK20__ +/* Marshaller needed for set_scroll_adjustments signal, + generated with GLib-2.4.6 glib-genmarshal */ +#define g_marshal_value_peek_object(v) g_value_get_object (v) +static void +g_cclosure_user_marshal_VOID__OBJECT_OBJECT (GClosure *closure, + GValue *return_value, + guint n_param_values, + const GValue *param_values, + gpointer invocation_hint, + gpointer marshal_data) +{ + typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT) (gpointer data1, + gpointer arg_1, + gpointer arg_2, + gpointer data2); + register GMarshalFunc_VOID__OBJECT_OBJECT callback; + register GCClosure *cc = (GCClosure*) closure; + register gpointer data1, data2; + + g_return_if_fail (n_param_values == 3); + + if (G_CCLOSURE_SWAP_DATA (closure)) + { + data1 = closure->data; + data2 = g_value_peek_pointer (param_values + 0); + } + else + { + data1 = g_value_peek_pointer (param_values + 0); + data2 = closure->data; + } + callback = (GMarshalFunc_VOID__OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback); + + callback (data1, + g_marshal_value_peek_object (param_values + 1), + g_marshal_value_peek_object (param_values + 2), + data2); +} +#endif /* __WXGTK20__ */ + static void gtk_pizza_class_init (GtkPizzaClass *klass) { @@ -177,16 +220,27 @@ gtk_pizza_class_init (GtkPizzaClass *klass) klass->set_scroll_adjustments = gtk_pizza_scroll_set_adjustments; widget_class->set_scroll_adjustments_signal = - gtk_signal_new ("set_scroll_adjustments", - GTK_RUN_LAST, #ifdef __WXGTK20__ - GTK_CLASS_TYPE(object_class), + g_signal_new( + "set_scroll_adjustments", + G_TYPE_FROM_CLASS(object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(GtkPizzaClass, set_scroll_adjustments), + NULL, + NULL, + g_cclosure_user_marshal_VOID__OBJECT_OBJECT, + G_TYPE_NONE, + 2, + GTK_TYPE_ADJUSTMENT, + GTK_TYPE_ADJUSTMENT); #else + gtk_signal_new ("set_scroll_adjustments", + GTK_RUN_LAST, object_class->type, -#endif GTK_SIGNAL_OFFSET (GtkPizzaClass, set_scroll_adjustments), gtk_marshal_NONE__POINTER_POINTER, GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT); +#endif /* __WXGTK20__ */ } static GtkType @@ -352,7 +406,7 @@ gtk_pizza_move (GtkPizza *pizza, child->x = x; child->y = y; - + if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_VISIBLE (pizza)) gtk_widget_queue_resize (widget); break; @@ -590,7 +644,7 @@ gtk_pizza_realize (GtkWidget *widget) widget->style = gtk_style_attach (widget->style, widget->window); gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL); gtk_style_set_background (widget->style, pizza->bin_window, GTK_STATE_NORMAL ); - + /* gdk_window_set_back_pixmap( widget->window, NULL, FALSE ); gdk_window_set_back_pixmap( pizza->bin_window, NULL, FALSE ); @@ -600,10 +654,10 @@ gtk_pizza_realize (GtkWidget *widget) /* add filters for intercepting visibility and expose events */ gdk_window_add_filter (widget->window, gtk_pizza_main_filter, pizza); gdk_window_add_filter (pizza->bin_window, gtk_pizza_filter, pizza); -#endif /* we NEED gravity or we'll give up */ gravity_works = gdk_window_set_static_gravities (pizza->bin_window, TRUE); +#endif // !__WXGTK20__ /* cannot be done before realisation */ children = pizza->children; @@ -784,9 +838,9 @@ gtk_pizza_expose (GtkWidget *widget, #ifdef __WXGTK20__ (* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, event); - + return FALSE; - + #else children = pizza->children; @@ -804,9 +858,9 @@ gtk_pizza_expose (GtkWidget *widget, gtk_widget_event (child->widget, (GdkEvent*) &child_event); } } - + return TRUE; - + #endif } @@ -1052,7 +1106,7 @@ gtk_pizza_scroll (GtkPizza *pizza, gint dx, gint dy) if (pizza->bin_window) gdk_window_scroll( pizza->bin_window, -dx, -dy ); -#else +#else // !__WXGTK20__ GtkWidget *widget; XEvent xevent; XID win; @@ -1184,7 +1238,7 @@ gtk_pizza_scroll (GtkPizza *pizza, gint dx, gint dy) } } } -#endif /* __WXGTK20__ */ +#endif /* __WXGTK20__/!__WXGTK20__ */ }