layout: Remove bin_window

This commit is contained in:
Timm Bäder 2017-06-17 10:59:03 +02:00 committed by Matthias Clasen
parent 8123ea8f3f
commit a73d3418bc
4 changed files with 2 additions and 123 deletions

View File

@ -1707,7 +1707,6 @@ gtk_layout_put
gtk_layout_move
gtk_layout_set_size
gtk_layout_get_size
gtk_layout_get_bin_window
<SUBSECTION Standard>
GTK_LAYOUT
GTK_IS_LAYOUT

View File

@ -52,11 +52,6 @@
* #GtkScrolledWindow), and it can contain child widgets, since its a
* #GtkContainer. However if youre just going to draw, a #GtkDrawingArea
* is a better choice since it has lower overhead.
*
* When handling expose events on a #GtkLayout, you must draw to
* GTK_LAYOUT (layout)->bin_window, rather than to
* GTK_WIDGET (layout)->window, as you would for a drawing
* area.
*/
@ -79,7 +74,6 @@ struct _GtkLayoutPrivate
/* Properties */
GdkVisibilityState visibility;
GdkWindow *bin_window;
GList *children;
@ -120,8 +114,6 @@ static void gtk_layout_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec);
static void gtk_layout_finalize (GObject *object);
static void gtk_layout_realize (GtkWidget *widget);
static void gtk_layout_unrealize (GtkWidget *widget);
static void gtk_layout_map (GtkWidget *widget);
static void gtk_layout_measure (GtkWidget *widget,
GtkOrientation orientation,
@ -189,24 +181,6 @@ gtk_layout_new (GtkAdjustment *hadjustment,
return GTK_WIDGET (layout);
}
/**
* gtk_layout_get_bin_window:
* @layout: a #GtkLayout
*
* Retrieve the bin window of the layout used for drawing operations.
*
* Returns: (transfer none): a #GdkWindow
*
* Since: 2.14
**/
GdkWindow*
gtk_layout_get_bin_window (GtkLayout *layout)
{
g_return_val_if_fail (GTK_IS_LAYOUT (layout), NULL);
return layout->priv->bin_window;
}
static void
gtk_layout_set_hadjustment_values (GtkLayout *layout)
{
@ -389,9 +363,6 @@ gtk_layout_put (GtkLayout *layout,
priv->children = g_list_append (priv->children, child);
if (gtk_widget_get_realized (GTK_WIDGET (layout)))
gtk_widget_set_parent_window (child->widget, priv->bin_window);
gtk_widget_set_parent (child_widget, GTK_WIDGET (layout));
}
@ -468,12 +439,10 @@ gtk_layout_set_size (GtkLayout *layout,
guint height)
{
GtkLayoutPrivate *priv;
GtkWidget *widget;
g_return_if_fail (GTK_IS_LAYOUT (layout));
priv = layout->priv;
widget = GTK_WIDGET (layout);
g_object_freeze_notify (G_OBJECT (layout));
if (width != priv->width)
@ -488,16 +457,6 @@ gtk_layout_set_size (GtkLayout *layout,
}
g_object_thaw_notify (G_OBJECT (layout));
if (gtk_widget_get_realized (widget))
{
GtkAllocation allocation;
gtk_widget_get_allocation (widget, &allocation);
width = MAX (width, allocation.width);
height = MAX (height, allocation.height);
gdk_window_resize (priv->bin_window, width, height);
}
gtk_layout_set_hadjustment_values (layout);
gtk_layout_set_vadjustment_values (layout);
}
@ -595,8 +554,6 @@ gtk_layout_class_init (GtkLayoutClass *class)
G_MAXINT,
100,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
widget_class->realize = gtk_layout_realize;
widget_class->unrealize = gtk_layout_unrealize;
widget_class->map = gtk_layout_map;
widget_class->measure = gtk_layout_measure;
widget_class->size_allocate = gtk_layout_size_allocate;
@ -756,8 +713,6 @@ gtk_layout_init (GtkLayout *layout)
priv->hadjustment = NULL;
priv->vadjustment = NULL;
priv->bin_window = NULL;
priv->scroll_x = 0;
priv->scroll_y = 0;
priv->visibility = GDK_VISIBILITY_PARTIAL;
@ -765,39 +720,6 @@ gtk_layout_init (GtkLayout *layout)
priv->freeze_count = 0;
}
/* Widget methods
*/
static void
gtk_layout_realize (GtkWidget *widget)
{
GtkLayout *layout = GTK_LAYOUT (widget);
GtkLayoutPrivate *priv = layout->priv;
GtkAllocation allocation;
GList *tmp_list;
GTK_WIDGET_CLASS (gtk_layout_parent_class)->realize (widget);
gtk_widget_get_allocation (widget, &allocation);
priv->bin_window = gdk_window_new_child (gtk_widget_get_window (widget),
GDK_ALL_EVENTS_MASK,
&(GdkRectangle) {
allocation.x - gtk_adjustment_get_value (priv->hadjustment),
allocation.y - gtk_adjustment_get_value (priv->vadjustment),
MAX (priv->width, allocation.width),
MAX (priv->height, allocation.height)});
gtk_widget_register_window (widget, priv->bin_window);
tmp_list = priv->children;
while (tmp_list)
{
GtkLayoutChild *child = tmp_list->data;
tmp_list = tmp_list->next;
gtk_widget_set_parent_window (child->widget, priv->bin_window);
}
}
static void
gtk_layout_map (GtkWidget *widget)
{
@ -819,21 +741,6 @@ gtk_layout_map (GtkWidget *widget)
gtk_widget_map (child->widget);
}
}
gdk_window_show (priv->bin_window);
}
static void
gtk_layout_unrealize (GtkWidget *widget)
{
GtkLayout *layout = GTK_LAYOUT (widget);
GtkLayoutPrivate *priv = layout->priv;
gtk_widget_unregister_window (widget, priv->bin_window);
gdk_window_destroy (priv->bin_window);
priv->bin_window = NULL;
GTK_WIDGET_CLASS (gtk_layout_parent_class)->unrealize (widget);
}
static void
@ -867,15 +774,6 @@ gtk_layout_size_allocate (GtkWidget *widget,
gtk_layout_allocate_child (layout, child);
}
if (gtk_widget_get_realized (widget))
{
gdk_window_move_resize (priv->bin_window,
allocation->x - gtk_adjustment_get_value (priv->hadjustment),
allocation->y - gtk_adjustment_get_value (priv->vadjustment),
MAX (priv->width, allocation->width),
MAX (priv->height, allocation->height));
}
gtk_layout_set_hadjustment_values (layout);
gtk_layout_set_vadjustment_values (layout);
@ -970,13 +868,5 @@ gtk_layout_adjustment_changed (GtkAdjustment *adjustment,
if (priv->freeze_count)
return;
if (gtk_widget_get_realized (GTK_WIDGET (layout)))
{
GtkAllocation allocation;
gtk_widget_get_allocation (GTK_WIDGET (layout), &allocation);
gdk_window_move (priv->bin_window,
allocation.x - gtk_adjustment_get_value (priv->hadjustment),
allocation.y - gtk_adjustment_get_value (priv->vadjustment));
}
gtk_widget_queue_allocate (GTK_WIDGET (layout));
}

View File

@ -76,8 +76,6 @@ GDK_AVAILABLE_IN_ALL
GtkWidget* gtk_layout_new (GtkAdjustment *hadjustment,
GtkAdjustment *vadjustment);
GDK_AVAILABLE_IN_ALL
GdkWindow* gtk_layout_get_bin_window (GtkLayout *layout);
GDK_AVAILABLE_IN_ALL
void gtk_layout_put (GtkLayout *layout,
GtkWidget *child_widget,
gint x,

View File

@ -8035,18 +8035,10 @@ create_mainloop (GtkWidget *widget)
static gboolean
layout_draw_handler (GtkWidget *widget, cairo_t *cr)
{
GtkLayout *layout;
GdkWindow *bin_window;
GdkRectangle clip;
gint i,j,x,y;
gint i,j;
gint imin, imax, jmin, jmax;
layout = GTK_LAYOUT (widget);
bin_window = gtk_layout_get_bin_window (layout);
gdk_window_get_position (bin_window, &x, &y);
cairo_translate (cr, x, y);
gdk_cairo_get_clip_rectangle (cr, &clip);
imin = (clip.x) / 10;