* Correctly propagate current validation status of row being edited
* Automatically save row being edited upon leaving it
* Replace "Save" button (floppy) by "Cancel" (cross)
* Allow easier overriding of Groups and List sub-widgets
bzr revid: xmo@openerp.com-20120625070901-4cs6v24exjk5z2fa
This issue was caused by the way browse_records are cached,
in combination with the deletion of messages just after sending
them. When processing a second message, the attachment.datas
function fields gets computed for all messages that are being
browsed, including the first message that was already deleted,
causing an exception. The value of the function field had
already been computed for the first message, but had been
discarded by the message.refresh() call.
Hopefully this kind of issue will disappear once we implement
the new ORM API.
bzr revid: odo@openerp.com-20120622152536-42b2s28lvdv3odyr
This issue was caused by the way browse_records are cached,
in combination with the deletion of messages just after sending
them. When processing a second message, the attachment.datas
function fields gets computed for all messages that are being
browsed, including the first message that was already deleted,
causing an exception. The value of the function field had
already been computed for the first message, but had been
discarded by the message.refresh() call.
Hopefully this kind of issue will disappear once we implement
the new ORM API.
bzr revid: odo@openerp.com-20120622093123-wpk8ht454w7p2c1w
After opening a record with a list o2m, editing said list o2m and
saving a row, clicking the action button would lose all data
explicitly changed: the o2m would just call the action without saving
the form's current state, so the corresponding server method would
only be able to use data previously saved.
Fixed by overriding do_button_action, and only calling the _super()
method after the parent form has announced it is saved (either because
nothing was changed or because it did indeed save itself).
bzr revid: xmo@openerp.com-20120622085432-mh3977uygua5bypn
This is required to avoid strange mro() pitfalls
where an AbstractModel is inherited by a Model,
and the _auto=False of AbstractModel ends up
first in the mro() because Model does not explicitly
define it, and the BaseModel default _auto is farther
in the mro().
lp bug: https://launchpad.net/bugs/1013566 fixed
bzr revid: odo@openerp.com-20120621110825-ry8e5tktvwv3h4tm
if only the *display* list is filtered, the advanced search engine may
still attempt to *select* a non-searchable field (if it's the first
one) leading to broken/nonsensical behavior.
Non-searchable fields should be removed from the advanced search's
ability to find them altogether.
bzr revid: xmo@openerp.com-20120621101103-k842i8h1rxlr4n9k
This is required to avoid strange mro() pitfalls
where an AbstractModel is inherited by a Model,
and the _auto=False of AbstractModel ends up
first in the mro() because Model does not explicitly
define it, and the BaseModel default _auto is farther
in the mro().
lp bug: https://launchpad.net/bugs/1013566 fixed
bzr revid: odo@openerp.com-20120621100900-xejo9yhgx36kyh03
* Throw out focusin/focusout: the m2o widget's completion list is
created at the page top (body) so the editable listview can't
generically handle arbitrary widgets via mere focusin/focusout.
* Move responsibility of focus/blur events to the form view and its
widgets.
* Events could not just be named ``focus`` and ``blur`` due to usage
of jquery's event system: jquery will automatically call a method of
the event's name if it exists on the object, which conflicts with
.web.form.Field#focus and leads to an infinite loop (as Field#focus
focuses the field's root element, which triggers the focus event,
which calls the focus method,...) => form-* and widget-*, can be
switched back in trunk
* m2o mess kind-of complex, basically:
- the core input and the menu button behave as blur/focus triggers
- when the autocompletion list is clicked, it will temporarily
remove the focus from the input (blurring it), and put it back
later... on a timer. Issue is the timer, we don't want to rely on
having a bigger timer (as later revisions of the library may
change our timings and it's iffy to rely on timers conserving
order perfectly); on the other hand we know the focus *will* come
back to the input eventually. So we can just avoid propagating
blur iif the blur is the consequence of having clicked on the
completion list.
- roughly the same thing happens when clicking on $drop_down (after
fixing the handling of its final focus to be consistent, as
$drop_down would not re-focus the input if it was *closing* the
completion list)
- pretty sure the menu thing does *not work at all*, but I don't
have the courage of fixing it before committing this part.
Date/datetime widget remains to be handled, basically the core focus
handling is the same as in e.g. a charfield *but* needs to handle (and
ignore) loss of focus from clicking inside the picker
widget. Expecting the level of suck to reach unknown heights.
bzr revid: xmo@openerp.com-20120619072518-lsrhzij5asxt2aea
* DOM events sequence screwed up, requiring an explicit blur on the
current target to try and ensure the corresponding form widget would
register its own change event
* Requirement to stop the default behavior of keypress and keydown on
[Return] as they would somehow trigger the contextual menu of m2o
fields on the row, at the wrong place, when in a char field (I don't
even...)
* Delaying of the actual saving of the form (via `setTimeout`) to try
and ensure the blur/change event has had the time to propagate
correctly (and be handled) before we actually save
bzr revid: xmo@openerp.com-20120615055440-yn00uv4q8y29nboq