Limitations of the DragTool
Let's discuss limitations of the DragTool. Feel free to jump on in or link to new, existing or past issues.
The purpose of this issue is to collect ideas for improving the DragTool.
Both out-of-bounds and canceling behavior go through the cancel_drag method. It is not possible to provide differing behavior for these two events without reimplementing or overloading some of the private interface. See a related discussion in #89.
You can only have one modifier key set for initiating a drag (so no chording like Shift-Ctrl-LeftButton). See the value drag tool for an example of how to do multiple modifier keys. This would be a backwards-incompatible change, if it were pushed down into the DragTool proper.
The information about what initiated a cancel should be in the event, so sub-classes can distinguish between the two cases.
I agree that simplifying the class, and making typical behaviors accessible through parameters rather than sub-classing, should be possible.