When ECB is switched on, the function tree-buffer-do-mouse-
tracking() sets variable `track-mouse' to t.
When that's the case
the variable 'last-command' gets set to 'ignore so undo() will
always start fresh, instead of behaving as called
Fixed for me as shown below.
(defadvice tree-buffer-do-mouse-tracking (around fix-
"This function sets `track-mouse' to t
which causes *undo* to fail, fixed by resetting track-mouse to nil if
(when (equal l-last 'undo) (setq track-mouse nil))