Hi, Ian, I know how to fix this bug now. :D Just use attached {SD_ZONE_NAVIGATION_DIALOG} to replace the original one. If you diff, you will see the change is calling {EV_GTK_EXTERNALS}.gtk_widget_destroy (l_c_object) when {EV_SCROLLABLE_AREA} is destroyed. I think this API can let GTK clean up all events hooked on {EV_SCROLLABLE_AREA} (pointer press/release event in this bug). I don't understand why `{EV_GTK_EXTERNALS}.gtk_widget_destroy' is not called when {EV_WIDGET} destroyed. The comments of {EV_ANY_I}.destroy are: -- Gtk representation of `Current' may only be cleaned up on dispose to prevent crashes where `Current' is -- destroyed as a result of `Current's event handler being called, this causes instability within gtk What's the `instability within gtk' exactly...? I think {EV_WIDGET_IMP}.destroy should call `{EV_GTK_EXTERNALS}.gtk_widget_destroy (l_c_object)'. Thanks