diff --git a/contiki/ctk/ctk.c b/contiki/ctk/ctk.c
index 516d3f2..250057b 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.14 2003/04/16 18:29:19 adamdunkels Exp $
+ * $Id: ctk.c,v 1.15 2003/04/18 00:18:38 adamdunkels Exp $
  *
  */
 
@@ -92,7 +92,9 @@
 ek_signal_t ctk_signal_keypress,
   ctk_signal_timer,
   ctk_signal_button_activate,
+  ctk_signal_widget_activate,
   ctk_signal_button_hover,
+  ctk_signal_widget_select,
   ctk_signal_hyperlink_activate,
   ctk_signal_hyperlink_hover,
   ctk_signal_menu_activate,
@@ -164,10 +166,16 @@
   
   ctk_signal_keypress = dispatcher_sigalloc();
   ctk_signal_timer = dispatcher_sigalloc();
-  ctk_signal_button_activate = dispatcher_sigalloc();
-  ctk_signal_button_hover = dispatcher_sigalloc();
+  
+  ctk_signal_button_activate =
+    ctk_signal_widget_activate = dispatcher_sigalloc();
+  
+  ctk_signal_button_hover =
+    ctk_signal_hyperlink_hover =
+    ctk_signal_widget_select = dispatcher_sigalloc();
+  
   ctk_signal_hyperlink_activate = dispatcher_sigalloc();
-  ctk_signal_hyperlink_hover = dispatcher_sigalloc();
+
   ctk_signal_menu_activate = dispatcher_sigalloc();
   ctk_signal_window_close = dispatcher_sigalloc();
 
@@ -625,6 +633,10 @@
     } 
     
     add_redrawwidget(window->focused);
+
+    dispatcher_emit(ctk_signal_widget_select, focus,
+		    focus->window->owner);
+
   }
 
 }
@@ -764,12 +776,12 @@
       mode = CTK_MODE_WINDOWMOVE;
 #endif /* CTK_CONF_WINDOWCLOSE */
     } else {
-      dispatcher_emit(ctk_signal_button_activate, w,
+      dispatcher_emit(ctk_signal_widget_activate, w,
 		      w->window->owner);
     }
 #if CTK_CONF_ICONS
   } else if(w->type == CTK_WIDGET_ICON) {
-    dispatcher_emit(ctk_signal_button_activate, w,
+    dispatcher_emit(ctk_signal_widget_activate, w,
 		    w->widget.icon.owner);
 #endif /* CTK_CONF_ICONS */
   } else if(w->type == CTK_WIDGET_HYPERLINK) {    
@@ -787,6 +799,9 @@
     }
     add_redrawwidget(w);
     return REDRAW_WIDGETS;
+  } else {
+    dispatcher_emit(ctk_signal_widget_activate, w,
+		    w->window->owner);
   }
   return REDRAW_NONE;
 }
@@ -1107,8 +1122,7 @@
 	  /* If we didn't find any window, and there are no windows
 	     open, the mouse pointer will definately be within the
 	     background desktop window. */
-	  if(window == NULL &&
-	     windows == NULL) {
+	  if(window == NULL) {
 	    window = &desktop_window;
 	  }
 
@@ -1158,12 +1172,12 @@
 	      }
 	    
 	    
-	      if(mouse_moved) {
+	      if(mouse_moved &&
+		 (window != &desktop_window ||
+		  windows == NULL)) {
 		dispatcher_emit(ctk_signal_pointer_move, NULL,
 				window->owner);
-
-		
-
+	       
 		if(window->focused != NULL &&
 		   widget != window->focused) {
 		  add_redrawwidget(window->focused);
