summaryrefslogtreecommitdiff
path: root/gtk/gtkwidget.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r--gtk/gtkwidget.c97
1 files changed, 36 insertions, 61 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 5dfd184418..2b1a80038a 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -162,8 +162,6 @@ static void gtk_widget_reparent_container_child (GtkWidget *widget,
gpointer client_data);
static void gtk_widget_propagate_state (GtkWidget *widget,
GtkStateData *data);
-static void gtk_widget_draw_children_recurse (GtkWidget *widget,
- gpointer client_data);
static void gtk_widget_set_style_internal (GtkWidget *widget,
GtkStyle *style,
gboolean initial_emission);
@@ -2217,26 +2215,6 @@ gtk_widget_draw_default (GtkWidget *widget)
}
/*****************************************
- * gtk_widget_draw_children:
- *
- * arguments:
- *
- * results:
- *****************************************/
-
-void
-gtk_widget_draw_children (GtkWidget *widget)
-{
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- if (GTK_IS_CONTAINER (widget))
- gtk_container_forall (GTK_CONTAINER (widget),
- gtk_widget_draw_children_recurse,
- NULL);
-}
-
-/*****************************************
* gtk_widget_size_request:
*
* arguments:
@@ -3250,9 +3228,10 @@ gtk_widget_set_style_internal (GtkWidget *widget,
GtkStyle *previous_style;
if (GTK_WIDGET_REALIZED (widget))
- gtk_reset_widget_shapes(widget);
- if (GTK_WIDGET_REALIZED (widget))
- gtk_style_detach (widget->style);
+ {
+ gtk_widget_reset_shapes (widget);
+ gtk_style_detach (widget->style);
+ }
previous_style = widget->style;
widget->style = style;
@@ -3834,26 +3813,6 @@ gtk_widget_is_ancestor (GtkWidget *widget,
}
/*****************************************
- * gtk_widget_is_child:
- *
- * arguments:
- *
- * results:
- *****************************************/
-
-gint
-gtk_widget_is_child (GtkWidget *widget,
- GtkWidget *child)
-{
- g_return_val_if_fail (widget != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
- g_return_val_if_fail (child != NULL, FALSE);
- g_return_val_if_fail (GTK_IS_WIDGET (child), FALSE);
-
- return (child->parent == widget);
-}
-
-/*****************************************
* gtk_widget_push_colormap:
*
* arguments:
@@ -4432,22 +4391,6 @@ gtk_widget_propagate_state (GtkWidget *widget,
}
/*****************************************
- * gtk_widget_draw_children_recurse:
- *
- * arguments:
- *
- * results:
- *****************************************/
-
-static void
-gtk_widget_draw_children_recurse (GtkWidget *widget,
- gpointer client_data)
-{
- gtk_widget_draw (widget, NULL);
- gtk_widget_draw_children (widget);
-}
-
-/*****************************************
* gtk_widget_aux_info_new:
*
* arguments:
@@ -4548,6 +4491,38 @@ gtk_widget_shape_combine_mask (GtkWidget *widget,
}
}
+static void
+gtk_reset_shapes_recurse (GtkWidget *widget,
+ GdkWindow *window)
+{
+ GdkWindowPrivate *private;
+ gpointer data;
+ GList *list;
+
+ private = (GdkWindowPrivate*) window;
+
+ if (private->destroyed)
+ return;
+ gdk_window_get_user_data (window, &data);
+ if (data != widget)
+ return;
+
+ gdk_window_shape_combine_mask (window, NULL, 0, 0);
+ for (list = private->children; list; list = list->next)
+ gtk_reset_shapes_recurse (widget, list->data);
+}
+
+void
+gtk_widget_reset_shapes (GtkWidget *widget)
+{
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_if_fail (GTK_WIDGET_REALIZED (widget));
+
+ if (!GTK_WIDGET_HAS_SHAPE_MASK (widget))
+ gtk_reset_shapes_recurse (widget, widget->window);
+}
+
void
gtk_widget_ref (GtkWidget *widget)
{