Added ctk_signal_widget_activate and ctk_signal_widget_select, made mouse clicks on desktop icons work even with open windows, added ctk_bitmap_set_nbitmap and CTK_BITMAP_NEW macros
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);