summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkblockdisplay.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gtkext/gtkblockdisplay.c')
-rw-r--r--src/gtkext/gtkblockdisplay.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/gtkext/gtkblockdisplay.c b/src/gtkext/gtkblockdisplay.c
index 92c445b..c8d12ea 100644
--- a/src/gtkext/gtkblockdisplay.c
+++ b/src/gtkext/gtkblockdisplay.c
@@ -171,6 +171,21 @@ static void gtk_block_display_init(GtkBlockDisplay *display)
static void gtk_block_display_dispose(GtkBlockDisplay *display)
{
+ GBufferView *view; /* Vue sur du texte */
+
+ /**
+ * Même si à priori, la vue est propre au composant, on coupe le signal
+ * afin qu'une émission d'une instance de vue toujours active ne renvoie pas
+ * en paramètre un composant d'affichage libéré.
+ */
+
+ view = GTK_BUFFER_DISPLAY(display)->view;
+
+ if (view != NULL)
+ g_signal_handlers_disconnect_by_func(G_OBJECT(view),
+ G_CALLBACK(gtk_block_display_need_redraw),
+ display);
+
G_OBJECT_CLASS(gtk_block_display_parent_class)->dispose(G_OBJECT(display));
}
@@ -209,7 +224,7 @@ static void gtk_block_display_finalize(GtkBlockDisplay *display)
GtkWidget *gtk_block_display_new(GBufferView *view)
{
- GtkBlockDisplay *result; /* Composant à retourner */
+ GtkBlockDisplay *result; /* Composant à retourner */
result = g_object_new(GTK_TYPE_BLOCK_DISPLAY, NULL);