static void destroyInspector(WCoreWindow *foo, void *data, XEvent *event) { InspectorPanel *panel, *tmp; /* Parameter not used, but tell the compiler that it is ok */ (void) foo; (void) event; panel = panelList; while (panel->frame != data) panel = panel->nextPtr; if (panelList == panel) { panelList = panel->nextPtr; } else { tmp = panelList; while (tmp->nextPtr != panel) tmp = tmp->nextPtr; tmp->nextPtr = panel->nextPtr; } panel->inspected->flags.inspector_open = 0; panel->inspected->inspector = NULL; WMRemoveNotificationObserver(panel); wWindowUnmap(panel->frame); wUnmanageWindow(panel->frame, True, False); freeInspector(panel); }
void DestroyDockAppSettingsPanel(AppSettingsPanel * panel) { if (!panel->destroyed) { XUnmapWindow(dpy, panel->wwin->client_win); XReparentWindow(dpy, panel->wwin->client_win, panel->wwin->screen_ptr->root_win, 0, 0); wUnmanageWindow(panel->wwin, False, False); } panel->destroyed = 1; /* * kluge. If we destroy the panel before the icon chooser is closed, * we will crash when it does close, trying to access something in the * destroyed panel. Could use wretain()/wrelease() in the panel, * but it is not working for some reason. */ if (panel->choosingIcon) return; WMDestroyWidget(panel->win); XDestroyWindow(dpy, panel->parent); panel->editedIcon->panel = NULL; panel->editedIcon->editing = 0; wfree(panel); }
void wDestroyInspectorPanels(void) { InspectorPanel *panel; while (panelList != NULL) { panel = panelList; panelList = panelList->nextPtr; wUnmanageWindow(panel->frame, False, False); WMDestroyWidget(panel->win); panel->inspected->flags.inspector_open = 0; panel->inspected->inspector = NULL; wfree(panel); } }