X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8db7faf281abef276b1e84a2504191cbd3ce2606..cbc82a22cc4cb21fe3ca705ed5da5644cef90e3a:/src/gtk/win_gtk.c?ds=sidebyside diff --git a/src/gtk/win_gtk.c b/src/gtk/win_gtk.c index 7e19cae8af..09bd29432c 100644 --- a/src/gtk/win_gtk.c +++ b/src/gtk/win_gtk.c @@ -20,8 +20,26 @@ extern "C" { #endif /* __cplusplus */ +typedef struct _GtkPizzaChild GtkPizzaChild; +typedef struct _GtkPizzaClass GtkPizzaClass; typedef struct _GtkPizzaAdjData GtkPizzaAdjData; +struct _GtkPizzaClass +{ + GtkContainerClass parent_class; + + void (*set_scroll_adjustments) (GtkPizza *pizza, + GtkAdjustment *hadjustment, + GtkAdjustment *vadjustment); +}; + +struct _GtkPizzaChild +{ + GtkWidget *widget; + gint x; + gint y; +}; + struct _GtkPizzaAdjData { gint dx; @@ -40,8 +58,6 @@ static void gtk_pizza_size_request (GtkWidget *widget, GtkRequisition *requisition); static void gtk_pizza_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static gint gtk_pizza_expose (GtkWidget *widget, - GdkEventExpose *event); static void gtk_pizza_style_set (GtkWidget *widget, GtkStyle *previous_style); static void gtk_pizza_add (GtkContainer *container, @@ -148,7 +164,6 @@ gtk_pizza_class_init (GtkPizzaClass *klass) widget_class->unrealize = gtk_pizza_unrealize; widget_class->size_request = gtk_pizza_size_request; widget_class->size_allocate = gtk_pizza_size_allocate; - widget_class->expose_event = gtk_pizza_expose; widget_class->style_set = gtk_pizza_style_set; container_class->add = gtk_pizza_add; @@ -239,7 +254,6 @@ void gtk_pizza_set_yoffset (GtkPizza *pizza, gint yoffset) gint gtk_pizza_get_rtl_offset (GtkPizza *pizza) { - gint width; gint border; g_return_val_if_fail ( (pizza != NULL), 0 ); @@ -247,11 +261,9 @@ gint gtk_pizza_get_rtl_offset (GtkPizza *pizza) if (!pizza->bin_window) return 0; - gdk_window_get_geometry( pizza->bin_window, NULL, NULL, &width, NULL, NULL ); - border = pizza->container.border_width; - return width-border*2; + return GTK_WIDGET(pizza)->allocation.width - border*2; } @@ -282,8 +294,6 @@ gtk_pizza_put (GtkPizza *pizza, child_info->widget = widget; child_info->x = x; child_info->y = y; - child_info->width = width; - child_info->height = height; pizza->children = g_list_append (pizza->children, child_info); @@ -292,6 +302,7 @@ gtk_pizza_put (GtkPizza *pizza, gtk_widget_set_parent (widget, GTK_WIDGET (pizza)); + gtk_widget_set_size_request( widget, width, height ); if (GTK_WIDGET_REALIZED (pizza)) gtk_pizza_allocate_child (pizza, child_info); } @@ -329,16 +340,9 @@ gtk_pizza_set_size (GtkPizza *pizza, if (child->widget == widget) { - if ((child->x == x) && - (child->y == y) && - (child->width == width) && - (child->height == height)) return; - child->x = x; child->y = y; - child->width = width; - child->height = height; - + gtk_widget_set_size_request (widget, width, height); return; @@ -566,26 +570,6 @@ gtk_pizza_size_allocate (GtkWidget *widget, } } -static gint -gtk_pizza_expose (GtkWidget *widget, - GdkEventExpose *event) -{ - GtkPizza *pizza; - - g_return_val_if_fail (widget != NULL, FALSE); - g_return_val_if_fail (GTK_IS_PIZZA (widget), FALSE); - g_return_val_if_fail (event != NULL, FALSE); - - pizza = (GtkPizza*)widget; - - if (event->window != pizza->bin_window) - return FALSE; - - pizza_parent_class->expose_event(widget, event); - - return FALSE; -} - static void gtk_pizza_style_set(GtkWidget *widget, GtkStyle *previous_style) { @@ -697,7 +681,7 @@ gtk_pizza_allocate_child (GtkPizza *pizza, border = pizza->container.border_width; offset -= border*2; - allocation.x = offset - child->x - allocation.width - pizza->m_xoffset; + allocation.x = offset - child->x - allocation.width + pizza->m_xoffset; } gtk_widget_size_allocate (child->widget, &allocation);