C6.27.2Candidate window edge flipping设计研究
候选窗口位置需要根据光标离屏幕边缘的距离动态翻转
别名: 候选窗翻转 · 贴边翻转 · 插入点锚点
概念解释
插入点靠近屏幕或窗口下沿时,默认向下展开的候选窗会被裁切,只露出半行词。正确的做法是测量插入点到各边的剩余空间,翻转到空间更大的一侧——通常改为向上,必要时左右平移。翻转是几何问题:同一套候选、同一次组字,只因插入点靠近边缘就必须换锚。不翻转等于在边缘行无法看全列表。
机制
浮动窗有首选方向(多向下,贴近阅读方向)。剩余高度 = 窗口底 − 插入点 y − 边距。若剩余高度小于候选窗需要的高度,继续向下会出屏或被任务栏裁掉。向上翻转以插入点为下锚,列表朝上文展开,可能改去遮挡上一行,但至少完整可见。多显示器和缩放会让“屏幕边缘”与“当前窗口边缘”不一致,必须对实际可用工作区计算,而不是对虚拟桌面。翻转若在组字中途插入点换行时不重新计算,窗口会有一半留在旧行。
怎么研究
把插入点分别放在窗口中央、底沿、顶沿、右下角,记录候选窗是否完整、是否越出工作区、翻转后遮挡了哪一行。高 DPI 与外接屏要单独测。自动化可以断言窗口矩形 ⊆ 工作区。用户任务是在文档最后一行组字,这是翻转的高发区,实验室若总在空白页中间打字会漏掉。
边界
候选嵌在软键盘顶部时不存在向屏幕外翻转,键盘本身就是下沿。超高候选列表(几十行)两侧都放不下,翻转无法解决,只能内滚。虚拟机或远程桌面的工作区是远端分辨率,本地翻转算法会算错。分屏两个应用时,边缘是分界线而不是显示器边框。
怎么落地
- 每次显示候选前计算工作区内四向剩余空间,选能完整放下的方向,优先保持与插入点的近接。
- 插入点因换行或滚动改变时重新计算,不要沿用组字开始时的锚。
- 翻转动画要短,避免在用户点选时还在移动。
- 验证:在目标窗口最大化与还原两种尺寸下,把插入点打到最后一行和第一行,候选列表须完整可见且矩形不越出工作区。