Since rev 53e53e9b,
<div class="o_app" t-attf-class="{{ true ? 'o_extra' : '' }}"/>
produced
<div class="o_extra"/>
whereas it should have produced
<div class="o_app o_extra"/>
This is because there were missing parentheses around the string
returned by `interpolate`, which produced instructions like
var _1 = 'o_app ' + true ? 'o_extra' : '';
Fixes#132
Each component called its hooks properly individually, however the issue
was that it was done component by component. However, in practice, we
want the willPatch hooks to be done before ANY patch is actually
performed, and the patched should be called AFTER every patch is
applied.
The trick is to propagate a list of patched components across various
function calls.
closes#64
Sometimes, widgets were not properly destroyed/detached. This was caused
by the fact that we used the hook remove, when we sometimes need to use
the hook destroy as well.
This is a pretty big breaking change: the html output by qweb is now
different.
The main goal is to optimize the compiled templates:
- condense all consecutive whitespaces into a single spaces
- if possible, drop completely some text nodes, based on the following
heuristic: if a text node is only composed of whitespaces, and
contains at least one linebreak, then it can be dropped.
This leads in my benchmark test to an improvement of about 10%, in
rendering speed and in memory consuption.
Note: whitespace here means anything that matches the \s regexp: newlines,
tabs, ...
close#8