Refactor layout pipeline, add KEY5 regression, and fix tooltip hide

This commit is contained in:
Codex
2026-04-10 23:26:25 +08:00
parent 241a564095
commit b7ad960518
13 changed files with 719 additions and 290 deletions
+7
View File
@@ -39,6 +39,8 @@ private:
// 初始化页签按钮位置和尺寸
inline void initTabBar();
inline void initTabPage();
// 统一刷新 TabControl 当前运行态下的页签栏和页面区布局。
void refreshRuntimeLayout();
public:
TabControl();
TabControl(int x, int y, int width, int height);
@@ -47,6 +49,8 @@ public:
//重写位置设置以适应页签和页面布局
void setX(int x)override;
void setY(int y)override;
void setWidth(int width) override;
void setHeight(int height) override;
void draw() override;
bool handleEvent(const ExMessage& msg) override;
@@ -76,4 +80,7 @@ public:
void requestRepaint(Control* parent)override; // 托管模式下登记为 root;非托管模式下局部更新脏按钮/脏页面
bool canCommitManagedPartialRepaint() const override; // 判断当前 TabControl 是否可安全做局部提交
void commitManagedRepaint() override; // 托管收口阶段执行 TabControl 的真正重绘
protected:
// 外层统一解算后,TabControl 需要同步刷新其内部页签栏和页面区。
void applyResolvedLayoutRect(const StellarX::ResolvedLayoutRect& rect) override;
};