-
-
Notifications
You must be signed in to change notification settings - Fork 219
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix block partial rendering #1054
Fix block partial rendering #1054
Conversation
@@ -987,6 +989,9 @@ impl<'a> Generator<'a> { | |||
if block_fragment_write { | |||
self.buf_writable.discard = true; | |||
} | |||
if buf.discard != prev_buf_discard { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems surprising to me -- why do we only want to write if buf.discard
is not equal to prev_buf_discard
vs writing it out if buf.discard
is just false
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interesting question. In my previous PR about this, if I wrote too early, we had content from sub-block that was rendered before its parent's, which was problematic. So in this case, if buf.discard != prev_buf_discard
, then it's like that the parent is actually not something being displayed and so we should flush everything before the discard
is true
again.
Does my reasoning sound good to you and do you see potential corner-cases?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just thought: do you want me to add a code comment to explain this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that would be a good improvement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment is too long IMO and still doesn't make it very clear what case this is trying to fix/prevent. I want a comment here in like 4-5 lines that explains conceptually what case it is trying to handle.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated the comment.
252afe7
to
e44b0ca
Compare
Fixes #1052.
It didn't take into account that there would be other elements at the top level. Now it does.