feat(window): 鼠标捕获与窗口最小化/最大化
鼠标: - 内容区按下后记录 capture_win,按住期间的移动仍投 HOVER、松开投 RELEASE (即使光标移出窗口)。此前 btn_down != 0 时完全不发 HOVER,滚动条 拖动拿不到位置更新。 - 标题栏按钮按下态改为通用 btn_win/btn_kind,支持关闭/最小化/最大化。 窗口: - WinSlot 新增 maximized、restore_*、fb_cap 字段 - 最小化:隐藏窗口并把焦点交给最高可见窗口;任务栏点击恢复, 再点一次已聚焦窗口则最小化 - 最大化:保存还原几何,铺满工作区(不含任务栏)并发送 RESIZE 事件; 再次点击还原;拖动最大化窗口会先还原 - 像素缓冲按 fb_cap 复用,仅在容量不足时从 arena 扩容,避免反复 最大化/还原耗尽 bump arena - 1920x1080 最大化需要约 7.3MB 内容缓冲:DESK_SHM_SIZE 8MB → 32MB
This commit is contained in:
1 parent
859197e5e9
commit
632bc877df
3 files changed
+241
-78
No files matched your search
@@ -575,7 +575,7 @@ def devfs_register_fb0(fb: rawptr, width: int, height: int, pitch: int, format:
|
||||
# 这里用 devfs 设备 + mmap 达到同样效果)。
|
||||
# ============================================================================
|
||||
# 共享区大小:vpsdk/desk.vp 里有一份同名同值的镜像(用户在 mmap 时必须先知道长度)。
|
||||
define DESK_SHM_SIZE = 8388608
|
||||
define DESK_SHM_SIZE = 33554432
|
||||
|
||||
virtual class shm_device(devfs_file):
|
||||
shm_phys: uint64
|
||||
|
||||
Reference in new issue
Block a user