diff options
author | Owen Taylor <otaylor@redhat.com> | 2002-09-30 20:02:00 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2002-09-30 20:02:00 +0000 |
commit | d1d235adcb34fc340bf59be149142880180eb151 (patch) | |
tree | 431fe072edbd7841f038a06996fca6f9d8e63ec4 /gtk/gtklabel.c | |
parent | ee6acce7694ca86114deb8e3f17ad30d754de383 (diff) | |
download | gtk+-d1d235adcb34fc340bf59be149142880180eb151.tar.gz |
Make the reference to the mnemonic widget weak. (#93334, Murray Cumming)
Mon Sep 30 15:45:49 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtklabel.c (gtk_label_set_mnemonic_widget):
Make the reference to the mnemonic widget weak.
(#93334, Murray Cumming)
Diffstat (limited to 'gtk/gtklabel.c')
-rw-r--r-- | gtk/gtklabel.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index db2d04ac78..0ca6237c5c 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -718,6 +718,15 @@ gtk_label_hierarchy_changed (GtkWidget *widget, gtk_label_setup_mnemonic (label, label->mnemonic_keyval); } +static void +label_mnemonic_widget_weak_notify (gpointer data, + GObject *where_the_object_was) +{ + GtkLabel *label = data; + + label->mnemonic_widget = NULL; + g_object_notify (G_OBJECT (label), "mnemonic_widget"); +} /** * gtk_label_set_mnemonic_widget: @@ -747,10 +756,14 @@ gtk_label_set_mnemonic_widget (GtkLabel *label, g_return_if_fail (GTK_IS_WIDGET (widget)); if (label->mnemonic_widget) - gtk_widget_unref (label->mnemonic_widget); + g_object_weak_unref (label->mnemonic_widget, + label_mnemonic_widget_weak_notify, + label); label->mnemonic_widget = widget; if (label->mnemonic_widget) - gtk_widget_ref (label->mnemonic_widget); + g_object_weak_ref (label->mnemonic_widget, + label_mnemonic_widget_weak_notify, + label); g_object_notify (G_OBJECT (label), "mnemonic_widget"); } |