发布前托管重绘与布局封版收口
收口 Dialog/overlay 后鼠标状态同步、Tooltip 临时 coverage 与持久 coverage 拆分、跨 root 脏区补提交、TextBox/Button 绘制副作用修复,并补充 KEY6 回归用例和 BUG/Fix/Feature 开发记录。
This commit is contained in:
@@ -614,6 +614,40 @@ RECT Table::getManagedRepaintCoverageRect() const
|
||||
return coverage;
|
||||
}
|
||||
|
||||
RECT Table::getManagedRepaintPersistentCoverageRect() const
|
||||
{
|
||||
// Table 当前仍按整表绘制保证正确性;分页按钮 Tooltip 属于临时浮层,
|
||||
// 不能进入持久 coverage,否则可能污染外层兄弟控件快照。
|
||||
RECT coverage = getBoundsRect();
|
||||
|
||||
if (pageNum && pageNum->IsVisible())
|
||||
{
|
||||
const RECT pageRect = pageNum->getManagedRepaintPersistentCoverageRect();
|
||||
coverage.left = (std::min)(coverage.left, pageRect.left);
|
||||
coverage.top = (std::min)(coverage.top, pageRect.top);
|
||||
coverage.right = (std::max)(coverage.right, pageRect.right);
|
||||
coverage.bottom = (std::max)(coverage.bottom, pageRect.bottom);
|
||||
}
|
||||
if (prevButton && prevButton->IsVisible())
|
||||
{
|
||||
const RECT prevRect = prevButton->getManagedRepaintPersistentCoverageRect();
|
||||
coverage.left = (std::min)(coverage.left, prevRect.left);
|
||||
coverage.top = (std::min)(coverage.top, prevRect.top);
|
||||
coverage.right = (std::max)(coverage.right, prevRect.right);
|
||||
coverage.bottom = (std::max)(coverage.bottom, prevRect.bottom);
|
||||
}
|
||||
if (nextButton && nextButton->IsVisible())
|
||||
{
|
||||
const RECT nextRect = nextButton->getManagedRepaintPersistentCoverageRect();
|
||||
coverage.left = (std::min)(coverage.left, nextRect.left);
|
||||
coverage.top = (std::min)(coverage.top, nextRect.top);
|
||||
coverage.right = (std::max)(coverage.right, nextRect.right);
|
||||
coverage.bottom = (std::max)(coverage.bottom, nextRect.bottom);
|
||||
}
|
||||
|
||||
return coverage;
|
||||
}
|
||||
|
||||
void Table::setHeaders(std::initializer_list<std::string> headers)
|
||||
{
|
||||
this->headers.clear();
|
||||
|
||||
Reference in New Issue
Block a user