inspector: Fix overlay coordinates
Get the native transform only once, for all overlays. Unfortunately we have to undo this for the updates overlay since that one gets values in surface coordinates.
This commit is contained in:
@@ -49,7 +49,6 @@ gtk_focus_overlay_snapshot (GtkInspectorOverlay *overlay,
|
||||
GtkFocusOverlay *self = GTK_FOCUS_OVERLAY (overlay);
|
||||
GtkWidget *focus;
|
||||
graphene_rect_t bounds;
|
||||
double nx, ny;
|
||||
|
||||
if (!GTK_IS_NATIVE (widget))
|
||||
return;
|
||||
@@ -67,10 +66,6 @@ gtk_focus_overlay_snapshot (GtkInspectorOverlay *overlay,
|
||||
if (!gtk_widget_compute_bounds (focus, widget, &bounds))
|
||||
return;
|
||||
|
||||
gtk_native_get_surface_transform (GTK_NATIVE (widget), &nx, &ny);
|
||||
bounds.origin.x += nx;
|
||||
bounds.origin.y += ny;
|
||||
|
||||
gtk_snapshot_append_color (snapshot, &self->color, &bounds);
|
||||
}
|
||||
|
||||
|
||||
@@ -172,6 +172,14 @@ gtk_updates_overlay_snapshot (GtkInspectorOverlay *overlay,
|
||||
GtkUpdate *draw;
|
||||
gint64 now;
|
||||
GList *l;
|
||||
double native_x, native_y;
|
||||
|
||||
if (!GTK_IS_NATIVE (widget))
|
||||
return;
|
||||
|
||||
/* The coordinates we're getting from GdkSurface API are in GdkSurface coordinate spaces,
|
||||
* but we're snapshotting in widget space, so we need to transform */
|
||||
gtk_native_get_surface_transform (GTK_NATIVE (widget), &native_x, &native_y);
|
||||
|
||||
updates = gtk_update_overlay_lookup_for_widget (self, widget, TRUE);
|
||||
now = gdk_frame_clock_get_frame_time (gtk_widget_get_frame_clock (widget));
|
||||
@@ -226,7 +234,8 @@ gtk_updates_overlay_snapshot (GtkInspectorOverlay *overlay,
|
||||
cairo_region_get_rectangle (draw->region, i, &rect);
|
||||
gtk_snapshot_append_color (snapshot,
|
||||
&(GdkRGBA) { 1, 0, 0, 0.4 * (1 - progress) },
|
||||
&GRAPHENE_RECT_INIT(rect.x, rect.y, rect.width, rect.height));
|
||||
&GRAPHENE_RECT_INIT(rect.x - native_x, rect.y - native_y,
|
||||
rect.width, rect.height));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -605,12 +605,15 @@ gtk_inspector_prepare_render (GtkWidget *widget,
|
||||
{
|
||||
GtkSnapshot *snapshot;
|
||||
GList *l;
|
||||
double native_x, native_y;
|
||||
|
||||
snapshot = gtk_snapshot_new ();
|
||||
gtk_snapshot_append_node (snapshot, node);
|
||||
|
||||
gtk_native_get_surface_transform (GTK_NATIVE (widget), &native_x, &native_y);
|
||||
|
||||
gtk_snapshot_save (snapshot);
|
||||
gtk_snapshot_transform (snapshot, gtk_widget_get_transform (widget));
|
||||
gtk_snapshot_translate (snapshot, &(graphene_point_t) { native_x, native_y });
|
||||
|
||||
for (l = iw->overlays; l; l = l->next)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user