[gnome-builder] cursors: clear highlight after pasting
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] cursors: clear highlight after pasting
- Date: Fri, 15 Jan 2021 22:11:03 +0000 (UTC)
commit 6a093300b3435193c6b10535e04d6411820daf11
Author: Christian Hergert <chergert redhat com>
Date: Fri Jan 15 14:10:55 2021 -0800
cursors: clear highlight after pasting
This fixes some issues when pasting with regards to highlights.
Related #451
src/libide/sourceview/ide-cursor.c | 17 +++++++++++++++++
src/libide/sourceview/ide-cursor.h | 1 +
src/libide/sourceview/ide-source-view.c | 3 +++
3 files changed, 21 insertions(+)
---
diff --git a/src/libide/sourceview/ide-cursor.c b/src/libide/sourceview/ide-cursor.c
index faa7411ba..02bf39060 100644
--- a/src/libide/sourceview/ide-cursor.c
+++ b/src/libide/sourceview/ide-cursor.c
@@ -207,6 +207,7 @@ ide_cursor_remove_cursors (IdeCursor *self)
if (self->cursors != NULL)
{
GtkTextBuffer *buffer;
+ GtkTextIter begin, end;
VirtualCursor *vc;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self->source_view));
@@ -224,6 +225,9 @@ ide_cursor_remove_cursors (IdeCursor *self)
}
g_clear_pointer (&self->cursors, g_list_free);
+
+ gtk_text_buffer_get_bounds (buffer, &begin, &end);
+ gtk_text_buffer_remove_tag (buffer, self->highlight_tag, &begin, &end);
}
}
@@ -855,3 +859,16 @@ ide_cursor_is_enabled (IdeCursor *self)
return (self->cursors != NULL);
}
+
+void
+ide_cursor_clear_highlight (IdeCursor *self)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter begin, end;
+
+ g_return_if_fail (IDE_IS_CURSOR (self));
+
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self->source_view));
+ gtk_text_buffer_get_bounds (buffer, &begin, &end);
+ gtk_text_buffer_remove_tag (buffer, self->highlight_tag, &begin, &end);
+}
diff --git a/src/libide/sourceview/ide-cursor.h b/src/libide/sourceview/ide-cursor.h
index 7c1e4e6dc..a8f7d5915 100644
--- a/src/libide/sourceview/ide-cursor.h
+++ b/src/libide/sourceview/ide-cursor.h
@@ -31,6 +31,7 @@ G_DECLARE_FINAL_TYPE (IdeCursor, ide_cursor, IDE, CURSOR, GObject)
void ide_cursor_add_cursor (IdeCursor *self,
guint type);
void ide_cursor_remove_cursors (IdeCursor *self);
+void ide_cursor_clear_highlight (IdeCursor *self);
void ide_cursor_insert_text (IdeCursor *self,
gchar *text,
gint len);
diff --git a/src/libide/sourceview/ide-source-view.c b/src/libide/sourceview/ide-source-view.c
index bb681664a..f7f38febd 100644
--- a/src/libide/sourceview/ide-source-view.c
+++ b/src/libide/sourceview/ide-source-view.c
@@ -3156,6 +3156,9 @@ ide_source_view_real_paste_clipboard_extended (IdeSourceView *self,
gtk_text_buffer_select_range (buffer, &iter, &iter);
gtk_text_buffer_end_user_action (buffer);
+
+ if (priv->cursor != NULL)
+ ide_cursor_clear_highlight (priv->cursor);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]