[gtksourceview] vim: handle setting NULL client-widget on GtkIMContext
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] vim: handle setting NULL client-widget on GtkIMContext
- Date: Tue, 5 Apr 2022 17:43:11 +0000 (UTC)
commit fa276ba7458403a6b55463fe791311590c928e43
Author: Christian Hergert <chergert redhat com>
Date: Tue Apr 5 10:43:02 2022 -0700
vim: handle setting NULL client-widget on GtkIMContext
gtksourceview/gtksourcevimimcontext.c | 64 +++++++++++++++++++----------------
1 file changed, 34 insertions(+), 30 deletions(-)
---
diff --git a/gtksourceview/gtksourcevimimcontext.c b/gtksourceview/gtksourcevimimcontext.c
index b9754ac2..c7569bf8 100644
--- a/gtksourceview/gtksourcevimimcontext.c
+++ b/gtksourceview/gtksourcevimimcontext.c
@@ -243,38 +243,42 @@ gtk_source_vim_im_context_set_client_widget (GtkIMContext *context,
GtkSourceVimIMContext *self = (GtkSourceVimIMContext *)context;
g_return_if_fail (GTK_SOURCE_IS_VIM_IM_CONTEXT (self));
+ g_return_if_fail (!widget || GTK_SOURCE_IS_VIEW (widget));
if (self->vim != NULL)
- {
- g_object_run_dispose (G_OBJECT (self->vim));
- g_clear_object (&self->vim);
- }
-
- self->vim = gtk_source_vim_new (GTK_SOURCE_VIEW (widget));
-
- g_signal_connect_object (self->vim,
- "notify",
- G_CALLBACK (on_vim_notify_cb),
- self,
- G_CONNECT_SWAPPED);
-
- g_signal_connect_object (self->vim,
- "execute-command",
- G_CALLBACK (on_vim_execute_command_cb),
- self,
- G_CONNECT_SWAPPED);
-
- g_signal_connect_object (self->vim,
- "format",
- G_CALLBACK (on_vim_format_cb),
- self,
- G_CONNECT_SWAPPED);
-
- g_signal_connect_object (self->vim,
- "ready",
- G_CALLBACK (on_vim_ready_cb),
- self,
- G_CONNECT_SWAPPED);
+ {
+ g_object_run_dispose (G_OBJECT (self->vim));
+ g_clear_object (&self->vim);
+ }
+
+ if (widget != NULL)
+ {
+ self->vim = gtk_source_vim_new (GTK_SOURCE_VIEW (widget));
+
+ g_signal_connect_object (self->vim,
+ "notify",
+ G_CALLBACK (on_vim_notify_cb),
+ self,
+ G_CONNECT_SWAPPED);
+
+ g_signal_connect_object (self->vim,
+ "execute-command",
+ G_CALLBACK (on_vim_execute_command_cb),
+ self,
+ G_CONNECT_SWAPPED);
+
+ g_signal_connect_object (self->vim,
+ "format",
+ G_CALLBACK (on_vim_format_cb),
+ self,
+ G_CONNECT_SWAPPED);
+
+ g_signal_connect_object (self->vim,
+ "ready",
+ G_CALLBACK (on_vim_ready_cb),
+ self,
+ G_CONNECT_SWAPPED);
+ }
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COMMAND_TEXT]);
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_COMMAND_BAR_TEXT]);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]