diff --git a/docs/changes.md b/docs/changes.md index c9392ae3b..a65f46812 100644 --- a/docs/changes.md +++ b/docs/changes.md @@ -1,5 +1,8 @@ # 最新动态 +2023/03/21 + * 完善关于offset的文档(感谢智明提供补丁) + 2023/03/20 * 修复分发double\_clicked事件时存在的野指针风险(感谢雨欣提供补丁) * 优化按键逻辑,尽量用text\_edit的逻辑(感谢陈聪提供补丁) diff --git a/docs/how_to_use_offset_in_custom_widget.md b/docs/how_to_use_offset_in_custom_widget.md index 305cc50aa..b051b4ce2 100644 --- a/docs/how_to_use_offset_in_custom_widget.md +++ b/docs/how_to_use_offset_in_custom_widget.md @@ -1,7 +1,7 @@ # 在自定义控件中使用 offset 的注意事项 -当用户自己写自定义控件的时候,如果需要该自定义控件实现滚动效果效果的时候,此时需要引入一个 offset 的概念(水平方向用 xoffset,垂直方向用 yoffset)。 +当用户自己写自定义控件的时候,如果需要该自定义控件实现滚动效果效果的时候,此时需要引入一个 offset 的概念(水平方向用 xoffset,垂直方向用 yoffset),在控件中通过 offset 的变化来移动控件的子控件的位置到指定的区域中显示,从而达到滚动效果。(比如:每个子控件的 y 属性都根据 offset 来计算出来,那么 offset 改变了,那么每个子控件的 y 坐标都改变了,从而决定子控件显示的位置。) 同时 AWTK 的点击事件(鼠标或者触摸)都会受到控件的 offset 影响,所以 AWTK 提供了两个机会给控件把这个 offset 的数据传递给 AWTK: @@ -37,4 +37,5 @@ offset 会影响 AWTK 内部的 API 甚至会影响内部执行逻辑,从而 # 3. 总结 -如果使用 offset 的话,尽量使用上面说的第二种方法来实现,这样可以减少很多问题,如果实在不行的话,可以通过重载 find_target 和 is_point_in 函数来处理,但是这样子也是把问题变复杂了。 \ No newline at end of file +如果使用 offset 的话,**尽量使用上面说的第二种方法来实现**,这样可以减少很多问题,如果实在不行的话,可以通过重载 find_target 和 is_point_in 函数来处理,但是这样子也是把问题变复杂了。 + diff --git a/src/base/widget.h b/src/base/widget.h index b601dd81b..dc2eece68 100644 --- a/src/base/widget.h +++ b/src/base/widget.h @@ -182,7 +182,7 @@ struct _widget_vtable_t { widget_is_point_in_t is_point_in; /** * 该函数指针返回的偏移值,最好和 WIDGET_PROP_X/YOFFSET 的属性一致,如果两者不同的话,容易出现问题。 - * 注意:偏移值一般使用在动画,脏矩形以及点击等事件上面,所以一定要保持一致。 + * 注意:偏移值一般使用在动画,脏矩形以及点击等事件上面,所以一定要保持一致。详情请看 docs/how_to_use_offset_in_custom_widget.md */ widget_get_offset_t get_offset; widget_auto_adjust_size_t auto_adjust_size; diff --git a/src/base/widget_consts.h b/src/base/widget_consts.h index 34fa1f4f6..bcaea220b 100644 --- a/src/base/widget_consts.h +++ b/src/base/widget_consts.h @@ -554,12 +554,14 @@ BEGIN_C_DECLS /** * @const WIDGET_PROP_XOFFSET * X方向的偏移。(如果控件有继承 get_offset 函数指针的话,一定要和 get_offset 返回值保持一致,否则容易出现问题) + * 详情请看 docs/how_to_use_offset_in_custom_widget.md */ #define WIDGET_PROP_XOFFSET "xoffset" /** * @const WIDGET_PROP_YOFFSET * Y方向的偏移。(如果控件有继承 get_offset 函数指针的话,一定要和 get_offset 返回值保持一致,否则容易出现问题) + * 详情请看 docs/how_to_use_offset_in_custom_widget.md */ #define WIDGET_PROP_YOFFSET "yoffset"