forked from AuroraMiddleware/gtk
fixed: Fix drawing order
Restore the drawing order in GtkFixed to what it was in 3.8. With the GDK drawing changes this will not be correct in some cases (un-windowed children can now overlap windowed children and native children overlap everything), but fixes Eclipse drawing. https://bugzilla.gnome.org/show_bug.cgi?id=725089
This commit is contained in:
parent
0f212b5fb7
commit
e2a83cae0f
@ -94,6 +94,8 @@ static void gtk_fixed_get_preferred_height (GtkWidget *widget,
|
||||
gint *natural);
|
||||
static void gtk_fixed_size_allocate (GtkWidget *widget,
|
||||
GtkAllocation *allocation);
|
||||
static gboolean gtk_fixed_draw (GtkWidget *widget,
|
||||
cairo_t *cr);
|
||||
static void gtk_fixed_add (GtkContainer *container,
|
||||
GtkWidget *widget);
|
||||
static void gtk_fixed_remove (GtkContainer *container,
|
||||
@ -130,6 +132,7 @@ gtk_fixed_class_init (GtkFixedClass *class)
|
||||
widget_class->get_preferred_width = gtk_fixed_get_preferred_width;
|
||||
widget_class->get_preferred_height = gtk_fixed_get_preferred_height;
|
||||
widget_class->size_allocate = gtk_fixed_size_allocate;
|
||||
widget_class->draw = gtk_fixed_draw;
|
||||
|
||||
container_class->add = gtk_fixed_add;
|
||||
container_class->remove = gtk_fixed_remove;
|
||||
@ -540,3 +543,27 @@ gtk_fixed_forall (GtkContainer *container,
|
||||
(* callback) (child->widget, callback_data);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gtk_fixed_draw (GtkWidget *widget,
|
||||
cairo_t *cr)
|
||||
{
|
||||
GtkFixed *fixed = GTK_FIXED (widget);
|
||||
GtkFixedPrivate *priv = fixed->priv;
|
||||
GtkFixedChild *child;
|
||||
GList *list;
|
||||
|
||||
for (list = priv->children;
|
||||
list;
|
||||
list = list->next)
|
||||
{
|
||||
child = list->data;
|
||||
|
||||
gtk_container_propagate_draw (GTK_CONTAINER (fixed),
|
||||
child->widget,
|
||||
cr);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user