[gnome-builder] sourceview: disable some features with multiple-cursors
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] sourceview: disable some features with multiple-cursors
- Date: Mon, 27 May 2019 19:17:43 +0000 (UTC)
commit 1a6c2ddbcf71e174ca7ac2c1b69d093481e937e3
Author: Christian Hergert <chergert redhat com>
Date: Mon May 27 12:16:53 2019 -0700
sourceview: disable some features with multiple-cursors
If we have multiple cursors present, we need to disable some features so
that we are in a consistent state to handle input.
Fixes #926
src/libide/sourceview/ide-completion.c | 3 +++
src/libide/sourceview/ide-source-view-private.h | 1 +
src/libide/sourceview/ide-source-view.c | 17 ++++++++++++++++-
3 files changed, 20 insertions(+), 1 deletion(-)
---
diff --git a/src/libide/sourceview/ide-completion.c b/src/libide/sourceview/ide-completion.c
index 5b9e5dce0..bba99a056 100644
--- a/src/libide/sourceview/ide-completion.c
+++ b/src/libide/sourceview/ide-completion.c
@@ -42,6 +42,8 @@
#include "ide-completion-proposal.h"
#include "ide-completion-provider.h"
+#include "ide-source-view-private.h"
+
#define DEFAULT_N_ROWS 5
struct _IdeCompletion
@@ -187,6 +189,7 @@ ide_completion_is_blocked (IdeCompletion *self)
!(buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self->view))) ||
gtk_text_buffer_get_has_selection (buffer) ||
!GTK_SOURCE_IS_VIEW (self->view) ||
+ _ide_source_view_has_cursors (IDE_SOURCE_VIEW (self->view)) ||
!ide_source_view_is_processing_key (IDE_SOURCE_VIEW (self->view));
}
diff --git a/src/libide/sourceview/ide-source-view-private.h b/src/libide/sourceview/ide-source-view-private.h
index 00e038a31..be43dc9ac 100644
--- a/src/libide/sourceview/ide-source-view-private.h
+++ b/src/libide/sourceview/ide-source-view-private.h
@@ -32,5 +32,6 @@ void _ide_source_view_set_modifier (IdeSourceView *self,
gunichar modifier);
GtkTextMark *_ide_source_view_get_scroll_mark (IdeSourceView *self);
void _ide_source_view_clear_saved_mark (IdeSourceView *self);
+gboolean _ide_source_view_has_cursors (IdeSourceView *self);
G_END_DECLS
diff --git a/src/libide/sourceview/ide-source-view.c b/src/libide/sourceview/ide-source-view.c
index 011aa7644..3228a9c8b 100644
--- a/src/libide/sourceview/ide-source-view.c
+++ b/src/libide/sourceview/ide-source-view.c
@@ -1543,6 +1543,9 @@ ide_source_view_maybe_insert_match (IdeSourceView *self,
g_assert (IDE_IS_SOURCE_VIEW (self));
g_assert (event);
+ if (priv->cursor != NULL && ide_cursor_is_enabled (priv->cursor))
+ return FALSE;
+
/*
* If we are disabled, then do nothing.
*/
@@ -2129,7 +2132,9 @@ ide_source_view_key_press_event (GtkWidget *widget,
* chain up to the parent class to insert the character, and then let the
* auto-indenter fix things up.
*/
- if (priv->buffer != NULL && priv->auto_indent)
+ if (priv->buffer != NULL &&
+ priv->auto_indent &&
+ (priv->cursor == NULL || !ide_cursor_is_enabled (priv->cursor)))
{
IdeIndenter *indenter = ide_source_view_get_indenter (self);
@@ -7900,3 +7905,13 @@ ide_source_view_set_gutter (IdeSourceView *self,
g_object_notify (G_OBJECT (self), "show-line-diagnostics");
g_object_notify (G_OBJECT (self), "show-line-numbers");
}
+
+gboolean
+_ide_source_view_has_cursors (IdeSourceView *self)
+{
+ IdeSourceViewPrivate *priv = ide_source_view_get_instance_private (self);
+
+ g_return_val_if_fail (IDE_IS_SOURCE_VIEW (self), FALSE);
+
+ return priv->cursor != NULL && ide_cursor_is_enabled (priv->cursor);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]