click in the DateField, then click in "The Other Field", and console.log fires.

click directly on the DatePicker, then click in "The Other Field", and console.log also fires.

click in the DateField, then click on the DatePicker icon, then click in "The Other Field", and console.log doesn't fire -- another click is required anywhere outside the DateField and DatePicker before console.log fires again.

That is how most "windowed" controls work in windows as well. The first click hides the picker, another click actually blurs the field. Only in windows they also refocus the field. To see what I mean, go to http://extjs.com/deploy/ext/examples/form/dynamic.html and expand the theme select box. While it is expanded, click on a field. Notice how the focus stays on the select.

I changed the hide function on menuListeners to do:

this.focus.defer(10, this);

instead of a direct focus and it appears to have the same affect. I'm just not sure this is the most desirable behavior.

Once again, you're right. The default behaviour for "windowed" controls is as you say. Errm... perhaps the change should be undone if the behaviour is not very desirable? Sorry about that.

My original intention was to listen for the DateField's 'change' event, which isn't firing correctly for me.
To test this, change the listener above from 'blur' to 'change'. Click in the DateField, then click on anything other than the DateField and DatePicker, and the 'change' event is fired even when nothing is changed i.e. it works just like the 'blur' event.

I did some testing on the 'change' event for a TextField, and it works flawlessly:

My original intention was to listen for the DateField's 'change' event, which isn't firing correctly for me.
To test this, change the listener above from 'blur' to 'change'. Click in the DateField, then click on anything other than the DateField and DatePicker, and the 'change' event is fired even when nothing is changed i.e. it works just like the 'blur' event.

i'm reopening this issue 'cos i've encountered this issue again in Ext 1.1 final.
(change event for a DateField with an existing value is fired even though the date remains the same).

(refer to the red section in the code block above) the DateField sets both v and this.startValue correctly. the == operator, on the other hand, does not work correctly on these 2 Date objects v and this.startValue.

fiddled some more and came up with a non-buggy proposed fix (i've removed the previous buggy one from the previous post)

this proposed fix involves abstracting out the comparison which fires the change event in the Ext.form.Field's onBlur method, and overriding this comparison in the Ext.form.DateField to handle Date object comparisons.

to prevent this from happening, the onFocus method must be unregistered immediately before the DateField's <input> field gains focus from the DatePicker, then re-registered immediately after the focus to allow for normal operation.