As far as the LaunchPad theme here is a workaround that can be applied to each widget that has some dependence on the onClose event. I will be adding this workaround to each of my widgets in their next releases.
I add the dojo/aspect require and then in the postCreate function I add the code below.
/*Workaround for the LanunchPad theme not firing onClose and onOpen for the widget*/
if(this.appConfig.theme.name === "LaunchpadTheme"){
var tPanel = this.getPanel();
if(tPanel){
aspect.after(tPanel, "onClose", lang.hitch(this, this.onClose));
aspect.after(tPanel, "onOpen", lang.hitch(this, this.onOpen));
}
}
/*end work around for LaunchPad*/
I have tested this using my eSearch, Identify, StreetView and they all work well with this workaround using the LaunchPad theme.