GNOME Bugzilla – Bug 757856
Fix coordinate space for GtkTextView layers
Last modified: 2015-11-10 07:41:28 UTC
This is currently weird, as manifested by the widget factory demo being broken.
Created attachment 315156 [details] [review] TextView: Use saner coordinate space in draw_layer. When I added the draw_layer vfunc it accidentally got passed a cairo_t that was configured with to draw in the viewport coordinate space (rather than the buffer coordinate space). This makes things unnecessary complex, because you have to convert between the two. The pixel cache is shared between the text and the layers, so there is no way to use draw_layer to get a stationary overlay effect. Thus it makes much more sense for the draw_layer vfunc to draw in the buffer space. Just changing this would break ABI for existing code, so this is fixed by adding new layer types and deprecating the old ones. Also, we use the new layer types to fix gtk3-widget-factory.
I like this better. Would be good if the docs said something about coordinates
Created attachment 315172 [details] [review] TextView: Use saner coordinate space in draw_layer. When I added the draw_layer vfunc it accidentally got passed a cairo_t that was configured with to draw in the viewport coordinate space (rather than the buffer coordinate space). This makes things unnecessary complex, because you have to convert between the two. The pixel cache is shared between the text and the layers, so there is no way to use draw_layer to get a stationary overlay effect. Thus it makes much more sense for the draw_layer vfunc to draw in the buffer space. Just changing this would break ABI for existing code, so this is fixed by adding new layer types and deprecating the old ones. Also, we use the new layer types to fix gtk3-widget-factory.
Attachment 315172 [details] pushed as 0af4576 - TextView: Use saner coordinate space in draw_layer.