forked from AuroraMiddleware/gtk
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:
parent
8e8e869853
commit
a5e7e72dd8
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user