diff options
-rw-r--r-- | docs/reference/gdk/gdk3-sections.txt | 2 | ||||
-rw-r--r-- | gdk/gdk.symbols | 2 | ||||
-rw-r--r-- | gdk/gdkinternals.h | 2 | ||||
-rw-r--r-- | gdk/gdkwindow.c | 285 | ||||
-rw-r--r-- | gdk/gdkwindow.h | 10 | ||||
-rw-r--r-- | gdk/gdkwindowimpl.h | 17 |
6 files changed, 1 insertions, 317 deletions
diff --git a/docs/reference/gdk/gdk3-sections.txt b/docs/reference/gdk/gdk3-sections.txt index 63665958bd..1b0fcaa019 100644 --- a/docs/reference/gdk/gdk3-sections.txt +++ b/docs/reference/gdk/gdk3-sections.txt @@ -535,8 +535,6 @@ gdk_offscreen_window_get_pixmap gdk_offscreen_window_set_embedder gdk_offscreen_window_get_embedder gdk_window_geometry_changed -gdk_window_redirect_to_drawable -gdk_window_remove_redirection gdk_window_coords_from_parent gdk_window_coords_to_parent gdk_window_get_effective_parent diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols index 946304c729..7a9e959774 100644 --- a/gdk/gdk.symbols +++ b/gdk/gdk.symbols @@ -647,9 +647,7 @@ gdk_window_object_get_type G_GNUC_CONST gdk_window_peek_children gdk_window_process_all_updates gdk_window_process_updates -gdk_window_redirect_to_drawable gdk_window_remove_filter -gdk_window_remove_redirection gdk_window_set_debug_updates gdk_window_set_user_data gdk_window_thaw_toplevel_updates_libgtk_only diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index 1722fc1ed9..9c3b9994fe 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -232,8 +232,6 @@ struct _GdkWindowObject guint update_and_descendants_freeze_count; - GdkWindowRedirect *redirect; - /* The GdkWindowObject that has the impl, ref:ed if another window. * This ref is required to keep the wrapper of the impl window alive * for as long as any GdkWindow references the impl. */ diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index b14bd63131..6315697b57 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -260,11 +260,6 @@ static void gdk_window_get_property (GObject *object, static void gdk_window_clear_backing_region (GdkWindow *window, cairo_region_t *region); -static void gdk_window_redirect_free (GdkWindowRedirect *redirect); -static void apply_redirect_to_children (GdkWindowObject *private, - GdkWindowRedirect *redirect); -static void remove_redirect_from_children (GdkWindowObject *private, - GdkWindowRedirect *redirect); static void recompute_visible_regions (GdkWindowObject *private, gboolean recalculate_siblings, @@ -1454,12 +1449,6 @@ gdk_window_new (GdkWindow *parent, recompute_visible_regions (private, TRUE, FALSE); - if (private->parent->window_type != GDK_WINDOW_ROOT) - { - /* Inherit redirection from parent */ - private->redirect = private->parent->redirect; - } - gdk_window_set_cursor (window, ((attributes_mask & GDK_WA_CURSOR) ? (attributes->cursor) : NULL)); @@ -1608,13 +1597,6 @@ gdk_window_reparent (GdkWindow *window, impl_iface = GDK_WINDOW_IMPL_GET_IFACE (private->impl); old_parent = private->parent; - /* Break up redirection if inherited */ - if (private->redirect && private->redirect->redirected != private) - { - remove_redirect_from_children (private, private->redirect); - private->redirect = NULL; - } - was_mapped = GDK_WINDOW_IS_MAPPED (window); show = FALSE; @@ -1702,13 +1684,6 @@ gdk_window_reparent (GdkWindow *window, impl_iface->set_events (window, native_event_mask); } - /* Inherit parent redirect if we don't have our own */ - if (private->parent && private->redirect == NULL) - { - private->redirect = private->parent->redirect; - apply_redirect_to_children (private, private->redirect); - } - _gdk_window_update_viewable (window); recompute_visible_regions (private, TRUE, FALSE); @@ -2106,12 +2081,6 @@ _gdk_window_destroy_hierarchy (GdkWindow *window, gdk_drawable_set_colormap (GDK_DRAWABLE (window), NULL); - /* If we own the redirect, free it */ - if (private->redirect && private->redirect->redirected == private) - gdk_window_redirect_free (private->redirect); - - private->redirect = NULL; - window_remove_from_pointer_info (window, display); if (private->clip_region) @@ -3002,46 +2971,6 @@ gdk_window_begin_paint_region (GdkWindow *window, #endif /* USE_BACKING_STORE */ } -static cairo_region_t * -setup_redirect_clip (GdkWindow *window, - int *x_offset_out, - int *y_offset_out) -{ - GdkWindowObject *private = (GdkWindowObject *)window; - cairo_region_t *visible_region; - GdkRectangle dest_rect; - GdkWindow *toplevel; - int x_offset, y_offset; - - toplevel = GDK_WINDOW (private->redirect->redirected); - - /* Get the clip region for gc clip rect + window hierarchy in - window relative coords */ - visible_region = - _gdk_window_calculate_full_clip_region (window, toplevel, - TRUE, - &x_offset, - &y_offset); - - /* Compensate for the source pos/size */ - x_offset -= private->redirect->src_x; - y_offset -= private->redirect->src_y; - dest_rect.x = -x_offset; - dest_rect.y = -y_offset; - dest_rect.width = private->redirect->width; - dest_rect.height = private->redirect->height; - cairo_region_intersect_rectangle (visible_region, &dest_rect); - - /* Compensate for the dest pos */ - x_offset += private->redirect->dest_x; - y_offset += private->redirect->dest_y; - - *x_offset_out = x_offset; - *y_offset_out = y_offset; - - return visible_region; -} - /** * gdk_window_end_paint: * @window: a #GdkWindow @@ -3111,26 +3040,6 @@ gdk_window_end_paint (GdkWindow *window) cairo_region_destroy (full_clip); } - if (private->redirect) - { - int x_offset, y_offset; - cairo_region_t *region; - cairo_t *cr; - - /* TODO: Should also use paint->region for clipping */ - region = setup_redirect_clip (window, &x_offset, &y_offset); - - cr = gdk_cairo_create (private->redirect->pixmap); - - cairo_translate (cr, x_offset, y_offset); - gdk_cairo_set_source_pixmap (cr, paint->pixmap, 0, 0); - gdk_cairo_region (cr, region); - cairo_fill (cr); - - cairo_destroy (cr); - cairo_region_destroy (region); - } - cairo_surface_destroy (paint->surface); g_object_unref (paint->pixmap); cairo_region_destroy (paint->region); @@ -3707,49 +3616,6 @@ gdk_window_clear_backing_region (GdkWindow *window, } static void -gdk_window_clear_backing_region_redirect (GdkWindow *window, - cairo_region_t *region) -{ - GdkWindowObject *private = (GdkWindowObject *)window; - GdkWindowRedirect *redirect = private->redirect; - cairo_region_t *clip_region; - gint x_offset, y_offset; - GdkWindowPaint paint; - cairo_t *cr; - - if (GDK_WINDOW_DESTROYED (window)) - return; - - clip_region = _gdk_window_calculate_full_clip_region (window, - GDK_WINDOW (redirect->redirected), - TRUE, - &x_offset, &y_offset); - cairo_region_intersect (clip_region, region); - - /* offset is from redirected window origin to window origin, convert to - the offset from the redirected pixmap origin to the window origin */ - x_offset += redirect->dest_x - redirect->src_x; - y_offset += redirect->dest_y - redirect->src_y; - - /* Convert region to pixmap coords */ - cairo_region_translate (clip_region, x_offset, y_offset); - - paint.x_offset = 0; - paint.y_offset = 0; - paint.pixmap = redirect->pixmap; - paint.surface = _gdk_drawable_ref_cairo_surface (redirect->pixmap); - - cr = setup_backing_rect (window, &paint, -x_offset, -y_offset); - - gdk_cairo_region (cr, clip_region); - cairo_fill (cr); - - cairo_destroy (cr); - cairo_region_destroy (clip_region); - cairo_surface_destroy (paint.surface); -} - -static void gdk_window_clear_backing_region_direct (GdkWindow *window, cairo_region_t *region) { @@ -3811,12 +3677,7 @@ gdk_window_clear_region_internal (GdkWindow *window, if (private->paint_stack) gdk_window_clear_backing_region (window, region); else - { - if (private->redirect) - gdk_window_clear_backing_region_redirect (window, region); - - gdk_window_clear_backing_region_direct (window, region); - } + gdk_window_clear_backing_region_direct (window, region); } /** @@ -7932,54 +7793,6 @@ gdk_window_set_composited (GdkWindow *window, private->composited = composited; } - -static void -remove_redirect_from_children (GdkWindowObject *private, - GdkWindowRedirect *redirect) -{ - GList *l; - GdkWindowObject *child; - - for (l = private->children; l != NULL; l = l->next) - { - child = l->data; - - /* Don't redirect this child if it already has another redirect */ - if (child->redirect == redirect) - { - child->redirect = NULL; - remove_redirect_from_children (child, redirect); - } - } -} - -/** - * gdk_window_remove_redirection: - * @window: a #GdkWindow - * - * Removes any active redirection started by - * gdk_window_redirect_to_drawable(). - * - * Since: 2.14 - **/ -void -gdk_window_remove_redirection (GdkWindow *window) -{ - GdkWindowObject *private; - - g_return_if_fail (GDK_IS_WINDOW (window)); - - private = (GdkWindowObject *) window; - - if (private->redirect && - private->redirect->redirected == private) - { - remove_redirect_from_children (private, private->redirect); - gdk_window_redirect_free (private->redirect); - private->redirect = NULL; - } -} - /** * gdk_window_get_modal_hint: * @window: A toplevel #GdkWindow. @@ -8095,95 +7908,6 @@ gdk_window_is_shaped (GdkWindow *window) } static void -apply_redirect_to_children (GdkWindowObject *private, - GdkWindowRedirect *redirect) -{ - GList *l; - GdkWindowObject *child; - - for (l = private->children; l != NULL; l = l->next) - { - child = l->data; - - /* Don't redirect this child if it already has another redirect */ - if (!child->redirect) - { - child->redirect = redirect; - apply_redirect_to_children (child, redirect); - } - } -} - -/** - * gdk_window_redirect_to_drawable: - * @window: a #GdkWindow - * @drawable: a #GdkDrawable - * @src_x: x position in @window - * @src_y: y position in @window - * @dest_x: x position in @drawable - * @dest_y: y position in @drawable - * @width: width of redirection, or -1 to use the width of @window - * @height: height of redirection or -1 to use the height of @window - * - * Redirects drawing into @window so that drawing to the - * window in the rectangle specified by @src_x, @src_y, - * @width and @height is also drawn into @drawable at - * @dest_x, @dest_y. - * - * Only drawing between gdk_window_begin_paint_region() or - * gdk_window_begin_paint_rect() and gdk_window_end_paint() is - * redirected. - * - * Redirection is active until gdk_window_remove_redirection() - * is called. - * - * Since: 2.14 - **/ -void -gdk_window_redirect_to_drawable (GdkWindow *window, - GdkDrawable *drawable, - gint src_x, - gint src_y, - gint dest_x, - gint dest_y, - gint width, - gint height) -{ - GdkWindowObject *private; - - g_return_if_fail (GDK_IS_WINDOW (window)); - g_return_if_fail (GDK_IS_DRAWABLE (drawable)); - g_return_if_fail (GDK_WINDOW_TYPE (window) != GDK_WINDOW_ROOT); - - private = (GdkWindowObject *) window; - - if (private->redirect) - gdk_window_remove_redirection (window); - - if (width == -1 || height == -1) - { - gint w, h; - gdk_drawable_get_size (GDK_DRAWABLE (window), &w, &h); - if (width == -1) - width = w; - if (height == -1) - height = h; - } - - private->redirect = g_new0 (GdkWindowRedirect, 1); - private->redirect->redirected = private; - private->redirect->pixmap = g_object_ref (drawable); - private->redirect->src_x = src_x; - private->redirect->src_y = src_y; - private->redirect->dest_x = dest_x; - private->redirect->dest_y = dest_y; - private->redirect->width = width; - private->redirect->height = height; - - apply_redirect_to_children (private, private->redirect); -} - -static void window_get_size_rectangle (GdkWindow *window, GdkRectangle *rect) { @@ -8310,13 +8034,6 @@ _gdk_window_add_damage (GdkWindow *toplevel, _gdk_event_queue_append (display, gdk_event_copy (&event)); } -static void -gdk_window_redirect_free (GdkWindowRedirect *redirect) -{ - g_object_unref (redirect->pixmap); - g_free (redirect); -} - /* Gets the toplevel for a window as used for events, i.e. including offscreen parents */ static GdkWindowObject * diff --git a/gdk/gdkwindow.h b/gdk/gdkwindow.h index 0aa4cbc423..540bcd3fdc 100644 --- a/gdk/gdkwindow.h +++ b/gdk/gdkwindow.h @@ -857,16 +857,6 @@ void gdk_offscreen_window_set_embedder (GdkWindow *window, GdkWindow *gdk_offscreen_window_get_embedder (GdkWindow *window); void gdk_window_geometry_changed (GdkWindow *window); -void gdk_window_redirect_to_drawable (GdkWindow *window, - GdkDrawable *drawable, - gint src_x, - gint src_y, - gint dest_x, - gint dest_y, - gint width, - gint height); -void gdk_window_remove_redirection (GdkWindow *window); - /* Multidevice support */ void gdk_window_set_support_multidevice (GdkWindow *window, gboolean support_multidevice); diff --git a/gdk/gdkwindowimpl.h b/gdk/gdkwindowimpl.h index 05e9da43c8..a39ed3793d 100644 --- a/gdk/gdkwindowimpl.h +++ b/gdk/gdkwindowimpl.h @@ -146,23 +146,6 @@ struct _GdkWindowImplIface /* Interface Functions */ GType gdk_window_impl_get_type (void) G_GNUC_CONST; -/* private definitions from gdkwindow.h */ - -struct _GdkWindowRedirect -{ - GdkWindowObject *redirected; - GdkDrawable *pixmap; - - gint src_x; - gint src_y; - gint dest_x; - gint dest_y; - gint width; - gint height; - - cairo_region_t *damage; - guint damage_idle; -}; G_END_DECLS |