mirror of
https://github.com/zlgopen/awtk.git
synced 2025-05-07 19:05:54 +08:00
add accept_button/cancel_button
This commit is contained in:
parent
36930be4b4
commit
412efd5365
@ -21,6 +21,8 @@
|
||||
|
||||
#include "awtk.h"
|
||||
|
||||
static ret_t install_one(void* ctx, const void* iter);
|
||||
|
||||
static ret_t on_fullscreen(void* ctx, event_t* e) {
|
||||
widget_t* btn = WIDGET(e->target);
|
||||
window_t* win = WINDOW(widget_get_window(btn));
|
||||
@ -42,18 +44,79 @@ static ret_t on_click_enlarge(void* ctx, event_t* e) {
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
static ret_t on_click_close(void* ctx, event_t* e) {
|
||||
static ret_t on_click_win_close(void* ctx, event_t* e) {
|
||||
tk_quit();
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
static ret_t on_close(void* ctx, event_t* e) {
|
||||
widget_t* win = WIDGET(ctx);
|
||||
if (widget_is_dialog(win)) {
|
||||
dialog_quit(win, DIALOG_QUIT_CANCEL);
|
||||
} else {
|
||||
window_close(win);
|
||||
}
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
static ret_t on_ok(void* ctx, event_t* e) {
|
||||
widget_t* win = WIDGET(ctx);
|
||||
if (widget_is_dialog(win)) {
|
||||
dialog_quit(win, DIALOG_QUIT_OK);
|
||||
}
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
static ret_t on_open_window(void* ctx, event_t* e) {
|
||||
const char* name = (const char*)ctx;
|
||||
widget_t* win = window_open(name);
|
||||
widget_foreach(win, install_one, win);
|
||||
if (tk_str_eq(name, "toast")) {
|
||||
dialog_toast("Hello AWTK!\nThis is a toast(1)!", 4000);
|
||||
} else if (tk_str_eq(name, "info")) {
|
||||
dialog_info("info", "hello awtk");
|
||||
} else if (widget_is_dialog(win)) {
|
||||
dialog_quit_code_t quit_code = dialog_modal(win);
|
||||
switch (quit_code) {
|
||||
case DIALOG_QUIT_OK:
|
||||
log_debug("dialog_quit : DIALOG_QUIT_OK\n");
|
||||
break;
|
||||
case DIALOG_QUIT_CANCEL:
|
||||
log_debug("dialog_quit : DIALOG_QUIT_CANCEL\n");
|
||||
break;
|
||||
default:
|
||||
log_debug("DIALOG_QUIT_NONE\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
static ret_t install_one(void* ctx, const void* iter) {
|
||||
widget_t* widget = WIDGET(iter);
|
||||
widget_t* win = widget_get_window(widget);
|
||||
if (widget->name != NULL) {
|
||||
const char* name = widget->name;
|
||||
if (strstr(name, "open:") == name) {
|
||||
widget_on(widget, EVT_CLICK, on_open_window, (void*)(name + 5));
|
||||
} else if (tk_str_eq(name, "close")) {
|
||||
widget_on(widget, EVT_CLICK, on_close, win);
|
||||
} else if (tk_str_eq(name, "ok")) {
|
||||
widget_on(widget, EVT_CLICK, on_ok, win);
|
||||
}
|
||||
}
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t application_init(void) {
|
||||
widget_t* win = window_open("desktop");
|
||||
widget_child_on(win, "close", EVT_CLICK, on_click_close, NULL);
|
||||
widget_child_on(win, "win_close", EVT_CLICK, on_click_win_close, NULL);
|
||||
widget_child_on(win, "enlarge", EVT_CLICK, on_click_enlarge, NULL);
|
||||
widget_child_on(win, "fullscreen", EVT_CLICK, on_fullscreen, win);
|
||||
|
||||
widget_foreach(win, install_one, win);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
<edit x="c" y="350" w="50%" h="30" tips="input text here"/>
|
||||
<mledit x="c" y="390" w="50%" h="80" tips="input text here"/>
|
||||
|
||||
<button x="c:-150" y="b:10" w="80" h="30" name="open:dialog_win" focusable="true" text="dialog_win"/>
|
||||
<button x="c:-50" y="b:10" w="80" h="30" name="enlarge" text="Enlarge"/>
|
||||
<button x="c:50" y="b:10" w="80" h="30" name="close" text="Close"/>
|
||||
<button x="c:50" y="b:10" w="80" h="30" name="win_close" text="Close"/>
|
||||
</window>
|
||||
|
24
design/default/ui/dialog_win.xml
Normal file
24
design/default/ui/dialog_win.xml
Normal file
@ -0,0 +1,24 @@
|
||||
<dialog x="c" y="m" w="50%" h="50%" highlight="default(alpha=100)" accept_button="ok" cancel_button="close" style:normal:bg_color="#f0f0f0" >
|
||||
<view w="100%" h="27" style:bg_color="gray">
|
||||
<label name="title" x="15" y="0" w="-15" h="100%" text="title"/>
|
||||
<button name="close" x="r:0" y="0" w="27" h="100%" text="X"/>
|
||||
</view>
|
||||
<view name="separator" x="0" y="b:65" w="100%" h="1" style:normal:bg_color="gray"/>
|
||||
<button name="ok" x="r:90" y="b:21" w="60" h="27" focusable="true" text="Ok"/>
|
||||
<button name="close" x="r:15" y="b:21" w="60" h="27" focusable="true" text="Close"/>
|
||||
<view name="view" x="10" y="30" w="380" h="50">
|
||||
<edit min="0" max="1024" step="1" name="edit" x="75" y="10" w="202" h="28" focused="true" />
|
||||
<button name="open:toast" x="287" y="10" w="82" h="28" focusable="true" text="toast"/>
|
||||
<label name="label" x="0" y="10" w="65" h="28" text="FilePath:"/>
|
||||
</view>
|
||||
<view name="view" x="10" y="80" w="380" h="50">
|
||||
<edit min="0" max="1024" step="1" name="edit" x="75" y="10" w="202" h="28" />
|
||||
<button name="open:info" x="287" y="10" w="82" h="28" focusable="true" text="info"/>
|
||||
<label name="label" x="10" y="10" w="65" h="28" text="DirPath:"/>
|
||||
</view>
|
||||
<view name="view" x="10" y="120" w="380" h="50">
|
||||
<check_button x="75" y="10" w="70" h="28" text="Book" focusable="true"/>
|
||||
<mledit x="145" y="0" h="100%" w="100" text="accept = false" accept_return="false" accept_tab="false" />
|
||||
<mledit x="250" y="0" h="100%" w="100" text="asdfasdf" />
|
||||
</view>
|
||||
</dialog>
|
@ -1,5 +1,8 @@
|
||||
# 最新动态
|
||||
|
||||
2025/04/08
|
||||
* 给window增加accept_button和cancel_button的属性(感谢智明提供补丁)
|
||||
|
||||
2025/04/03
|
||||
* 完善tree(感谢兆坤提供补丁)
|
||||
* 修复编译警告(感谢智明提供补丁)
|
||||
|
@ -103,6 +103,7 @@ extern TK_CONST_DATA_ALIGN(const unsigned char ui_dialog2_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_color_picker_hsv_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_menu_down_right_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_tab_bottom_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_dialog_win_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_fruit_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_list_view_m_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_slide_view_h_loop_default[]);
|
||||
@ -1041,6 +1042,7 @@ ret_t assets_init_dark(void) {
|
||||
assets_manager_add(am, ui_color_picker_hsv_default);
|
||||
assets_manager_add(am, ui_menu_down_right_default);
|
||||
assets_manager_add(am, ui_tab_bottom_default);
|
||||
assets_manager_add(am, ui_dialog_win_default);
|
||||
assets_manager_add(am, ui_fruit_default);
|
||||
assets_manager_add(am, ui_list_view_m_default);
|
||||
assets_manager_add(am, ui_slide_view_h_loop_default);
|
||||
|
@ -103,6 +103,7 @@
|
||||
#include "default/inc/ui/color_picker_hsv.data"
|
||||
#include "default/inc/ui/menu_down_right.data"
|
||||
#include "default/inc/ui/tab_bottom.data"
|
||||
#include "default/inc/ui/dialog_win.data"
|
||||
#include "default/inc/ui/fruit.data"
|
||||
#include "default/inc/ui/list_view_m.data"
|
||||
#include "default/inc/ui/slide_view_h_loop.data"
|
||||
@ -1041,6 +1042,7 @@ ret_t assets_init_default(void) {
|
||||
assets_manager_add(am, ui_color_picker_hsv_default);
|
||||
assets_manager_add(am, ui_menu_down_right_default);
|
||||
assets_manager_add(am, ui_tab_bottom_default);
|
||||
assets_manager_add(am, ui_dialog_win_default);
|
||||
assets_manager_add(am, ui_fruit_default);
|
||||
assets_manager_add(am, ui_list_view_m_default);
|
||||
assets_manager_add(am, ui_slide_view_h_loop_default);
|
||||
|
@ -100,6 +100,7 @@ extern TK_CONST_DATA_ALIGN(const unsigned char ui_dialog2_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_color_picker_hsv_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_menu_down_right_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_tab_bottom_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_dialog_win_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_fruit_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_list_view_m_default[]);
|
||||
extern TK_CONST_DATA_ALIGN(const unsigned char ui_slide_view_h_loop_default[]);
|
||||
@ -661,6 +662,7 @@ ret_t assets_init_dark(void) {
|
||||
assets_manager_add(am, ui_color_picker_hsv_default);
|
||||
assets_manager_add(am, ui_menu_down_right_default);
|
||||
assets_manager_add(am, ui_tab_bottom_default);
|
||||
assets_manager_add(am, ui_dialog_win_default);
|
||||
assets_manager_add(am, ui_fruit_default);
|
||||
assets_manager_add(am, ui_list_view_m_default);
|
||||
assets_manager_add(am, ui_slide_view_h_loop_default);
|
||||
|
@ -100,6 +100,7 @@
|
||||
#include "default/inc/ui/color_picker_hsv.data"
|
||||
#include "default/inc/ui/menu_down_right.data"
|
||||
#include "default/inc/ui/tab_bottom.data"
|
||||
#include "default/inc/ui/dialog_win.data"
|
||||
#include "default/inc/ui/fruit.data"
|
||||
#include "default/inc/ui/list_view_m.data"
|
||||
#include "default/inc/ui/slide_view_h_loop.data"
|
||||
@ -661,6 +662,7 @@ ret_t assets_init_default(void) {
|
||||
assets_manager_add(am, ui_color_picker_hsv_default);
|
||||
assets_manager_add(am, ui_menu_down_right_default);
|
||||
assets_manager_add(am, ui_tab_bottom_default);
|
||||
assets_manager_add(am, ui_dialog_win_default);
|
||||
assets_manager_add(am, ui_fruit_default);
|
||||
assets_manager_add(am, ui_list_view_m_default);
|
||||
assets_manager_add(am, ui_slide_view_h_loop_default);
|
||||
|
@ -1,5 +1,5 @@
|
||||
TK_CONST_DATA_ALIGN(const unsigned char ui_desktop_default[]) = {
|
||||
0x04,0x00,0x01,0x01,0xef,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x6b,0x74,0x6f,0x70,0x00,
|
||||
0x04,0x00,0x01,0x01,0x88,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x65,0x73,0x6b,0x74,0x6f,0x70,0x00,
|
||||
0x00,0x00,0x00,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,
|
||||
@ -68,13 +68,20 @@ TK_CONST_DATA_ALIGN(const unsigned char ui_desktop_default[]) = {
|
||||
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,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,0x3a,0x2d,0x35,0x30,0x2c,0x79,
|
||||
0x3d,0x62,0x3a,0x31,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x33,0x30,0x29,0x00,0x6e,0x61,0x6d,
|
||||
0x65,0x00,0x65,0x6e,0x6c,0x61,0x72,0x67,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x45,0x6e,0x6c,0x61,0x72,
|
||||
0x67,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,0x50,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,0x3a,0x35,0x30,0x2c,
|
||||
0x75,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x78,0x3d,0x63,0x3a,0x2d,0x31,0x35,0x30,0x2c,
|
||||
0x79,0x3d,0x62,0x3a,0x31,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,0x68,0x3d,0x33,0x30,0x29,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,};/*1567*/
|
||||
0x6d,0x65,0x00,0x6f,0x70,0x65,0x6e,0x3a,0x64,0x69,0x61,0x6c,0x6f,0x67,0x5f,0x77,0x69,0x6e,0x00,0x66,
|
||||
0x6f,0x63,0x75,0x73,0x61,0x62,0x6c,0x65,0x00,0x74,0x72,0x75,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x64,
|
||||
0x69,0x61,0x6c,0x6f,0x67,0x5f,0x77,0x69,0x6e,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,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,0x3a,0x2d,0x35,0x30,0x2c,0x79,0x3d,0x62,0x3a,0x31,0x30,0x2c,0x77,0x3d,0x38,0x30,0x2c,
|
||||
0x68,0x3d,0x33,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x65,0x6e,0x6c,0x61,0x72,0x67,0x65,0x00,0x74,
|
||||
0x65,0x78,0x74,0x00,0x45,0x6e,0x6c,0x61,0x72,0x67,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,0x50,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,0x3a,0x35,0x30,0x2c,0x79,0x3d,0x62,0x3a,0x31,0x30,0x2c,0x77,0x3d,0x38,0x30,
|
||||
0x2c,0x68,0x3d,0x33,0x30,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x77,0x69,0x6e,0x5f,0x63,0x6c,0x6f,0x73,
|
||||
0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};/*1720*/
|
||||
|
101
res/assets/default/inc/ui/dialog_win.data
Normal file
101
res/assets/default/inc/ui/dialog_win.data
Normal file
@ -0,0 +1,101 @@
|
||||
TK_CONST_DATA_ALIGN(const unsigned char ui_dialog_win_default[]) = {
|
||||
0x04,0x00,0x01,0x01,0x91,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0x69,0x61,0x6c,0x6f,0x67,0x5f,0x77,
|
||||
0x69,0x6e,0x00,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,0x64,0x69,0x61,0x6c,0x6f,0x67,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x32,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,0x35,0x30,0x25,0x2c,0x68,0x3d,0x35,0x30,0x25,0x29,0x00,0x68,0x69,0x67,
|
||||
0x68,0x6c,0x69,0x67,0x68,0x74,0x00,0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x28,0x61,0x6c,0x70,0x68,0x61,
|
||||
0x3d,0x31,0x30,0x30,0x29,0x00,0x61,0x63,0x63,0x65,0x70,0x74,0x5f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,
|
||||
0x6f,0x6b,0x00,0x63,0x61,0x6e,0x63,0x65,0x6c,0x5f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x00,0x63,0x6c,0x6f,
|
||||
0x73,0x65,0x00,0x73,0x74,0x79,0x6c,0x65,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x3a,0x62,0x67,0x5f,0x63,
|
||||
0x6f,0x6c,0x6f,0x72,0x00,0x23,0x66,0x30,0x66,0x30,0x66,0x30,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,0x1b,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,0x32,0x37,0x29,0x00,0x73,0x74,0x79,0x6c,0x65,
|
||||
0x3a,0x62,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x67,0x72,0x61,0x79,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,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf1,0xff,0xff,0xff,
|
||||
0x64,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,0x35,0x2c,0x79,0x3d,0x30,0x2c,0x77,0x3d,0x2d,0x31,0x35,0x2c,0x68,
|
||||
0x3d,0x31,0x30,0x30,0x25,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x74,0x69,0x74,0x6c,0x65,0x00,0x74,0x65,
|
||||
0x78,0x74,0x00,0x74,0x69,0x74,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,0x1b,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,0x78,
|
||||
0x3d,0x72,0x3a,0x30,0x2c,0x79,0x3d,0x30,0x2c,0x77,0x3d,0x32,0x37,0x2c,0x68,0x3d,0x31,0x30,0x30,0x25,
|
||||
0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x63,0x6c,0x6f,0x73,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x58,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,0x01,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,0x3a,0x36,
|
||||
0x35,0x2c,0x77,0x3d,0x31,0x30,0x30,0x25,0x2c,0x68,0x3d,0x31,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x73,
|
||||
0x65,0x70,0x61,0x72,0x61,0x74,0x6f,0x72,0x00,0x73,0x74,0x79,0x6c,0x65,0x3a,0x6e,0x6f,0x72,0x6d,0x61,
|
||||
0x6c,0x3a,0x62,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x00,0x67,0x72,0x61,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,0x3c,0x00,
|
||||
0x00,0x00,0x1b,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,0x3a,0x39,0x30,0x2c,0x79,0x3d,0x62,0x3a,0x32,0x31,0x2c,
|
||||
0x77,0x3d,0x36,0x30,0x2c,0x68,0x3d,0x32,0x37,0x29,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6f,0x6b,0x00,0x66,
|
||||
0x6f,0x63,0x75,0x73,0x61,0x62,0x6c,0x65,0x00,0x74,0x72,0x75,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x4f,
|
||||
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,0x3c,0x00,0x00,0x00,0x1b,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,0x3a,0x31,0x35,0x2c,0x79,
|
||||
0x3d,0x62,0x3a,0x32,0x31,0x2c,0x77,0x3d,0x36,0x30,0x2c,0x68,0x3d,0x32,0x37,0x29,0x00,0x6e,0x61,0x6d,
|
||||
0x65,0x00,0x63,0x6c,0x6f,0x73,0x65,0x00,0x66,0x6f,0x63,0x75,0x73,0x61,0x62,0x6c,0x65,0x00,0x74,0x72,
|
||||
0x75,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x43,0x6c,0x6f,0x73,0x65,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,0x0a,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x7c,0x01,0x00,0x00,
|
||||
0x32,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x65,0x64,0x69,0x74,0x00,
|
||||
0x00,0x00,0x00,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,0x0a,0x00,0x00,0x00,0xca,0x00,0x00,0x00,0x1c,
|
||||
0x00,0x00,0x00,0x6d,0x69,0x6e,0x00,0x30,0x00,0x6d,0x61,0x78,0x00,0x31,0x30,0x32,0x34,0x00,0x73,0x74,
|
||||
0x65,0x70,0x00,0x31,0x00,0x6e,0x61,0x6d,0x65,0x00,0x65,0x64,0x69,0x74,0x00,0x66,0x6f,0x63,0x75,0x73,
|
||||
0x65,0x64,0x00,0x74,0x72,0x75,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,0x1f,0x01,0x00,0x00,0x0a,0x00,0x00,0x00,0x52,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x6e,0x61,
|
||||
0x6d,0x65,0x00,0x6f,0x70,0x65,0x6e,0x3a,0x74,0x6f,0x61,0x73,0x74,0x00,0x66,0x6f,0x63,0x75,0x73,0x61,
|
||||
0x62,0x6c,0x65,0x00,0x74,0x72,0x75,0x65,0x00,0x74,0x65,0x78,0x74,0x00,0x74,0x6f,0x61,0x73,0x74,0x00,
|
||||
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,0x0a,0x00,
|
||||
0x00,0x00,0x41,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6c,0x61,0x62,0x65,0x6c,
|
||||
0x00,0x74,0x65,0x78,0x74,0x00,0x46,0x69,0x6c,0x65,0x50,0x61,0x74,0x68,0x3a,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,0x0a,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x7c,
|
||||
0x01,0x00,0x00,0x32,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x76,0x69,0x65,0x77,0x00,0x00,0x65,0x64,
|
||||
0x69,0x74,0x00,0x00,0x00,0x00,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,0x0a,0x00,0x00,0x00,0xca,0x00,
|
||||
0x00,0x00,0x1c,0x00,0x00,0x00,0x6d,0x69,0x6e,0x00,0x30,0x00,0x6d,0x61,0x78,0x00,0x31,0x30,0x32,0x34,
|
||||
0x00,0x73,0x74,0x65,0x70,0x00,0x31,0x00,0x6e,0x61,0x6d,0x65,0x00,0x65,0x64,0x69,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,0x1f,0x01,0x00,0x00,0x0a,0x00,0x00,0x00,
|
||||
0x52,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x6f,0x70,0x65,0x6e,0x3a,0x69,0x6e,
|
||||
0x66,0x6f,0x00,0x66,0x6f,0x63,0x75,0x73,0x61,0x62,0x6c,0x65,0x00,0x74,0x72,0x75,0x65,0x00,0x74,0x65,
|
||||
0x78,0x74,0x00,0x69,0x6e,0x66,0x6f,0x00,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,0x0a,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x41,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x6e,0x61,
|
||||
0x6d,0x65,0x00,0x6c,0x61,0x62,0x65,0x6c,0x00,0x74,0x65,0x78,0x74,0x00,0x44,0x69,0x72,0x50,0x61,0x74,
|
||||
0x68,0x3a,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,0x0a,0x00,
|
||||
0x00,0x00,0x78,0x00,0x00,0x00,0x7c,0x01,0x00,0x00,0x32,0x00,0x00,0x00,0x6e,0x61,0x6d,0x65,0x00,0x76,
|
||||
0x69,0x65,0x77,0x00,0x00,0x63,0x68,0x65,0x63,0x6b,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,0x4b,0x00,0x00,
|
||||
0x00,0x0a,0x00,0x00,0x00,0x46,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x74,0x65,0x78,0x74,0x00,0x42,0x6f,
|
||||
0x6f,0x6b,0x00,0x66,0x6f,0x63,0x75,0x73,0x61,0x62,0x6c,0x65,0x00,0x74,0x72,0x75,0x65,0x00,0x00,0x00,
|
||||
0x6d,0x6c,0x65,0x64,0x69,0x74,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x91,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,0x78,0x3d,0x31,0x34,0x35,0x2c,0x79,0x3d,0x30,0x2c,0x77,0x3d,
|
||||
0x31,0x30,0x30,0x2c,0x68,0x3d,0x31,0x30,0x30,0x25,0x29,0x00,0x74,0x65,0x78,0x74,0x00,0x61,0x63,0x63,
|
||||
0x65,0x70,0x74,0x20,0x3d,0x20,0x66,0x61,0x6c,0x73,0x65,0x00,0x61,0x63,0x63,0x65,0x70,0x74,0x5f,0x72,
|
||||
0x65,0x74,0x75,0x72,0x6e,0x00,0x66,0x61,0x6c,0x73,0x65,0x00,0x61,0x63,0x63,0x65,0x70,0x74,0x5f,0x74,
|
||||
0x61,0x62,0x00,0x66,0x61,0x6c,0x73,0x65,0x00,0x00,0x00,0x6d,0x6c,0x65,0x64,0x69,0x74,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0xfa,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,0x78,
|
||||
0x3d,0x32,0x35,0x30,0x2c,0x79,0x3d,0x30,0x2c,0x77,0x3d,0x31,0x30,0x30,0x2c,0x68,0x3d,0x31,0x30,0x30,
|
||||
0x25,0x29,0x00,0x74,0x65,0x78,0x74,0x00,0x61,0x73,0x64,0x66,0x61,0x73,0x64,0x66,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,};/*1985*/
|
Binary file not shown.
BIN
res/assets/default/raw/ui/dialog_win.bin
Normal file
BIN
res/assets/default/raw/ui/dialog_win.bin
Normal file
Binary file not shown.
@ -103,6 +103,7 @@
|
||||
#include "assets/default/inc/ui/color_picker_hsv.data"
|
||||
#include "assets/default/inc/ui/menu_down_right.data"
|
||||
#include "assets/default/inc/ui/tab_bottom.data"
|
||||
#include "assets/default/inc/ui/dialog_win.data"
|
||||
#include "assets/default/inc/ui/fruit.data"
|
||||
#include "assets/default/inc/ui/list_view_m.data"
|
||||
#include "assets/default/inc/ui/slide_view_h_loop.data"
|
||||
@ -1041,6 +1042,7 @@ ret_t assets_init(void) {
|
||||
assets_manager_add(am, ui_color_picker_hsv_default);
|
||||
assets_manager_add(am, ui_menu_down_right_default);
|
||||
assets_manager_add(am, ui_tab_bottom_default);
|
||||
assets_manager_add(am, ui_dialog_win_default);
|
||||
assets_manager_add(am, ui_fruit_default);
|
||||
assets_manager_add(am, ui_list_view_m_default);
|
||||
assets_manager_add(am, ui_slide_view_h_loop_default);
|
||||
|
@ -103,6 +103,7 @@
|
||||
#include "assets/default/inc/ui/color_picker_hsv.data"
|
||||
#include "assets/default/inc/ui/menu_down_right.data"
|
||||
#include "assets/default/inc/ui/tab_bottom.data"
|
||||
#include "assets/default/inc/ui/dialog_win.data"
|
||||
#include "assets/default/inc/ui/fruit.data"
|
||||
#include "assets/default/inc/ui/list_view_m.data"
|
||||
#include "assets/default/inc/ui/slide_view_h_loop.data"
|
||||
@ -1041,6 +1042,7 @@ ret_t assets_init(void) {
|
||||
assets_manager_add(am, ui_color_picker_hsv_default);
|
||||
assets_manager_add(am, ui_menu_down_right_default);
|
||||
assets_manager_add(am, ui_tab_bottom_default);
|
||||
assets_manager_add(am, ui_dialog_win_default);
|
||||
assets_manager_add(am, ui_fruit_default);
|
||||
assets_manager_add(am, ui_list_view_m_default);
|
||||
assets_manager_add(am, ui_slide_view_h_loop_default);
|
||||
|
@ -100,6 +100,7 @@
|
||||
#include "assets/default/inc/ui/color_picker_hsv.data"
|
||||
#include "assets/default/inc/ui/menu_down_right.data"
|
||||
#include "assets/default/inc/ui/tab_bottom.data"
|
||||
#include "assets/default/inc/ui/dialog_win.data"
|
||||
#include "assets/default/inc/ui/fruit.data"
|
||||
#include "assets/default/inc/ui/list_view_m.data"
|
||||
#include "assets/default/inc/ui/slide_view_h_loop.data"
|
||||
@ -661,6 +662,7 @@ ret_t assets_init(void) {
|
||||
assets_manager_add(am, ui_color_picker_hsv_default);
|
||||
assets_manager_add(am, ui_menu_down_right_default);
|
||||
assets_manager_add(am, ui_tab_bottom_default);
|
||||
assets_manager_add(am, ui_dialog_win_default);
|
||||
assets_manager_add(am, ui_fruit_default);
|
||||
assets_manager_add(am, ui_list_view_m_default);
|
||||
assets_manager_add(am, ui_slide_view_h_loop_default);
|
||||
|
@ -100,6 +100,7 @@
|
||||
#include "assets/default/inc/ui/color_picker_hsv.data"
|
||||
#include "assets/default/inc/ui/menu_down_right.data"
|
||||
#include "assets/default/inc/ui/tab_bottom.data"
|
||||
#include "assets/default/inc/ui/dialog_win.data"
|
||||
#include "assets/default/inc/ui/fruit.data"
|
||||
#include "assets/default/inc/ui/list_view_m.data"
|
||||
#include "assets/default/inc/ui/slide_view_h_loop.data"
|
||||
@ -661,6 +662,7 @@ ret_t assets_init(void) {
|
||||
assets_manager_add(am, ui_color_picker_hsv_default);
|
||||
assets_manager_add(am, ui_menu_down_right_default);
|
||||
assets_manager_add(am, ui_tab_bottom_default);
|
||||
assets_manager_add(am, ui_dialog_win_default);
|
||||
assets_manager_add(am, ui_fruit_default);
|
||||
assets_manager_add(am, ui_list_view_m_default);
|
||||
assets_manager_add(am, ui_slide_view_h_loop_default);
|
||||
|
@ -851,6 +851,12 @@ ret_t widget_set_focused_internal(widget_t* widget, bool_t focused) {
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t widget_set_accept_button_widget_state(widget_t* widget, bool_t accept_state) {
|
||||
return_value_if_fail(widget != NULL && widget->vt != NULL, RET_BAD_PARAMS);
|
||||
widget_set_prop_bool(widget, WIDGET_PROP_IS_ACCEPT_STATUS, accept_state);
|
||||
return widget_set_need_update_style(widget);
|
||||
}
|
||||
|
||||
ret_t widget_set_focused(widget_t* widget, bool_t focused) {
|
||||
return_value_if_fail(widget != NULL && widget->vt != NULL, RET_BAD_PARAMS);
|
||||
|
||||
@ -2820,13 +2826,18 @@ static bool_t shortcut_fast_match(const char* shortcut, key_event_t* e) {
|
||||
}
|
||||
|
||||
static bool_t widget_match_key(widget_t* widget, const char* prop, key_event_t* e) {
|
||||
widget_t* win = NULL;
|
||||
const char* shortcut = NULL;
|
||||
widget_t* win = widget_get_real_window_or_keyboard(widget);
|
||||
|
||||
if (widget_is_window_manager(widget)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (e->key == TK_KEY_TAB && widget_get_prop_bool(widget, WIDGET_PROP_ACCEPT_TAB, FALSE)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
win = widget_get_real_window_or_keyboard(widget);
|
||||
return_value_if_fail(win != NULL, FALSE);
|
||||
shortcut = widget_get_prop_str(win, prop, NULL);
|
||||
|
||||
@ -2964,9 +2975,40 @@ static ret_t widget_on_keyup_before_children(widget_t* widget, key_event_t* e) {
|
||||
return widget_on_event_before_children(widget, (event_t*)e);
|
||||
}
|
||||
|
||||
static widget_t* widget_get_final_key_target(widget_t* widget) {
|
||||
widget_t* key_target = NULL;
|
||||
return_value_if_fail(widget != NULL, NULL);
|
||||
if (widget->key_target != NULL) {
|
||||
key_target = widget_get_final_key_target(widget->key_target);
|
||||
if (key_target == NULL) {
|
||||
return widget->key_target;
|
||||
} else {
|
||||
return key_target;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static ret_t widget_on_keyup_children(widget_t* widget, key_event_t* e) {
|
||||
ret_t ret = RET_OK;
|
||||
|
||||
if (widget_is_window(widget)) {
|
||||
widget_t* accept_button_widget = WIDGET(widget_get_prop_pointer(widget, WIDGET_PROP_ACCEPT_BUTTON));
|
||||
widget_t* cancel_button_widget = WIDGET(widget_get_prop_pointer(widget, WIDGET_PROP_CANCEL_BUTTON));
|
||||
if (accept_button_widget != NULL && key_code_is_enter(e->key)) {
|
||||
#ifdef MACOS
|
||||
bool_t is_control = e->cmd;
|
||||
#else
|
||||
bool_t is_control = e->ctrl;
|
||||
#endif
|
||||
widget_t* final_key_target = widget_get_final_key_target(widget);
|
||||
if (!final_key_target->vt->return_key_to_activate && !is_control && !widget_get_prop_bool(final_key_target, WIDGET_PROP_ACCEPT_RETRUN, FALSE)) {
|
||||
return widget_on_keyup(accept_button_widget, e);
|
||||
}
|
||||
} else if (cancel_button_widget!= NULL && e->key == TK_KEY_ESCAPE) {
|
||||
return widget_on_keyup(cancel_button_widget, e);
|
||||
}
|
||||
}
|
||||
if (widget->key_target != NULL) {
|
||||
ret = widget_on_keyup(widget->key_target, e);
|
||||
}
|
||||
@ -2984,6 +3026,7 @@ static ret_t widget_on_keyup_after_children(widget_t* widget, key_event_t* e) {
|
||||
|
||||
static ret_t widget_on_keyup_impl(widget_t* widget, key_event_t* e) {
|
||||
ret_t ret = RET_OK;
|
||||
widget_t* cancel_button_widget = NULL;
|
||||
return_value_if_fail(widget != NULL && e != NULL, RET_BAD_PARAMS);
|
||||
return_value_if_fail(widget->vt != NULL, RET_BAD_PARAMS);
|
||||
|
||||
@ -2991,7 +3034,14 @@ static ret_t widget_on_keyup_impl(widget_t* widget, key_event_t* e) {
|
||||
return_value_if_equal(widget_on_keyup_children(widget, e), RET_STOP);
|
||||
return_value_if_equal(widget_on_keyup_after_children(widget, e), RET_STOP);
|
||||
|
||||
if (widget_is_activate_key(widget, e)) {
|
||||
if (e->key == TK_KEY_ESCAPE) {
|
||||
widget_t* win = widget_get_window(widget);
|
||||
if (win != NULL) {
|
||||
cancel_button_widget = WIDGET(widget_get_prop_pointer(win, WIDGET_PROP_CANCEL_BUTTON));
|
||||
}
|
||||
}
|
||||
|
||||
if (widget_is_activate_key(widget, e) || cancel_button_widget == widget) {
|
||||
pointer_event_t click;
|
||||
if (widget_is_focusable(widget)) {
|
||||
widget_set_state(widget, WIDGET_STATE_FOCUSED);
|
||||
@ -3225,6 +3275,14 @@ ret_t widget_on_pointer_down_children(widget_t* widget, pointer_event_t* e) {
|
||||
widget->target = target;
|
||||
}
|
||||
|
||||
if (widget->target == NULL) {
|
||||
widget_t* accept_button_widget = WIDGET(widget_get_prop_pointer(widget_get_window(widget), WIDGET_PROP_ACCEPT_BUTTON));
|
||||
if (accept_button_widget != NULL) {
|
||||
bool_t accept = !widget->vt->return_key_to_activate && !widget_get_prop_bool(widget, WIDGET_PROP_ACCEPT_RETRUN, FALSE);
|
||||
widget_set_accept_button_widget_state(accept_button_widget, accept);
|
||||
}
|
||||
}
|
||||
|
||||
if (widget->target != NULL && widget->target->enable && widget->target->sensitive) {
|
||||
ret = widget_on_pointer_down(widget->target, e);
|
||||
}
|
||||
@ -4671,6 +4729,13 @@ ret_t widget_move_focus(widget_t* widget, widget_find_wanted_focus_widget_t find
|
||||
widget_t* focus = find(widget, &all_focusable);
|
||||
|
||||
if (focus != NULL && focus != widget) {
|
||||
widget_t* win = widget_get_window(widget);
|
||||
widget_t* accept_button_widget = WIDGET(widget_get_prop_pointer(win, WIDGET_PROP_ACCEPT_BUTTON));
|
||||
if (accept_button_widget != NULL) {
|
||||
bool_t accept = !focus->vt->return_key_to_activate && !widget_get_prop_bool(focus, WIDGET_PROP_ACCEPT_RETRUN, FALSE);
|
||||
widget_set_accept_button_widget_state(accept_button_widget, accept);
|
||||
}
|
||||
|
||||
widget_set_prop_bool(widget, WIDGET_PROP_FOCUSED, FALSE);
|
||||
widget_set_prop_bool(focus, WIDGET_PROP_FOCUSED, TRUE);
|
||||
ret = RET_OK;
|
||||
|
@ -3385,6 +3385,7 @@ ret_t widget_remove_child_prepare(widget_t* widget, widget_t* child);
|
||||
ret_t widget_set_text_impl(widget_t* widget, const wchar_t* text, bool_t check_diff);
|
||||
ret_t widget_set_text_utf8_impl(widget_t* widget, const char* text, bool_t check_diff);
|
||||
|
||||
ret_t widget_set_accept_button_widget_state(widget_t* widget, bool_t accept_state);
|
||||
ret_t widget_on_visit_focusable(void* ctx, const void* data);
|
||||
|
||||
/*public for input_device_status*/
|
||||
|
@ -787,6 +787,12 @@ BEGIN_C_DECLS
|
||||
*/
|
||||
#define WIDGET_PROP_ENABLE_PREVIEW "enable_preview"
|
||||
|
||||
/**
|
||||
* @const WIDGET_PROP_IS_ACCEPT_STATUS
|
||||
* 是否为 accept 状态
|
||||
*/
|
||||
#define WIDGET_PROP_IS_ACCEPT_STATUS "is_accept_status"
|
||||
|
||||
/**
|
||||
* @const WIDGET_PROP_CLICK_THROUGH
|
||||
* 是否启用点击穿透。
|
||||
@ -1045,6 +1051,31 @@ BEGIN_C_DECLS
|
||||
*/
|
||||
#define WIDGET_PROP_MOVE_FOCUS_RIGHT_KEY "move_focus_right_key"
|
||||
|
||||
/**
|
||||
* @const WIDGET_PROP_ACCEPT_BUTTON
|
||||
* 窗口中按下 Enter 默认触发单击 button 控件名字。
|
||||
* 备注:如果控件接管了 Enter 的话,accept_button 控件是不会进入 focused 风格,例如:设置 accept_return 为 true 或者 widget->vt->return_key_to_activate 为 true
|
||||
*/
|
||||
#define WIDGET_PROP_ACCEPT_BUTTON "accept_button"
|
||||
|
||||
/**
|
||||
* @const WIDGET_PROP_CANCEL_BUTTON
|
||||
* 窗口中按下 Esc 默认触发单击 button 控件名字。
|
||||
*/
|
||||
#define WIDGET_PROP_CANCEL_BUTTON "cancel_button"
|
||||
|
||||
/**
|
||||
* @const WIDGET_PROP_ACCEPT_RETRUN
|
||||
* 控件中是否支持 Enter 按钮输入。
|
||||
*/
|
||||
#define WIDGET_PROP_ACCEPT_RETRUN "accept_return"
|
||||
|
||||
/**
|
||||
* @const WIDGET_PROP_ACCEPT_TAB
|
||||
* 控件中是否支持 Tab 按钮输入。
|
||||
*/
|
||||
#define WIDGET_PROP_ACCEPT_TAB "accept_tab"
|
||||
|
||||
/**
|
||||
* @const WIDGET_PROP_ROWS
|
||||
* 行数。
|
||||
|
@ -329,6 +329,12 @@ ret_t window_base_get_prop(widget_t* widget, const char* name, value_t* v) {
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_APPLET_NAME)) {
|
||||
value_set_str(v, window_base->applet_name);
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_ACCEPT_BUTTON)) {
|
||||
value_set_pointer(v, window_base->accept_button_widget);
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_CANCEL_BUTTON)) {
|
||||
value_set_pointer(v, window_base->cancel_button_widget);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
return RET_NOT_FOUND;
|
||||
@ -366,6 +372,47 @@ static ret_t window_base_set_applet_name(widget_t* widget, const char* applet_na
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t window_base_set_accept_button(widget_t* widget, const char* accept_button) {
|
||||
window_base_t* window_base = WINDOW_BASE(widget);
|
||||
return_value_if_fail(widget != NULL, RET_BAD_PARAMS);
|
||||
if (accept_button == NULL) {
|
||||
if (window_base->accept_button != NULL) {
|
||||
TKMEM_FREE(window_base->accept_button);
|
||||
window_base->accept_button = NULL;
|
||||
}
|
||||
if (window_base->accept_button_widget != NULL) {
|
||||
widget_set_accept_button_widget_state(window_base->accept_button_widget, FALSE);
|
||||
}
|
||||
window_base->accept_button_widget = NULL;
|
||||
return RET_OK;
|
||||
} else {
|
||||
window_base->accept_button = tk_str_copy(window_base->accept_button, accept_button);
|
||||
window_base->accept_button_widget = widget_lookup(widget, accept_button, TRUE);
|
||||
return_value_if_fail(window_base->accept_button_widget != NULL, RET_FAIL);
|
||||
widget_set_accept_button_widget_state(window_base->accept_button_widget, TRUE);
|
||||
}
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t window_base_set_cancel_button(widget_t* widget, const char* cancel_button) {
|
||||
window_base_t* window_base = WINDOW_BASE(widget);
|
||||
return_value_if_fail(widget != NULL, RET_BAD_PARAMS);
|
||||
window_base->cancel_button = cancel_button;
|
||||
if (cancel_button == NULL) {
|
||||
if (window_base->cancel_button != NULL) {
|
||||
TKMEM_FREE(window_base->cancel_button);
|
||||
window_base->cancel_button = NULL;
|
||||
}
|
||||
window_base->cancel_button_widget = NULL;
|
||||
return RET_OK;
|
||||
} else {
|
||||
window_base->cancel_button = tk_str_copy(window_base->cancel_button, cancel_button);
|
||||
window_base->cancel_button_widget = widget_lookup(widget, cancel_button, TRUE);
|
||||
return_value_if_fail(window_base->cancel_button_widget != NULL, RET_FAIL);
|
||||
}
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t window_base_set_prop(widget_t* widget, const char* name, const value_t* v) {
|
||||
window_base_t* window_base = WINDOW_BASE(widget);
|
||||
return_value_if_fail(widget != NULL && name != NULL && v != NULL, RET_BAD_PARAMS);
|
||||
@ -446,6 +493,20 @@ ret_t window_base_set_prop(widget_t* widget, const char* name, const value_t* v)
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_APPLET_NAME)) {
|
||||
window_base_set_applet_name(widget, value_str(v));
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_ACCEPT_BUTTON)) {
|
||||
if (widget->loading) {
|
||||
window_base->accept_button = tk_str_copy(window_base->accept_button, value_str(v));
|
||||
} else {
|
||||
window_base_set_accept_button(widget, value_str(v));
|
||||
}
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_CANCEL_BUTTON)) {
|
||||
if (widget->loading) {
|
||||
window_base->cancel_button = tk_str_copy(window_base->cancel_button, value_str(v));
|
||||
} else {
|
||||
window_base_set_cancel_button(widget, value_str(v));
|
||||
}
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
return RET_NOT_FOUND;
|
||||
@ -471,6 +532,9 @@ ret_t window_base_on_destroy(widget_t* widget) {
|
||||
TKMEM_FREE(window_base->move_focus_left_key);
|
||||
TKMEM_FREE(window_base->move_focus_right_key);
|
||||
|
||||
TKMEM_FREE(window_base->accept_button);
|
||||
TKMEM_FREE(window_base->cancel_button);
|
||||
|
||||
window_base_unload_theme_obj(widget);
|
||||
|
||||
return RET_OK;
|
||||
@ -553,6 +617,8 @@ ret_t window_base_on_event(widget_t* widget, event_t* e) {
|
||||
if (widget->sensitive) {
|
||||
widget_set_focused_internal(widget, TRUE);
|
||||
}
|
||||
window_base_set_accept_button(widget, win->accept_button);
|
||||
window_base_set_cancel_button(widget, win->cancel_button);
|
||||
} else if (e->type == EVT_WINDOW_OPEN) {
|
||||
win->stage = WINDOW_STAGE_OPENED;
|
||||
if (widget->sensitive) {
|
||||
|
@ -243,6 +243,20 @@ typedef struct _window_base_t {
|
||||
*/
|
||||
char* move_focus_right_key;
|
||||
|
||||
/**
|
||||
* @property {char*} accept_button
|
||||
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
|
||||
* 窗口中按下 Enter 按钮默认触发单击 button 控件名字
|
||||
*/
|
||||
char* accept_button;
|
||||
|
||||
/**
|
||||
* @property {char*} cancel_button
|
||||
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
|
||||
* 窗口中按下 Esc 按钮默认触发单击 button 控件名字
|
||||
*/
|
||||
char* cancel_button;
|
||||
|
||||
/**
|
||||
* @property {char*} applet_name
|
||||
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
|
||||
@ -280,6 +294,9 @@ typedef struct _window_base_t {
|
||||
assets_manager_t* assets_manager;
|
||||
image_manager_t* image_manager;
|
||||
locale_info_t* locale_info;
|
||||
|
||||
widget_t* accept_button_widget;
|
||||
widget_t* cancel_button_widget;
|
||||
} window_base_t;
|
||||
|
||||
/**
|
||||
@ -449,6 +466,26 @@ ret_t window_base_set_need_relayout(widget_t* widget, bool_t need_relayout);
|
||||
*/
|
||||
ret_t window_base_on_copy(widget_t* widget, widget_t* other);
|
||||
|
||||
/**
|
||||
* @method window_base_set_accept_button
|
||||
* 设置 accept_button 控件。
|
||||
* @param {widget_t*} widget window_base对象。
|
||||
* @param {const char*} accept_button 控件名字。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。。
|
||||
*/
|
||||
ret_t window_base_set_accept_button(widget_t* widget, const char* accept_button);
|
||||
|
||||
/**
|
||||
* @method window_base_set_cancel_button
|
||||
* 设置 cancel_button 控件。
|
||||
* @param {widget_t*} widget window_base对象。
|
||||
* @param {const char*} cancel_button 控件名字。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。。
|
||||
*/
|
||||
ret_t window_base_set_cancel_button(widget_t* widget, const char* cancel_button);
|
||||
|
||||
#define WINDOW_BASE(widget) ((window_base_t*)(window_base_cast(WIDGET(widget))))
|
||||
|
||||
/*public for subclass and runtime type check*/
|
||||
|
@ -329,6 +329,12 @@ static ret_t mledit_get_prop(widget_t* widget, const char* name, value_t* v) {
|
||||
}
|
||||
value_set_bool(v, inputing);
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_ACCEPT_RETRUN)) {
|
||||
value_set_bool(v, mledit->accept_return);
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_ACCEPT_TAB)) {
|
||||
value_set_bool(v, mledit->accept_tab);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
return RET_NOT_FOUND;
|
||||
@ -427,6 +433,12 @@ static ret_t mledit_set_prop(widget_t* widget, const char* name, const value_t*
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_KEYBOARD)) {
|
||||
mledit_set_keyboard(widget, value_str(v));
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_ACCEPT_RETRUN)) {
|
||||
mledit->accept_return = value_bool(v);
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_ACCEPT_TAB)) {
|
||||
mledit->accept_tab = value_bool(v);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
return RET_NOT_FOUND;
|
||||
@ -750,6 +762,10 @@ static ret_t mledit_on_event(widget_t* widget, event_t* e) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((!mledit->accept_tab && !is_control && key == TK_KEY_TAB) || (!mledit->accept_return && !is_control && key_code_is_enter(key))) {
|
||||
ret = RET_OK;
|
||||
break;
|
||||
}
|
||||
if ((key < 128 && tk_isprint(key)) || key == TK_KEY_BACKSPACE || key == TK_KEY_DELETE ||
|
||||
key == TK_KEY_TAB || key_code_is_enter(key)) {
|
||||
wstr_set(&(mledit->last_changing_text), widget->text.str);
|
||||
@ -1289,6 +1305,8 @@ static ret_t mledit_init(widget_t* widget) {
|
||||
mledit->bottom_margin = 0;
|
||||
mledit->scroll_line = 1.0f;
|
||||
mledit->max_lines = 100;
|
||||
mledit->accept_tab = TRUE;
|
||||
mledit->accept_return = TRUE;
|
||||
wstr_init(&(mledit->temp), 0);
|
||||
wstr_init(&(mledit->last_changing_text), 0);
|
||||
wstr_init(&(mledit->last_changed_text), 0);
|
||||
|
@ -139,6 +139,22 @@ typedef struct _mledit_t {
|
||||
*
|
||||
*/
|
||||
bool_t close_im_when_blured;
|
||||
/**
|
||||
* @property {bool_t} accept_return
|
||||
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
|
||||
*
|
||||
* 是否支持 Enter 按钮输入。
|
||||
*
|
||||
*/
|
||||
bool_t accept_return;
|
||||
/**
|
||||
* @property {bool_t} accept_tab
|
||||
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
|
||||
*
|
||||
* 是否支持 Tab 按钮输入。
|
||||
*
|
||||
*/
|
||||
bool_t accept_tab;
|
||||
/*private*/
|
||||
bool_t lock_scrollbar_value;
|
||||
uint8_t margin;
|
||||
|
@ -322,6 +322,16 @@ static ret_t button_get_prop(widget_t* widget, const char* name, value_t* v) {
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_ENABLE_PREVIEW)) {
|
||||
value_set_bool(v, button->enable_preview);
|
||||
return RET_OK;
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_STATE_FOR_STYLE)) {
|
||||
if (button->is_accept_status) {
|
||||
if (widget->visible && widget->sensitive && widget->enable) {
|
||||
value_set_str(v, WIDGET_STATE_FOCUSED);
|
||||
return RET_OK;
|
||||
}
|
||||
}
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_IS_ACCEPT_STATUS)) {
|
||||
value_set_bool(v, button->is_accept_status);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
return RET_NOT_FOUND;
|
||||
@ -348,7 +358,8 @@ static ret_t button_get_prop_default_value(widget_t* widget, const char* name, v
|
||||
}
|
||||
|
||||
static ret_t button_set_prop(widget_t* widget, const char* name, const value_t* v) {
|
||||
return_value_if_fail(widget != NULL && name != NULL && v != NULL, RET_BAD_PARAMS);
|
||||
button_t* button = BUTTON(widget);
|
||||
return_value_if_fail(button != NULL && name != NULL && v != NULL, RET_BAD_PARAMS);
|
||||
|
||||
if (tk_str_eq(name, WIDGET_PROP_REPEAT)) {
|
||||
return button_set_repeat(widget, value_int(v));
|
||||
@ -358,6 +369,9 @@ static ret_t button_set_prop(widget_t* widget, const char* name, const value_t*
|
||||
return button_set_enable_long_press(widget, value_bool(v));
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_ENABLE_PREVIEW)) {
|
||||
return button_set_enable_preview(widget, value_bool(v));
|
||||
} else if (tk_str_eq(name, WIDGET_PROP_IS_ACCEPT_STATUS)) {
|
||||
button->is_accept_status = value_bool(v);
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
return RET_NOT_FOUND;
|
||||
|
@ -107,12 +107,12 @@ typedef struct _button_t {
|
||||
bool_t enable_preview;
|
||||
|
||||
/**
|
||||
* @property {uint32_t} long_press_time
|
||||
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
|
||||
* 触发长按事件的时间(毫秒)
|
||||
* @property {bool_t} is_accept_status
|
||||
* @annotation ["set_prop","get_prop","readable","scriptable"]
|
||||
* 是否为 accept 状态
|
||||
*
|
||||
*/
|
||||
uint32_t long_press_time;
|
||||
bool_t is_accept_status;
|
||||
|
||||
/**
|
||||
* @property {bool_t} pressed
|
||||
@ -122,6 +122,14 @@ typedef struct _button_t {
|
||||
*/
|
||||
bool_t pressed;
|
||||
|
||||
/**
|
||||
* @property {uint32_t} long_press_time
|
||||
* @annotation ["set_prop","get_prop","readable","persitent","design","scriptable"]
|
||||
* 触发长按事件的时间(毫秒)
|
||||
*
|
||||
*/
|
||||
uint32_t long_press_time;
|
||||
|
||||
/*private*/
|
||||
int32_t timer_id;
|
||||
int32_t repeat_nr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user