[gtk/ebassi/for-master: 2/2] a11y: Check before disconnecting Text signals
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/ebassi/for-master: 2/2] a11y: Check before disconnecting Text signals
- Date: Wed, 25 Nov 2020 18:17:16 +0000 (UTC)
commit 16b5a880978c66a254c8bd8a71c3e64b596abce2
Author: Emmanuele Bassi <ebassi gnome org>
Date: Wed Nov 25 18:15:04 2020 +0000
a11y: Check before disconnecting Text signals
Use the same initial check for the accessible object type that we use
when connecting the signal, in case we try to disconnect signals on
different widgets. Additionally, check before accessing data that might
have already been removed.
Fixes: #3403
gtk/a11y/gtkatspitext.c | 8 ++++++++
1 file changed, 8 insertions(+)
---
diff --git a/gtk/a11y/gtkatspitext.c b/gtk/a11y/gtkatspitext.c
index 6c6fd79a46..7cf08fdf06 100644
--- a/gtk/a11y/gtkatspitext.c
+++ b/gtk/a11y/gtkatspitext.c
@@ -1526,9 +1526,15 @@ gtk_atspi_connect_text_signals (GtkAccessible *accessible,
void
gtk_atspi_disconnect_text_signals (GtkAccessible *accessible)
{
+ if (!GTK_IS_EDITABLE (accessible) &&
+ !GTK_IS_TEXT_VIEW (accessible))
+ return;
+
TextChanged *changed;
changed = g_object_get_data (G_OBJECT (accessible), "accessible-text-data");
+ if (changed == NULL)
+ return;
if (GTK_IS_EDITABLE (accessible))
{
@@ -1544,6 +1550,7 @@ gtk_atspi_disconnect_text_signals (GtkAccessible *accessible)
else if (GTK_IS_TEXT_VIEW (accessible))
{
g_signal_handlers_disconnect_by_func (accessible, buffer_changed, changed);
+
if (changed->buffer)
{
g_signal_handlers_disconnect_by_func (changed->buffer, insert_range_cb, changed);
@@ -1551,6 +1558,7 @@ gtk_atspi_disconnect_text_signals (GtkAccessible *accessible)
g_signal_handlers_disconnect_by_func (changed->buffer, delete_range_after_cb, changed);
g_signal_handlers_disconnect_by_func (changed->buffer, mark_set_cb, changed);
}
+
g_clear_object (&changed->buffer);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]