static void grab_notify_cb (GtkWidget *widget, gboolean was_grabbed, gpointer user_data) { MyWidgetPrivate *private_data; private_data = MY_WIDGET (widget)->private; if (private_data->grabbed_device && private_data->dialog && gtk_widget_device_is_shadowed (private_data->dialog, private_data->grabbed_device) { gtk_device_grab_remove (private_data->dialog, private_data->grabbed_device); private_data->grabbed_device = NULL; } }