diff --git a/contiki/ctk/ctk.c b/contiki/ctk/ctk.c
index 2c70085..8b1f509 100644
--- a/contiki/ctk/ctk.c
+++ b/contiki/ctk/ctk.c
@@ -32,7 +32,7 @@
  *
  * This file is part of the "ctk" console GUI toolkit for cc65
  *
- * $Id: ctk.c,v 1.1 2003/03/19 14:13:34 adamdunkels Exp $
+ * $Id: ctk.c,v 1.2 2003/03/28 12:10:09 adamdunkels Exp $
  *
  */
 
@@ -378,11 +378,9 @@
 
     /* Draw the windows from back to front. */
     for(; w != windows; w = w->prev) {
-      ctk_draw_clear_window(w, 0, clipy1, clipy2);
       ctk_draw_window(w, 0, clipy1, clipy2);
     }
     /* Draw focused window */
-    ctk_draw_clear_window(windows, CTK_FOCUS_WINDOW, clipy1, clipy2);
     ctk_draw_window(windows, CTK_FOCUS_WINDOW, clipy1, clipy2);
   }
 
@@ -550,7 +548,7 @@
 	if(window == dialog) {
 	  ctk_draw_widget(widget, CTK_FOCUS_DIALOG, 0, height);
 	} else if(window == windows) {
-	  ctk_draw_widget(widget, CTK_FOCUS_WINDOW, 0, height);	      
+	  ctk_draw_widget(widget, CTK_FOCUS_WINDOW, 0, height);
 	} else if(window == &desktop_window) {
 	  ctk_draw_widget(widget, 0, 0, height);
 	}
@@ -903,7 +901,7 @@
     menus.open = NULL;
     return REDRAW_MENUPART;
 
-  case CH_F1:
+  case CTK_CONF_MENU_KEY:
     lastmenu = menus.open;
     menus.open = NULL;
     return REDRAW_MENUPART;
