void ro_gui_cert_release_window(struct ro_sslcert *s) { os_error *error; if (s == NULL) return; LOG(("Releasing SSL data: 0x%x", (unsigned) s)); ro_gui_wimp_event_finalise(s->window); ro_treeview_destroy(s->tv); error = xwimp_delete_window(s->window); if (error) { LOG(("xwimp_delete_window: 0x%x:%s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } error = xwimp_delete_window(s->pane); if (error) { LOG(("xwimp_delete_window: 0x%x:%s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } free(s); }
/** * Handle closing of query dialog */ void ro_gui_query_close(wimp_w w) { struct gui_query_window *qw; os_error *error; qw = (struct gui_query_window *)ro_gui_wimp_event_get_user_data(w); ro_gui_dialog_close(w); error = xwimp_delete_window(qw->window); if (error) { LOG(("xwimp_delete_window: 0x%x:%s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } ro_gui_wimp_event_finalise(w); /* remove from linked-list of query windows and release memory */ if (qw->prev) qw->prev->next = qw->next; else gui_query_window_list = qw->next; if (qw->next) qw->next->prev = qw->prev; free(qw); }
/** * Handle closing of login dialog */ void ro_gui_401login_close(wimp_w w) { os_error *error; struct session_401 *session; session = (struct session_401 *)ro_gui_wimp_event_get_user_data(w); assert(session); /* If ok didn't happen, send failure response */ if (session->cb != NULL) session->cb(false, session->cbpw); free(session->host); free(session->realm); free(session->url); free(session); error = xwimp_delete_window(w); if (error) { LOG(("xwimp_delete_window: 0x%x:%s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } ro_gui_wimp_event_finalise(w); }
void ro_gui_options_theme_finalise(wimp_w w) { os_error *error; ro_gui_options_theme_free(); if (theme_pane) { ro_gui_wimp_event_finalise(theme_pane); error = xwimp_delete_window(theme_pane); if (error) { LOG(("xwimp_delete_window: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } theme_pane = 0; } ro_gui_wimp_event_finalise(w); }
void ro_treeview_destroy(ro_treeview *tv) { ro_gui_wimp_event_finalise(tv->w); tree_delete(tv->tree); free(tv); }
void ro_gui_options_image_finalise(wimp_w w) { example_users--; if (example_users == 0) { free(example_images); example_images = NULL; } ro_gui_wimp_event_finalise(w); }
void ro_gui_debugwin_close(wimp_w w) { os_error *error; error = xwimp_close_window(dialog_debug); if (error) { LOG(("xwimp_close_window: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } schedule_remove(ro_gui_debugwin_update, 0); ro_gui_wimp_event_finalise(dialog_debug); }
/** * Destroy a text area * * \param self Text area to destroy */ void ro_textarea_destroy(uintptr_t self) { struct text_area *ta; os_error *error; ta = (struct text_area *)self; if (!ta || ta->magic != MAGIC) return; error = xwimp_delete_window(ta->window); if (error) { LOG(("xwimp_delete_window: 0x%x: %s", error->errnum, error->errmess)); } ro_gui_wimp_event_finalise(ta->window); free(ta->font_family); free(ta->text); free(ta); }
bool ro_gui_download_window_destroy(struct gui_download_window *dw, bool quit) { bool safe = dw->saved && !dw->ctx; os_error *error; if (!safe && !dw->close_confirmed) { query_reason rsn = quit ? QueryRsn_Quit : QueryRsn_Abort; if (dw->query != QUERY_INVALID) { /* can we just reuse the existing query? */ if (rsn == dw->query_rsn) { ro_gui_query_window_bring_to_front(dw->query); return false; } query_close(dw->query); dw->query = QUERY_INVALID; } if (quit) { /* bring all download windows to the front of the desktop as a convenience if there are lots of windows open */ struct gui_download_window *d = download_window_list; while (d) { ro_gui_dialog_open_top(d->window, NULL, 0, 0); d = d->next; } } dw->query_rsn = rsn; dw->query = query_user(quit ? "QuitDownload" : "AbortDownload", NULL, &close_funcs, dw, NULL, NULL); return false; } schedule_remove(ro_gui_download_update_status_wrapper, dw); schedule_remove(ro_gui_download_window_destroy_wrapper, dw); /* remove from list */ if (dw->prev) dw->prev->next = dw->next; else download_window_list = dw->next; if (dw->next) dw->next->prev = dw->prev; /* delete window */ error = xwimp_delete_window(dw->window); if (error) { LOG(("xwimp_delete_window: 0x%x: %s", error->errnum, error->errmess)); warn_user("WimpError", error->errmess); } ro_gui_wimp_event_finalise(dw->window); /* close download file */ if (dw->file) { error = xosfind_closew(dw->file); if (error) { LOG(("xosfind_closew: 0x%x: %s", error->errnum, error->errmess)); warn_user("SaveError", error->errmess); } } /* delete temporary file */ if (!dw->saved) { const char *temp_name = ro_gui_download_temp_name(dw); error = xosfile_delete(temp_name, 0, 0, 0, 0, 0); if (error) { LOG(("xosfile_delete: 0x%x: %s", error->errnum, error->errmess)); warn_user("SaveError", error->errmess); } } if (dw->ctx) { download_context_abort(dw->ctx); download_context_destroy(dw->ctx); } free(dw); return true; }