In unity's services/panel-service.c, I added this line: g_signal_connect (priv->last_menu, "deactivate", G_CALLBACK (gtk_widget_destroy), NULL);
But destroying the widget causes dispose to be run, and GtkMenuShell's dispose causes "deactivate" to run.
I'm pretty sure I tested this code and didn't get this behavior. So either this sequence changed or I'm misremembering. Regardless, it's like that now.
The fix should be to disconnect the signal handler when we get that signal. I'll work on a patch.
OK, this one is a bit silly and it's my fault.
In unity's services/ panel-service. c, I added this line:
g_signal_ connect (priv->last_menu, "deactivate", G_CALLBACK (gtk_widget_ destroy) , NULL);
But destroying the widget causes dispose to be run, and GtkMenuShell's dispose causes "deactivate" to run.
I'm pretty sure I tested this code and didn't get this behavior. So either this sequence changed or I'm misremembering. Regardless, it's like that now.
The fix should be to disconnect the signal handler when we get that signal. I'll work on a patch.