diff options
author | Christian Hergert <chergert@redhat.com> | 2022-04-28 21:23:49 -0700 |
---|---|---|
committer | Christian Hergert <chergert@redhat.com> | 2022-06-12 10:22:37 -0700 |
commit | 49eb43b88b46777c266fcb8aaaffebb073000f2a (patch) | |
tree | 2eb9db1ccfc6c5f5ac81c5ee0af0335269df5d28 | |
parent | f53941b3cf90cbf8983a82136360b4683be601db (diff) | |
download | gtksourceview-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.c | 20 |
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); + } } } |