A mouse button has gone down with the mouse pointing at this widget. You can find out what button by calling Fl::event_button(). You find out the mouse position by calling Fl::event_x() and Fl::event_y().
A widget indicates that it "wants" the mouse click by returning non-zero from its handle() method. It will then become the Fl::pushed() widget and will get FL_DRAG and the matching FL_RELEASE events. If handle() returns zero then FLTK will try sending the FL_PUSH to another widget.
The mouse has moved with a button held down. The current button state is in Fl::event_state(). The mouse position is in Fl::event_x() and Fl::event_y().
To receive FL_DRAG events you must also respond to the FL_PUSH and FL_RELEASE events.
A mouse button has been released. You can find out what button by calling Fl::event_button().
The mouse has moved without any mouse buttons held down. This event is sent to the Fl::belowmouse() widget.