If we have our own on_click handler, call the default
implementation. Otherwise, check which sub-particle the mouse is over,
and delegate the on_mouse() call.
This is intended to be a format-like string, with the possibility to
use tag formatters.
The expanded string will later be passed to the system() call.
This was always done before. Now that it is optional, one can for
example generate lists dynamically, using the same set of base
particles over and over again.