GoXam, Firefox and Mouse-Grabbing S/W

The following is a report of a strange bug that I encountered. I am providing it in the hope that it will serve other users, and at the same time help gather more cases of this problem if they were encountered.

The problem is with a Drag&Drop operation. If several conditions are met (described below), a drag operation of a node within the diagram may sometime fail. The effect will be that upon mouse-up, the dragged node(s) will jump back to their original pre-drag location, as if ESC was pressed to cancel the drag operation.

After a long investigation process that involved both my testing and Walter’s (thanks again Walter!), I was able to conclude that the problem was due to a desktop translation software called Babylon that I have installed on my PC.
Babylon uses mouse-grabbing to allow it to activate by a mouse+keyboard combination. Supposedly the technique used by Babylon conflicts with Silverlight, which results with this erratic drag behavior.
Since we cannot be sure that only Babylon uses this conflicting technique, it may be that you (or your clients) will experience this behavior, potentially when software that performs mouse-grabbing.

Luckily, there are more conditions that need to be met to reproduce the bug:

  1. Seen in Firefox (I’m using 3.6.3), but never in IE or Chrome.
  2. Seen with the Flow Chart sample as-is (or code derived from it) and several other samples, but not with all.
  3. Seen only when Babylon is grabbing the RIGHT mouse button, even thought the affected drag is of course with the LEFT mouse button.
  4. Reproducible on Win7and Vista, SL3 and SL4, and FF safe-mode does not prevent it.

Sounds crazy and an unlikely set of conditions? Hopefully - both for me and for you, as when it does happen using the diagram becomes unacceptable.
So if your client ever calls and complains about such a behavior, you’d want to be able to look up the above report - and in that case please also post a reply so we can gather more cases and track down the problem.