[gtksourceview/wip/chergert/indenter: 5/6] buffer: track number of insertions into buffer
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview/wip/chergert/indenter: 5/6] buffer: track number of insertions into buffer
- Date: Thu, 11 Mar 2021 18:31:28 +0000 (UTC)
commit 4739c20d913f6d7cbf98cda7c30cb0844ffcf43d
Author: Christian Hergert <chergert redhat com>
Date: Thu Mar 11 09:36:19 2021 -0800
buffer: track number of insertions into buffer
This can be used in other places to see if an operation caused an
insertion into the buffer. We may want to also check deletions in the
future but that should be done separately from this.
gtksourceview/gtksourcebuffer-private.h | 2 ++
gtksourceview/gtksourcebuffer.c | 19 +++++++++++++++++++
2 files changed, 21 insertions(+)
---
diff --git a/gtksourceview/gtksourcebuffer-private.h b/gtksourceview/gtksourcebuffer-private.h
index 15073c08..96558894 100644
--- a/gtksourceview/gtksourcebuffer-private.h
+++ b/gtksourceview/gtksourcebuffer-private.h
@@ -73,5 +73,7 @@ GTK_SOURCE_INTERNAL
gboolean _gtk_source_buffer_has_spaces_tag (GtkSourceBuffer *buffer);
GTK_SOURCE_INTERNAL
GtkTextTag *_gtk_source_buffer_get_snippet_focus_tag (GtkSourceBuffer *buffer);
+GTK_SOURCE_INTERNAL
+gint64 _gtk_source_buffer_get_insertion_count (GtkSourceBuffer *buffer);
G_END_DECLS
diff --git a/gtksourceview/gtksourcebuffer.c b/gtksourceview/gtksourcebuffer.c
index d5751870..4870c8ec 100644
--- a/gtksourceview/gtksourcebuffer.c
+++ b/gtksourceview/gtksourcebuffer.c
@@ -160,6 +160,8 @@ typedef struct
GtkTextTag *invalid_char_tag;
+ gint64 insertion_count;
+
guint has_draw_spaces_tag : 1;
guint highlight_syntax : 1;
guint highlight_brackets : 1;
@@ -1054,6 +1056,8 @@ gtk_source_buffer_real_insert_text (GtkTextBuffer *buffer,
const gchar *text,
gint len)
{
+ GtkSourceBuffer *source_buffer = (GtkSourceBuffer *)buffer;
+ GtkSourceBufferPrivate *priv = gtk_source_buffer_get_instance_private (source_buffer);
gint start_offset;
g_return_if_fail (GTK_SOURCE_IS_BUFFER (buffer));
@@ -1070,6 +1074,11 @@ gtk_source_buffer_real_insert_text (GtkTextBuffer *buffer,
*/
GTK_TEXT_BUFFER_CLASS (gtk_source_buffer_parent_class)->insert_text (buffer, iter, text, len);
+ if (len > 0)
+ {
+ priv->insertion_count++;
+ }
+
gtk_source_buffer_content_inserted (buffer,
start_offset,
gtk_text_iter_get_offset (iter));
@@ -3051,3 +3060,13 @@ _gtk_source_buffer_has_spaces_tag (GtkSourceBuffer *buffer)
return priv->has_draw_spaces_tag;
}
+
+gint64
+_gtk_source_buffer_get_insertion_count (GtkSourceBuffer *buffer)
+{
+ GtkSourceBufferPrivate *priv = gtk_source_buffer_get_instance_private (buffer);
+
+ g_return_val_if_fail (GTK_SOURCE_IS_BUFFER (buffer), FALSE);
+
+ return priv->insertion_count;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]