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
This commit is contained in:
committed by
Matthias Clasen
parent
86d38e6ae2
commit
bfe0f7dd4d
@ -6755,6 +6755,11 @@ emit_activate_link (GtkLabel *label,
|
|||||||
GtkStateFlags state;
|
GtkStateFlags state;
|
||||||
|
|
||||||
g_signal_emit (label, signals[ACTIVATE_LINK], 0, link->uri, &handled);
|
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 &&
|
if (handled && priv->track_links && !link->visited &&
|
||||||
priv->select_info && priv->select_info->links)
|
priv->select_info && priv->select_info->links)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user