NPError NPP_Destroy(NPP instance, NPSavedData** save) { PluginInstance* This; if (instance == NULL) return NPERR_INVALID_INSTANCE_ERROR; This = (PluginInstance*) instance->pdata; if (This != NULL) { if (This->dialogBox) destroyWidget(This); if (This->type) NPN_MemFree(This->type); if (This->pluginsPageUrl) NPN_MemFree(This->pluginsPageUrl); if (This->pluginsFileUrl) NPN_MemFree(This->pluginsFileUrl); NPN_MemFree(instance->pdata); instance->pdata = NULL; } return NPERR_NO_ERROR; }
/* callback function for the OK button */ static void DialogOKClicked (GtkButton *button, gpointer data) { PluginInstance* This = (PluginInstance*) data; GtkWidget* dialogWindow = g_object_get_data(GTK_OBJECT(button), DIALOGID); char *url; g_object_set_data(GTK_OBJECT(button), DIALOGID, NULL); if (This->pluginsFileUrl != NULL) { /* Get the JavaScript command string */ static const char buf[] = "javascript:netscape.softupdate.Trigger.StartSoftwareUpdate(\"%s\")"; url = NPN_MemAlloc(strlen(This->pluginsFileUrl) + (sizeof(buf) - 2)); if (url != NULL) { /* Insert the file URL into the JavaScript command */ sprintf(url, buf, This->pluginsFileUrl); NPN_GetURL(This->instance, url, TARGET); NPN_MemFree(url); } } else { /* If necessary, get the default plug-ins page resource */ char* address = This->pluginsPageUrl; if (address == NULL || *address == 0) { address = PLUGINSPAGE_URL; } url = NPN_MemAlloc(strlen(address) + 1 + strlen(This->type)+1); if (url != NULL) { NPN_PushPopupsEnabledState(This->instance, TRUE); /* Append the MIME type to the URL */ sprintf(url, "%s?%s", address, This->type); if (strcmp (This->type, JVM_MINETYPE) == 0) { NPN_GetURL(This->instance, JVM_SMARTUPDATE_URL , TARGET); } else { NPN_GetURL(This->instance, url, TARGET); } NPN_MemFree(url); NPN_PopPopupsEnabledState(This->instance); } } destroyWidget(This); }
void Gui::destroyWidgets(const VectorWidgetPtr& _widgets) { for (VectorWidgetPtr::const_iterator iter = _widgets.begin(); iter != _widgets.end(); ++iter) destroyWidget(*iter); }
/* the call back function for cancel button */ static void DialogCancelClicked (GtkButton *button, gpointer data) { destroyWidget((PluginInstance*) data); }
void WindowSystem::_deleteGLWidget( GLWidget* widget ) { destroyWidget( widget ); }