Add BackendFlag-based backend redraw gating and cleanup#67
Conversation
c82f9e8 to
57b1086
Compare
|
@copilot 我最初给了个错误的指令,现在我force push了你的最后提交,重新完成,以下为指令:根据我刚刚完善的框架的提交,对所有Widget以及ripple等试图绘制的时候先判断如果BackendFlag为true就不绘制,从而做到只更新widgetBackendRedraw而不绘制其中内容,并且在Element.cpp里面BackendFlag = true; |
已按要求更新 BackendFlag 绘制判断与后端清理逻辑,提交:0e94ba5。 |
|
@copilot 现在的void Slider::draw(PIMAGE dst,double x,double y){ |
已修复 Slider 中 setAlwaysDirty/setDrawing 计数,只在动画状态切换时更新。提交:66faf75。 |
|
@copilot 现在的 Toggle 在面板中不能正确交互(正如你所创建的 test_test_pagination 所演示),仔细阅读代码,理解逻辑,尝试修复。 |
已修复 Toggle 在 Panel/Box 中交互不刷新问题,并补充动画期间的重绘触发。提交:ca42d9c |
Introduce a backend redraw path that updates
widgetBackendRedrawwithout rendering widget contents, and remove widgets from the backend list once they are no longer dirty.Backend redraw state & tracking
BackendFlag,widgetBackendRedraw, andmarkWidgetBackendRedrawto centralize backend-only updates.isBackendDirty()toWidgetand overrides to capture widget-specific dirty criteria (ripples, focus, animations, progress interpolation).Draw gating for backend updates
BackendFlagis true, preventing visual rendering during backend updates.Backend cleanup pass
Element.cppthat togglesBackendFlag, callsdraw()for backend updates, and removes widgets that are no longer dirty.Example: