Bug #3128
header expressions (and dynamic row/column/title...) may be executing more than is necessary
0%
Related issues
History
#1 Updated by Greg Shah almost 8 years ago
The progress documentation suggests that header expressions only are evaluated when a frame is made visible (from a non-visible state). Today, P2J does not make this distinction. We evaluate these expressions every time certain activities occur without regard to the existing visibility state.
The evaluation happens in GenericFrame.updateDynamicContent()
which is sometimes called directly but is most often called from GenericFrame.getFrameBuffer()
in the course of other activity. With 1735d revision 11049, some obvious cases were removed (validation processing, entered/not entered/reset of entered flag).
But in the LogicalTerminal
(and for VIEW in GenericFrame
) there are still cases that need to be checked and may benefit from a conditional execution:
- process-events
- apply (2 places)
- wait-for
- choose
- disable (2 places)
- enable (2 places)
- assignment of sensitive attribute
- view (5 places in LT, 3 in GF)
- prompt-for
- trigger execution
- refresh up-call
We need to write testcases to check if the 4GL behavior matches the docs. If so, this is both a performance issue and is a potential functional problem (causing us to potentially show updates that should not be visible yet).
We should test the explicit hide and implement hide cases as well as things like DOWN to see if there are any implications.