diff options
author | Timm Bäder <mail@baedert.org> | 2019-01-11 17:46:12 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2019-01-11 17:46:12 +0100 |
commit | 563b80d43491223aed3512c31eaa8e069ea3c076 (patch) | |
tree | 491200b9d40ab6fa20135ed18fb06b024c54733b /gtk/gtklabel.c | |
parent | f4f0f0e6a0488146518266e20d07eb37aeb9b558 (diff) | |
download | gtk+-563b80d43491223aed3512c31eaa8e069ea3c076.tar.gz |
label: Skip updating link state if we have no layout
This can happen whenever the ::activate-link handler sets different
markup on the label, causing all links to be recreated. In this case,
the GtkLabelLink* passed to emit_activate_link is garbage after the
g_signal_emit call and we shouldn't try to do anything with it.
Fixes #1498
Diffstat (limited to 'gtk/gtklabel.c')
-rw-r--r-- | gtk/gtklabel.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index 7ca9ad7cf3..1d4223aada 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -6173,6 +6173,11 @@ emit_activate_link (GtkLabel *label, GtkStateFlags state; g_signal_emit (label, signals[ACTIVATE_LINK], 0, link->uri, &handled); + + /* signal handler might have invalidated the layout */ + if (!priv->layout) + return; + if (handled && priv->track_links && !link->visited && priv->select_info && priv->select_info->links) { |