Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

能不能给窗口新增两个属性move_focus_parent_key和move_focus_child_key? #885

Open
Tracker647 opened this issue Jul 26, 2024 · 6 comments

Comments

@Tracker647
Copy link

Tracker647 commented Jul 26, 2024

需求是像这样的菜单页面,它分多个栏,一个栏里面可能有很多控件,对于纯按键控制的设备,一般交互方式就是上下左右切换焦点,然后enter键选中/聚焦子页面内部的焦点,esc键回到父级页面焦点。
GIF 2024-7-26 10-57-17

目前看awtk是只有平级控件,基于坐标的焦点切换的,对于基于控件树的父级-子级的焦点切换目前还没有,只能自己实现。
我想原理应该好实现,比如做一个栈,每次按enter键时候把原先窗口控件树所有的focus控件放到数组中并压栈,然后使用下一层focus控件的数组用于切换,按esc就出栈之前的focus数组覆盖当前focus数组。
设想按enter的话目前就聚焦第一个子控件(如果能做到enter的话回到之前聚焦的子控件那更好,不过我暂时没想到实现方法,还有就是,如果这个子控件enter有冲突的话,比如按钮,如何处理?)。
不知这部分后继可有计划?

@xianjimli
Copy link
Member

暂时没空弄,有空我先想想。

@Tracker647
Copy link
Author

Tracker647 commented Jul 28, 2024

我今天弄了一版方案,改了awtk,目前测了下没问题,你有空看看,我直接把整个awtk库压缩发过去还是能push?

@xianjimli
Copy link
Member

你放个 patch 到这里吧,有需要的自己先打上。

@Tracker647
Copy link
Author

测试程序:
release.zip

@Tracker647
Copy link
Author

BTW:如果我修改了一个历史评论,邮箱上会重新推送这个评论吗?edit一次就推送一次?

@Tracker647
Copy link
Author

更新了一下patch, 现在可以给没父级焦点和子级焦点的情况设置回调,更新这个的原因是业务需要在没有父级焦点可退的时候需要navigate_back。
发现只要在git bash去执行diff指令生成的补丁就能打了,估计是终端编码问题。
git diff cf5e93980e0d86ef456725f820540114ecc87876..3489cfc1781fda44b6ba32ee278f68bf408c7d45 > treefocus.patch
treefocus.patch

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants