Index: gui.c
===================================================================
--- gui.c	(revision 373)
+++ gui.c	(revision 374)
@@ -33,6 +33,7 @@
 w->size[0]=w->size[1]=0;
 w->focused_widget=-1;
 w->old_focused=-1;
+w->OnDelete=NULL;
 
 for(i=0;i<RAYDIUM_GUI_MAX_OBJECTS;i++)
     {
@@ -1514,12 +1515,18 @@
 
 void raydium_gui_window_delete(int window)
 {
+void (*f)(void);
+
 if(!raydium_gui_window_isvalid(window))
     {
     raydium_log("GUI: Error: Cannot delete window: invalid window");
     return;
     }
 
+f=raydium_gui_windows[window].OnDelete;
+if(f)
+    f();
+
 // focus another window
 raydium_gui_window_focused=raydium_gui_windows[window].old_focused;
 raydium_gui_window_init(window);
@@ -1531,6 +1538,22 @@
 }
 
 
+void raydium_gui_window_OnDelete(int window, void *OnDelete)
+{
+if(!raydium_gui_window_isvalid(window))
+    {
+    raydium_log("GUI: Error: Cannot set OnDelete: invalid window");
+    return;
+    }
+
+raydium_gui_windows[window].OnDelete=OnDelete;
+}
+
+void raydium_gui_window_OnDelete_name(char *window, void *OnDelete)
+{
+raydium_gui_window_OnDelete(raydium_gui_window_find(window),OnDelete);
+}
+
 void raydium_gui_widget_sizes(GLfloat sizex, GLfloat sizey, GLfloat font_size)
 {
 raydium_gui_widget_sizes_default[0]=sizex;