diff --git a/demos/demo_ui_old_app.c b/demos/demo_ui_old_app.c
index 9dfb60b56..badfb6df5 100644
--- a/demos/demo_ui_old_app.c
+++ b/demos/demo_ui_old_app.c
@@ -413,6 +413,12 @@ static ret_t on_close(void* ctx, event_t* e) {
return window_close(win);
}
+static ret_t on_widget_layout(void* ctx, event_t* e) {
+ widget_t* win = WIDGET(ctx);
+ (void)e;
+ return widget_layout(win);
+}
+
static ret_t on_start(void* ctx, event_t* e) {
widget_start_animator(NULL, NULL);
@@ -1148,6 +1154,8 @@ static ret_t install_one(void* ctx, const void* iter) {
widget_on(widget, EVT_CLICK, on_dec, win);
} else if (tk_str_eq(name, "close")) {
widget_on(widget, EVT_CLICK, on_close, win);
+ } else if (tk_str_eq(name, "widget_layout")) {
+ widget_on(widget, EVT_CLICK, on_widget_layout, win);
} else if (tk_str_eq(name, "fullscreen")) {
widget_on(widget, EVT_CLICK, on_fullscreen, widget);
} else if (tk_str_eq(name, "unload_image")) {
diff --git a/design/default/ui/tab_control.xml b/design/default/ui/tab_control.xml
index 9552b458c..890c97e88 100644
--- a/design/default/ui/tab_control.xml
+++ b/design/default/ui/tab_control.xml
@@ -5,6 +5,7 @@
+
diff --git a/design/default/ui/tab_scrollable.xml b/design/default/ui/tab_scrollable.xml
index df970db09..7b1020beb 100644
--- a/design/default/ui/tab_scrollable.xml
+++ b/design/default/ui/tab_scrollable.xml
@@ -1,10 +1,10 @@
-
+
-
+
@@ -18,4 +18,5 @@
+
diff --git a/design/default/ui/tab_scrollable_and_dragchild.xml b/design/default/ui/tab_scrollable_and_dragchild.xml
new file mode 100644
index 000000000..1ec9323f7
--- /dev/null
+++ b/design/default/ui/tab_scrollable_and_dragchild.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/changes.md b/docs/changes.md
index af3987db2..590bf6e88 100644
--- a/docs/changes.md
+++ b/docs/changes.md
@@ -3,6 +3,7 @@
2024/06/13
* 去掉不必要的参数有效性检查(感谢朝泽提供补丁)
* 增加滚动控件的子控件可视滚动属性(感谢智明提供补丁)
+ * 增加tab\_button的最大宽度属性和tab\_button\_group使用鼠标滚轮来滚动以及增加鼠标拖拽tab\_button功能和增加tab\_button\_group下pointer\_down就设置tab\_button的value (感谢智明提供补丁)
2024/06/12
* 修复中文输入法在输入超过15位拼音后多余的字符会直接输入到编辑框的bug(感谢泽武提供补丁)
diff --git a/res/assets/__assets_all_dark.inc b/res/assets/__assets_all_dark.inc
index 2e7575dd7..965aabfac 100644
--- a/res/assets/__assets_all_dark.inc
+++ b/res/assets/__assets_all_dark.inc
@@ -161,6 +161,7 @@ extern TK_CONST_DATA_ALIGN(const unsigned char ui_dialogs_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_selectm_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_list_view_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_stroke_gradient_default[]);
+extern TK_CONST_DATA_ALIGN(const unsigned char ui_tab_scrollable_and_dragchild_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_menu_left_middle_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_slide_view_h1_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_basic_default[]);
@@ -1092,6 +1093,7 @@ ret_t assets_init_dark(void) {
assets_manager_add(am, ui_selectm_default);
assets_manager_add(am, ui_list_view_default);
assets_manager_add(am, ui_stroke_gradient_default);
+ assets_manager_add(am, ui_tab_scrollable_and_dragchild_default);
assets_manager_add(am, ui_menu_left_middle_default);
assets_manager_add(am, ui_slide_view_h1_default);
assets_manager_add(am, ui_basic_default);
diff --git a/res/assets/__assets_all_default.inc b/res/assets/__assets_all_default.inc
index 3d4f4c82a..4744fac34 100644
--- a/res/assets/__assets_all_default.inc
+++ b/res/assets/__assets_all_default.inc
@@ -161,6 +161,7 @@
#include "default/inc/ui/selectm.data"
#include "default/inc/ui/list_view.data"
#include "default/inc/ui/stroke_gradient.data"
+#include "default/inc/ui/tab_scrollable_and_dragchild.data"
#include "default/inc/ui/menu_left_middle.data"
#include "default/inc/ui/slide_view_h1.data"
#include "default/inc/ui/basic.data"
@@ -1092,6 +1093,7 @@ ret_t assets_init_default(void) {
assets_manager_add(am, ui_selectm_default);
assets_manager_add(am, ui_list_view_default);
assets_manager_add(am, ui_stroke_gradient_default);
+ assets_manager_add(am, ui_tab_scrollable_and_dragchild_default);
assets_manager_add(am, ui_menu_left_middle_default);
assets_manager_add(am, ui_slide_view_h1_default);
assets_manager_add(am, ui_basic_default);
diff --git a/res/assets/__assets_old_dark.inc b/res/assets/__assets_old_dark.inc
index b9e820959..32c0c1bda 100644
--- a/res/assets/__assets_old_dark.inc
+++ b/res/assets/__assets_old_dark.inc
@@ -158,6 +158,7 @@ extern TK_CONST_DATA_ALIGN(const unsigned char ui_dialogs_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_selectm_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_list_view_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_stroke_gradient_default[]);
+extern TK_CONST_DATA_ALIGN(const unsigned char ui_tab_scrollable_and_dragchild_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_menu_left_middle_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_slide_view_h1_default[]);
extern TK_CONST_DATA_ALIGN(const unsigned char ui_basic_default[]);
@@ -712,6 +713,7 @@ ret_t assets_init_dark(void) {
assets_manager_add(am, ui_selectm_default);
assets_manager_add(am, ui_list_view_default);
assets_manager_add(am, ui_stroke_gradient_default);
+ assets_manager_add(am, ui_tab_scrollable_and_dragchild_default);
assets_manager_add(am, ui_menu_left_middle_default);
assets_manager_add(am, ui_slide_view_h1_default);
assets_manager_add(am, ui_basic_default);
diff --git a/res/assets/__assets_old_default.inc b/res/assets/__assets_old_default.inc
index b393f07ae..98851bd09 100644
--- a/res/assets/__assets_old_default.inc
+++ b/res/assets/__assets_old_default.inc
@@ -158,6 +158,7 @@
#include "default/inc/ui/selectm.data"
#include "default/inc/ui/list_view.data"
#include "default/inc/ui/stroke_gradient.data"
+#include "default/inc/ui/tab_scrollable_and_dragchild.data"
#include "default/inc/ui/menu_left_middle.data"
#include "default/inc/ui/slide_view_h1.data"
#include "default/inc/ui/basic.data"
@@ -712,6 +713,7 @@ ret_t assets_init_default(void) {
assets_manager_add(am, ui_selectm_default);
assets_manager_add(am, ui_list_view_default);
assets_manager_add(am, ui_stroke_gradient_default);
+ assets_manager_add(am, ui_tab_scrollable_and_dragchild_default);
assets_manager_add(am, ui_menu_left_middle_default);
assets_manager_add(am, ui_slide_view_h1_default);
assets_manager_add(am, ui_basic_default);
diff --git a/res/assets/default/inc/ui/scroll_view.data b/res/assets/default/inc/ui/scroll_view.data
index 6a2aee5ea..35863a1ad 100644
--- a/res/assets/default/inc/ui/scroll_view.data
+++ b/res/assets/default/inc/ui/scroll_view.data
@@ -1,5 +1,5 @@
TK_CONST_DATA_ALIGN(const unsigned char ui_scroll_view_default[]) = {
-0x04,0x00,0x01,0x01,0xe9,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5f,0x76,
+0x04,0x00,0x01,0x01,0xdd,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5f,0x76,
0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x12,0x12,0x22,0x11,0x77,0x69,0x6e,0x64,0x6f,0x77,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
@@ -7,9 +7,9 @@ TK_CONST_DATA_ALIGN(const unsigned char ui_scroll_view_default[]) = {
0x5f,0x68,0x69,0x6e,0x74,0x00,0x68,0x74,0x72,0x61,0x6e,0x73,0x6c,0x61,0x74,0x65,0x00,0x00,0x76,0x69,
0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,
-0x00,0x00,0x46,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,
+0x00,0x00,0x3c,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,
0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x30,0x2c,0x79,0x3d,0x30,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,
-0x2c,0x68,0x3d,0x37,0x30,0x25,0x29,0x00,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5f,0x76,0x69,0x65,0x77,
+0x2c,0x68,0x3d,0x36,0x30,0x25,0x29,0x00,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5f,0x76,0x69,0x65,0x77,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x0a,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x73,0x65,0x6c,
0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x31,
@@ -21,27 +21,21 @@ TK_CONST_DATA_ALIGN(const unsigned char ui_scroll_view_default[]) = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,
0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,
-0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,
+0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,
+0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x72,0x65,0x64,0x00,
+0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,
-0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x6e,0x61,0x6d,0x65,0x00,
-0x65,0x61,0x72,0x74,0x68,0x31,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,
+0x00,0x6e,0x61,0x6d,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x31,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x01,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,
-0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,
-0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,
-0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,
0x1e,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,
0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,
0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,
0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x00,
0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x2c,0x01,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0xc8,0x00,
0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,
0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,
0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
@@ -49,96 +43,139 @@ TK_CONST_DATA_ALIGN(const unsigned char ui_scroll_view_default[]) = {
0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,
0x61,0x72,0x74,0x68,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x01,0x00,0x00,0x00,0x90,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,
+0x01,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,
0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,
-0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x73,
-0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,
-0x6f,0x6c,0x6f,0x72,0x00,0x23,0x66,0x66,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,
-0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,
-0x74,0x28,0x78,0x3d,0x30,0x2c,0x79,0x3d,0x62,0x2c,0x77,0x3d,0x32,0x34,0x2c,0x68,0x3d,0x32,0x34,0x29,
-0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x6e,0x61,0x6d,0x65,0x00,0x65,0x61,
-0x72,0x74,0x68,0x32,0x00,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x64,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,0x79,
-0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,
-0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
-0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,
-0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,
-0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,
-0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,
-0x00,0x00,0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x00,0x00,
+0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x69,
+0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x90,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,
+0x00,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,
+0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x76,0x69,0x65,
+0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x32,0x00,0x00,
+0x00,0x32,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,
+0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x66,0x66,0x30,0x30,0x66,0x66,0x00,0x00,
+0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,
+0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x30,0x2c,0x79,0x3d,0x62,0x2c,0x77,0x3d,0x32,0x34,
+0x2c,0x68,0x3d,0x32,0x34,0x29,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x6e,
+0x61,0x6d,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x32,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,
+0x6d,0x61,0x6c,0x2e,0x62,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x72,0x65,0x64,0x00,0x00,0x00,0x00,
0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x2c,0x01,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x00,0x00,
0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,
0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,
0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,
0x72,0x74,0x68,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x72,
-0x01,0x00,0x00,0x72,0x01,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,
+0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,
0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x69,0x6d,
0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x90,0x01,0x00,0x00,0x90,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x2c,0x01,0x00,0x00,0x2c,0x01,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,
0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,
0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,
0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
-0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x6e,0x61,0x6d,0x65,
-0x00,0x65,0x61,0x72,0x74,0x68,0x33,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0xc8,0x00,0x00,0x00,0x90,0x01,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,
-0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,
-0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,
-0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x6e,0x61,0x6d,0x65,0x00,0x65,
-0x61,0x72,0x74,0x68,0x34,0x00,0x00,0x00,0x00,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5f,0x62,0x61,0x72,
-0x5f,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x73,0x65,
-0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,
-0x31,0x30,0x25,0x2c,0x79,0x3d,0x62,0x2c,0x77,0x3d,0x38,0x30,0x25,0x2c,0x68,0x3d,0x31,0x30,0x25,0x29,
-0x00,0x6e,0x61,0x6d,0x65,0x00,0x62,0x61,0x72,0x5f,0x68,0x00,0x76,0x61,0x6c,0x75,0x65,0x00,0x30,0x00,
-0x00,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5f,0x62,0x61,0x72,0x5f,0x64,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,
-0x00,0x00,0x0a,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,
-0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x72,0x2c,0x79,0x3d,0x31,0x30,0x25,0x2c,
-0x77,0x3d,0x31,0x30,0x25,0x2c,0x68,0x3d,0x38,0x30,0x25,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x62,0x61,
-0x72,0x5f,0x76,0x00,0x76,0x61,0x6c,0x75,0x65,0x00,0x30,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x1e,
-0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,
-0x6c,0x74,0x28,0x78,0x3d,0x30,0x2c,0x79,0x3d,0x62,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,
-0x33,0x30,0x25,0x29,0x00,0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,
-0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x63,0x3d,0x32,0x2c,0x72,0x3d,0x34,0x2c,0x6d,0x3d,0x35,
-0x2c,0x73,0x3d,0x35,0x29,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x00,0x00,0x00,0x76,
+0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x72,0x01,0x00,0x00,0x72,0x01,0x00,0x00,0x1e,
+0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,
+0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,
+0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,
+0x68,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x01,0x00,
+0x00,0x90,0x01,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,
+0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x23,
+0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x69,0x6d,0x61,0x67,
+0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x6e,0x61,0x6d,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x33,0x00,
+0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x67,0x5f,0x63,0x6f,0x6c,0x6f,
+0x72,0x00,0x72,0x65,0x64,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0xc8,0x00,0x00,0x00,0x90,0x01,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x74,0x79,
+0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,
+0x6f,0x72,0x00,0x23,0x30,0x30,0x30,0x30,0x66,0x66,0x00,0x00,0x69,0x6d,0x61,0x67,0x65,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
+0x69,0x6d,0x61,0x67,0x65,0x00,0x65,0x61,0x72,0x74,0x68,0x00,0x6e,0x61,0x6d,0x65,0x00,0x65,0x61,0x72,
+0x74,0x68,0x34,0x00,0x73,0x74,0x79,0x6c,0x65,0x2e,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x62,0x67,0x5f,
+0x63,0x6f,0x6c,0x6f,0x72,0x00,0x72,0x65,0x64,0x00,0x00,0x00,0x00,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,
+0x5f,0x62,0x61,0x72,0x5f,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x0a,0x00,
+0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,
+0x74,0x28,0x78,0x3d,0x31,0x30,0x25,0x2c,0x79,0x3d,0x62,0x2c,0x77,0x3d,0x38,0x30,0x25,0x2c,0x68,0x3d,
+0x31,0x30,0x25,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x62,0x61,0x72,0x5f,0x68,0x00,0x76,0x61,0x6c,0x75,
+0x65,0x00,0x30,0x00,0x00,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5f,0x62,0x61,0x72,0x5f,0x64,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x0a,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,
+0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x72,0x2c,0x79,0x3d,
+0x31,0x30,0x25,0x2c,0x77,0x3d,0x31,0x30,0x25,0x2c,0x68,0x3d,0x38,0x30,0x25,0x29,0x00,0x6e,0x61,0x6d,
+0x65,0x00,0x62,0x61,0x72,0x5f,0x76,0x00,0x76,0x61,0x6c,0x75,0x65,0x00,0x30,0x00,0x00,0x00,0x00,0x76,
+0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x64,
+0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,
+0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x30,0x2c,0x79,0x3d,0x36,0x30,0x25,0x2c,0x77,0x3d,0x31,
+0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,0x35,0x25,0x29,0x00,0x73,0x74,0x79,0x6c,0x65,0x3a,0x62,0x6f,0x72,
+0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x72,0x65,0x64,0x00,0x63,0x68,0x69,0x6c,0x64,0x72,
+0x65,0x6e,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x63,0x3d,
+0x32,0x2c,0x72,0x3d,0x32,0x2c,0x6d,0x3d,0x35,0x2c,0x73,0x3d,0x35,0x29,0x00,0x00,0x62,0x75,0x74,0x74,
+0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x3a,0x65,0x61,0x72,
+0x74,0x68,0x31,0x00,0x74,0x65,0x78,0x74,0x00,0x65,0x61,0x72,0x74,0x68,0x31,0x00,0x00,0x00,0x62,0x75,
+0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x3a,0x65,
+0x61,0x72,0x74,0x68,0x32,0x00,0x74,0x65,0x78,0x74,0x00,0x65,0x61,0x72,0x74,0x68,0x32,0x00,0x00,0x00,
+0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,
+0x3a,0x65,0x61,0x72,0x74,0x68,0x33,0x00,0x74,0x65,0x78,0x74,0x00,0x65,0x61,0x72,0x74,0x68,0x33,0x00,
+0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x66,0x6f,0x63,0x75,0x73,
+0x65,0x64,0x3a,0x65,0x61,0x72,0x74,0x68,0x34,0x00,0x74,0x65,0x78,0x74,0x00,0x65,0x61,0x72,0x74,0x68,
+0x34,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x4b,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x19,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,
+0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x30,0x2c,0x79,0x3d,0x37,
+0x35,0x25,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x32,0x35,0x25,0x29,0x00,0x73,0x74,0x79,
+0x6c,0x65,0x3a,0x62,0x6f,0x72,0x64,0x65,0x72,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x72,0x65,0x64,0x00,
+0x63,0x68,0x69,0x6c,0x64,0x72,0x65,0x6e,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,
+0x75,0x6c,0x74,0x28,0x63,0x3d,0x32,0x2c,0x72,0x3d,0x33,0x2c,0x6d,0x3d,0x35,0x2c,0x73,0x3d,0x35,0x29,
+0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x73,0x65,0x74,0x5f,0x70,
+0x72,0x6f,0x70,0x3a,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x00,0x74,0x65,0x78,0x74,0x00,0x64,0x65,0x66,
+0x61,0x75,0x6c,0x74,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,
-0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x3a,0x65,0x61,0x72,0x74,0x68,0x31,0x00,0x74,0x65,0x78,0x74,0x00,
-0x65,0x61,0x72,0x74,0x68,0x31,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,
+0x73,0x65,0x74,0x5f,0x70,0x72,0x6f,0x70,0x3a,0x69,0x6e,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x00,0x74,
+0x65,0x78,0x74,0x00,0x69,0x6e,0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x00,0x00,0x00,0x62,0x75,0x74,0x74,
+0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,
-0x65,0x00,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x3a,0x65,0x61,0x72,0x74,0x68,0x32,0x00,0x74,0x65,0x78,
-0x74,0x00,0x65,0x61,0x72,0x74,0x68,0x32,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x73,0x65,0x74,0x5f,0x70,0x72,0x6f,0x70,0x3a,0x69,0x6e,
+0x5f,0x63,0x65,0x6e,0x74,0x65,0x72,0x5f,0x69,0x66,0x5f,0x6f,0x75,0x74,0x73,0x69,0x64,0x65,0x5f,0x76,
+0x69,0x65,0x77,0x70,0x6f,0x72,0x74,0x00,0x74,0x65,0x78,0x74,0x00,0x69,0x6e,0x5f,0x63,0x65,0x6e,0x74,
+0x65,0x72,0x5f,0x6f,0x75,0x74,0x73,0x69,0x64,0x65,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,
-0x61,0x6d,0x65,0x00,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x3a,0x65,0x61,0x72,0x74,0x68,0x33,0x00,0x74,
-0x65,0x78,0x74,0x00,0x65,0x61,0x72,0x74,0x68,0x33,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x6e,0x61,0x6d,0x65,0x00,0x73,0x65,0x74,0x5f,0x70,0x72,0x6f,0x70,0x3a,0x61,0x74,0x5f,0x74,0x6f,
+0x70,0x00,0x74,0x65,0x78,0x74,0x00,0x61,0x74,0x5f,0x74,0x6f,0x70,0x00,0x00,0x00,0x62,0x75,0x74,0x74,
+0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x6e,0x61,0x6d,0x65,0x00,0x66,0x6f,0x63,0x75,0x73,0x65,0x64,0x3a,0x65,0x61,0x72,0x74,0x68,0x34,
-0x00,0x74,0x65,0x78,0x74,0x00,0x65,0x61,0x72,0x74,0x68,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,};/*2841*/
+0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x73,0x65,0x74,0x5f,0x70,0x72,0x6f,0x70,0x3a,0x6e,0x6f,
+0x5f,0x6f,0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x00,0x74,0x65,0x78,0x74,0x00,0x6e,0x6f,0x5f,0x6f,
+0x70,0x65,0x72,0x61,0x74,0x69,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*3597*/
diff --git a/res/assets/default/inc/ui/tab_control.data b/res/assets/default/inc/ui/tab_control.data
index 43de6f19c..92f8db58d 100644
--- a/res/assets/default/inc/ui/tab_control.data
+++ b/res/assets/default/inc/ui/tab_control.data
@@ -1,5 +1,5 @@
TK_CONST_DATA_ALIGN(const unsigned char ui_tab_control_default[]) = {
-0x04,0x00,0x01,0x01,0x2e,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,0x63,0x6f,0x6e,0x74,
+0x04,0x00,0x01,0x01,0x97,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,0x63,0x6f,0x6e,0x74,
0x72,0x6f,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x12,0x12,0x22,0x11,0x77,0x69,0x6e,0x64,0x6f,0x77,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
@@ -35,23 +35,29 @@ TK_CONST_DATA_ALIGN(const unsigned char ui_tab_control_default[]) = {
0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6f,0x70,0x65,0x6e,0x3a,0x74,
-0x61,0x62,0x5f,0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x6c,0x69,0x73,0x74,0x00,0x74,0x65,0x78,0x74,
-0x00,0x74,0x61,0x62,0x5f,0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x6c,0x69,0x73,0x74,0x00,0x00,0x00,
-0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x61,0x62,0x5f,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x5f,0x61,0x6e,0x64,0x5f,0x64,0x72,
+0x61,0x67,0x63,0x68,0x69,0x6c,0x64,0x00,0x74,0x65,0x78,0x74,0x00,0x44,0x72,0x61,0x67,0x5f,0x43,0x68,
+0x69,0x6c,0x64,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6f,0x70,0x65,0x6e,0x3a,0x74,0x61,
-0x62,0x5f,0x72,0x65,0x6d,0x6f,0x76,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x74,0x61,0x62,0x5f,0x72,0x65,
-0x6d,0x6f,0x76,0x65,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6f,
+0x70,0x65,0x6e,0x3a,0x74,0x61,0x62,0x5f,0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x6c,0x69,0x73,0x74,
+0x00,0x74,0x65,0x78,0x74,0x00,0x74,0x61,0x62,0x5f,0x64,0x79,0x6e,0x61,0x6d,0x69,0x63,0x5f,0x6c,0x69,
+0x73,0x74,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6f,0x70,
+0x65,0x6e,0x3a,0x74,0x61,0x62,0x5f,0x72,0x65,0x6d,0x6f,0x76,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x74,
+0x61,0x62,0x5f,0x72,0x65,0x6d,0x6f,0x76,0x65,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,
-0x6f,0x70,0x65,0x6e,0x3a,0x74,0x61,0x62,0x5f,0x69,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x00,0x74,
-0x65,0x78,0x74,0x00,0x49,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x00,0x00,0x00,0x62,0x75,0x74,0x74,
-0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6f,0x70,0x65,0x6e,0x3a,0x74,0x61,0x62,0x5f,0x69,0x6e,
-0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x5f,0x63,0x6f,0x6d,0x70,0x61,0x63,0x74,0x00,0x74,0x65,0x78,0x74,
-0x00,0x49,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x20,0x43,0x6f,0x6d,0x70,0x61,0x63,0x74,0x00,0x00,
+0x6e,0x61,0x6d,0x65,0x00,0x6f,0x70,0x65,0x6e,0x3a,0x74,0x61,0x62,0x5f,0x69,0x6e,0x76,0x69,0x73,0x69,
+0x62,0x6c,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x49,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x00,0x00,
0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,0x73,0x65,0x00,
-0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*1118*/
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6f,0x70,0x65,0x6e,0x3a,0x74,
+0x61,0x62,0x5f,0x69,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x5f,0x63,0x6f,0x6d,0x70,0x61,0x63,0x74,
+0x00,0x74,0x65,0x78,0x74,0x00,0x49,0x6e,0x76,0x69,0x73,0x69,0x62,0x6c,0x65,0x20,0x43,0x6f,0x6d,0x70,
+0x61,0x63,0x74,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,
+0x6c,0x6f,0x73,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,};/*1223*/
diff --git a/res/assets/default/inc/ui/tab_scrollable.data b/res/assets/default/inc/ui/tab_scrollable.data
index 2508202a9..8e3f33be8 100644
--- a/res/assets/default/inc/ui/tab_scrollable.data
+++ b/res/assets/default/inc/ui/tab_scrollable.data
@@ -1,5 +1,5 @@
TK_CONST_DATA_ALIGN(const unsigned char ui_tab_scrollable_default[]) = {
-0x04,0x00,0x01,0x01,0xf3,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,0x73,0x63,0x72,0x6f,
+0x04,0x00,0x01,0x01,0xb2,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,0x73,0x63,0x72,0x6f,
0x6c,0x6c,0x61,0x62,0x6c,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x12,0x12,0x22,0x11,0x77,0x69,0x6e,0x64,0x6f,0x77,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
@@ -19,62 +19,72 @@ TK_CONST_DATA_ALIGN(const unsigned char ui_tab_scrollable_default[]) = {
0x74,0x00,0x47,0x65,0x6e,0x65,0x72,0x61,0x6c,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,0x62,0x75,0x74,0x74,
0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x74,0x65,0x78,0x74,0x00,0x4e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,0x62,
-0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x74,0x65,0x78,0x74,0x00,0x4e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x00,0x6d,0x61,0x78,0x5f,0x77,0x00,0x37,0x30,
+0x00,0x65,0x6c,0x6c,0x69,0x70,0x73,0x65,0x73,0x00,0x74,0x72,0x75,0x65,0x00,0x00,0x00,0x74,0x61,0x62,
+0x5f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,0x6e,0x65,0x5f,0x62,0x75,0x74,0x74,0x6f,0x6e,
-0x00,0x74,0x65,0x78,0x74,0x00,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,0x00,0x76,0x61,0x6c,0x75,0x65,
-0x00,0x74,0x72,0x75,0x65,0x00,0x00,0x00,0x00,0x70,0x61,0x67,0x65,0x73,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,0x6e,0x65,0x5f,0x62,0x75,0x74,0x74,
+0x6f,0x6e,0x00,0x74,0x65,0x78,0x74,0x00,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,0x00,0x76,0x61,0x6c,
+0x75,0x65,0x00,0x74,0x72,0x75,0x65,0x00,0x00,0x00,0x00,0x70,0x61,0x67,0x65,0x73,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x5a,0x00,0x00,0x00,0xc4,0xff,0xff,0xff,0x73,0x65,0x6c,
-0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,
-0x2c,0x79,0x3d,0x34,0x32,0x2c,0x77,0x3d,0x39,0x30,0x25,0x2c,0x68,0x3d,0x2d,0x36,0x30,0x29,0x00,0x76,
-0x61,0x6c,0x75,0x65,0x00,0x31,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x5a,0x00,0x00,0x00,0x88,0xff,0xff,0xff,0x73,
+0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,
+0x3d,0x63,0x2c,0x79,0x3d,0x34,0x32,0x2c,0x77,0x3d,0x39,0x30,0x25,0x2c,0x68,0x3d,0x2d,0x31,0x32,0x30,
+0x29,0x00,0x76,0x61,0x6c,0x75,0x65,0x00,0x31,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,
-0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x77,0x3d,0x31,0x30,
-0x30,0x25,0x2c,0x68,0x3d,0x31,0x30,0x30,0x25,0x29,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x73,
+0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x77,
+0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,0x30,0x30,0x25,0x29,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,
-0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,
-0x78,0x3d,0x63,0x2c,0x79,0x3d,0x6d,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x36,0x30,0x29,
-0x00,0x74,0x65,0x78,0x74,0x00,0x47,0x65,0x6e,0x65,0x72,0x61,0x6c,0x00,0x00,0x00,0x62,0x75,0x74,0x74,
-0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,
-0x28,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,
-0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x31,0x30,0x30,
-0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,
-0x73,0x65,0x00,0x74,0x72,0x5f,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,0x00,
-0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,
+0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,
+0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x6d,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,
+0x36,0x30,0x29,0x00,0x74,0x65,0x78,0x74,0x00,0x47,0x65,0x6e,0x65,0x72,0x61,0x6c,0x00,0x00,0x00,0x62,
+0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,
+0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,
+0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,
+0x31,0x30,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,
+0x63,0x6c,0x6f,0x73,0x65,0x00,0x74,0x72,0x5f,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,
+0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x64,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,
-0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,0x30,0x30,
-0x25,0x29,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,
+0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,
+0x31,0x30,0x30,0x25,0x29,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,
-0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x6d,0x2c,
-0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x36,0x30,0x29,0x00,0x74,0x65,0x78,0x74,0x00,0x4e,0x65,
-0x74,0x77,0x6f,0x72,0x6b,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,
+0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,
+0x3d,0x6d,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x36,0x30,0x29,0x00,0x74,0x65,0x78,0x74,
+0x00,0x4e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,
-0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,
-0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x31,0x30,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,
-0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,0x73,0x65,0x00,0x74,0x72,0x5f,0x74,0x65,
-0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x73,
+0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,
+0x3d,0x63,0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x31,0x30,0x30,0x2c,0x77,0x3d,0x38,0x30,
+0x2c,0x68,0x3d,0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,0x73,0x65,0x00,0x74,0x72,
+0x5f,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x00,0x00,0x00,
-0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,
-0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,0x30,0x30,0x25,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,
-0x63,0x6c,0x6f,0x6e,0x65,0x5f,0x76,0x69,0x65,0x77,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,
+0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,
+0x6c,0x74,0x28,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,0x30,0x30,0x25,0x29,0x00,0x6e,0x61,
+0x6d,0x65,0x00,0x63,0x6c,0x6f,0x6e,0x65,0x5f,0x76,0x69,0x65,0x77,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,
-0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,
-0x78,0x3d,0x63,0x2c,0x79,0x3d,0x6d,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x36,0x30,0x29,
-0x00,0x74,0x65,0x78,0x74,0x00,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,0x00,0x00,0x00,0x62,0x75,0x74,
-0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,
-0x00,0x28,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,
-0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x31,0x30,
-0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,
-0x6f,0x6e,0x65,0x5f,0x74,0x61,0x62,0x00,0x74,0x72,0x5f,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x6e,
-0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*1571*/
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,
+0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,
+0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x6d,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,
+0x36,0x30,0x29,0x00,0x74,0x65,0x78,0x74,0x00,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,0x00,0x00,0x00,
+0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x50,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,
+0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,
+0x3a,0x31,0x30,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,
+0x00,0x63,0x6c,0x6f,0x6e,0x65,0x5f,0x74,0x61,0x62,0x00,0x74,0x72,0x5f,0x74,0x65,0x78,0x74,0x00,0x43,
+0x6c,0x6f,0x6e,0x65,0x00,0x00,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x73,0x65,0x6c,
+0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,
+0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x32,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,
+0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x77,0x69,0x64,0x67,0x65,0x74,0x5f,0x6c,0x61,0x79,0x6f,
+0x75,0x74,0x00,0x74,0x65,0x78,0x74,0x00,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,};/*1762*/
diff --git a/res/assets/default/inc/ui/tab_scrollable_and_dragchild.data b/res/assets/default/inc/ui/tab_scrollable_and_dragchild.data
new file mode 100644
index 000000000..f3c266536
--- /dev/null
+++ b/res/assets/default/inc/ui/tab_scrollable_and_dragchild.data
@@ -0,0 +1,92 @@
+TK_CONST_DATA_ALIGN(const unsigned char ui_tab_scrollable_and_dragchild_default[]) = {
+0x04,0x00,0x01,0x01,0xd9,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,0x73,0x63,0x72,0x6f,
+0x6c,0x6c,0x61,0x62,0x6c,0x65,0x5f,0x61,0x6e,0x64,0x5f,0x64,0x72,0x61,0x67,0x63,0x68,0x69,0x6c,0x64,
+0x00,0x00,0x00,0x00,0x12,0x12,0x22,0x11,0x77,0x69,0x6e,0x64,0x6f,0x77,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x61,0x6e,0x69,0x6d,
+0x5f,0x68,0x69,0x6e,0x74,0x00,0x68,0x74,0x72,0x61,0x6e,0x73,0x6c,0x61,0x74,0x65,0x00,0x74,0x68,0x65,
+0x6d,0x65,0x00,0x74,0x61,0x62,0x5f,0x74,0x6f,0x70,0x5f,0x63,0x6f,0x6d,0x70,0x61,0x63,0x74,0x00,0x00,
+0x74,0x61,0x62,0x5f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x5f,0x67,0x72,0x6f,0x75,0x70,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,
+0x5a,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,
+0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x31,0x32,0x2c,0x77,0x3d,0x39,
+0x30,0x25,0x2c,0x68,0x3d,0x33,0x30,0x29,0x00,0x63,0x6f,0x6d,0x70,0x61,0x63,0x74,0x00,0x74,0x72,0x75,
+0x65,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x00,0x74,0x72,0x75,0x65,0x00,0x65,0x6e,
+0x61,0x62,0x6c,0x65,0x5f,0x68,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x5f,0x61,0x6e,0x69,0x6d,0x61,0x74,0x6f,
+0x72,0x00,0x66,0x61,0x6c,0x73,0x65,0x00,0x73,0x63,0x72,0x6f,0x6c,0x6c,0x61,0x62,0x6c,0x65,0x5f,0x6d,
+0x6f,0x64,0x65,0x00,0x77,0x68,0x65,0x65,0x6c,0x00,0x64,0x72,0x61,0x67,0x5f,0x63,0x68,0x69,0x6c,0x64,
+0x00,0x74,0x72,0x75,0x65,0x00,0x00,0x74,0x61,0x62,0x5f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,0x78,0x74,0x00,
+0x47,0x65,0x6e,0x65,0x72,0x61,0x6c,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,0x62,0x75,0x74,0x74,0x6f,0x6e,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x65,
+0x78,0x74,0x00,0x4e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x00,0x6d,0x61,0x78,0x5f,0x77,0x00,0x31,0x30,0x30,0x00,
+0x65,0x6c,0x6c,0x69,0x70,0x73,0x65,0x73,0x00,0x74,0x72,0x75,0x65,0x00,0x00,0x00,0x74,0x61,0x62,0x5f,
+0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,0x6e,0x65,0x5f,0x62,0x75,0x74,0x74,0x6f,
+0x6e,0x00,0x74,0x65,0x78,0x74,0x00,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,0x00,0x76,0x61,0x6c,0x75,
+0x65,0x00,0x74,0x72,0x75,0x65,0x00,0x00,0x00,0x00,0x70,0x61,0x67,0x65,0x73,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x5a,0x00,0x00,0x00,0x88,0xff,0xff,0xff,0x73,0x65,
+0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,
+0x63,0x2c,0x79,0x3d,0x34,0x32,0x2c,0x77,0x3d,0x39,0x30,0x25,0x2c,0x68,0x3d,0x2d,0x31,0x32,0x30,0x29,
+0x00,0x76,0x61,0x6c,0x75,0x65,0x00,0x32,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x73,0x65,
+0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x77,0x3d,
+0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,0x30,0x30,0x25,0x29,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,0x00,
+0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,
+0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x6d,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x36,
+0x30,0x29,0x00,0x74,0x65,0x78,0x74,0x00,0x47,0x65,0x6e,0x65,0x72,0x61,0x6c,0x00,0x00,0x00,0x62,0x75,
+0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,
+0x00,0x00,0x28,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,
+0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x31,
+0x30,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,
+0x6c,0x6f,0x73,0x65,0x00,0x74,0x72,0x5f,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,0x00,
+0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,
+0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,
+0x30,0x30,0x25,0x29,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,
+0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,
+0x6d,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x36,0x30,0x29,0x00,0x74,0x65,0x78,0x74,0x00,
+0x4e,0x65,0x74,0x77,0x6f,0x72,0x6b,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x73,0x65,
+0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,
+0x63,0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x31,0x30,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,
+0x68,0x3d,0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,0x73,0x65,0x00,0x74,0x72,0x5f,
+0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,0x00,0x76,0x69,0x65,0x77,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x00,
+0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,
+0x74,0x28,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,0x30,0x30,0x25,0x29,0x00,0x6e,0x61,0x6d,
+0x65,0x00,0x63,0x6c,0x6f,0x6e,0x65,0x5f,0x76,0x69,0x65,0x77,0x00,0x00,0x6c,0x61,0x62,0x65,0x6c,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x3c,0x00,
+0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,
+0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x6d,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x36,
+0x30,0x29,0x00,0x74,0x65,0x78,0x74,0x00,0x53,0x65,0x63,0x75,0x72,0x69,0x74,0x79,0x00,0x00,0x00,0x62,
+0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,
+0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,
+0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,
+0x31,0x30,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x34,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,
+0x63,0x6c,0x6f,0x6e,0x65,0x5f,0x74,0x61,0x62,0x00,0x74,0x72,0x5f,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,
+0x6f,0x6e,0x65,0x00,0x00,0x00,0x00,0x00,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x73,0x65,0x6c,0x66,
+0x5f,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x2c,
+0x79,0x3d,0x62,0x6f,0x74,0x74,0x6f,0x6d,0x3a,0x32,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x34,
+0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x77,0x69,0x64,0x67,0x65,0x74,0x5f,0x6c,0x61,0x79,0x6f,0x75,
+0x74,0x00,0x74,0x65,0x78,0x74,0x00,0x6c,0x61,0x79,0x6f,0x75,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,};/*1801*/
diff --git a/res/assets/default/raw/ui/scroll_view.bin b/res/assets/default/raw/ui/scroll_view.bin
index e479eef1d..698c58c9a 100644
Binary files a/res/assets/default/raw/ui/scroll_view.bin and b/res/assets/default/raw/ui/scroll_view.bin differ
diff --git a/res/assets/default/raw/ui/tab_control.bin b/res/assets/default/raw/ui/tab_control.bin
index 8cfcbfcd6..ea12a515e 100644
Binary files a/res/assets/default/raw/ui/tab_control.bin and b/res/assets/default/raw/ui/tab_control.bin differ
diff --git a/res/assets/default/raw/ui/tab_scrollable.bin b/res/assets/default/raw/ui/tab_scrollable.bin
index 54b501dc5..70dc5b017 100644
Binary files a/res/assets/default/raw/ui/tab_scrollable.bin and b/res/assets/default/raw/ui/tab_scrollable.bin differ
diff --git a/res/assets/default/raw/ui/tab_scrollable_and_dragchild.bin b/res/assets/default/raw/ui/tab_scrollable_and_dragchild.bin
new file mode 100644
index 000000000..ceb9bcfc1
Binary files /dev/null and b/res/assets/default/raw/ui/tab_scrollable_and_dragchild.bin differ
diff --git a/res/assets_all_dark.inc b/res/assets_all_dark.inc
index 089c67350..abe2b3749 100644
--- a/res/assets_all_dark.inc
+++ b/res/assets_all_dark.inc
@@ -161,6 +161,7 @@
#include "assets/default/inc/ui/selectm.data"
#include "assets/default/inc/ui/list_view.data"
#include "assets/default/inc/ui/stroke_gradient.data"
+#include "assets/default/inc/ui/tab_scrollable_and_dragchild.data"
#include "assets/default/inc/ui/menu_left_middle.data"
#include "assets/default/inc/ui/slide_view_h1.data"
#include "assets/default/inc/ui/basic.data"
@@ -1092,6 +1093,7 @@ ret_t assets_init(void) {
assets_manager_add(am, ui_selectm_default);
assets_manager_add(am, ui_list_view_default);
assets_manager_add(am, ui_stroke_gradient_default);
+ assets_manager_add(am, ui_tab_scrollable_and_dragchild_default);
assets_manager_add(am, ui_menu_left_middle_default);
assets_manager_add(am, ui_slide_view_h1_default);
assets_manager_add(am, ui_basic_default);
diff --git a/res/assets_all_default.inc b/res/assets_all_default.inc
index 6c1b71061..f769ef903 100644
--- a/res/assets_all_default.inc
+++ b/res/assets_all_default.inc
@@ -161,6 +161,7 @@
#include "assets/default/inc/ui/selectm.data"
#include "assets/default/inc/ui/list_view.data"
#include "assets/default/inc/ui/stroke_gradient.data"
+#include "assets/default/inc/ui/tab_scrollable_and_dragchild.data"
#include "assets/default/inc/ui/menu_left_middle.data"
#include "assets/default/inc/ui/slide_view_h1.data"
#include "assets/default/inc/ui/basic.data"
@@ -1092,6 +1093,7 @@ ret_t assets_init(void) {
assets_manager_add(am, ui_selectm_default);
assets_manager_add(am, ui_list_view_default);
assets_manager_add(am, ui_stroke_gradient_default);
+ assets_manager_add(am, ui_tab_scrollable_and_dragchild_default);
assets_manager_add(am, ui_menu_left_middle_default);
assets_manager_add(am, ui_slide_view_h1_default);
assets_manager_add(am, ui_basic_default);
diff --git a/res/assets_old_dark.inc b/res/assets_old_dark.inc
index f12921c71..0c345baf7 100644
--- a/res/assets_old_dark.inc
+++ b/res/assets_old_dark.inc
@@ -158,6 +158,7 @@
#include "assets/default/inc/ui/selectm.data"
#include "assets/default/inc/ui/list_view.data"
#include "assets/default/inc/ui/stroke_gradient.data"
+#include "assets/default/inc/ui/tab_scrollable_and_dragchild.data"
#include "assets/default/inc/ui/menu_left_middle.data"
#include "assets/default/inc/ui/slide_view_h1.data"
#include "assets/default/inc/ui/basic.data"
@@ -712,6 +713,7 @@ ret_t assets_init(void) {
assets_manager_add(am, ui_selectm_default);
assets_manager_add(am, ui_list_view_default);
assets_manager_add(am, ui_stroke_gradient_default);
+ assets_manager_add(am, ui_tab_scrollable_and_dragchild_default);
assets_manager_add(am, ui_menu_left_middle_default);
assets_manager_add(am, ui_slide_view_h1_default);
assets_manager_add(am, ui_basic_default);
diff --git a/res/assets_old_default.inc b/res/assets_old_default.inc
index e688e8be2..83b59de5c 100644
--- a/res/assets_old_default.inc
+++ b/res/assets_old_default.inc
@@ -158,6 +158,7 @@
#include "assets/default/inc/ui/selectm.data"
#include "assets/default/inc/ui/list_view.data"
#include "assets/default/inc/ui/stroke_gradient.data"
+#include "assets/default/inc/ui/tab_scrollable_and_dragchild.data"
#include "assets/default/inc/ui/menu_left_middle.data"
#include "assets/default/inc/ui/slide_view_h1.data"
#include "assets/default/inc/ui/basic.data"
@@ -712,6 +713,7 @@ ret_t assets_init(void) {
assets_manager_add(am, ui_selectm_default);
assets_manager_add(am, ui_list_view_default);
assets_manager_add(am, ui_stroke_gradient_default);
+ assets_manager_add(am, ui_tab_scrollable_and_dragchild_default);
assets_manager_add(am, ui_menu_left_middle_default);
assets_manager_add(am, ui_slide_view_h1_default);
assets_manager_add(am, ui_basic_default);
diff --git a/src/base/hscrollable.c b/src/base/hscrollable.c
index 39e89cec4..6dbdb2159 100644
--- a/src/base/hscrollable.c
+++ b/src/base/hscrollable.c
@@ -131,21 +131,19 @@ ret_t hscrollable_scroll_to(hscrollable_t* hscrollable, int32_t xoffset_end, int
return RET_OK;
}
-#define SPEED_SCALE 2
-#define MIN_DELTA 10
-
static ret_t hscrollable_on_pointer_up(hscrollable_t* hscrollable, pointer_event_t* e) {
+#ifndef WITHOUT_WIDGET_ANIMATORS
velocity_t* v = &(hscrollable->velocity);
int32_t move_dx = e->x - hscrollable->down.x;
velocity_update(v, e->e.time, e->x, e->y);
- if (move_dx) {
+ if (move_dx && hscrollable->enable_hscroll_animator) {
int xv = tk_min(v->xv, 100);
hscrollable->xoffset_end = hscrollable->xoffset - xv;
hscrollable_scroll_to(hscrollable, hscrollable->xoffset_end, 300);
}
-
+#endif
return RET_OK;
}
diff --git a/src/widgets/tab_button.c b/src/widgets/tab_button.c
index 46b7a1a26..fbc1b3845 100644
--- a/src/widgets/tab_button.c
+++ b/src/widgets/tab_button.c
@@ -289,6 +289,11 @@ static ret_t tab_button_get_prop(widget_t* widget, const char* name, value_t* v)
} else if (tk_str_eq(name, WIDGET_PROP_LOAD_UI)) {
value_set_str(v, tab_button->load_ui);
return RET_OK;
+ } else if (tk_str_eq(name, WIDGET_PROP_MAX_W)) {
+ if (tab_button->max_w >= 0) {
+ value_set_int32(v, tab_button->max_w);
+ return RET_OK;
+ }
}
return RET_NOT_FOUND;
@@ -305,6 +310,8 @@ static ret_t tab_button_set_prop(widget_t* widget, const char* name, const value
return tab_button_set_active_icon(widget, value_str(v));
} else if (tk_str_eq(name, WIDGET_PROP_LOAD_UI)) {
return tab_button_set_load_ui(widget, value_str(v));
+ } else if (tk_str_eq(name, WIDGET_PROP_MAX_W)) {
+ return tab_button_set_max_w(widget, value_int32(v));
}
return RET_NOT_FOUND;
@@ -328,13 +335,15 @@ static ret_t tab_button_init(widget_t* widget) {
tab_button->ui = NULL;
tab_button->load_ui = NULL;
+ tab_button->max_w = -1;
+
tab_button_set_value_only(widget, FALSE);
widget_add_idle(widget, tab_button_open_idle_func);
return RET_OK;
}
-static const char* s_tab_button_clone_properties[] = {WIDGET_PROP_VALUE, NULL};
+static const char* s_tab_button_clone_properties[] = {WIDGET_PROP_VALUE, WIDGET_PROP_MAX_W, WIDGET_PROP_ELLIPSES, NULL};
TK_DECL_VTABLE(tab_button) = {.size = sizeof(tab_button_t),
.type = WIDGET_TYPE_TAB_BUTTON,
.space_key_to_activate = TRUE,
@@ -360,6 +369,26 @@ ret_t tab_button_set_icon(widget_t* widget, const char* name) {
return RET_OK;
}
+ret_t tab_button_set_max_w(widget_t* widget, int32_t max_w) {
+ tab_button_t* tab_button = TAB_BUTTON(widget);
+ return_value_if_fail(tab_button != NULL, RET_BAD_PARAMS);
+ tab_button->max_w = max_w;
+ return RET_OK;
+}
+
+ret_t tab_button_restack(widget_t* widget, uint32_t index) {
+ widget_t* page = NULL;
+ widget_t* pages = tab_button_get_pages(widget);
+ int32_t page_index = tab_button_page_index_of(widget);
+ return_value_if_fail(widget != NULL && pages != NULL && page_index >= 0, RET_BAD_PARAMS);
+ page = widget_get_child(pages, page_index);
+
+ widget_restack(page, index);
+ widget_restack(widget, index);
+
+ return RET_OK;
+}
+
ret_t tab_button_set_active_icon(widget_t* widget, const char* name) {
tab_button_t* tab_button = TAB_BUTTON(widget);
ENSURE(tab_button);
diff --git a/src/widgets/tab_button.h b/src/widgets/tab_button.h
index f9c583add..f1d29c9f8 100644
--- a/src/widgets/tab_button.h
+++ b/src/widgets/tab_button.h
@@ -117,6 +117,13 @@ typedef struct _tab_button_t {
*/
char* icon;
+ /**
+ * @property {int32_t} max_w
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 最大宽度。(缺省值为-1,小于 0 则最大宽度无效)
+ */
+ int32_t max_w;
+
/*private*/
widget_t* ui;
bool_t pressed;
@@ -194,6 +201,28 @@ ret_t tab_button_set_icon(widget_t* widget, const char* name);
*/
ret_t tab_button_set_active_icon(widget_t* widget, const char* name);
+/**
+ * @method tab_button_set_max_w
+ * 设置控件的最大宽度。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget tab_button对象。
+ * @param {int32_t} max_w 最大宽度。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t tab_button_set_max_w(widget_t* widget, int32_t max_w);
+
+/**
+ * @method tab_button_restack
+ * 调整控件在父控件中的位置序数。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget tab_button对象。
+ * @param {uint32_t} index 位置序数(大于等于总个数,则放到最后)。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t tab_button_restack(widget_t* widget, uint32_t index);
+
/**
* @method tab_button_set_load_ui
* 设置控件动态加载显示UI。
diff --git a/src/widgets/tab_button_group.c b/src/widgets/tab_button_group.c
index fce635fa4..985ac3cb7 100644
--- a/src/widgets/tab_button_group.c
+++ b/src/widgets/tab_button_group.c
@@ -20,8 +20,20 @@
*/
#include "tkc/mem.h"
+#include "widgets/tab_button.h"
#include "widgets/tab_button_group.h"
+#define TK_TAB_BUTTON_DRAG_THRESHOLD 5
+
+#define TAB_BUTTON_GROUP_SCROLLABLE_MODE_WHELL 1 << 0
+#define TAB_BUTTON_GROUP_SCROLLABLE_MODE_DRAGGED 1 << 1
+#define TAB_BUTTON_GROUP_SCROLLABLE_MODE_ALL 0xFFFFFFFFF
+
+#define TAB_BUTTON_GROUP_SCROLLABLE_MODE_WHELL_STRING "wheel"
+#define TAB_BUTTON_GROUP_SCROLLABLE_MODE_DRAGGED_STRING "dragged"
+#define TAB_BUTTON_GROUP_SCROLLABLE_MODE_ALL_STRING "all"
+
+
static ret_t tab_button_group_on_layout_children_non_compact(widget_t* widget) {
int32_t x = 0;
int32_t y = 0;
@@ -84,6 +96,10 @@ static ret_t tab_button_group_on_layout_children_compact(widget_t* widget) {
w = iter->w;
}
+ if (widget_get_prop(iter, WIDGET_PROP_MAX_W, &v) == RET_OK) {
+ w = tk_min(w, value_int(&v));
+ }
+
widget_move_resize(iter, x, y, w, h);
widget_layout_children(iter);
x += w;
@@ -100,13 +116,19 @@ static ret_t tab_button_group_on_layout_children_compact(widget_t* widget) {
hscrollable_set_always_scrollable(tab_button_group->hscrollable, FALSE);
}
- if (active != NULL) {
+ if (active != NULL && tab_button_group->is_active_in_viewport) {
widget_ensure_visible_in_viewport(active);
}
return RET_OK;
}
+static ret_t tab_button_group_set_active_in_viewport_on_layout(tab_button_group_t* tab_button_group, bool_t active_in_viewport) {
+ return_value_if_fail(tab_button_group != NULL, RET_BAD_PARAMS);
+ tab_button_group->is_active_in_viewport = active_in_viewport;
+ return RET_OK;
+}
+
static ret_t tab_button_group_on_layout_children(widget_t* widget) {
tab_button_group_t* tab_button_group = TAB_BUTTON_GROUP(widget);
ENSURE(tab_button_group);
@@ -131,6 +153,9 @@ static ret_t tab_button_group_get_prop(widget_t* widget, const char* name, value
} else if (tk_str_eq(name, WIDGET_PROP_SCROLLABLE)) {
value_set_bool(v, tab_button_group->scrollable);
return RET_OK;
+ } else if (tk_str_eq(name, TAB_BUTTON_GROUP_PROP_DRAG_CHILD)) {
+ value_set_bool(v, tab_button_group->drag_child);
+ return RET_OK;
}
if (tab_button_group->hscrollable != NULL) {
@@ -149,6 +174,22 @@ static ret_t tab_button_group_set_prop(widget_t* widget, const char* name, const
} else if (tk_str_eq(name, WIDGET_PROP_SCROLLABLE)) {
tab_button_group_set_scrollable(widget, value_bool(v));
return RET_OK;
+ } else if (tk_str_eq(name, TAB_BUTTON_GROUP_PROP_DRAG_CHILD)) {
+ tab_button_group_set_drag_child(widget, value_bool(v));
+ return RET_OK;
+ } else if (tk_str_eq(name, TAB_BUTTON_GROUP_PROP_SCROLLABLE_MODE)) {
+ const char* str = value_str(v);
+ if (str != NULL) {
+ if (tk_stricmp(str, TAB_BUTTON_GROUP_SCROLLABLE_MODE_WHELL_STRING) == 0) {
+ tab_button_group->scrollable_mode_flags = TAB_BUTTON_GROUP_SCROLLABLE_MODE_WHELL;
+ } else if (tk_stricmp(str, TAB_BUTTON_GROUP_SCROLLABLE_MODE_DRAGGED_STRING) == 0) {
+ tab_button_group->scrollable_mode_flags = TAB_BUTTON_GROUP_SCROLLABLE_MODE_DRAGGED;
+ } else {
+ tab_button_group->scrollable_mode_flags = TAB_BUTTON_GROUP_SCROLLABLE_MODE_ALL;
+ }
+ return RET_OK;
+ }
+ return RET_FAIL;
}
if (tab_button_group->hscrollable != NULL) {
@@ -204,6 +245,87 @@ static bool_t tab_button_group_active_is_valid(widget_t* widget, uint32_t active
return (active < widget_count_children(widget));
}
+static ret_t tab_button_group_last_iter_rect_destroy(tab_button_group_t* tab_button_group) {
+ return_value_if_fail(tab_button_group != NULL, RET_BAD_PARAMS);
+ if (tab_button_group->last_iter_rect != NULL) {
+ rect_destroy(tab_button_group->last_iter_rect);
+ tab_button_group->last_iter_rect = NULL;
+ }
+ return RET_OK;
+}
+
+static ret_t tab_button_group_on_pointer_down(widget_t* widget, pointer_event_t* e) {
+ widget_t* target = NULL;
+ tab_button_group_t* tab_button_group = TAB_BUTTON_GROUP(widget);
+ return_value_if_fail(tab_button_group != NULL && e != NULL, RET_BAD_PARAMS);
+
+ target = widget_find_target(widget, e->x, e->y);
+ if (target != NULL) {
+ if (tab_button_group->drag_child) {
+ widget_grab(widget->parent, widget);
+ tab_button_group->dragged = target;
+ }
+ widget_set_prop_bool(target, WIDGET_PROP_VALUE, TRUE);
+ tab_button_group_last_iter_rect_destroy(tab_button_group);
+ }
+ return RET_OK;
+}
+
+static ret_t tab_button_group_on_pointer_move(widget_t* widget, pointer_event_t* e) {
+ point_t p;
+ ret_t ret = RET_OK;
+ tab_button_group_t* tab_button_group = TAB_BUTTON_GROUP(widget);
+ return_value_if_fail(tab_button_group != NULL && e != NULL, RET_BAD_PARAMS);
+ p.x = e->x;
+ p.y = e->y;
+ ret = widget_to_local(widget->parent, &p);
+ p.x -= widget->x;
+ p.y -= widget->y;
+ if (ret == RET_OK && p.y >= 0 && p.y <= widget->h) {
+ if (p.x > 0 && p.x < widget->w) {
+ p.x = e->x;
+ p.y = e->y;
+ if (widget_to_local(widget, &p) == RET_OK) {
+ WIDGET_FOR_EACH_CHILD_BEGIN(widget, iter, i)
+ xy_t xx = p.x - iter->x;
+ xy_t yy = p.y - iter->y;
+ if (widget_is_point_in(iter, xx, yy, TRUE)) {
+ if (iter != tab_button_group->dragged) {
+ if (!(tab_button_group->last_iter_rect != NULL && rect_contains(tab_button_group->last_iter_rect, p.x, p.y))) {
+ tab_button_group_last_iter_rect_destroy(tab_button_group);
+ tab_button_group->last_iter_rect = rect_create(iter->x, iter->y, iter->w, iter->h);
+ tab_button_group_set_active_in_viewport_on_layout(tab_button_group, TRUE);
+ tab_button_restack(tab_button_group->dragged, i);
+ widget_layout(widget);
+ }
+ } else {
+ tab_button_group_last_iter_rect_destroy(tab_button_group);
+ }
+ break;
+ }
+ WIDGET_FOR_EACH_CHILD_END();
+ }
+ } else if (p.x <= 0) {
+ if (p.x <= -TK_TAB_BUTTON_DRAG_THRESHOLD && tab_button_group->last_pointer_x > e->x) {
+ int32_t index = widget_index_of(tab_button_group->dragged);
+ tab_button_group_set_active_in_viewport_on_layout(tab_button_group, TRUE);
+ tab_button_restack(tab_button_group->dragged, tk_max(index - 1, 0));
+ widget_layout(widget);
+ }
+ } else {
+ if (p.x >= TK_TAB_BUTTON_DRAG_THRESHOLD + widget->w && tab_button_group->last_pointer_x < e->x) {
+ int32_t index = widget_index_of(tab_button_group->dragged);
+ int32_t count = widget_count_children(widget);
+ tab_button_group_set_active_in_viewport_on_layout(tab_button_group, TRUE);
+ tab_button_restack(tab_button_group->dragged, tk_min(index + 1, count));
+ widget_layout(widget);
+ }
+ }
+ }
+ tab_button_group->last_pointer_x = e->x;
+ return RET_OK;
+}
+
static ret_t tab_button_group_on_event(widget_t* widget, event_t* e) {
tab_button_group_t* tab_button_group = TAB_BUTTON_GROUP(widget);
return_value_if_fail(tab_button_group != NULL, RET_BAD_PARAMS);
@@ -219,13 +341,62 @@ static ret_t tab_button_group_on_event(widget_t* widget, event_t* e) {
}
break;
}
+ case EVT_WHEEL: {
+ if (tab_button_group->scrollable && tab_button_group->compact &&
+ (tab_button_group->scrollable_mode_flags & TAB_BUTTON_GROUP_SCROLLABLE_MODE_WHELL)) {
+ wheel_event_t* evt = (wheel_event_t*)e;
+ int32_t xoffset = tab_button_group->hscrollable->xoffset;
+
+ xoffset -= evt->dy;
+ if ((xoffset + widget->w) > tab_button_group->hscrollable->virtual_w) {
+ xoffset = tab_button_group->hscrollable->virtual_w - widget->w;
+ }
+ if (xoffset < 0) {
+ xoffset = 0;
+ }
+ tab_button_group_set_active_in_viewport_on_layout(tab_button_group, FALSE);
+ hscrollable_set_xoffset(tab_button_group->hscrollable, xoffset);
+ widget_invalidate(widget, NULL);
+ }
+ break;
+ }
+ case EVT_POINTER_DOWN:
+ tab_button_group_on_pointer_down(widget, (pointer_event_t*)e);
+ break;
+ case EVT_POINTER_UP: {
+ if (tab_button_group->drag_child) {
+ pointer_event_t* evt = (pointer_event_t*)e;
+ tab_button_group->dragged = NULL;
+ widget_ungrab(widget->parent, widget);
+ }
+ break;
+ }
+ case EVT_POINTER_MOVE: {
+ if (tab_button_group->drag_child) {
+ pointer_event_t* evt = (pointer_event_t*)e;
+ if (!evt->pressed) {
+ break;
+ }
+ if (tab_button_group->dragged != NULL) {
+ tab_button_group_on_pointer_move(widget, (pointer_event_t*)e);
+ }
+ }
+ break;
+ }
+ default:
+ break;
}
- if (tab_button_group->scrollable && tab_button_group->compact) {
- return hscrollable_on_event(tab_button_group->hscrollable, e);
- } else {
- return RET_OK;
+ if (tab_button_group->scrollable && tab_button_group->compact && !tab_button_group->drag_child &&
+ (tab_button_group->scrollable_mode_flags & TAB_BUTTON_GROUP_SCROLLABLE_MODE_DRAGGED)) {
+ int32_t xoffset = tab_button_group->hscrollable->xoffset;
+ ret_t ret = hscrollable_on_event(tab_button_group->hscrollable, e);
+ if (tab_button_group->is_active_in_viewport) {
+ tab_button_group_set_active_in_viewport_on_layout(tab_button_group, xoffset == tab_button_group->hscrollable->xoffset);
+ }
+ return ret;
}
+ return RET_OK;
}
ret_t tab_button_group_set_compact(widget_t* widget, bool_t compact) {
@@ -246,11 +417,22 @@ ret_t tab_button_group_set_scrollable(widget_t* widget, bool_t scrollable) {
return RET_OK;
}
+ret_t tab_button_group_set_drag_child(widget_t* widget, bool_t drag_child) {
+ tab_button_group_t* tab_button_group = TAB_BUTTON_GROUP(widget);
+ return_value_if_fail(tab_button_group != NULL, RET_BAD_PARAMS);
+
+ tab_button_group->drag_child = drag_child;
+
+ return RET_OK;
+}
+
+
static ret_t tab_button_group_on_destroy(widget_t* widget) {
tab_button_group_t* tab_button_group = TAB_BUTTON_GROUP(widget);
return_value_if_fail(widget != NULL && tab_button_group != NULL, RET_BAD_PARAMS);
hscrollable_destroy(tab_button_group->hscrollable);
+ tab_button_group_last_iter_rect_destroy(tab_button_group);
return RET_OK;
}
@@ -291,6 +473,8 @@ static ret_t tab_button_group_init(widget_t* widget) {
return_value_if_fail(tab_button_group != NULL, RET_BAD_PARAMS);
tab_button_group->hscrollable = hscrollable_create(widget);
+ tab_button_group->is_active_in_viewport = TRUE;
+ tab_button_group->scrollable_mode_flags = TAB_BUTTON_GROUP_SCROLLABLE_MODE_ALL;
return RET_OK;
}
diff --git a/src/widgets/tab_button_group.h b/src/widgets/tab_button_group.h
index 6ab11585c..54f50620f 100644
--- a/src/widgets/tab_button_group.h
+++ b/src/widgets/tab_button_group.h
@@ -81,6 +81,21 @@ typedef struct _tab_button_group_t {
*/
bool_t scrollable;
+ /**
+ * @property {char*} scrollable_mode
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 滚动模式 (缺省all) (all:鼠标滚轮+鼠标拖拽滚动,wheel:鼠标滚轮,dragged:鼠标拖拽滚动。
+ */
+
+ /**
+ * @property {bool_t} drag_child
+ * @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
+ * 是否支持拖拽并且修改 tab_button 控件的位置(缺省FALSE)。
+ *
+ * > 紧凑型排版子控件时才支持滚动,开启该功能后,就不能拖拽滚动了,只能鼠标滚轮滚动了。
+ */
+ bool_t drag_child;
+
/**
* @property {bool_t} enable_hscroll_animator
* @annotation ["set_prop","get_prop","readable","persitent","design","fake"]
@@ -89,7 +104,12 @@ typedef struct _tab_button_group_t {
*/
/*private*/
+ bool_t is_active_in_viewport;
+ xy_t last_pointer_x;
+ rect_t* last_iter_rect;
+ widget_t* dragged;
int32_t active;
+ uint32_t scrollable_mode_flags;
hscrollable_t* hscrollable;
} tab_button_group_t;
@@ -129,6 +149,17 @@ ret_t tab_button_group_set_compact(widget_t* widget, bool_t compact);
*/
ret_t tab_button_group_set_scrollable(widget_t* widget, bool_t scrollable);
+/**
+ * @method tab_button_group_set_drag_child
+ * 设置拖拽 tab_button 控件位置。
+ * @annotation ["scriptable"]
+ * @param {widget_t*} widget 控件对象。
+ * @param {bool_t} drag_child 是否拖拽(缺省FALSE)。
+ *
+ * @return {ret_t} 返回RET_OK表示成功,否则表示失败。
+ */
+ret_t tab_button_group_set_drag_child(widget_t* widget, bool_t drag_child);
+
/**
* @method tab_button_group_cast
* 转换tab_button_group对象(供脚本语言使用)。
@@ -144,6 +175,9 @@ widget_t* tab_button_group_cast(widget_t* widget);
/*public for subclass and runtime type check*/
TK_EXTERN_VTABLE(tab_button_group);
+#define TAB_BUTTON_GROUP_PROP_DRAG_CHILD "drag_child"
+#define TAB_BUTTON_GROUP_PROP_SCROLLABLE_MODE "scrollable_mode"
+
END_C_DECLS
#endif /*TK_TAB_BUTTON_GROUP_H*/