summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hergert <chergert@redhat.com>2022-04-28 21:23:49 -0700
committerChristian Hergert <chergert@redhat.com>2022-06-12 10:22:37 -0700
commit49eb43b88b46777c266fcb8aaaffebb073000f2a (patch)
tree2eb9db1ccfc6c5f5ac81c5ee0af0335269df5d28
parentf53941b3cf90cbf8983a82136360b4683be601db (diff)
downloadgtksourceview-49eb43b88b46777c266fcb8aaaffebb073000f2a.tar.gz
gutterrenderer: allow opting out of query_data
That callback is not necessarily needed in many cases and will cause signal emission (for better compatibility with older GtkSourceView). So check for NULL and skip that in the hot path for cases where we know it won't be used such as some high-priority subclasses.
-rw-r--r--gtksourceview/gtksourcegutterrenderer.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/gtksourceview/gtksourcegutterrenderer.c b/gtksourceview/gtksourcegutterrenderer.c
index a7a253f0..034ed302 100644
--- a/gtksourceview/gtksourcegutterrenderer.c
+++ b/gtksourceview/gtksourcegutterrenderer.c
@@ -192,12 +192,22 @@ gtk_source_gutter_renderer_snapshot (GtkWidget *widget,
first = gtk_source_gutter_lines_get_first (lines);
last = gtk_source_gutter_lines_get_last (lines);
- for (line = first; line <= last; line++)
+ if (klass->query_data)
{
- gtk_source_gutter_lines_get_line_yrange (lines, line, mode, &y, &h);
-
- klass->query_data (renderer, lines, line);
- klass->snapshot_line (renderer, snapshot, lines, line);
+ for (line = first; line <= last; line++)
+ {
+ gtk_source_gutter_lines_get_line_yrange (lines, line, mode, &y, &h);
+ klass->query_data (renderer, lines, line);
+ klass->snapshot_line (renderer, snapshot, lines, line);
+ }
+ }
+ else
+ {
+ for (line = first; line <= last; line++)
+ {
+ gtk_source_gutter_lines_get_line_yrange (lines, line, mode, &y, &h);
+ klass->snapshot_line (renderer, snapshot, lines, line);
+ }
}
}