From 546a69f2e222c664c2a1afc2b109b867b8e0e3e4 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Thu, 2 Jul 2026 10:41:57 +0200 Subject: [PATCH] arch(obj): replace lv_obj_flag... with dedicated API for each flag (#10316) --- demos/benchmark/lv_demo_benchmark.c | 24 +- demos/gltf/lv_demo_gltf.c | 2 +- demos/keypad_encoder/lv_demo_keypad_encoder.c | 24 +- demos/music/lv_demo_music_list.c | 2 +- demos/music/lv_demo_music_main.c | 41 +- demos/render/lv_demo_render.c | 2 +- demos/widgets/lv_demo_widgets.c | 13 +- demos/widgets/lv_demo_widgets_analytics.c | 23 +- demos/widgets/lv_demo_widgets_profile.c | 14 +- demos/widgets/lv_demo_widgets_shop.c | 6 +- docs/src/common-widget-features/flags.mdx | 8 + docs/src/migration-v10.mdx | 20 + examples/anim/lv_example_anim_2.c | 2 +- examples/anim/lv_example_anim_3.c | 2 +- examples/anim/lv_example_anim_timeline_1.c | 8 +- examples/event/lv_example_event_bubble.c | 2 +- examples/event/lv_example_event_draw.c | 2 +- examples/event/lv_example_event_trickle.c | 2 +- .../flex/lv_example_flex_ignore_layout.c | 2 +- .../layouts/flex/lv_example_flex_new_track.c | 2 +- .../grid/lv_example_grid_ignore_layout.c | 2 +- examples/layouts/split/lv_example_split.c | 5 +- .../layouts/split/lv_example_split_vertical.c | 5 +- .../lv_example_file_explorer_2.c | 6 +- .../others/gestures/lv_example_gestures.c | 4 +- .../others/gridnav/lv_example_gridnav_1.c | 2 +- examples/others/ime/lv_example_ime_pinyin_1.c | 4 +- examples/others/ime/lv_example_ime_pinyin_2.c | 4 +- .../others/observer/lv_example_observer_2.c | 2 +- .../others/observer/lv_example_observer_3.c | 2 +- .../others/observer/lv_example_observer_4.c | 2 +- .../others/observer/lv_example_observer_5.c | 2 +- .../others/snapshot/lv_example_snapshot_1.c | 2 +- examples/scroll/lv_example_scroll_chain.c | 2 +- examples/scroll/lv_example_scroll_floating.c | 2 +- examples/scroll/lv_example_scroll_one.c | 20 +- .../scroll/lv_example_scroll_properties.c | 40 +- .../scroll/lv_example_scroll_scrollable.c | 2 +- examples/scroll/lv_example_scroll_snap.c | 14 +- .../styles/lv_example_style_transform_card.c | 10 +- .../widgets/arc/lv_example_arc_bind_value.c | 2 +- .../widgets/arc/lv_example_arc_pie_chart.c | 10 +- .../widgets/button/lv_example_button_states.c | 2 +- .../button/lv_example_button_styling.c | 2 +- .../chart/lv_example_chart_area_gradient.c | 2 +- .../chart/lv_example_chart_recolor_bars.c | 2 +- .../widgets/chart/lv_example_chart_scatter.c | 2 +- .../lv_example_keyboard_custom_draw.c | 2 +- .../menu/lv_example_menu_floating_button.c | 2 +- .../widgets/menu/lv_example_menu_sidebar.c | 4 +- .../msgbox/lv_example_msgbox_settings.c | 2 +- .../widgets/scale/lv_example_scale_compass.c | 2 +- .../scale/lv_example_scale_label_recolor.c | 2 +- .../scale/lv_example_scale_sunset_sunrise.c | 4 +- .../widgets/span/lv_example_span_hittest.c | 2 +- .../table/lv_example_table_scrollable_list.c | 2 +- .../lv_example_tabview_tab_button_content.c | 4 +- .../lv_example_textarea_buttonmatrix.c | 2 +- include/lvgl/core/lv_obj.h | 369 +++++++- include/lvgl/core/lv_obj_property_names.h | 2 +- scripts/gdb/lvglgdb/lvgl/widgets/lv_msgbox.py | 6 + .../gdb/scripts/generators/widget_specs.json | 3 +- src/core/lv_group.c | 4 +- src/core/lv_obj.c | 786 ++++++++++++++++-- src/core/lv_obj_event.c | 4 +- src/core/lv_obj_pos.c | 23 +- src/core/lv_obj_private.h | 78 +- src/core/lv_obj_scroll.c | 10 +- src/core/lv_obj_tree.c | 4 +- src/core/lv_observer.c | 3 + src/core/lv_refr.c | 6 +- src/debugging/sysmon/lv_sysmon.c | 12 +- src/display/lv_display.c | 4 +- src/draw/lv_draw.c | 2 +- src/draw/lv_draw_label.c | 2 +- src/draw/lv_draw_mask.c | 6 +- src/draw/opengles/lv_draw_opengles.c | 10 +- src/draw/sdl/lv_draw_sdl.c | 6 +- src/indev/lv_gridnav.c | 15 +- src/indev/lv_indev.c | 22 +- src/indev/lv_indev_scroll.c | 24 +- src/layouts/flex/lv_flex.c | 6 +- src/layouts/grid/lv_grid.c | 6 +- src/others/file_explorer/lv_file_explorer.c | 4 +- src/widgets/arc/lv_arc.c | 7 +- src/widgets/arclabel/lv_arclabel.c | 4 +- src/widgets/bar/lv_bar.c | 4 +- src/widgets/button/lv_button.c | 4 +- src/widgets/calendar/lv_calendar.c | 4 +- .../calendar/lv_calendar_header_arrow.c | 4 +- src/widgets/checkbox/lv_checkbox.c | 8 +- src/widgets/dropdown/lv_dropdown.c | 16 +- src/widgets/image/lv_image.c | 4 +- src/widgets/ime/lv_ime_pinyin.c | 16 +- src/widgets/keyboard/lv_keyboard.c | 2 +- src/widgets/label/lv_label.c | 2 +- src/widgets/line/lv_line.c | 2 +- src/widgets/menu/lv_menu.c | 78 +- src/widgets/msgbox/lv_msgbox.c | 21 +- src/widgets/msgbox/lv_msgbox_private.h | 1 + src/widgets/property/lv_obj_properties.c | 26 +- src/widgets/roller/lv_roller.c | 4 +- src/widgets/scale/lv_scale.c | 2 +- src/widgets/slider/lv_slider.c | 22 +- src/widgets/spinner/lv_spinner.c | 2 +- src/widgets/switch/lv_switch.c | 6 +- src/widgets/tabview/lv_tabview.c | 4 +- src/widgets/textarea/lv_textarea.c | 8 +- src/widgets/tileview/lv_tileview.c | 2 +- tests/src/test_cases/draw/test_clip_corner.c | 2 +- tests/src/test_cases/draw/test_draw_label.c | 2 +- tests/src/test_cases/libs/test_gif.c | 4 +- .../src/test_cases/libs/test_libjpeg_turbo.c | 4 +- tests/src/test_cases/libs/test_svg_decoder.c | 2 +- tests/src/test_cases/test_align_flex.c | 14 +- tests/src/test_cases/test_bindings.c | 6 +- tests/src/test_cases/test_event_trickle.c | 4 +- tests/src/test_cases/test_flex_grow.c | 2 +- tests/src/test_cases/test_gesture_pinch.c | 2 +- tests/src/test_cases/test_group.c | 2 +- tests/src/test_cases/test_hover.c | 2 +- tests/src/test_cases/test_indev.c | 2 +- .../test_cases/test_indev_scroll_rotation.c | 10 +- tests/src/test_cases/test_observer.c | 54 +- tests/src/test_cases/test_snapshot.c | 2 +- tests/src/test_cases/widgets/test_arc.c | 6 +- tests/src/test_cases/widgets/test_btn.c | 4 +- tests/src/test_cases/widgets/test_chart.c | 2 +- .../src/test_cases/widgets/test_ime_pinyin.c | 10 +- tests/src/test_cases/widgets/test_line.c | 2 +- tests/src/test_cases/widgets/test_lottie.c | 4 +- tests/src/test_cases/widgets/test_menu.c | 4 +- tests/src/test_cases/widgets/test_obj_flags.c | 16 +- .../test_cases/widgets/test_obj_property.c | 9 +- tests/src/test_cases/widgets/test_roller.c | 8 +- tests/src/test_cases/widgets/test_scale.c | 2 +- tests/src/test_cases/widgets/test_slider.c | 8 +- tests/src/test_cases/widgets/test_switch.c | 2 +- tests/src/test_cases/widgets/test_table.c | 2 +- 139 files changed, 1694 insertions(+), 552 deletions(-) diff --git a/demos/benchmark/lv_demo_benchmark.c b/demos/benchmark/lv_demo_benchmark.c index a0458c7148..47b1bbcbfe 100644 --- a/demos/benchmark/lv_demo_benchmark.c +++ b/demos/benchmark/lv_demo_benchmark.c @@ -147,7 +147,7 @@ static void multiple_rgb_images_cb(void) for(x = 0; x < hor_cnt; x++) { lv_obj_t * obj = lv_image_create(lv_screen_active()); lv_image_set_src(obj, &img_benchmark_lvgl_logo_rgb); - if(x == 0) lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(obj, true); fall_anim(obj, 80); } @@ -174,7 +174,7 @@ static void multiple_argb_images_cb(void) for(x = 0; x < hor_cnt; x++) { lv_obj_t * obj = lv_image_create(lv_screen_active()); lv_image_set_src(obj, &img_benchmark_lvgl_logo_argb); - if(x == 0) lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(obj, true); fall_anim(obj, 80); } @@ -201,7 +201,7 @@ static void rotated_argb_image_cb(void) for(x = 0; x < hor_cnt; x++) { lv_obj_t * obj = lv_image_create(lv_screen_active()); lv_image_set_src(obj, &img_benchmark_lvgl_logo_argb); - if(x == 0) lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(obj, true); lv_image_set_rotation(obj, lv_rand(100, 3500)); fall_anim(obj, 80); @@ -242,7 +242,7 @@ static void multiple_labels_cb(void) int32_t x; for(x = 0; x < hor_cnt; x++) { lv_obj_t * obj = lv_label_create(lv_screen_active()); - if(x == 0) lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(obj, true); lv_label_set_text_static(obj, "Hello LVGL!"); color_anim(obj); } @@ -303,7 +303,7 @@ static void multiple_arcs_cb(void) for(x = 0; x < hor_cnt; x++) { lv_obj_t * obj = lv_arc_create(lv_screen_active()); - if(x == 0) lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(obj, true); lv_obj_set_size(obj, 100, 100); lv_obj_center(obj); @@ -337,7 +337,7 @@ static void containers_cb(void) int32_t x; for(x = 0; x < hor_cnt; x++) { lv_obj_t * card = card_create(); - if(x == 0) lv_obj_add_flag(card, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(card, true); fall_anim(card, 30); } } @@ -361,7 +361,7 @@ static void containers_with_overlay_cb(void) int32_t x; for(x = 0; x < hor_cnt; x++) { lv_obj_t * card = card_create(); - if(x == 0) lv_obj_add_flag(card, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(card, true); fall_anim(card, 30); } } @@ -388,7 +388,7 @@ static void containers_with_opa_cb(void) int32_t x; for(x = 0; x < hor_cnt; x++) { lv_obj_t * card = card_create(); - if(x == 0) lv_obj_add_flag(card, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(card, true); lv_obj_set_style_opa(card, LV_OPA_50, 0); fall_anim(card, 30); } @@ -414,7 +414,7 @@ static void containers_with_opa_layer_cb(void) for(x = 0; x < hor_cnt; x++) { lv_obj_t * card = card_create(); lv_obj_set_style_opa_layered(card, LV_OPA_50, 0); - if(x == 0) lv_obj_add_flag(card, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(card, true); fall_anim(card, 30); } } @@ -441,7 +441,7 @@ static void containers_with_scrolling_cb(void) int32_t x; for(x = 0; x < hor_cnt; x++) { lv_obj_t * card = card_create(); - if(x == 0) lv_obj_add_flag(card, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(x == 0) lv_obj_set_flex_in_new_track(card, true); } } @@ -525,7 +525,7 @@ void lv_demo_benchmark(void) lv_display_t * disp = lv_display_get_default(); lv_subject_add_observer_obj(&disp->perf_sysmon_backend.subject, sysmon_perf_observer_cb, title, NULL); #if LV_USE_PERF_MONITOR_LOG_MODE - lv_obj_add_flag(title, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(title, true); #endif #else lv_label_set_text(title, "LV_USE_PERF_MONITOR is not enabled"); @@ -549,7 +549,7 @@ void lv_demo_benchmark_summary_display(const lv_demo_benchmark_summary_t * summa lv_obj_t * table = lv_table_create(lv_screen_active()); lv_obj_set_width(table, lv_pct(100)); lv_obj_set_style_max_height(table, lv_pct(100), 0); - lv_obj_add_flag(table, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(table, true); lv_obj_set_style_text_color(table, lv_palette_darken(LV_PALETTE_BLUE_GREY, 2), LV_PART_ITEMS); lv_obj_set_style_border_color(table, lv_palette_darken(LV_PALETTE_BLUE_GREY, 2), LV_PART_ITEMS); lv_obj_add_event_cb(table, table_draw_task_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); diff --git a/demos/gltf/lv_demo_gltf.c b/demos/gltf/lv_demo_gltf.c index ac83d8b5dc..6d3dcee007 100644 --- a/demos/gltf/lv_demo_gltf.c +++ b/demos/gltf/lv_demo_gltf.c @@ -124,7 +124,7 @@ lv_obj_t * lv_demo_gltf(const char * path) { lv_obj_t * viewer = lv_gltf_create(lv_screen_active()); lv_obj_set_size(viewer, LV_PCT(100), LV_PCT(100)); - lv_obj_remove_flag(viewer, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(viewer, false); lv_gltf_set_background_mode(viewer, LV_GLTF_BG_MODE_ENVIRONMENT); lv_gltf_model_t * model = lv_gltf_load_model_from_file(viewer, path); LV_ASSERT_NULL(model); diff --git a/demos/keypad_encoder/lv_demo_keypad_encoder.c b/demos/keypad_encoder/lv_demo_keypad_encoder.c index 26979ef525..b432e625b5 100644 --- a/demos/keypad_encoder/lv_demo_keypad_encoder.c +++ b/demos/keypad_encoder/lv_demo_keypad_encoder.c @@ -97,32 +97,32 @@ static void selectors_create(lv_obj_t * parent) lv_table_set_cell_value(obj, 2, 1, "21"); lv_table_set_cell_value(obj, 3, 0, "30"); lv_table_set_cell_value(obj, 3, 1, "31"); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); obj = lv_calendar_create(parent); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); obj = lv_buttonmatrix_create(parent); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); obj = lv_checkbox_create(parent); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); obj = lv_slider_create(parent); lv_slider_set_range(obj, 0, 10); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); obj = lv_switch_create(parent); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); obj = lv_spinbox_create(parent); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); obj = lv_dropdown_create(parent); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); obj = lv_roller_create(parent); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); lv_obj_t * list = lv_list_create(parent); lv_obj_update_layout(list); @@ -154,7 +154,7 @@ static void text_input_create(lv_obj_t * parent) lv_textarea_set_placeholder_text(ta2, "Type something"); lv_obj_t * kb = lv_keyboard_create(lv_screen_active()); - lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, true); lv_obj_add_event_cb(ta1, ta_event_cb, LV_EVENT_ALL, kb); lv_obj_add_event_cb(ta2, ta_event_cb, LV_EVENT_ALL, kb); @@ -201,7 +201,7 @@ static void ta_event_cb(lv_event_t * e) if(code == LV_EVENT_CLICKED && indev_type == LV_INDEV_TYPE_ENCODER) { lv_keyboard_set_textarea(kb, ta); - lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, false); lv_group_focus_obj(kb); lv_group_set_editing(lv_obj_get_group(kb), kb != NULL); lv_obj_set_height(tv, LV_VER_RES / 2); @@ -209,7 +209,7 @@ static void ta_event_cb(lv_event_t * e) } if(code == LV_EVENT_READY || code == LV_EVENT_CANCEL) { - lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, true); lv_obj_set_height(tv, LV_VER_RES); } } diff --git a/demos/music/lv_demo_music_list.c b/demos/music/lv_demo_music_list.c index ff4ee09f43..b60c10bdb3 100644 --- a/demos/music/lv_demo_music_list.c +++ b/demos/music/lv_demo_music_list.c @@ -222,7 +222,7 @@ static lv_obj_t * add_list_button(lv_obj_t * parent, uint32_t track_id) lv_image_set_inner_align(border, LV_IMAGE_ALIGN_TILE); lv_obj_set_width(border, lv_pct(120)); lv_obj_align(border, LV_ALIGN_BOTTOM_MID, 0, 0); - lv_obj_add_flag(border, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(border, true); return btn; } diff --git a/demos/music/lv_demo_music_main.c b/demos/music/lv_demo_music_main.c index 5ee43c680b..d8839a5970 100644 --- a/demos/music/lv_demo_music_main.c +++ b/demos/music/lv_demo_music_main.c @@ -396,8 +396,8 @@ static lv_obj_t * create_cont(lv_obj_t * parent) { /*A transparent container in which the player section will be scrolled*/ main_cont = lv_obj_create(parent); - lv_obj_remove_flag(main_cont, LV_OBJ_FLAG_CLICKABLE); - lv_obj_remove_flag(main_cont, LV_OBJ_FLAG_SCROLL_ELASTIC); + lv_obj_set_clickable(main_cont, false); + lv_obj_set_scroll_elastic(main_cont, false); lv_obj_remove_style_all(main_cont); /*Make it transparent*/ lv_obj_set_size(main_cont, lv_pct(100), lv_pct(100)); lv_obj_set_scroll_snap_y(main_cont, LV_SCROLL_SNAP_CENTER); /*Snap the children to the center*/ @@ -410,7 +410,7 @@ static lv_obj_t * create_cont(lv_obj_t * parent) #else lv_obj_set_size(player, music_width, music_height + LV_DEMO_MUSIC_HANDLE_SIZE * 2); #endif - lv_obj_remove_flag(player, LV_OBJ_FLAG_SNAPPABLE); + lv_obj_set_snappable(player, false); lv_obj_set_style_bg_color(player, lv_color_hex(0xffffff), 0); lv_obj_set_style_border_width(player, 0, 0); @@ -421,16 +421,16 @@ static lv_obj_t * create_cont(lv_obj_t * parent) * It is used only to snap it to center.*/ lv_obj_t * placeholder1 = lv_obj_create(main_cont); lv_obj_remove_style_all(placeholder1); - lv_obj_remove_flag(placeholder1, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(placeholder1, false); lv_obj_t * placeholder2 = lv_obj_create(main_cont); lv_obj_remove_style_all(placeholder2); - lv_obj_remove_flag(placeholder2, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(placeholder2, false); #if LV_DEMO_MUSIC_SQUARE || LV_DEMO_MUSIC_ROUND lv_obj_t * placeholder3 = lv_obj_create(main_cont); lv_obj_remove_style_all(placeholder3); - lv_obj_remove_flag(placeholder3, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(placeholder3, false); lv_obj_set_size(placeholder1, lv_pct(100), music_height); lv_obj_set_y(placeholder1, 0); @@ -462,14 +462,14 @@ static void create_wave_images(lv_obj_t * parent) lv_image_set_inner_align(wave_top, LV_IMAGE_ALIGN_TILE); lv_obj_set_width(wave_top, music_width); lv_obj_align(wave_top, LV_ALIGN_TOP_MID, 0, 0); - lv_obj_add_flag(wave_top, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(wave_top, true); lv_obj_t * wave_bottom = lv_image_create(parent); lv_image_set_src(wave_bottom, &img_lv_demo_music_wave_bottom); lv_image_set_inner_align(wave_bottom, LV_IMAGE_ALIGN_TILE); lv_obj_set_width(wave_bottom, music_width); lv_obj_align(wave_bottom, LV_ALIGN_BOTTOM_MID, 0, 0); - lv_obj_add_flag(wave_bottom, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(wave_bottom, true); LV_IMAGE_DECLARE(img_lv_demo_music_corner_left); LV_IMAGE_DECLARE(img_lv_demo_music_corner_right); @@ -480,7 +480,7 @@ static void create_wave_images(lv_obj_t * parent) #else lv_obj_align(wave_corner, LV_ALIGN_BOTTOM_LEFT, -music_width / 6, 0); #endif - lv_obj_add_flag(wave_corner, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(wave_corner, true); wave_corner = lv_image_create(parent); lv_image_set_src(wave_corner, &img_lv_demo_music_corner_right); @@ -489,7 +489,7 @@ static void create_wave_images(lv_obj_t * parent) #else lv_obj_align(wave_corner, LV_ALIGN_BOTTOM_RIGHT, music_width / 6, 0); #endif - lv_obj_add_flag(wave_corner, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(wave_corner, true); } static lv_obj_t * create_title_box(lv_obj_t * parent) @@ -557,7 +557,8 @@ static lv_obj_t * create_spectrum_obj(lv_obj_t * parent) #else lv_obj_set_height(obj, 250); #endif - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_clickable(obj, false); + lv_obj_set_scrollable(obj, false); lv_obj_add_event_cb(obj, spectrum_draw_event_cb, LV_EVENT_ALL, NULL); lv_obj_refresh_ext_draw_size(obj); album_image_obj = album_image_create(obj); @@ -570,7 +571,7 @@ static lv_obj_t * create_ctrl_box(lv_obj_t * parent) lv_obj_t * cont = lv_obj_create(parent); lv_obj_remove_style_all(cont); lv_obj_set_height(cont, LV_SIZE_CONTENT); - lv_obj_remove_flag(cont, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(cont, false); #if LV_DEMO_MUSIC_LARGE lv_obj_set_style_pad_bottom(cont, 17, 0); #else @@ -600,29 +601,29 @@ static lv_obj_t * create_ctrl_box(lv_obj_t * parent) lv_image_set_src(icon, &img_lv_demo_music_btn_prev); lv_obj_set_grid_cell(icon, LV_GRID_ALIGN_CENTER, 2, 1, LV_GRID_ALIGN_CENTER, 0, 1); lv_obj_add_event_cb(icon, prev_click_event_cb, LV_EVENT_CLICKED, NULL); - lv_obj_add_flag(icon, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(icon, true); play_obj = lv_imagebutton_create(cont); lv_imagebutton_set_src(play_obj, LV_IMAGEBUTTON_STATE_RELEASED, NULL, &img_lv_demo_music_btn_play, NULL); lv_imagebutton_set_src(play_obj, LV_IMAGEBUTTON_STATE_CHECKED_RELEASED, NULL, &img_lv_demo_music_btn_pause, NULL); - lv_obj_add_flag(play_obj, LV_OBJ_FLAG_CHECKABLE); + lv_obj_set_checkable(play_obj, true); lv_obj_set_grid_cell(play_obj, LV_GRID_ALIGN_CENTER, 3, 1, LV_GRID_ALIGN_CENTER, 0, 1); lv_obj_add_event_cb(play_obj, play_event_click_cb, LV_EVENT_CLICKED, NULL); - lv_obj_add_flag(play_obj, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(play_obj, true); lv_obj_set_width(play_obj, img_lv_demo_music_btn_play.header.w); icon = lv_image_create(cont); lv_image_set_src(icon, &img_lv_demo_music_btn_next); lv_obj_set_grid_cell(icon, LV_GRID_ALIGN_CENTER, 4, 1, LV_GRID_ALIGN_CENTER, 0, 1); lv_obj_add_event_cb(icon, next_click_event_cb, LV_EVENT_CLICKED, NULL); - lv_obj_add_flag(icon, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(icon, true); LV_IMAGE_DECLARE(img_lv_demo_music_slider_knob); slider_obj = lv_slider_create(cont); lv_obj_set_style_anim_duration(slider_obj, 100, 0); - lv_obj_add_flag(slider_obj, LV_OBJ_FLAG_CLICKABLE); /*No input from the slider*/ - lv_obj_remove_flag(slider_obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_clickable(slider_obj, true); /*No input from the slider*/ + lv_obj_set_scroll_on_focus(slider_obj, false); #if LV_DEMO_MUSIC_LARGE == 0 lv_obj_set_height(slider_obj, 3); @@ -972,8 +973,8 @@ static lv_obj_t * album_image_create(lv_obj_t * parent) lv_image_set_antialias(img, false); lv_obj_align(img, LV_ALIGN_CENTER, 0, 0); lv_obj_add_event_cb(img, album_gesture_event_cb, LV_EVENT_GESTURE, NULL); - lv_obj_remove_flag(img, LV_OBJ_FLAG_GESTURE_BUBBLE); - lv_obj_add_flag(img, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_gesture_bubble(img, false); + lv_obj_set_clickable(img, true); return img; diff --git a/demos/render/lv_demo_render.c b/demos/render/lv_demo_render.c index 53f75ed60c..aec43c16de 100644 --- a/demos/render/lv_demo_render.c +++ b/demos/render/lv_demo_render.c @@ -878,7 +878,7 @@ static void blend_mode_cb(lv_obj_t * parent) lv_obj_set_style_image_recolor(img_recolored, lv_color_hex(0x00ff00), 0); lv_obj_set_style_image_recolor_opa(img_recolored, LV_OPA_50, 0); lv_obj_set_y(img_recolored, 30); - lv_obj_add_flag(img_recolored, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(img_recolored, true); } diff --git a/demos/widgets/lv_demo_widgets.c b/demos/widgets/lv_demo_widgets.c index b18bc28f3b..f52136cf98 100644 --- a/demos/widgets/lv_demo_widgets.c +++ b/demos/widgets/lv_demo_widgets.c @@ -81,19 +81,19 @@ void lv_demo_widgets_with_args(const lv_demo_args_t * args) lv_obj_t * tab_bar = lv_tabview_get_tab_bar(tv); lv_obj_set_style_pad_left(tab_bar, LV_HOR_RES / 2, 0); lv_obj_t * logo = lv_image_create(tab_bar); - lv_obj_add_flag(logo, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(logo, true); LV_IMAGE_DECLARE(img_lvgl_logo); lv_image_set_src(logo, &img_lvgl_logo); lv_obj_align(logo, LV_ALIGN_LEFT_MID, -LV_HOR_RES / 2 + 25, 0); lv_obj_t * label = lv_demo_widgets_title_create(tab_bar, ""); - lv_obj_add_flag(label, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(label, true); lv_label_set_text_fmt(label, "LVGL v%d.%d.%d", lv_version_major(), lv_version_minor(), lv_version_patch()); lv_obj_align_to(label, logo, LV_ALIGN_OUT_RIGHT_TOP, 10, 0); label = lv_label_create(tab_bar); lv_label_set_text_static(label, "Widgets demo"); - lv_obj_add_flag(label, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(label, true); lv_obj_add_style(label, &style_text_muted, 0); lv_obj_align_to(label, logo, LV_ALIGN_OUT_RIGHT_BOTTOM, 10, 0); } @@ -142,7 +142,7 @@ static void color_changer_create(lv_obj_t * parent) lv_obj_remove_style_all(color_cont); lv_obj_set_flex_flow(color_cont, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(color_cont, LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_add_flag(color_cont, LV_OBJ_FLAG_FLOATING); + lv_obj_set_floating(color_cont, true); lv_obj_set_style_bg_color(color_cont, lv_color_white(), 0); lv_obj_set_style_pad_right(color_cont, disp_size == DISP_SMALL ? LV_DPX(47) : LV_DPX(55), 0); @@ -162,11 +162,12 @@ static void color_changer_create(lv_obj_t * parent) lv_obj_set_style_opa(c, LV_OPA_TRANSP, 0); lv_obj_set_size(c, 20, 20); lv_obj_add_event_cb(c, color_event_cb, LV_EVENT_ALL, &palette[i]); - lv_obj_remove_flag(c, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(c, false); } lv_obj_t * btn = lv_button_create(parent); - lv_obj_add_flag(btn, LV_OBJ_FLAG_FLOATING | LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_floating(btn, true); + lv_obj_set_clickable(btn, true); lv_obj_set_style_bg_color(btn, lv_color_white(), LV_STATE_CHECKED); lv_obj_set_style_pad_all(btn, 10, 0); lv_obj_set_style_radius(btn, LV_RADIUS_CIRCLE, 0); diff --git a/demos/widgets/lv_demo_widgets_analytics.c b/demos/widgets/lv_demo_widgets_analytics.c index c80f394791..6fa09b3b93 100644 --- a/demos/widgets/lv_demo_widgets_analytics.c +++ b/demos/widgets/lv_demo_widgets_analytics.c @@ -100,7 +100,7 @@ void lv_demo_widgets_analytics_create(lv_obj_t * parent) lv_obj_set_height(chart2_cont, lv_pct(100)); lv_obj_set_style_max_height(chart2_cont, 300, 0); lv_obj_set_flex_grow(chart2_cont, 1); - lv_obj_add_flag(chart2_cont, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(chart2_cont, true); static const char * chart2_texts[] = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", NULL}; chart2 = create_chart_with_scales(chart2_cont, "Monthly revenue", chart2_texts); @@ -117,13 +117,13 @@ void lv_demo_widgets_analytics_create(lv_obj_t * parent) /*Create all 3 scales first to have their size resolved*/ scale1 = create_scale_box(parent, "Monthly Target", "Revenue: -", "Sales: -", "Costs: -"); - lv_obj_add_flag(lv_obj_get_parent(scale1), LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(lv_obj_get_parent(scale1), true); scale2 = create_scale_box(parent, "Sessions", "Desktop: -", "Tablet: -", "Mobile: -"); - if(disp_size < DISP_LARGE) lv_obj_add_flag(lv_obj_get_parent(scale2), LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(disp_size < DISP_LARGE) lv_obj_set_flex_in_new_track(lv_obj_get_parent(scale2), true); scale3 = create_scale_box(parent, "Network Speed", "Low speed", "Normal Speed", "High Speed"); - if(disp_size < DISP_LARGE) lv_obj_add_flag(lv_obj_get_parent(scale3), LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + if(disp_size < DISP_LARGE) lv_obj_set_flex_in_new_track(lv_obj_get_parent(scale3), true); lv_obj_update_layout(parent); int32_t scale_w; @@ -156,7 +156,7 @@ void lv_demo_widgets_analytics_create(lv_obj_t * parent) lv_obj_set_style_arc_opa(arc, 0, 0); lv_obj_set_style_arc_width(arc, 15, LV_PART_INDICATOR); lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_BLUE), LV_PART_INDICATOR); - lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(arc, false); lv_anim_set_exec_cb(&a, scale1_indic1_anim_cb); lv_anim_set_var(&a, arc); @@ -171,7 +171,7 @@ void lv_demo_widgets_analytics_create(lv_obj_t * parent) lv_obj_set_style_arc_opa(arc, 0, 0); lv_obj_set_style_arc_width(arc, 15, LV_PART_INDICATOR); lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_RED), LV_PART_INDICATOR); - lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(arc, false); lv_obj_center(arc); lv_anim_set_exec_cb(&a, scale1_indic1_anim_cb); @@ -187,7 +187,7 @@ void lv_demo_widgets_analytics_create(lv_obj_t * parent) lv_obj_set_style_arc_opa(arc, 0, 0); lv_obj_set_style_arc_width(arc, 15, LV_PART_INDICATOR); lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_GREEN), LV_PART_INDICATOR); - lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(arc, false); lv_obj_center(arc); lv_anim_set_exec_cb(&a, scale1_indic1_anim_cb); @@ -211,7 +211,7 @@ void lv_demo_widgets_analytics_create(lv_obj_t * parent) lv_obj_set_style_arc_width(arc, 10, LV_PART_INDICATOR); lv_obj_set_style_arc_rounded(arc, false, LV_PART_INDICATOR); lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_BLUE), LV_PART_INDICATOR); - lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(arc, false); lv_obj_center(arc); arc = lv_arc_create(scale2); @@ -223,7 +223,7 @@ void lv_demo_widgets_analytics_create(lv_obj_t * parent) lv_obj_set_style_arc_width(arc, 20, LV_PART_INDICATOR); lv_obj_set_style_arc_rounded(arc, false, LV_PART_INDICATOR); lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_RED), LV_PART_INDICATOR); - lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(arc, false); lv_obj_center(arc); arc = lv_arc_create(scale2); @@ -234,7 +234,7 @@ void lv_demo_widgets_analytics_create(lv_obj_t * parent) lv_obj_set_style_arc_width(arc, 30, LV_PART_INDICATOR); lv_obj_set_style_arc_rounded(arc, false, LV_PART_INDICATOR); lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_GREEN), LV_PART_INDICATOR); - lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(arc, false); lv_obj_center(arc); lv_timer_t * scale2_timer = lv_timer_create(scale2_timer_cb, 100, scale2); @@ -543,7 +543,8 @@ static lv_obj_t * create_chart_with_scales(lv_obj_t * parent, const char * title lv_obj_t * chart = lv_chart_create(wrapper); lv_group_add_obj(lv_group_get_default(), chart); - lv_obj_add_flag(chart, LV_OBJ_FLAG_SCROLL_ON_FOCUS | LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_scroll_on_focus(chart, true); + lv_obj_set_send_draw_task_events(chart, true); lv_chart_set_div_line_count(chart, 0, 12); lv_chart_set_point_count(chart, 12); lv_obj_set_grid_cell(chart, LV_GRID_ALIGN_START, 0, 1, LV_GRID_ALIGN_STRETCH, 0, 1); diff --git a/demos/widgets/lv_demo_widgets_profile.c b/demos/widgets/lv_demo_widgets_profile.c index 47924b81d2..727293d7ce 100644 --- a/demos/widgets/lv_demo_widgets_profile.c +++ b/demos/widgets/lv_demo_widgets_profile.c @@ -93,7 +93,7 @@ void lv_demo_widgets_profile_create(lv_obj_t * parent) /*Create a keyboard*/ lv_obj_t * kb = lv_keyboard_create(lv_screen_active()); - lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, true); /*Create the second panel*/ lv_obj_t * panel2 = lv_obj_create(parent); @@ -146,7 +146,7 @@ void lv_demo_widgets_profile_create(lv_obj_t * parent) lv_obj_t * slider1 = lv_slider_create(panel3); lv_obj_set_width(slider1, LV_PCT(95)); lv_obj_add_event_cb(slider1, slider_event_cb, LV_EVENT_ALL, NULL); - lv_obj_add_flag(slider1, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(slider1, true); lv_obj_refresh_ext_draw_size(slider1); lv_obj_t * team_player_label = lv_label_create(panel3); @@ -376,7 +376,7 @@ static void ta_event_cb(lv_event_t * e) lv_obj_set_style_max_height(kb, LV_HOR_RES * 2 / 3, 0); lv_obj_update_layout(tv); /*Be sure the sizes are recalculated*/ lv_obj_set_height(tv, LV_VER_RES - lv_obj_get_height(kb)); - lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, false); lv_obj_scroll_to_view_recursive(ta, LV_ANIM_OFF); lv_indev_wait_release(lv_event_get_param(e)); } @@ -384,13 +384,13 @@ static void ta_event_cb(lv_event_t * e) else if(code == LV_EVENT_DEFOCUSED) { lv_keyboard_set_textarea(kb, NULL); lv_obj_set_height(tv, LV_VER_RES); - lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, true); lv_indev_reset(NULL, ta); } else if(code == LV_EVENT_READY || code == LV_EVENT_CANCEL) { lv_obj_set_height(tv, LV_VER_RES); - lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, true); lv_indev_reset(NULL, ta); /*To forget the last clicked object to make it focusable again*/ } } @@ -403,7 +403,7 @@ static void birthday_event_cb(lv_event_t * e) if(code == LV_EVENT_FOCUSED) { if(lv_indev_get_type(lv_indev_active()) == LV_INDEV_TYPE_POINTER) { if(calendar == NULL) { - lv_obj_add_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(lv_layer_top(), true); calendar = lv_calendar_create(lv_layer_top()); lv_obj_set_style_bg_opa(lv_layer_top(), LV_OPA_50, 0); lv_obj_set_style_bg_color(lv_layer_top(), lv_palette_main(LV_PALETTE_GREY), 0); @@ -434,7 +434,7 @@ static void calendar_event_cb(lv_event_t * e) lv_obj_delete(calendar); calendar = NULL; - lv_obj_remove_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(lv_layer_top(), false); lv_obj_set_style_bg_opa(lv_layer_top(), LV_OPA_TRANSP, 0); } } diff --git a/demos/widgets/lv_demo_widgets_shop.c b/demos/widgets/lv_demo_widgets_shop.c index 3514199e76..debf01474d 100644 --- a/demos/widgets/lv_demo_widgets_shop.c +++ b/demos/widgets/lv_demo_widgets_shop.c @@ -146,7 +146,7 @@ void lv_demo_widgets_shop_create(lv_obj_t * parent) lv_obj_t * list = lv_obj_create(parent); if(disp_size == DISP_SMALL) { - lv_obj_add_flag(list, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(list, true); lv_obj_set_height(list, LV_PCT(100)); } else { @@ -156,7 +156,7 @@ void lv_demo_widgets_shop_create(lv_obj_t * parent) lv_obj_set_flex_flow(list, LV_FLEX_FLOW_COLUMN); lv_obj_set_flex_grow(list, 1); - lv_obj_add_flag(list, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(list, true); title = lv_demo_widgets_title_create(list, "Top products"); @@ -169,7 +169,7 @@ void lv_demo_widgets_shop_create(lv_obj_t * parent) lv_obj_t * notifications = lv_obj_create(parent); if(disp_size == DISP_SMALL) { - lv_obj_add_flag(notifications, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(notifications, true); lv_obj_set_height(notifications, LV_PCT(100)); } else { diff --git a/docs/src/common-widget-features/flags.mdx b/docs/src/common-widget-features/flags.mdx index 9028cea22e..60794ac373 100644 --- a/docs/src/common-widget-features/flags.mdx +++ b/docs/src/common-widget-features/flags.mdx @@ -3,6 +3,14 @@ title: Flags description: Some widget attributes can be enabled or disabled using lv_obj_add_flag and lv_obj_remove_flag. --- + +Flags are deprecated in LVGL v9.6 and will be removed in LVGL v10. +Use a dedicated function instead, such as . + + and +can be used to replace `LV_OBJ_FLAG_USER_1-4`. + + Some widget attributes can be enabled or disabled using and . diff --git a/docs/src/migration-v10.mdx b/docs/src/migration-v10.mdx index 4e87d2c410..8f3f0bf97b 100644 --- a/docs/src/migration-v10.mdx +++ b/docs/src/migration-v10.mdx @@ -103,6 +103,26 @@ if you need finer control. lv_obj_t * obj = lv_obj_find_by_name(parent, "my_widget"); ``` +- The generic flag API — `lv_obj_add_flag()`, `lv_obj_remove_flag()`, + `lv_obj_set_flag()`, `lv_obj_has_flag()` and `lv_obj_has_flag_any()` — is + deprecated. Each flag now has a dedicated setter (`lv_obj_set_(obj, en)`) + and getter (`lv_obj_is_(obj)`): + ```c + /* Before */ + lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); + lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_flag(obj, LV_OBJ_FLAG_SCROLLABLE, en); + bool h = lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN); + + /* After */ + lv_obj_set_hidden(obj, true); + lv_obj_set_clickable(obj, false); + lv_obj_set_scrollable(obj, en); + bool h = lv_obj_is_hidden(obj); + ``` + The custom-bit flags (`LV_OBJ_FLAG_USER_1`–`4`) can be accessed via + `lv_obj_set/get_user_flag()` + --- ## Widgets diff --git a/examples/anim/lv_example_anim_2.c b/examples/anim/lv_example_anim_2.c index 901a3a4db9..0de10829be 100644 --- a/examples/anim/lv_example_anim_2.c +++ b/examples/anim/lv_example_anim_2.c @@ -26,7 +26,7 @@ void lv_example_anim_2(void) { lv_obj_t * obj = lv_obj_create(lv_screen_active()); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(obj, false); lv_obj_set_style_bg_color(obj, lv_palette_main(LV_PALETTE_RED), 0); lv_obj_set_style_radius(obj, LV_RADIUS_CIRCLE, 0); diff --git a/examples/anim/lv_example_anim_3.c b/examples/anim/lv_example_anim_3.c index 0cff3f332e..e0e6625bbc 100644 --- a/examples/anim/lv_example_anim_3.c +++ b/examples/anim/lv_example_anim_3.c @@ -125,7 +125,7 @@ static void page_obj_init(lv_obj_t * par) ginfo.anim_obj = lv_obj_create(par); lv_obj_set_size(ginfo.anim_obj, 30, 30); lv_obj_set_align(ginfo.anim_obj, LV_ALIGN_TOP_LEFT); - lv_obj_remove_flag(ginfo.anim_obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(ginfo.anim_obj, false); lv_obj_set_style_bg_color(ginfo.anim_obj, lv_palette_main(LV_PALETTE_RED), LV_PART_MAIN); lv_obj_set_grid_cell(ginfo.anim_obj, LV_GRID_ALIGN_START, 0, 1, LV_GRID_ALIGN_START, 0, 1); diff --git a/examples/anim/lv_example_anim_timeline_1.c b/examples/anim/lv_example_anim_timeline_1.c index b5cf985fa7..e492ebd417 100644 --- a/examples/anim/lv_example_anim_timeline_1.c +++ b/examples/anim/lv_example_anim_timeline_1.c @@ -69,8 +69,8 @@ void lv_example_anim_timeline_1(void) /* create btn_start */ lv_obj_t * btn_start = lv_button_create(par); lv_obj_add_event_cb(btn_start, btn_start_event_handler, LV_EVENT_VALUE_CHANGED, anim_timeline); - lv_obj_add_flag(btn_start, LV_OBJ_FLAG_IGNORE_LAYOUT); - lv_obj_add_flag(btn_start, LV_OBJ_FLAG_CHECKABLE); + lv_obj_set_ignore_layout(btn_start, true); + lv_obj_set_checkable(btn_start, true); lv_obj_align(btn_start, LV_ALIGN_TOP_MID, -100, 20); lv_obj_t * label_start = lv_label_create(btn_start); @@ -80,7 +80,7 @@ void lv_example_anim_timeline_1(void) /* create btn_pause */ lv_obj_t * btn_pause = lv_button_create(par); lv_obj_add_event_cb(btn_pause, btn_pause_event_handler, LV_EVENT_CLICKED, anim_timeline); - lv_obj_add_flag(btn_pause, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(btn_pause, true); lv_obj_align(btn_pause, LV_ALIGN_TOP_MID, 100, 20); lv_obj_t * label_pause = lv_label_create(btn_pause); @@ -90,7 +90,7 @@ void lv_example_anim_timeline_1(void) /* create slider_prg */ lv_obj_t * slider_prg = lv_slider_create(par); lv_obj_add_event_cb(slider_prg, slider_prg_event_handler, LV_EVENT_VALUE_CHANGED, anim_timeline); - lv_obj_add_flag(slider_prg, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(slider_prg, true); lv_obj_align(slider_prg, LV_ALIGN_BOTTOM_MID, 0, -20); lv_slider_set_range(slider_prg, 0, LV_ANIM_TIMELINE_PROGRESS_MAX); diff --git a/examples/event/lv_example_event_bubble.c b/examples/event/lv_example_event_bubble.c index 9543e9de4b..0679db71f6 100644 --- a/examples/event/lv_example_event_bubble.c +++ b/examples/event/lv_example_event_bubble.c @@ -38,7 +38,7 @@ void lv_example_event_bubble(void) for(i = 0; i < 30; i++) { lv_obj_t * btn = lv_button_create(cont); lv_obj_set_size(btn, 70, 50); - lv_obj_add_flag(btn, LV_OBJ_FLAG_EVENT_BUBBLE); + lv_obj_set_event_bubble(btn, true); lv_obj_t * label = lv_label_create(btn); lv_label_set_text_fmt(label, "%" LV_PRIu32, i); diff --git a/examples/event/lv_example_event_draw.c b/examples/event/lv_example_event_draw.c index 7f76297c54..f13e9b5cbd 100644 --- a/examples/event/lv_example_event_draw.c +++ b/examples/event/lv_example_event_draw.c @@ -61,7 +61,7 @@ void lv_example_event_draw(void) lv_obj_set_size(cont, 200, 200); lv_obj_center(cont); lv_obj_add_event_cb(cont, event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(cont, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(cont, true); lv_timer_create(timer_cb, 30, cont); } diff --git a/examples/event/lv_example_event_trickle.c b/examples/event/lv_example_event_trickle.c index d1990bf71f..057bed8109 100644 --- a/examples/event/lv_example_event_trickle.c +++ b/examples/event/lv_example_event_trickle.c @@ -25,7 +25,7 @@ void lv_example_event_trickle(void) lv_style_set_bg_color(&style_black, lv_color_black()); /*Enable event trickle-down on the container*/ - lv_obj_add_flag(cont, LV_OBJ_FLAG_EVENT_TRICKLE); + lv_obj_set_event_trickle(cont, true); lv_obj_add_style(cont, &style_black, LV_STATE_PRESSED); diff --git a/examples/layouts/flex/lv_example_flex_ignore_layout.c b/examples/layouts/flex/lv_example_flex_ignore_layout.c index a3c06c48ac..2c891dec4f 100644 --- a/examples/layouts/flex/lv_example_flex_ignore_layout.c +++ b/examples/layouts/flex/lv_example_flex_ignore_layout.c @@ -37,7 +37,7 @@ void lv_example_flex_ignore_layout(void) align and does not occupy a flex slot. */ lv_obj_t * button_2 = lv_button_create(container); lv_obj_set_align(button_2, LV_ALIGN_CENTER); - lv_obj_set_flag(button_2, LV_OBJ_FLAG_IGNORE_LAYOUT, true); + lv_obj_set_ignore_layout(button_2, true); lv_obj_set_style_bg_color(button_2, lv_color_hex(0xe74c3c), 0); lv_obj_t * label_2 = lv_label_create(button_2); lv_label_set_text(label_2, "I'm Free!"); diff --git a/examples/layouts/flex/lv_example_flex_new_track.c b/examples/layouts/flex/lv_example_flex_new_track.c index d7427d904b..e2f405e7ea 100644 --- a/examples/layouts/flex/lv_example_flex_new_track.c +++ b/examples/layouts/flex/lv_example_flex_new_track.c @@ -66,7 +66,7 @@ void lv_example_flex_new_track(void) /* Track 2 — forced onto a new track */ lv_obj_t * label_6 = lv_label_create(container); - lv_obj_set_flag(label_6, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK, true); + lv_obj_set_flex_in_new_track(label_6, true); lv_obj_set_style_bg_color(label_6, lv_color_hex(0xe74c3c), 0); lv_label_set_text(label_6, "Sat"); lv_obj_add_style(label_6, &style_day, 0); diff --git a/examples/layouts/grid/lv_example_grid_ignore_layout.c b/examples/layouts/grid/lv_example_grid_ignore_layout.c index f19be9b2ef..f45b18874d 100644 --- a/examples/layouts/grid/lv_example_grid_ignore_layout.c +++ b/examples/layouts/grid/lv_example_grid_ignore_layout.c @@ -73,7 +73,7 @@ void lv_example_grid_ignore_layout(void) lv_obj_add_style(label_4, &style_cell, 0); lv_obj_t * label_5 = lv_label_create(container); - lv_obj_set_flag(label_5, LV_OBJ_FLAG_IGNORE_LAYOUT, true); + lv_obj_set_ignore_layout(label_5, true); lv_obj_set_align(label_5, LV_ALIGN_CENTER); lv_obj_set_style_bg_color(label_5, lv_color_hex(0xe74c3c), 0); lv_label_set_text(label_5, "FREE"); diff --git a/examples/layouts/split/lv_example_split.c b/examples/layouts/split/lv_example_split.c index 17b5817f8e..d9641ddd33 100644 --- a/examples/layouts/split/lv_example_split.c +++ b/examples/layouts/split/lv_example_split.c @@ -47,7 +47,7 @@ void lv_example_split(void) { lv_obj_t * cont = lv_obj_create(lv_screen_active()); lv_obj_set_size(cont, lv_pct(100), lv_pct(100)); - lv_obj_remove_flag(cont, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(cont, false); lv_obj_set_style_pad_all(cont, 0, 0); lv_obj_set_style_border_width(cont, 0, 0); lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW); @@ -64,8 +64,7 @@ void lv_example_split(void) /* Divider: the draggable handle */ lv_obj_t * divider = lv_obj_create(cont); lv_obj_set_size(divider, SPLIT_DIVIDER_W, lv_pct(100)); - lv_obj_remove_flag(divider, LV_OBJ_FLAG_SCROLLABLE); - lv_obj_add_flag(divider, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_scrollable(divider, false); lv_obj_set_style_radius(divider, 0, 0); lv_obj_set_style_border_width(divider, 0, 0); lv_obj_set_style_bg_color(divider, lv_palette_main(LV_PALETTE_GREY), 0); diff --git a/examples/layouts/split/lv_example_split_vertical.c b/examples/layouts/split/lv_example_split_vertical.c index bf0dbf25fc..d22a6ddf0b 100644 --- a/examples/layouts/split/lv_example_split_vertical.c +++ b/examples/layouts/split/lv_example_split_vertical.c @@ -46,7 +46,7 @@ void lv_example_split_vertical(void) { lv_obj_t * cont = lv_obj_create(lv_screen_active()); lv_obj_set_size(cont, lv_pct(100), lv_pct(100)); - lv_obj_remove_flag(cont, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(cont, false); lv_obj_set_style_pad_all(cont, 0, 0); lv_obj_set_style_border_width(cont, 0, 0); lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_COLUMN); @@ -63,8 +63,7 @@ void lv_example_split_vertical(void) /* Divider: the draggable handle */ lv_obj_t * divider = lv_obj_create(cont); lv_obj_set_size(divider, lv_pct(100), SPLIT_DIVIDER_H); - lv_obj_remove_flag(divider, LV_OBJ_FLAG_SCROLLABLE); - lv_obj_add_flag(divider, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_scrollable(divider, false); lv_obj_set_style_radius(divider, 0, 0); lv_obj_set_style_border_width(divider, 0, 0); lv_obj_set_style_bg_color(divider, lv_palette_main(LV_PALETTE_GREY), 0); diff --git a/examples/others/file_explorer/lv_example_file_explorer_2.c b/examples/others/file_explorer/lv_example_file_explorer_2.c index 741041efde..a4d969e326 100644 --- a/examples/others/file_explorer/lv_example_file_explorer_2.c +++ b/examples/others/file_explorer/lv_example_file_explorer_2.c @@ -28,9 +28,9 @@ static void btn_event_handler(lv_event_t * e) if(code == LV_EVENT_VALUE_CHANGED) { if(lv_obj_has_state(btn, LV_STATE_CHECKED)) - lv_obj_add_flag(file_explorer, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(file_explorer, true); else - lv_obj_remove_flag(file_explorer, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(file_explorer, false); } } @@ -134,7 +134,7 @@ void lv_example_file_explorer_2(void) lv_obj_set_style_radius(btn, 2, 0); lv_obj_set_style_pad_all(btn, 4, 0); lv_obj_align(btn, LV_ALIGN_LEFT_MID, 0, 0); - lv_obj_add_flag(btn, LV_OBJ_FLAG_CHECKABLE); + lv_obj_set_checkable(btn, true); lv_obj_t * label = lv_label_create(btn); lv_label_set_text(label, LV_SYMBOL_LIST); diff --git a/examples/others/gestures/lv_example_gestures.c b/examples/others/gestures/lv_example_gestures.c index 67d83e6bb4..0ce4168235 100644 --- a/examples/others/gestures/lv_example_gestures.c +++ b/examples/others/gestures/lv_example_gestures.c @@ -93,10 +93,10 @@ void lv_example_gestures(void) lv_obj_set_style_bg_color(root_view, lv_color_hex(0xffffff), LV_PART_MAIN); label = lv_label_create(root_view); - lv_obj_remove_flag(root_view, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(root_view, false); lv_label_set_text(label, "Zoom, rotate or move"); - lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(label, true); lv_style_init(&label_style); lv_style_set_bg_color(&label_style, lv_color_hex(RECT_COLOR)); diff --git a/examples/others/gridnav/lv_example_gridnav_1.c b/examples/others/gridnav/lv_example_gridnav_1.c index 66b9157654..44c3dfe4a0 100644 --- a/examples/others/gridnav/lv_example_gridnav_1.c +++ b/examples/others/gridnav/lv_example_gridnav_1.c @@ -35,7 +35,7 @@ void lv_example_gridnav_1(void) for(i = 0; i < 10; i++) { lv_obj_t * obj = lv_button_create(cont1); lv_obj_set_size(obj, 70, LV_SIZE_CONTENT); - lv_obj_add_flag(obj, LV_OBJ_FLAG_CHECKABLE); + lv_obj_set_checkable(obj, true); lv_group_remove_obj(obj); /*Not needed, we use the gridnav instead*/ label = lv_label_create(obj); diff --git a/examples/others/ime/lv_example_ime_pinyin_1.c b/examples/others/ime/lv_example_ime_pinyin_1.c index 02f24d5a68..92190d31cc 100644 --- a/examples/others/ime/lv_example_ime_pinyin_1.c +++ b/examples/others/ime/lv_example_ime_pinyin_1.c @@ -10,11 +10,11 @@ static void ta_event_cb(lv_event_t * e) if(code == LV_EVENT_FOCUSED) { if(lv_indev_get_type(lv_indev_active()) != LV_INDEV_TYPE_KEYPAD) { lv_keyboard_set_textarea(kb, ta); - lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, false); } } else if(code == LV_EVENT_CANCEL) { - lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, true); lv_obj_remove_state(ta, LV_STATE_FOCUSED); lv_indev_reset(NULL, ta); /*To forget the last clicked object to make it focusable again*/ } diff --git a/examples/others/ime/lv_example_ime_pinyin_2.c b/examples/others/ime/lv_example_ime_pinyin_2.c index dbc43a2d5f..0d754b2cb4 100644 --- a/examples/others/ime/lv_example_ime_pinyin_2.c +++ b/examples/others/ime/lv_example_ime_pinyin_2.c @@ -10,11 +10,11 @@ static void ta_event_cb(lv_event_t * e) if(code == LV_EVENT_FOCUSED) { if(lv_indev_get_type(lv_indev_active()) != LV_INDEV_TYPE_KEYPAD) { lv_keyboard_set_textarea(kb, ta); - lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, false); } } else if(code == LV_EVENT_READY) { - lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(kb, true); lv_obj_remove_state(ta, LV_STATE_FOCUSED); lv_indev_reset(NULL, ta); /*To forget the last clicked object to make it focusable again*/ } diff --git a/examples/others/observer/lv_example_observer_2.c b/examples/others/observer/lv_example_observer_2.c index 1f1ae8ab62..ebca0f8ea8 100644 --- a/examples/others/observer/lv_example_observer_2.c +++ b/examples/others/observer/lv_example_observer_2.c @@ -135,7 +135,7 @@ static void ui_init(void) /*Create button which will be active only when logged in*/ btn = lv_button_create(lv_screen_active()); lv_obj_set_pos(btn, 10, 80); - lv_obj_add_flag(btn, LV_OBJ_FLAG_CHECKABLE); + lv_obj_set_checkable(btn, true); lv_obj_bind_state_if_not_eq(btn, &auth_state_subject, LV_STATE_DISABLED, LOGGED_IN); lv_obj_bind_checked(btn, &engine_subject); label = lv_label_create(btn); diff --git a/examples/others/observer/lv_example_observer_3.c b/examples/others/observer/lv_example_observer_3.c index 05f5940fa1..377345fe44 100644 --- a/examples/others/observer/lv_example_observer_3.c +++ b/examples/others/observer/lv_example_observer_3.c @@ -82,7 +82,7 @@ static void set_btn_clicked_event_cb(lv_event_t * e) lv_obj_align(cont, LV_ALIGN_BOTTOM_MID, 0, 0); lv_obj_t * hour_roller = lv_roller_create(cont); - lv_obj_add_flag(hour_roller, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(hour_roller, true); lv_subject_add_observer_obj(&format_subject, hour_roller_options_update, hour_roller, NULL); lv_roller_bind_value(hour_roller, &hour_subject); lv_obj_set_pos(hour_roller, 0, 0); diff --git a/examples/others/observer/lv_example_observer_4.c b/examples/others/observer/lv_example_observer_4.c index 9a3cb35101..180df1e103 100644 --- a/examples/others/observer/lv_example_observer_4.c +++ b/examples/others/observer/lv_example_observer_4.c @@ -69,7 +69,7 @@ void lv_example_observer_4(void) lv_subject_add_observer_obj(¤t_tab_subject, indicator_observer_cb, indicator, NULL); lv_obj_set_height(indicator, 10); lv_obj_align(indicator, LV_ALIGN_BOTTOM_LEFT, 0, 0); - lv_obj_add_flag(indicator, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(indicator, true); /*Be sure the indicator has the correct size*/ lv_obj_update_layout(indicator); diff --git a/examples/others/observer/lv_example_observer_5.c b/examples/others/observer/lv_example_observer_5.c index d8d63df4d4..eb19dacb6c 100644 --- a/examples/others/observer/lv_example_observer_5.c +++ b/examples/others/observer/lv_example_observer_5.c @@ -103,7 +103,7 @@ static void fw_update_win_observer_cb(lv_observer_t * observer, lv_subject_t * s lv_arc_bind_value(arc, &fw_download_percent_subject); lv_obj_center(arc); lv_obj_set_size(arc, 130, 130); - lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(arc, false); lv_obj_t * label = lv_label_create(cont); lv_label_bind_text(label, &fw_download_percent_subject, "%d %%"); diff --git a/examples/others/snapshot/lv_example_snapshot_1.c b/examples/others/snapshot/lv_example_snapshot_1.c index 973fdee490..c23338cc13 100644 --- a/examples/others/snapshot/lv_example_snapshot_1.c +++ b/examples/others/snapshot/lv_example_snapshot_1.c @@ -62,7 +62,7 @@ void lv_example_snapshot_1(void) lv_obj_set_style_bg_color(img, lv_color_black(), 0); lv_obj_set_style_bg_opa(img, LV_OPA_COVER, 0); // lv_obj_set_style_transform_scale(img, 400, LV_STATE_PRESSED); - lv_obj_add_flag(img, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(img, true); lv_obj_add_event_cb(img, event_cb, LV_EVENT_PRESSED, snapshot_obj); lv_obj_add_event_cb(img, event_cb, LV_EVENT_RELEASED, snapshot_obj); } diff --git a/examples/scroll/lv_example_scroll_chain.c b/examples/scroll/lv_example_scroll_chain.c index 2adf3752ce..0544293563 100644 --- a/examples/scroll/lv_example_scroll_chain.c +++ b/examples/scroll/lv_example_scroll_chain.c @@ -40,7 +40,7 @@ void lv_example_scroll_chain(void) lv_obj_set_size(container_2, lv_pct(100), 90); lv_obj_set_flex_flow(container_2, LV_FLEX_FLOW_COLUMN); lv_obj_set_style_pad_row(container_2, 6, 0); - lv_obj_set_flag(container_2, LV_OBJ_FLAG_SCROLL_CHAIN, false); + lv_obj_set_scroll_chain(container_2, false); lv_obj_set_style_border_color(container_2, lv_color_hex(0x9429ff), 0); lv_obj_set_style_border_width(container_2, 2, 0); lv_obj_t * button_2 = lv_button_create(container_2); diff --git a/examples/scroll/lv_example_scroll_floating.c b/examples/scroll/lv_example_scroll_floating.c index abf8c6967e..5faaaa5662 100644 --- a/examples/scroll/lv_example_scroll_floating.c +++ b/examples/scroll/lv_example_scroll_floating.c @@ -79,7 +79,7 @@ void lv_example_scroll_floating(void) lv_obj_t * button_7 = lv_button_create(container); lv_obj_set_size(button_7, 44, 44); lv_obj_set_align(button_7, LV_ALIGN_BOTTOM_RIGHT); - lv_obj_set_flag(button_7, LV_OBJ_FLAG_FLOATING, true); + lv_obj_set_floating(button_7, true); lv_obj_set_style_bg_color(button_7, lv_color_hex(0x9429ff), 0); lv_obj_add_style(button_7, &style_fab, 0); lv_obj_t * label_7 = lv_label_create(button_7); diff --git a/examples/scroll/lv_example_scroll_one.c b/examples/scroll/lv_example_scroll_one.c index 9ba177407b..2483a72781 100644 --- a/examples/scroll/lv_example_scroll_one.c +++ b/examples/scroll/lv_example_scroll_one.c @@ -30,66 +30,66 @@ void lv_example_scroll_one(void) lv_obj_set_flex_flow(container, LV_FLEX_FLOW_ROW); lv_obj_set_style_pad_column(container, 10, 0); lv_obj_set_scroll_snap_x(container, LV_SCROLL_SNAP_CENTER); - lv_obj_set_flag(container, LV_OBJ_FLAG_SCROLL_ONE, true); + lv_obj_set_scroll_one(container, true); lv_obj_t * button_1 = lv_button_create(container); lv_obj_set_size(button_1, 80, lv_pct(100)); - lv_obj_set_flag(button_1, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_1, false); lv_obj_t * label_1 = lv_label_create(button_1); lv_obj_set_align(label_1, LV_ALIGN_CENTER); lv_label_set_text(label_1, "Panel 1"); lv_obj_t * button_2 = lv_button_create(container); lv_obj_set_size(button_2, 80, lv_pct(100)); - lv_obj_set_flag(button_2, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_2, false); lv_obj_t * label_2 = lv_label_create(button_2); lv_obj_set_align(label_2, LV_ALIGN_CENTER); lv_label_set_text(label_2, "Panel 2"); lv_obj_t * button_3 = lv_button_create(container); lv_obj_set_size(button_3, 80, lv_pct(100)); - lv_obj_set_flag(button_3, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_3, false); lv_obj_t * label_3 = lv_label_create(button_3); lv_obj_set_align(label_3, LV_ALIGN_CENTER); lv_label_set_text(label_3, "Panel 3"); lv_obj_t * button_4 = lv_button_create(container); lv_obj_set_size(button_4, 80, lv_pct(100)); - lv_obj_set_flag(button_4, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_4, false); lv_obj_t * label_4 = lv_label_create(button_4); lv_obj_set_align(label_4, LV_ALIGN_CENTER); lv_label_set_text(label_4, "Panel 4"); lv_obj_t * button_5 = lv_button_create(container); lv_obj_set_size(button_5, 80, lv_pct(100)); - lv_obj_set_flag(button_5, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_5, false); lv_obj_t * label_5 = lv_label_create(button_5); lv_obj_set_align(label_5, LV_ALIGN_CENTER); lv_label_set_text(label_5, "Panel 5"); lv_obj_t * button_6 = lv_button_create(container); lv_obj_set_size(button_6, 80, lv_pct(100)); - lv_obj_set_flag(button_6, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_6, false); lv_obj_t * label_6 = lv_label_create(button_6); lv_obj_set_align(label_6, LV_ALIGN_CENTER); lv_label_set_text(label_6, "Panel 6"); lv_obj_t * button_7 = lv_button_create(container); lv_obj_set_size(button_7, 80, lv_pct(100)); - lv_obj_set_flag(button_7, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_7, false); lv_obj_t * label_7 = lv_label_create(button_7); lv_obj_set_align(label_7, LV_ALIGN_CENTER); lv_label_set_text(label_7, "Panel 7"); lv_obj_t * button_8 = lv_button_create(container); lv_obj_set_size(button_8, 80, lv_pct(100)); - lv_obj_set_flag(button_8, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_8, false); lv_obj_t * label_8 = lv_label_create(button_8); lv_obj_set_align(label_8, LV_ALIGN_CENTER); lv_label_set_text(label_8, "Panel 8"); lv_obj_t * button_9 = lv_button_create(container); lv_obj_set_size(button_9, 80, lv_pct(100)); - lv_obj_set_flag(button_9, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_9, false); lv_obj_t * label_9 = lv_label_create(button_9); lv_obj_set_align(label_9, LV_ALIGN_CENTER); lv_label_set_text(label_9, "Panel 9"); diff --git a/examples/scroll/lv_example_scroll_properties.c b/examples/scroll/lv_example_scroll_properties.c index 9632093d26..c6b2483b74 100644 --- a/examples/scroll/lv_example_scroll_properties.c +++ b/examples/scroll/lv_example_scroll_properties.c @@ -3,14 +3,26 @@ static lv_obj_t * list; +typedef void (*scroll_flag_setter_t)(lv_obj_t *, bool); + +static const struct { + const char * title; + scroll_flag_setter_t setter; +} scroll_flags[] = { + { "Scrollable", lv_obj_set_scrollable }, + { "Scroll chain", lv_obj_set_scroll_chain }, + { "Elastic scroll", lv_obj_set_scroll_elastic }, + { "Scroll momentum", lv_obj_set_scroll_momentum }, +}; + static void flag_switch_cb(lv_event_t * e) { lv_obj_t * sw = lv_event_get_target_obj(e); - lv_obj_flag_t flag = (lv_obj_flag_t)(lv_uintptr_t)lv_event_get_user_data(e); - lv_obj_set_flag(list, flag, lv_obj_has_state(sw, LV_STATE_CHECKED)); + uint32_t idx = (uint32_t)(lv_uintptr_t)lv_event_get_user_data(e); + scroll_flags[idx].setter(list, lv_obj_has_state(sw, LV_STATE_CHECKED)); } -static void add_flag_row(lv_obj_t * parent, const char * title, lv_obj_flag_t flag) +static void add_flag_row(lv_obj_t * parent, uint32_t idx) { lv_obj_t * row = lv_obj_create(parent); lv_obj_remove_style_all(row); @@ -19,13 +31,13 @@ static void add_flag_row(lv_obj_t * parent, const char * title, lv_obj_flag_t fl lv_obj_set_flex_align(row, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); lv_obj_t * label = lv_label_create(row); - lv_label_set_text(label, title); + lv_label_set_text(label, scroll_flags[idx].title); lv_obj_set_flex_grow(label, 1); lv_obj_t * sw = lv_switch_create(row); lv_obj_add_state(sw, LV_STATE_CHECKED); /* flags start enabled */ - lv_obj_add_flag(list, flag); - lv_obj_add_event_cb(sw, flag_switch_cb, LV_EVENT_VALUE_CHANGED, (void *)(lv_uintptr_t)flag); + scroll_flags[idx].setter(list, true); + lv_obj_add_event_cb(sw, flag_switch_cb, LV_EVENT_VALUE_CHANGED, (void *)(lv_uintptr_t)idx); } /** @@ -34,9 +46,10 @@ static void add_flag_row(lv_obj_t * parent, const char * title, lv_obj_flag_t fl * * These four flags change how a Widget reacts to scrolling but only show * their effect through interaction, so one example covers them together. - * A scrollable list sits above four switches; each switch adds or removes - * its flag on the list with `lv_obj_set_flag`, so the change can be felt - * immediately by dragging the list. + * A scrollable list sits above four switches; each switch toggles the + * corresponding behaviour on the list with its dedicated setter (e.g. + * `lv_obj_set_scrollable`), so the change can be felt immediately by dragging + * the list. */ void lv_example_scroll_properties(void) { @@ -56,10 +69,9 @@ void lv_example_scroll_properties(void) lv_obj_center(label); } - add_flag_row(panel, "Scrollable", LV_OBJ_FLAG_SCROLLABLE); - add_flag_row(panel, "Scroll chain", LV_OBJ_FLAG_SCROLL_CHAIN); - add_flag_row(panel, "Elastic scroll", LV_OBJ_FLAG_SCROLL_ELASTIC); - add_flag_row(panel, "Scroll momentum", LV_OBJ_FLAG_SCROLL_MOMENTUM); + for(uint32_t i = 0; i < sizeof(scroll_flags) / sizeof(scroll_flags[0]); i++) { + add_flag_row(panel, i); + } } -#endif \ No newline at end of file +#endif diff --git a/examples/scroll/lv_example_scroll_scrollable.c b/examples/scroll/lv_example_scroll_scrollable.c index fdbee2c34e..a4803901bb 100644 --- a/examples/scroll/lv_example_scroll_scrollable.c +++ b/examples/scroll/lv_example_scroll_scrollable.c @@ -66,7 +66,7 @@ void lv_example_scroll_scrollable(void) lv_obj_set_size(container_3, 130, lv_pct(100)); lv_obj_set_flex_flow(container_3, LV_FLEX_FLOW_COLUMN); lv_obj_set_style_pad_row(container_3, 8, 0); - lv_obj_set_flag(container_3, LV_OBJ_FLAG_SCROLLABLE, false); + lv_obj_set_scrollable(container_3, false); lv_obj_set_style_border_color(container_3, lv_color_hex(0x9429ff), 0); lv_obj_set_style_border_width(container_3, 2, 0); lv_obj_t * label_6 = lv_label_create(container_3); diff --git a/examples/scroll/lv_example_scroll_snap.c b/examples/scroll/lv_example_scroll_snap.c index 0b7a066fd0..8cc487eec7 100644 --- a/examples/scroll/lv_example_scroll_snap.c +++ b/examples/scroll/lv_example_scroll_snap.c @@ -31,44 +31,44 @@ void lv_example_scroll_snap(void) lv_obj_set_scroll_snap_x(container, LV_SCROLL_SNAP_CENTER); lv_obj_t * button_1 = lv_button_create(container); lv_obj_set_size(button_1, 120, lv_pct(100)); - lv_obj_set_flag(button_1, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_1, false); lv_obj_t * label_1 = lv_label_create(button_1); lv_obj_set_align(label_1, LV_ALIGN_CENTER); lv_label_set_text(label_1, "Panel 1"); lv_obj_t * button_2 = lv_button_create(container); lv_obj_set_size(button_2, 120, lv_pct(100)); - lv_obj_set_flag(button_2, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_2, false); lv_obj_t * label_2 = lv_label_create(button_2); lv_obj_set_align(label_2, LV_ALIGN_CENTER); lv_label_set_text(label_2, "Panel 2"); lv_obj_t * button_3 = lv_button_create(container); lv_obj_set_size(button_3, 120, lv_pct(100)); - lv_obj_set_flag(button_3, LV_OBJ_FLAG_SNAPPABLE, false); + lv_obj_set_snappable(button_3, false); lv_obj_set_style_bg_color(button_3, lv_color_hex(0x9429ff), 0); - lv_obj_set_flag(button_3, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_3, false); lv_obj_t * label_3 = lv_label_create(button_3); lv_obj_set_align(label_3, LV_ALIGN_CENTER); lv_label_set_text(label_3, "No snap"); lv_obj_t * button_4 = lv_button_create(container); lv_obj_set_size(button_4, 120, lv_pct(100)); - lv_obj_set_flag(button_4, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_4, false); lv_obj_t * label_4 = lv_label_create(button_4); lv_obj_set_align(label_4, LV_ALIGN_CENTER); lv_label_set_text(label_4, "Panel 4"); lv_obj_t * button_5 = lv_button_create(container); lv_obj_set_size(button_5, 120, lv_pct(100)); - lv_obj_set_flag(button_5, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_5, false); lv_obj_t * label_5 = lv_label_create(button_5); lv_obj_set_align(label_5, LV_ALIGN_CENTER); lv_label_set_text(label_5, "Panel 5"); lv_obj_t * button_6 = lv_button_create(container); lv_obj_set_size(button_6, 120, lv_pct(100)); - lv_obj_set_flag(button_6, LV_OBJ_FLAG_SCROLL_ON_FOCUS, false); + lv_obj_set_scroll_on_focus(button_6, false); lv_obj_t * label_6 = lv_label_create(button_6); lv_obj_set_align(label_6, LV_ALIGN_CENTER); lv_label_set_text(label_6, "Panel 6"); diff --git a/examples/styles/lv_example_style_transform_card.c b/examples/styles/lv_example_style_transform_card.c index d71df56637..5cbe028264 100644 --- a/examples/styles/lv_example_style_transform_card.c +++ b/examples/styles/lv_example_style_transform_card.c @@ -107,7 +107,7 @@ void lv_example_style_transform_card(void) lv_arc_set_range(arc, 0, 270); lv_arc_set_value(arc, 225); lv_obj_add_event_cb(arc, arc_event_cb, LV_EVENT_VALUE_CHANGED, NULL); - lv_obj_add_flag(arc, LV_OBJ_FLAG_ADV_HITTEST); + lv_obj_set_adv_hittest(arc, true); lv_obj_center(arc); lv_obj_t * slider = lv_slider_create(lv_screen_active()); @@ -126,9 +126,9 @@ static lv_obj_t * card_create(void) { lv_obj_t * card = lv_obj_create(lv_screen_active()); lv_obj_add_style(card, &style_card, 0); - lv_obj_remove_flag(card, LV_OBJ_FLAG_CLICKABLE); - lv_obj_remove_flag(card, LV_OBJ_FLAG_SCROLLABLE); - lv_obj_remove_flag(card, LV_OBJ_FLAG_SCROLL_CHAIN_HOR); + lv_obj_set_clickable(card, false); + lv_obj_set_scrollable(card, false); + lv_obj_set_scroll_chain_hor(card, false); lv_obj_t * avatar = lv_image_create(card); lv_image_set_src(avatar, &img_transform_avatar_15); @@ -141,7 +141,7 @@ static lv_obj_t * card_create(void) lv_obj_set_style_text_font(name, LV_FONT_DEFAULT, 0); lv_obj_t * btn = lv_button_create(card); - lv_obj_remove_flag(card, LV_OBJ_FLAG_SCROLL_CHAIN_HOR); + lv_obj_set_scroll_chain_hor(card, false); lv_obj_set_grid_cell(btn, LV_GRID_ALIGN_START, 2, 1, LV_GRID_ALIGN_CENTER, 3, 1); lv_obj_add_style(btn, &style_btn, 0); diff --git a/examples/widgets/arc/lv_example_arc_bind_value.c b/examples/widgets/arc/lv_example_arc_bind_value.c index 40a6fd84c2..94b57225fd 100644 --- a/examples/widgets/arc/lv_example_arc_bind_value.c +++ b/examples/widgets/arc/lv_example_arc_bind_value.c @@ -38,7 +38,7 @@ void lv_example_arc_bind_value(void) lv_obj_t * arc = lv_arc_create(screen); lv_obj_set_size(arc, 160, 160); lv_arc_bind_value(arc, &subject_value); - lv_obj_set_flag(arc, LV_OBJ_FLAG_CLICKABLE, false); + lv_obj_set_clickable(arc, false); lv_obj_set_style_bg_opa(arc, (255 * 0 / 100), LV_PART_KNOB); lv_obj_t * lv_label_0 = lv_label_create(arc); lv_obj_set_align(lv_label_0, LV_ALIGN_CENTER); diff --git a/examples/widgets/arc/lv_example_arc_pie_chart.c b/examples/widgets/arc/lv_example_arc_pie_chart.c index df56e37739..b6aa038303 100644 --- a/examples/widgets/arc/lv_example_arc_pie_chart.c +++ b/examples/widgets/arc/lv_example_arc_pie_chart.c @@ -54,7 +54,7 @@ void lv_example_arc_pie_chart(void) /* 5 slices with uneven sweeps so the colours look like a real data breakdown. Angles measured clockwise from 3 o'clock; the seam between E and A is at 12 o'clock (270°). */ lv_obj_t * arc_1 = lv_arc_create(screen); - lv_obj_set_flag(arc_1, LV_OBJ_FLAG_CLICKABLE, false); + lv_obj_set_clickable(arc_1, false); lv_arc_set_bg_start_angle(arc_1, 270); lv_arc_set_bg_end_angle(arc_1, 325); lv_obj_set_style_arc_color(arc_1, lv_color_hex(0xef4444), LV_PART_MAIN); @@ -63,7 +63,7 @@ void lv_example_arc_pie_chart(void) lv_obj_add_style(arc_1, &style_pie_knob, LV_PART_KNOB); lv_obj_t * arc_2 = lv_arc_create(screen); - lv_obj_set_flag(arc_2, LV_OBJ_FLAG_CLICKABLE, false); + lv_obj_set_clickable(arc_2, false); lv_arc_set_bg_start_angle(arc_2, 325); lv_arc_set_bg_end_angle(arc_2, 38); lv_obj_set_style_arc_color(arc_2, lv_color_hex(0xf59e0b), LV_PART_MAIN); @@ -72,7 +72,7 @@ void lv_example_arc_pie_chart(void) lv_obj_add_style(arc_2, &style_pie_knob, LV_PART_KNOB); lv_obj_t * arc_3 = lv_arc_create(screen); - lv_obj_set_flag(arc_3, LV_OBJ_FLAG_CLICKABLE, false); + lv_obj_set_clickable(arc_3, false); lv_arc_set_bg_start_angle(arc_3, 38); lv_arc_set_bg_end_angle(arc_3, 162); lv_obj_set_style_arc_color(arc_3, lv_color_hex(0x22c55e), LV_PART_MAIN); @@ -81,7 +81,7 @@ void lv_example_arc_pie_chart(void) lv_obj_add_style(arc_3, &style_pie_knob, LV_PART_KNOB); lv_obj_t * arc_4 = lv_arc_create(screen); - lv_obj_set_flag(arc_4, LV_OBJ_FLAG_CLICKABLE, false); + lv_obj_set_clickable(arc_4, false); lv_arc_set_bg_start_angle(arc_4, 162); lv_arc_set_bg_end_angle(arc_4, 190); lv_obj_set_style_arc_color(arc_4, lv_color_hex(0x3b82f6), LV_PART_MAIN); @@ -90,7 +90,7 @@ void lv_example_arc_pie_chart(void) lv_obj_add_style(arc_4, &style_pie_knob, LV_PART_KNOB); lv_obj_t * arc_5 = lv_arc_create(screen); - lv_obj_set_flag(arc_5, LV_OBJ_FLAG_CLICKABLE, false); + lv_obj_set_clickable(arc_5, false); lv_arc_set_bg_start_angle(arc_5, 190); lv_arc_set_bg_end_angle(arc_5, 270); lv_obj_set_style_arc_color(arc_5, lv_color_hex(0xa855f7), LV_PART_MAIN); diff --git a/examples/widgets/button/lv_example_button_states.c b/examples/widgets/button/lv_example_button_states.c index 891336e7b3..96a23f9ac2 100644 --- a/examples/widgets/button/lv_example_button_states.c +++ b/examples/widgets/button/lv_example_button_states.c @@ -32,7 +32,7 @@ void lv_example_button_states(void) /* Checkable, starts checked */ lv_obj_t * button_2 = lv_button_create(screen); lv_obj_set_size(button_2, 160, 40); - lv_obj_set_flag(button_2, LV_OBJ_FLAG_CHECKABLE, true); + lv_obj_set_checkable(button_2, true); lv_obj_set_state(button_2, LV_STATE_CHECKED, true); lv_obj_t * label_2 = lv_label_create(button_2); lv_obj_set_align(label_2, LV_ALIGN_CENTER); diff --git a/examples/widgets/button/lv_example_button_styling.c b/examples/widgets/button/lv_example_button_styling.c index 838c53b84e..07c50214a7 100644 --- a/examples/widgets/button/lv_example_button_styling.c +++ b/examples/widgets/button/lv_example_button_styling.c @@ -71,7 +71,7 @@ void lv_example_button_styling(void) /* Checkable button: swaps to the checked style on toggle */ lv_obj_t * button_2 = lv_button_create(screen); lv_obj_set_size(button_2, 180, 48); - lv_obj_set_flag(button_2, LV_OBJ_FLAG_CHECKABLE, true); + lv_obj_set_checkable(button_2, true); lv_obj_add_style(button_2, &style_button, 0); lv_obj_add_style(button_2, &style_button_pressed, LV_STATE_PRESSED); lv_obj_add_style(button_2, &style_button_checked, LV_STATE_CHECKED); diff --git a/examples/widgets/chart/lv_example_chart_area_gradient.c b/examples/widgets/chart/lv_example_chart_area_gradient.c index 49e2d7230a..106e6b8b61 100644 --- a/examples/widgets/chart/lv_example_chart_area_gradient.c +++ b/examples/widgets/chart/lv_example_chart_area_gradient.c @@ -33,7 +33,7 @@ void lv_example_chart_area_gradient(void) lv_chart_set_div_line_count(chart, 5, 7); lv_obj_add_event_cb(chart, draw_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(chart, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(chart, true); lv_chart_series_t * ser = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y); diff --git a/examples/widgets/chart/lv_example_chart_recolor_bars.c b/examples/widgets/chart/lv_example_chart_recolor_bars.c index 6c4936b4e6..c265646108 100644 --- a/examples/widgets/chart/lv_example_chart_recolor_bars.c +++ b/examples/widgets/chart/lv_example_chart_recolor_bars.c @@ -44,7 +44,7 @@ void lv_example_chart_recolor_bars(void) lv_chart_series_t * ser = lv_chart_add_series(chart, lv_color_hex(0xff0000), LV_CHART_AXIS_PRIMARY_Y); lv_obj_add_event_cb(chart, draw_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(chart, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(chart, true); uint32_t i; for(i = 0; i < 24; i++) { diff --git a/examples/widgets/chart/lv_example_chart_scatter.c b/examples/widgets/chart/lv_example_chart_scatter.c index 0f859f1385..c59f23c6eb 100644 --- a/examples/widgets/chart/lv_example_chart_scatter.c +++ b/examples/widgets/chart/lv_example_chart_scatter.c @@ -56,7 +56,7 @@ void lv_example_chart_scatter(void) lv_obj_set_size(chart, 200, 150); lv_obj_align(chart, LV_ALIGN_CENTER, 0, 0); lv_obj_add_event_cb(chart, draw_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(chart, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(chart, true); lv_obj_set_style_line_width(chart, 0, LV_PART_ITEMS); /*Remove the lines*/ lv_chart_set_type(chart, LV_CHART_TYPE_SCATTER); diff --git a/examples/widgets/keyboard/lv_example_keyboard_custom_draw.c b/examples/widgets/keyboard/lv_example_keyboard_custom_draw.c index f298057365..dc492411ec 100644 --- a/examples/widgets/keyboard/lv_example_keyboard_custom_draw.c +++ b/examples/widgets/keyboard/lv_example_keyboard_custom_draw.c @@ -65,7 +65,7 @@ void lv_example_keyboard_custom_draw(void) { lv_obj_t * kb = lv_keyboard_create(lv_screen_active()); lv_obj_add_event_cb(kb, event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(kb, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(kb, true); lv_obj_center(kb); } diff --git a/examples/widgets/menu/lv_example_menu_floating_button.c b/examples/widgets/menu/lv_example_menu_floating_button.c index fbbf9a0bcb..269eff1614 100644 --- a/examples/widgets/menu/lv_example_menu_floating_button.c +++ b/examples/widgets/menu/lv_example_menu_floating_button.c @@ -71,7 +71,7 @@ void lv_example_menu_floating_button(void) /*Create floating btn*/ lv_obj_t * float_btn = lv_button_create(lv_screen_active()); lv_obj_set_size(float_btn, 50, 50); - lv_obj_add_flag(float_btn, LV_OBJ_FLAG_FLOATING); + lv_obj_set_floating(float_btn, true); lv_obj_align(float_btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10); lv_obj_add_event_cb(float_btn, float_button_event_cb, LV_EVENT_CLICKED, menu); lv_obj_set_style_radius(float_btn, LV_RADIUS_CIRCLE, 0); diff --git a/examples/widgets/menu/lv_example_menu_sidebar.c b/examples/widgets/menu/lv_example_menu_sidebar.c index 6907d43e0d..0dd1f6cfb4 100644 --- a/examples/widgets/menu/lv_example_menu_sidebar.c +++ b/examples/widgets/menu/lv_example_menu_sidebar.c @@ -181,7 +181,7 @@ static lv_obj_t * create_text(lv_obj_t * parent, const char * icon, const char * } if(builder_variant == LV_MENU_ITEM_BUILDER_VARIANT_2 && icon && txt) { - lv_obj_add_flag(img, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(img, true); lv_obj_swap(img, label); } @@ -199,7 +199,7 @@ static lv_obj_t * create_slider(lv_obj_t * parent, const char * icon, const char lv_slider_set_value(slider, val, LV_ANIM_OFF); if(icon == NULL) { - lv_obj_add_flag(slider, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(slider, true); } return obj; diff --git a/examples/widgets/msgbox/lv_example_msgbox_settings.c b/examples/widgets/msgbox/lv_example_msgbox_settings.c index 9039166f7d..699e4aaa95 100644 --- a/examples/widgets/msgbox/lv_example_msgbox_settings.c +++ b/examples/widgets/msgbox/lv_example_msgbox_settings.c @@ -4,7 +4,7 @@ static void minimize_button_event_cb(lv_event_t * e) { lv_obj_t * mbox = (lv_obj_t *) lv_event_get_user_data(e); - lv_obj_add_flag(mbox, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(mbox, true); } /** diff --git a/examples/widgets/scale/lv_example_scale_compass.c b/examples/widgets/scale/lv_example_scale_compass.c index 9044c7c81c..33f70dfb9d 100644 --- a/examples/widgets/scale/lv_example_scale_compass.c +++ b/examples/widgets/scale/lv_example_scale_compass.c @@ -86,7 +86,7 @@ void lv_example_scale_compass(void) lv_scale_set_rotation(scale, 270); lv_obj_add_event_cb(scale, draw_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(scale, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(scale, true); label = lv_label_create(lv_screen_active()); lv_obj_set_width(label, 100); diff --git a/examples/widgets/scale/lv_example_scale_label_recolor.c b/examples/widgets/scale/lv_example_scale_label_recolor.c index 5f877ea800..8c521e60b8 100644 --- a/examples/widgets/scale/lv_example_scale_label_recolor.c +++ b/examples/widgets/scale/lv_example_scale_label_recolor.c @@ -75,7 +75,7 @@ void lv_example_scale_label_recolor(void) lv_scale_set_range(scale, 10, 40); lv_obj_add_event_cb(scale, draw_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(scale, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(scale, true); } #endif diff --git a/examples/widgets/scale/lv_example_scale_sunset_sunrise.c b/examples/widgets/scale/lv_example_scale_sunset_sunrise.c index 2f51e5587a..7c9da80660 100644 --- a/examples/widgets/scale/lv_example_scale_sunset_sunrise.c +++ b/examples/widgets/scale/lv_example_scale_sunset_sunrise.c @@ -46,7 +46,7 @@ void lv_example_scale_sunset_sunrise(void) lv_obj_set_style_radius(bg, LV_RADIUS_CIRCLE, 0); lv_obj_set_style_bg_color(bg, lv_palette_darken(LV_PALETTE_GREY, 4), 0); lv_obj_set_style_bg_opa(bg, LV_OPA_COVER, 0); - lv_obj_remove_flag(bg, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(bg, false); lv_obj_set_style_pad_all(bg, 0, LV_PART_MAIN); lv_obj_t * scale = lv_scale_create(bg); @@ -107,7 +107,7 @@ void lv_example_scale_sunset_sunrise(void) }; lv_scale_set_text_src(scale, hour_labels); - lv_obj_add_flag(scale, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(scale, true); lv_obj_add_event_cb(scale, label_color_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); lv_obj_t * today = lv_label_create(bg); diff --git a/examples/widgets/span/lv_example_span_hittest.c b/examples/widgets/span/lv_example_span_hittest.c index 4f32ab7b54..974ffa2c81 100644 --- a/examples/widgets/span/lv_example_span_hittest.c +++ b/examples/widgets/span/lv_example_span_hittest.c @@ -28,7 +28,7 @@ void lv_example_span_hittest(void) lv_obj_set_width(spans, 240); lv_obj_set_height(spans, LV_SIZE_CONTENT); lv_obj_center(spans); - lv_obj_add_flag(spans, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(spans, true); lv_span_t * span = lv_spangroup_add_span(spans); lv_span_set_text(span, "Click any "); diff --git a/examples/widgets/table/lv_example_table_scrollable_list.c b/examples/widgets/table/lv_example_table_scrollable_list.c index 5295fa6371..65f23b7122 100644 --- a/examples/widgets/table/lv_example_table_scrollable_list.c +++ b/examples/widgets/table/lv_example_table_scrollable_list.c @@ -99,7 +99,7 @@ void lv_example_table_scrollable_list(void) /*Add an event callback to to apply some custom drawing*/ lv_obj_add_event_cb(table, draw_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); lv_obj_add_event_cb(table, change_event_cb, LV_EVENT_VALUE_CHANGED, NULL); - lv_obj_add_flag(table, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(table, true); lv_mem_monitor_t mon2; lv_mem_monitor(&mon2); diff --git a/examples/widgets/tabview/lv_example_tabview_tab_button_content.c b/examples/widgets/tabview/lv_example_tabview_tab_button_content.c index 16d189de04..7c217b65ad 100644 --- a/examples/widgets/tabview/lv_example_tabview_tab_button_content.c +++ b/examples/widgets/tabview/lv_example_tabview_tab_button_content.c @@ -36,14 +36,14 @@ void lv_example_tabview_tab_button_content(void) lv_obj_t * lv_tabview_tab_button_0 = lv_tabview_get_tab_button(tabview, 0); lv_obj_t * sw_1 = lv_switch_create(lv_tabview_tab_button_0); lv_obj_set_size(sw_1, 40, 20); - lv_obj_set_flag(sw_1, LV_OBJ_FLAG_IGNORE_LAYOUT, true); + lv_obj_set_ignore_layout(sw_1, true); lv_obj_set_align(sw_1, LV_ALIGN_RIGHT_MID); lv_obj_set_x(sw_1, -10); lv_obj_t * lv_tabview_tab_button_1 = lv_tabview_get_tab_button(tabview, 1); lv_obj_t * sw_2 = lv_switch_create(lv_tabview_tab_button_1); lv_obj_set_size(sw_2, 40, 20); - lv_obj_set_flag(sw_2, LV_OBJ_FLAG_IGNORE_LAYOUT, true); + lv_obj_set_ignore_layout(sw_2, true); lv_obj_set_align(sw_2, LV_ALIGN_RIGHT_MID); lv_obj_set_x(sw_2, -10); } diff --git a/examples/widgets/textarea/lv_example_textarea_buttonmatrix.c b/examples/widgets/textarea/lv_example_textarea_buttonmatrix.c index 2b70986ff8..245dd44e0d 100644 --- a/examples/widgets/textarea/lv_example_textarea_buttonmatrix.c +++ b/examples/widgets/textarea/lv_example_textarea_buttonmatrix.c @@ -49,7 +49,7 @@ void lv_example_textarea_buttonmatrix(void) lv_obj_set_size(btnm, 200, 150); lv_obj_align(btnm, LV_ALIGN_BOTTOM_MID, 0, -10); lv_obj_add_event_cb(btnm, btnm_event_handler, LV_EVENT_VALUE_CHANGED, ta); - lv_obj_remove_flag(btnm, LV_OBJ_FLAG_CLICK_FOCUSABLE); /*To keep the text area focused on button clicks*/ + lv_obj_set_click_focusable(btnm, false); /*To keep the text area focused on button clicks*/ lv_buttonmatrix_set_map(btnm, btnm_map); } diff --git a/include/lvgl/core/lv_obj.h b/include/lvgl/core/lv_obj.h index f28b217b42..cced783a5d 100644 --- a/include/lvgl/core/lv_obj.h +++ b/include/lvgl/core/lv_obj.h @@ -173,6 +173,33 @@ enum _lv_signed_prop_id_t { LV_PROPERTY_ID(OBJ, CHILD_COUNT, LV_PROPERTY_TYPE_INT, 72), LV_PROPERTY_ID(OBJ, INDEX, LV_PROPERTY_TYPE_INT, 73), + /*Dedicated boolean properties backing the per-flag setters/getters. + *The OBJ_FLAG_* properties above are kept for backward compatibility.*/ + LV_PROPERTY_ID(OBJ, HIDDEN, LV_PROPERTY_TYPE_BOOL, 74), + LV_PROPERTY_ID(OBJ, CLICKABLE, LV_PROPERTY_TYPE_BOOL, 75), + LV_PROPERTY_ID(OBJ, CLICK_FOCUSABLE, LV_PROPERTY_TYPE_BOOL, 76), + LV_PROPERTY_ID(OBJ, CHECKABLE, LV_PROPERTY_TYPE_BOOL, 77), + LV_PROPERTY_ID(OBJ, SCROLLABLE, LV_PROPERTY_TYPE_BOOL, 78), + LV_PROPERTY_ID(OBJ, SCROLL_ELASTIC, LV_PROPERTY_TYPE_BOOL, 79), + LV_PROPERTY_ID(OBJ, SCROLL_MOMENTUM, LV_PROPERTY_TYPE_BOOL, 80), + LV_PROPERTY_ID(OBJ, SCROLL_ONE, LV_PROPERTY_TYPE_BOOL, 81), + LV_PROPERTY_ID(OBJ, SCROLL_CHAIN_HOR, LV_PROPERTY_TYPE_BOOL, 82), + LV_PROPERTY_ID(OBJ, SCROLL_CHAIN_VER, LV_PROPERTY_TYPE_BOOL, 83), + LV_PROPERTY_ID(OBJ, SCROLL_ON_FOCUS, LV_PROPERTY_TYPE_BOOL, 84), + LV_PROPERTY_ID(OBJ, SCROLL_WITH_ARROW, LV_PROPERTY_TYPE_BOOL, 85), + LV_PROPERTY_ID(OBJ, SNAPPABLE, LV_PROPERTY_TYPE_BOOL, 86), + LV_PROPERTY_ID(OBJ, PRESS_LOCK, LV_PROPERTY_TYPE_BOOL, 87), + LV_PROPERTY_ID(OBJ, EVENT_BUBBLE, LV_PROPERTY_TYPE_BOOL, 88), + LV_PROPERTY_ID(OBJ, GESTURE_BUBBLE, LV_PROPERTY_TYPE_BOOL, 89), + LV_PROPERTY_ID(OBJ, ADV_HITTEST, LV_PROPERTY_TYPE_BOOL, 90), + LV_PROPERTY_ID(OBJ, IGNORE_LAYOUT, LV_PROPERTY_TYPE_BOOL, 91), + LV_PROPERTY_ID(OBJ, FLOATING, LV_PROPERTY_TYPE_BOOL, 92), + LV_PROPERTY_ID(OBJ, SEND_DRAW_TASK_EVENTS, LV_PROPERTY_TYPE_BOOL, 93), + LV_PROPERTY_ID(OBJ, OVERFLOW_VISIBLE, LV_PROPERTY_TYPE_BOOL, 94), + LV_PROPERTY_ID(OBJ, EVENT_TRICKLE, LV_PROPERTY_TYPE_BOOL, 95), + LV_PROPERTY_ID(OBJ, STATE_TRICKLE, LV_PROPERTY_TYPE_BOOL, 96), + LV_PROPERTY_ID(OBJ, FLEX_IN_NEW_TRACK, LV_PROPERTY_TYPE_BOOL, 97), + LV_PROPERTY_OBJ_END, }; #endif @@ -201,14 +228,18 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent); * Set one or more flags * @param obj pointer to an object * @param f OR-ed values from `lv_obj_flag_t` to set. + * @deprecated Use the dedicated per-flag setter instead, e.g. `lv_obj_set_hidden(obj, true)`. */ +LV_DEPRECATED("Use the dedicated lv_obj_set_() setters instead, e.g. lv_obj_set_hidden(obj, true).") void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f); /** * Remove one or more flags * @param obj pointer to an object * @param f OR-ed values from `lv_obj_flag_t` to clear. + * @deprecated Use the dedicated per-flag setter instead, e.g. `lv_obj_set_hidden(obj, false)`. */ +LV_DEPRECATED("Use the dedicated lv_obj_set_() setters instead, e.g. lv_obj_set_hidden(obj, false).") void lv_obj_remove_flag(lv_obj_t * obj, lv_obj_flag_t f); /** @@ -216,9 +247,167 @@ void lv_obj_remove_flag(lv_obj_t * obj, lv_obj_flag_t f); * @param obj pointer to an object * @param f OR-ed values from `lv_obj_flag_t` to update. * @param v true: add the flags; false: remove the flags + * @deprecated Use the dedicated per-flag setter instead, e.g. `lv_obj_set_hidden(obj, en)`. */ +LV_DEPRECATED("Use the dedicated lv_obj_set_() setters instead, e.g. lv_obj_set_hidden(obj, en).") void lv_obj_set_flag(lv_obj_t * obj, lv_obj_flag_t f, bool v); +/** Make the object hidden. (Like it wasn't there at all) + * @param obj pointer to a widget + * @param en enable or disable the hidden property + */ +void lv_obj_set_hidden(lv_obj_t * obj, bool en); + +/** Make the object clickable by the input devices + * @param obj pointer to a widget + * @param en enable or disable the clickable property + */ +void lv_obj_set_clickable(lv_obj_t * obj, bool en); + +/** Add focused state to the object when clicked + * @param obj pointer to a widget + * @param en enable or disable the click focusable property + */ +void lv_obj_set_click_focusable(lv_obj_t * obj, bool en); + +/** Toggle checked state when the object is clicked + * @param obj pointer to a widget + * @param en enable or disable the checkable property + */ +void lv_obj_set_checkable(lv_obj_t * obj, bool en); + +/** Make the object scrollable + * @param obj pointer to a widget + * @param en enable or disable the scrollable property + */ +void lv_obj_set_scrollable(lv_obj_t * obj, bool en); + +/** Allow scrolling inside but with slower speed + * @param obj pointer to a widget + * @param en enable or disable the scroll elastic property + */ +void lv_obj_set_scroll_elastic(lv_obj_t * obj, bool en); + +/** Make the object scroll further when "thrown" + * @param obj pointer to a widget + * @param en enable or disable the scroll momentum property + */ +void lv_obj_set_scroll_momentum(lv_obj_t * obj, bool en); + +/** Allow scrolling only one snappable child + * @param obj pointer to a widget + * @param en enable or disable the scroll one property + */ +void lv_obj_set_scroll_one(lv_obj_t * obj, bool en); + +/** Allow propagating the scrolling in any directions to a parent + * @param obj pointer to a widget + * @param en enable or disable scroll chaining + */ +void lv_obj_set_scroll_chain(lv_obj_t * obj, bool en); + +/** Allow propagating the horizontal scroll to a parent + * @param obj pointer to a widget + * @param en enable or disable horizontal scroll chaining + */ +void lv_obj_set_scroll_chain_hor(lv_obj_t * obj, bool en); + +/** Allow propagating the vertical scroll to a parent + * @param obj pointer to a widget + * @param en enable or disable vertical scroll chaining + */ +void lv_obj_set_scroll_chain_ver(lv_obj_t * obj, bool en); + +/** Automatically scroll object to make it visible when focused + * @param obj pointer to a widget + * @param en enable or disable scroll on focus + */ +void lv_obj_set_scroll_on_focus(lv_obj_t * obj, bool en); + +/** Allow scrolling the focused object with arrow keys + * @param obj pointer to a widget + * @param en enable or disable scroll with arrow keys + */ +void lv_obj_set_scroll_with_arrow(lv_obj_t * obj, bool en); + +/** Allow snapping to this object if scroll snap is enabled on the parent + * @param obj pointer to a widget + * @param en enable or disable the snappable property + */ +void lv_obj_set_snappable(lv_obj_t * obj, bool en); + +/** Keep the object pressed even if the press slid from the object + * @param obj pointer to a widget + * @param en enable or disable the press lock property + */ +void lv_obj_set_press_lock(lv_obj_t * obj, bool en); + +/** Propagate the events to the parent too + * @param obj pointer to a widget + * @param en enable or disable event bubbling + */ +void lv_obj_set_event_bubble(lv_obj_t * obj, bool en); + +/** Propagate the gestures to the parent + * @param obj pointer to a widget + * @param en enable or disable gesture bubbling + */ +void lv_obj_set_gesture_bubble(lv_obj_t * obj, bool en); + +/** Allow performing more accurate hit test + * @param obj pointer to a widget + * @param en enable or disable advanced hit testing + */ +void lv_obj_set_adv_hittest(lv_obj_t * obj, bool en); + +/** Make the object not positioned by layouts + * @param obj pointer to a widget + * @param en enable or disable ignoring layout + */ +void lv_obj_set_ignore_layout(lv_obj_t * obj, bool en); + +/** Do not scroll the object when the parent scrolls and ignore layout + * @param obj pointer to a widget + * @param en enable or disable floating mode + */ +void lv_obj_set_floating(lv_obj_t * obj, bool en); + +/** Send LV_EVENT_DRAW_TASK_ADDED events + * @param obj pointer to a widget + * @param en enable or disable draw task events + */ +void lv_obj_set_send_draw_task_events(lv_obj_t * obj, bool en); + +/** Do not clip the children to the parent's extended draw size + * @param obj pointer to a widget + * @param en enable or disable overflow visibility + */ +void lv_obj_set_overflow_visible(lv_obj_t * obj, bool en); + +/** Propagate the events to the children too + * @param obj pointer to a widget + * @param en enable or disable event trickling + */ +void lv_obj_set_event_trickle(lv_obj_t * obj, bool en); + +/** Propagate the states to the children too + * @param obj pointer to a widget + * @param en enable or disable state trickling + */ +void lv_obj_set_state_trickle(lv_obj_t * obj, bool en); + +/** Allow only one RADIO_BUTTON sibling to be checked + * @param obj pointer to a widget + * @param en enable or disable radio button behavior + */ +void lv_obj_set_radio_button(lv_obj_t * obj, bool en); + +/** Start a new flex track on this item + * @param obj pointer to a widget + * @param en enable or disable new flex track + */ +void lv_obj_set_flex_in_new_track(lv_obj_t * obj, bool en); + /** * Add one or more states to the object. The other state bits will remain unchanged. * If specified in the styles, transition animation will be started from the previous state to the current. @@ -250,12 +439,13 @@ void lv_obj_set_state(lv_obj_t * obj, lv_state_t state, bool v); */ void lv_obj_set_user_data(lv_obj_t * obj, void * user_data); - -/** Allow only one RADIO_BUTTON sibling to be checked - * @param obj pointer to a widget - * @param en enable or disable radio button behavior +/** + * Set one of the 4 flags available for the user + * @param obj pointer to an object + * @param bit the index of the bit (0..3) + * @param v the value of the bit, true or false */ -void lv_obj_set_radio_button(lv_obj_t * obj, bool en); +void lv_obj_set_user_flag(lv_obj_t * obj, uint32_t bit, bool v); /*======================= * Getter functions @@ -266,7 +456,9 @@ void lv_obj_set_radio_button(lv_obj_t * obj, bool en); * @param obj pointer to an object * @param f the flag(s) to check (OR-ed values can be used) * @return true: all flags are set; false: not all flags are set + * @deprecated Use the dedicated per-flag setter instead, e.g. `lv_obj_is_hidden(obj)`. */ +LV_DEPRECATED("Use the dedicated lv_obj_is_() functions instead, e.g. lv_obj_is_hidden(obj).") bool lv_obj_has_flag(const lv_obj_t * obj, lv_obj_flag_t f); /** @@ -274,9 +466,162 @@ bool lv_obj_has_flag(const lv_obj_t * obj, lv_obj_flag_t f); * @param obj pointer to an object * @param f the flag(s) to check (OR-ed values can be used) * @return true: at least one flag is set; false: none of the flags are set + * @deprecated Use the dedicated per-flag setter instead, e.g. `lv_obj_set_hidden(obj)`. */ +LV_DEPRECATED("Use the dedicated lv_obj_is_() functions instead, e.g. lv_obj_is_hidden(obj).") bool lv_obj_has_flag_any(const lv_obj_t * obj, lv_obj_flag_t f); +/** Get whether the object is hidden + * @param obj pointer to a widget + * @return true if the object is hidden, false otherwise + */ +bool lv_obj_is_hidden(const lv_obj_t * obj); + +/** Get whether the object is clickable by input devices + * @param obj pointer to a widget + * @return true if the object is clickable + */ +bool lv_obj_is_clickable(const lv_obj_t * obj); + +/** Get whether the object gets focused when clicked + * @param obj pointer to a widget + * @return true if click focusable is enabled + */ +bool lv_obj_is_click_focusable(const lv_obj_t * obj); + +/** Get whether the object toggles checked state when clicked + * @param obj pointer to a widget + * @return true if the object is checkable + */ +bool lv_obj_is_checkable(const lv_obj_t * obj); + +/** Get whether the object is scrollable + * @param obj pointer to a widget + * @return true if the object is scrollable + */ +bool lv_obj_is_scrollable(const lv_obj_t * obj); + +/** Get whether elastic scrolling is enabled + * @param obj pointer to a widget + * @return true if scroll elastic is enabled + */ +bool lv_obj_is_scroll_elastic(const lv_obj_t * obj); + +/** Get whether scroll momentum is enabled + * @param obj pointer to a widget + * @return true if scroll momentum is enabled + */ +bool lv_obj_is_scroll_momentum(const lv_obj_t * obj); + +/** Get whether only one snappable child can be scrolled + * @param obj pointer to a widget + * @return true if scroll one is enabled + */ +bool lv_obj_is_scroll_one(const lv_obj_t * obj); + +/** Get whether horizontal scroll chaining is enabled + * @param obj pointer to a widget + * @return true if horizontal scroll chaining is enabled + */ +bool lv_obj_is_scroll_chain_hor(const lv_obj_t * obj); + +/** Get whether vertical scroll chaining is enabled + * @param obj pointer to a widget + * @return true if vertical scroll chaining is enabled + */ +bool lv_obj_is_scroll_chain_ver(const lv_obj_t * obj); + +/** Get whether the object auto-scrolls into view when focused + * @param obj pointer to a widget + * @return true if scroll on focus is enabled + */ +bool lv_obj_is_scroll_on_focus(const lv_obj_t * obj); + +/** Get whether the focused object can be scrolled with arrow keys + * @param obj pointer to a widget + * @return true if scroll with arrow keys is enabled + */ +bool lv_obj_is_scroll_with_arrow(const lv_obj_t * obj); + +/** Get whether the object is snappable by a scrolling parent + * @param obj pointer to a widget + * @return true if the object is snappable + */ +bool lv_obj_is_snappable(const lv_obj_t * obj); + +/** Get whether press lock is enabled + * @param obj pointer to a widget + * @return true if press lock is enabled + */ +bool lv_obj_is_press_lock(const lv_obj_t * obj); + +/** Get whether events bubble to the parent + * @param obj pointer to a widget + * @return true if event bubbling is enabled + */ +bool lv_obj_is_event_bubble(const lv_obj_t * obj); + +/** Get whether gestures bubble to the parent + * @param obj pointer to a widget + * @return true if gesture bubbling is enabled + */ +bool lv_obj_is_gesture_bubble(const lv_obj_t * obj); + +/** Get whether advanced hit testing is enabled + * @param obj pointer to a widget + * @return true if advanced hit testing is enabled + */ +bool lv_obj_is_adv_hittest(const lv_obj_t * obj); + +/** Get whether the object ignores layout positioning + * @param obj pointer to a widget + * @return true if ignore layout is enabled + */ +bool lv_obj_is_ignore_layout(const lv_obj_t * obj); + +/** Get whether the object is floating + * @param obj pointer to a widget + * @return true if floating mode is enabled + */ +bool lv_obj_is_floating(const lv_obj_t * obj); + +/** Get whether draw task events are sent + * @param obj pointer to a widget + * @return true if draw task events are enabled + */ +bool lv_obj_is_send_draw_task_events(const lv_obj_t * obj); + +/** Get whether overflow is visible outside the parent + * @param obj pointer to a widget + * @return true if overflow is visible + */ +bool lv_obj_is_overflow_visible(const lv_obj_t * obj); + +/** Get whether events trickle to the children + * @param obj pointer to a widget + * @return true if event trickling is enabled + */ +bool lv_obj_is_event_trickle(const lv_obj_t * obj); + +/** Get whether states trickle to the children + * @param obj pointer to a widget + * @return true if state trickling is enabled + */ +bool lv_obj_is_state_trickle(const lv_obj_t * obj); + +/** Get whether the object is a radio button + * @param obj pointer to a widget + * @return true if radio button behavior is enabled + */ +bool lv_obj_is_radio_button(const lv_obj_t * obj); + +/** + * Get whether the widget should be placed in a new flex track + * @param obj pointer to a widget + * @return true if flex in new track is enabled + */ +bool lv_obj_is_flex_in_new_track(const lv_obj_t * obj); + /** * Get the state of an object * @param obj pointer to an object @@ -292,12 +637,6 @@ lv_state_t lv_obj_get_state(const lv_obj_t * obj); */ bool lv_obj_has_state(const lv_obj_t * obj, lv_state_t state); -/** Get whether the object is a radio button - * @param obj pointer to a widget - * @return true if radio button behavior is enabled - */ -bool lv_obj_is_radio_button(const lv_obj_t * obj); - /** * Get the group of the object * @param obj pointer to an object @@ -312,6 +651,14 @@ lv_group_t * lv_obj_get_group(const lv_obj_t * obj); */ void * lv_obj_get_user_data(lv_obj_t * obj); +/** + * Get the value of one of the 4 flags available for the user + * @param obj pointer to an object + * @param bit the index of the bit (0..3) + * @return the value of the bit, true or false + */ +bool lv_obj_get_user_flag(lv_obj_t * obj, uint32_t bit); + /*======================= * Other functions *======================*/ diff --git a/include/lvgl/core/lv_obj_property_names.h b/include/lvgl/core/lv_obj_property_names.h index 5745705dc6..fb9028b29d 100644 --- a/include/lvgl/core/lv_obj_property_names.h +++ b/include/lvgl/core/lv_obj_property_names.h @@ -23,7 +23,7 @@ extern const lv_property_name_t lv_led_property_names[2]; extern const lv_property_name_t lv_line_property_names[1]; extern const lv_property_name_t lv_menu_property_names[2]; - extern const lv_property_name_t lv_obj_property_names[76]; + extern const lv_property_name_t lv_obj_property_names[100]; extern const lv_property_name_t lv_roller_property_names[3]; extern const lv_property_name_t lv_scale_property_names[8]; extern const lv_property_name_t lv_slider_property_names[8]; diff --git a/scripts/gdb/lvglgdb/lvgl/widgets/lv_msgbox.py b/scripts/gdb/lvglgdb/lvgl/widgets/lv_msgbox.py index a7f135ba59..3f7b8ae8b7 100644 --- a/scripts/gdb/lvglgdb/lvgl/widgets/lv_msgbox.py +++ b/scripts/gdb/lvglgdb/lvgl/widgets/lv_msgbox.py @@ -32,6 +32,11 @@ class LVMsgbox(LVObject): def title(self): return ptr_or_none(self._wv.safe_field("title")) + @property + def auto_parent(self): + """Mark that the parent was automatically created""" + return int(self._wv.safe_field("auto_parent", 0)) + def snapshot(self, include_children=False, include_styles=False): """Snapshot with widget-specific fields in widget_data.""" s = super().snapshot(include_children=include_children, include_styles=include_styles) @@ -40,5 +45,6 @@ class LVMsgbox(LVObject): d["content"] = self.content d["footer"] = self.footer d["title"] = self.title + d["auto_parent"] = self.auto_parent s['widget_data'] = d return s diff --git a/scripts/gdb/scripts/generators/widget_specs.json b/scripts/gdb/scripts/generators/widget_specs.json index 48c2e4488a..d850ae736c 100644 --- a/scripts/gdb/scripts/generators/widget_specs.json +++ b/scripts/gdb/scripts/generators/widget_specs.json @@ -478,7 +478,8 @@ "header": "pointer", "content": "pointer", "footer": "pointer", - "title": "pointer" + "title": "pointer", + "auto_parent": "bool" } }, "summary_tpl": "", diff --git a/src/core/lv_group.c b/src/core/lv_group.c index 0a72078f65..5e5bad56f5 100644 --- a/src/core/lv_group.c +++ b/src/core/lv_group.c @@ -516,11 +516,11 @@ static bool focus_next_core(lv_group_t * group, void * (*begin)(const lv_ll_t *) *If any parent is hidden, the object is also hidden)*/ lv_obj_t * parent = *obj_next; while(parent) { - if(lv_obj_has_flag(parent, LV_OBJ_FLAG_HIDDEN)) break; + if(lv_obj_is_hidden(parent)) break; parent = lv_obj_get_parent(parent); } - if(parent && lv_obj_has_flag(parent, LV_OBJ_FLAG_HIDDEN)) continue; + if(parent && lv_obj_is_hidden(parent)) continue; /*If we got her a good candidate is found*/ break; diff --git a/src/core/lv_obj.c b/src/core/lv_obj.c index f8d8fc3f3b..c625609bf8 100644 --- a/src/core/lv_obj.c +++ b/src/core/lv_obj.c @@ -202,6 +202,126 @@ static const lv_property_ops_t lv_obj_properties[] = { .id = LV_PROPERTY_OBJ_INDEX, .getter = lv_obj_get_index, }, + { + .id = LV_PROPERTY_OBJ_HIDDEN, + .setter = lv_obj_set_hidden, + .getter = lv_obj_is_hidden, + }, + { + .id = LV_PROPERTY_OBJ_CLICKABLE, + .setter = lv_obj_set_clickable, + .getter = lv_obj_is_clickable, + }, + { + .id = LV_PROPERTY_OBJ_CLICK_FOCUSABLE, + .setter = lv_obj_set_click_focusable, + .getter = lv_obj_is_click_focusable, + }, + { + .id = LV_PROPERTY_OBJ_CHECKABLE, + .setter = lv_obj_set_checkable, + .getter = lv_obj_is_checkable, + }, + { + .id = LV_PROPERTY_OBJ_SCROLLABLE, + .setter = lv_obj_set_scrollable, + .getter = lv_obj_is_scrollable, + }, + { + .id = LV_PROPERTY_OBJ_SCROLL_ELASTIC, + .setter = lv_obj_set_scroll_elastic, + .getter = lv_obj_is_scroll_elastic, + }, + { + .id = LV_PROPERTY_OBJ_SCROLL_MOMENTUM, + .setter = lv_obj_set_scroll_momentum, + .getter = lv_obj_is_scroll_momentum, + }, + { + .id = LV_PROPERTY_OBJ_SCROLL_ONE, + .setter = lv_obj_set_scroll_one, + .getter = lv_obj_is_scroll_one, + }, + { + .id = LV_PROPERTY_OBJ_SCROLL_CHAIN_HOR, + .setter = lv_obj_set_scroll_chain_hor, + .getter = lv_obj_is_scroll_chain_hor, + }, + { + .id = LV_PROPERTY_OBJ_SCROLL_CHAIN_VER, + .setter = lv_obj_set_scroll_chain_ver, + .getter = lv_obj_is_scroll_chain_ver, + }, + { + .id = LV_PROPERTY_OBJ_SCROLL_ON_FOCUS, + .setter = lv_obj_set_scroll_on_focus, + .getter = lv_obj_is_scroll_on_focus, + }, + { + .id = LV_PROPERTY_OBJ_SCROLL_WITH_ARROW, + .setter = lv_obj_set_scroll_with_arrow, + .getter = lv_obj_is_scroll_with_arrow, + }, + { + .id = LV_PROPERTY_OBJ_SNAPPABLE, + .setter = lv_obj_set_snappable, + .getter = lv_obj_is_snappable, + }, + { + .id = LV_PROPERTY_OBJ_PRESS_LOCK, + .setter = lv_obj_set_press_lock, + .getter = lv_obj_is_press_lock, + }, + { + .id = LV_PROPERTY_OBJ_EVENT_BUBBLE, + .setter = lv_obj_set_event_bubble, + .getter = lv_obj_is_event_bubble, + }, + { + .id = LV_PROPERTY_OBJ_GESTURE_BUBBLE, + .setter = lv_obj_set_gesture_bubble, + .getter = lv_obj_is_gesture_bubble, + }, + { + .id = LV_PROPERTY_OBJ_ADV_HITTEST, + .setter = lv_obj_set_adv_hittest, + .getter = lv_obj_is_adv_hittest, + }, + { + .id = LV_PROPERTY_OBJ_IGNORE_LAYOUT, + .setter = lv_obj_set_ignore_layout, + .getter = lv_obj_is_ignore_layout, + }, + { + .id = LV_PROPERTY_OBJ_FLOATING, + .setter = lv_obj_set_floating, + .getter = lv_obj_is_floating, + }, + { + .id = LV_PROPERTY_OBJ_SEND_DRAW_TASK_EVENTS, + .setter = lv_obj_set_send_draw_task_events, + .getter = lv_obj_is_send_draw_task_events, + }, + { + .id = LV_PROPERTY_OBJ_OVERFLOW_VISIBLE, + .setter = lv_obj_set_overflow_visible, + .getter = lv_obj_is_overflow_visible, + }, + { + .id = LV_PROPERTY_OBJ_EVENT_TRICKLE, + .setter = lv_obj_set_event_trickle, + .getter = lv_obj_is_event_trickle, + }, + { + .id = LV_PROPERTY_OBJ_STATE_TRICKLE, + .setter = lv_obj_set_state_trickle, + .getter = lv_obj_is_state_trickle, + }, + { + .id = LV_PROPERTY_OBJ_FLEX_IN_NEW_TRACK, + .setter = lv_obj_set_flex_in_new_track, + .getter = lv_obj_is_flex_in_new_track, + }, { .id = LV_PROPERTY_ID_ANY, .setter = lv_obj_set_any, @@ -257,37 +377,187 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent) void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f) { + LV_LOG_DEPRECATED("use the dedicated lv_obj_set_() setters instead, e.g. lv_obj_set_hidden(obj, true)."); + LV_CHECK_OBJ(obj, MY_CLASS, return); - if(lv_obj_has_flag(obj, f)) /*Check if all flags are set*/ - return; + if(f >= LV_OBJ_FLAG_LAYOUT_1) lv_obj_allocate_spec_attr(obj); + + /* If all requested flags are already set, do nothing */ + LV_DEPRECATIONS_IGNORE_BEGIN + if(lv_obj_has_flag(obj, f)) return; + LV_DEPRECATIONS_IGNORE_END + + if(f & LV_OBJ_FLAG_HIDDEN) lv_obj_set_hidden(obj, true); + if(f & LV_OBJ_FLAG_CLICKABLE) lv_obj_set_clickable(obj, true); + if(f & LV_OBJ_FLAG_CLICK_FOCUSABLE) lv_obj_set_click_focusable(obj, true); + if(f & LV_OBJ_FLAG_CHECKABLE) lv_obj_set_checkable(obj, true); + if(f & LV_OBJ_FLAG_SCROLLABLE) lv_obj_set_scrollable(obj, true); + if(f & LV_OBJ_FLAG_SCROLL_ELASTIC) lv_obj_set_scroll_elastic(obj, true); + if(f & LV_OBJ_FLAG_SCROLL_MOMENTUM) lv_obj_set_scroll_momentum(obj, true); + if(f & LV_OBJ_FLAG_SCROLL_ONE) lv_obj_set_scroll_one(obj, true); + if(f & LV_OBJ_FLAG_SCROLL_CHAIN_HOR) lv_obj_set_scroll_chain_hor(obj, true); + if(f & LV_OBJ_FLAG_SCROLL_CHAIN_VER) lv_obj_set_scroll_chain_ver(obj, true); + if(f & LV_OBJ_FLAG_SCROLL_ON_FOCUS) lv_obj_set_scroll_on_focus(obj, true); + if(f & LV_OBJ_FLAG_SCROLL_WITH_ARROW) lv_obj_set_scroll_with_arrow(obj, true); + if(f & LV_OBJ_FLAG_SNAPPABLE) lv_obj_set_snappable(obj, true); + if(f & LV_OBJ_FLAG_PRESS_LOCK) lv_obj_set_press_lock(obj, true); + if(f & LV_OBJ_FLAG_EVENT_BUBBLE) lv_obj_set_event_bubble(obj, true); + if(f & LV_OBJ_FLAG_GESTURE_BUBBLE) lv_obj_set_gesture_bubble(obj, true); + if(f & LV_OBJ_FLAG_ADV_HITTEST) lv_obj_set_adv_hittest(obj, true); + if(f & LV_OBJ_FLAG_IGNORE_LAYOUT) lv_obj_set_ignore_layout(obj, true); + if(f & LV_OBJ_FLAG_FLOATING) lv_obj_set_floating(obj, true); + if(f & LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS) lv_obj_set_send_draw_task_events(obj, true); + if(f & LV_OBJ_FLAG_OVERFLOW_VISIBLE) lv_obj_set_overflow_visible(obj, true); + if(f & LV_OBJ_FLAG_EVENT_TRICKLE) lv_obj_set_event_trickle(obj, true); + if(f & LV_OBJ_FLAG_STATE_TRICKLE) lv_obj_set_state_trickle(obj, true); + if(f & LV_OBJ_FLAG_LAYOUT_1) obj->spec_attr->user_flags |= 1 << 0; + if(f & LV_OBJ_FLAG_LAYOUT_2) obj->spec_attr->user_flags |= 1 << 1; + if(f & LV_OBJ_FLAG_WIDGET_1) obj->spec_attr->user_flags |= 1 << 2; + if(f & LV_OBJ_FLAG_WIDGET_2) obj->spec_attr->user_flags |= 1 << 3; + if(f & LV_OBJ_FLAG_USER_1) obj->spec_attr->user_flags |= 1 << 4; + if(f & LV_OBJ_FLAG_USER_2) obj->spec_attr->user_flags |= 1 << 5; + if(f & LV_OBJ_FLAG_USER_3) obj->spec_attr->user_flags |= 1 << 6; + if(f & LV_OBJ_FLAG_USER_4) obj->spec_attr->user_flags |= 1 << 7; + + if((f & LV_OBJ_FLAG_LAYOUT_1) || (f & LV_OBJ_FLAG_LAYOUT_2)) { + lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); + lv_obj_mark_layout_as_dirty(obj); + } +} + + +void lv_obj_remove_flag(lv_obj_t * obj, lv_obj_flag_t f) +{ + LV_LOG_DEPRECATED("use the dedicated lv_obj_set_() setters instead, e.g. lv_obj_set_hidden(obj, false)."); + + LV_CHECK_OBJ(obj, MY_CLASS, return); + + if(f >= LV_OBJ_FLAG_LAYOUT_1) lv_obj_allocate_spec_attr(obj); + + /* If none of the requested flags are set, do nothing */ + if(f & LV_OBJ_FLAG_HIDDEN) lv_obj_set_hidden(obj, false); + if(f & LV_OBJ_FLAG_CLICKABLE) lv_obj_set_clickable(obj, false); + if(f & LV_OBJ_FLAG_CLICK_FOCUSABLE) lv_obj_set_click_focusable(obj, false); + if(f & LV_OBJ_FLAG_CHECKABLE) lv_obj_set_checkable(obj, false); + if(f & LV_OBJ_FLAG_SCROLLABLE) lv_obj_set_scrollable(obj, false); + if(f & LV_OBJ_FLAG_SCROLL_ELASTIC) lv_obj_set_scroll_elastic(obj, false); + if(f & LV_OBJ_FLAG_SCROLL_MOMENTUM) lv_obj_set_scroll_momentum(obj, false); + if(f & LV_OBJ_FLAG_SCROLL_ONE) lv_obj_set_scroll_one(obj, false); + if(f & LV_OBJ_FLAG_SCROLL_CHAIN_HOR) lv_obj_set_scroll_chain_hor(obj, false); + if(f & LV_OBJ_FLAG_SCROLL_CHAIN_VER) lv_obj_set_scroll_chain_ver(obj, false); + if(f & LV_OBJ_FLAG_SCROLL_ON_FOCUS) lv_obj_set_scroll_on_focus(obj, false); + if(f & LV_OBJ_FLAG_SCROLL_WITH_ARROW) lv_obj_set_scroll_with_arrow(obj, false); + if(f & LV_OBJ_FLAG_SNAPPABLE) lv_obj_set_snappable(obj, false); + if(f & LV_OBJ_FLAG_PRESS_LOCK) lv_obj_set_press_lock(obj, false); + if(f & LV_OBJ_FLAG_EVENT_BUBBLE) lv_obj_set_event_bubble(obj, false); + if(f & LV_OBJ_FLAG_GESTURE_BUBBLE) lv_obj_set_gesture_bubble(obj, false); + if(f & LV_OBJ_FLAG_ADV_HITTEST) lv_obj_set_adv_hittest(obj, false); + if(f & LV_OBJ_FLAG_IGNORE_LAYOUT) lv_obj_set_ignore_layout(obj, false); + if(f & LV_OBJ_FLAG_FLOATING) lv_obj_set_floating(obj, false); + if(f & LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS) lv_obj_set_send_draw_task_events(obj, false); + if(f & LV_OBJ_FLAG_OVERFLOW_VISIBLE) lv_obj_set_overflow_visible(obj, false); + if(f & LV_OBJ_FLAG_EVENT_TRICKLE) lv_obj_set_event_trickle(obj, false); + if(f & LV_OBJ_FLAG_STATE_TRICKLE) lv_obj_set_state_trickle(obj, false); + if(f & LV_OBJ_FLAG_LAYOUT_1) obj->spec_attr->user_flags &= ~(1 << 0); + if(f & LV_OBJ_FLAG_LAYOUT_2) obj->spec_attr->user_flags &= ~(1 << 1); + if(f & LV_OBJ_FLAG_WIDGET_1) obj->spec_attr->user_flags &= ~(1 << 2); + if(f & LV_OBJ_FLAG_WIDGET_2) obj->spec_attr->user_flags &= ~(1 << 3); + if(f & LV_OBJ_FLAG_USER_1) obj->spec_attr->user_flags &= ~(1 << 4); + if(f & LV_OBJ_FLAG_USER_2) obj->spec_attr->user_flags &= ~(1 << 5); + if(f & LV_OBJ_FLAG_USER_3) obj->spec_attr->user_flags &= ~(1 << 6); + if(f & LV_OBJ_FLAG_USER_4) obj->spec_attr->user_flags &= ~(1 << 7); + + if((f & LV_OBJ_FLAG_LAYOUT_1) || (f & LV_OBJ_FLAG_LAYOUT_2)) { + lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); + lv_obj_mark_layout_as_dirty(obj); + } +} + + +void lv_obj_set_flag(lv_obj_t * obj, lv_obj_flag_t f, bool v) +{ + LV_LOG_DEPRECATED("use the dedicated lv_obj_set_() setters instead, e.g. lv_obj_set_hidden(obj, en)."); + + LV_CHECK_OBJ(obj, MY_CLASS, return); + + LV_DEPRECATIONS_IGNORE_BEGIN + if(v) lv_obj_add_flag(obj, f); + else lv_obj_remove_flag(obj, f); + LV_DEPRECATIONS_IGNORE_END +} + + +void lv_obj_set_hidden(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + if(obj->hidden == en) return; bool was_on_layout = lv_obj_is_layout_positioned(obj); - /* We must invalidate the area occupied by the object before we hide it as calls to invalidate hidden objects are ignored */ - if(f & LV_OBJ_FLAG_HIDDEN) lv_obj_invalidate(obj); + /*Invalidate while still visible*/ + if(!obj->hidden) lv_obj_invalidate(obj); - obj->flags |= f; + obj->hidden = en; - if(f & LV_OBJ_FLAG_HIDDEN) { - if(lv_obj_has_state(obj, LV_STATE_FOCUSED)) { - lv_group_t * group = lv_obj_get_group(obj); - if(group != NULL) { - lv_group_focus_next(group); - lv_obj_t * next_obj = lv_group_get_focused(group); - if(next_obj != NULL) { - lv_obj_invalidate(next_obj); - } + /*Invalidate when visible again*/ + if(!obj->hidden) lv_obj_invalidate(obj); + + /*Focus the next next item when this one get hidden*/ + if(obj->hidden && lv_obj_has_state(obj, LV_STATE_FOCUSED)) { + lv_group_t * group = lv_obj_get_group(obj); + if(group != NULL) { + lv_group_focus_next(group); + lv_obj_t * next_obj = lv_group_get_focused(group); + if(next_obj != NULL) { + lv_obj_invalidate(next_obj); } } } - if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLAG_LAYOUT_2))) { + if((was_on_layout != lv_obj_is_layout_positioned(obj))) { lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); lv_obj_mark_layout_as_dirty(obj); } +} - if(f & LV_OBJ_FLAG_SCROLLABLE) { +void lv_obj_set_clickable(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->clickable = en; + +} + +void lv_obj_set_click_focusable(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->click_focusable = en; +} + +void lv_obj_set_checkable(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->checkable = en; +} + +void lv_obj_set_scrollable(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + + if(obj->scrollable == en) return; + + /*Invalidate the scrollbars while scrollable*/ + if(obj->scrollable) { + lv_area_t hor_area, ver_area; + lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area); + lv_obj_invalidate_area(obj, &hor_area); + lv_obj_invalidate_area(obj, &ver_area); + } + + obj->scrollable = en; + + /*Invalidate the scrollbars while scrollable again*/ + if(obj->scrollable) { lv_area_t hor_area, ver_area; lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area); lv_obj_invalidate_area(obj, &hor_area); @@ -295,45 +565,166 @@ void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f) } } -void lv_obj_remove_flag(lv_obj_t * obj, lv_obj_flag_t f) +void lv_obj_set_scroll_elastic(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->scroll_elastic = en; +} + +void lv_obj_set_scroll_momentum(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->scroll_momentum = en; +} + +void lv_obj_set_scroll_one(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->scroll_one = en; +} + +void lv_obj_set_scroll_chain(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->scroll_chain_hor = en; + obj->scroll_chain_ver = en; +} + +void lv_obj_set_scroll_chain_hor(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->scroll_chain_hor = en; +} + +void lv_obj_set_scroll_chain_ver(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->scroll_chain_ver = en; +} + +void lv_obj_set_scroll_on_focus(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->scroll_on_focus = en; +} + +void lv_obj_set_scroll_with_arrow(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->scroll_with_arrow = en; +} + +void lv_obj_set_snappable(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->snappable = en; +} + +void lv_obj_set_press_lock(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->press_lock = en; +} + +void lv_obj_set_event_bubble(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->event_bubble = en; +} + +void lv_obj_set_gesture_bubble(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->gesture_bubble = en; +} + +void lv_obj_set_adv_hittest(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->adv_hittest = en; +} + +void lv_obj_set_ignore_layout(lv_obj_t * obj, bool en) { LV_CHECK_OBJ(obj, MY_CLASS, return); - if(!lv_obj_has_flag_any(obj, f)) - return; + if(obj->ignore_layout == en) return; bool was_on_layout = lv_obj_is_layout_positioned(obj); - if(f & LV_OBJ_FLAG_SCROLLABLE) { - lv_area_t hor_area, ver_area; - lv_obj_get_scrollbar_area(obj, &hor_area, &ver_area); - lv_obj_invalidate_area(obj, &hor_area); - lv_obj_invalidate_area(obj, &ver_area); - } - obj->flags &= (~f); - lv_obj_t * parent = lv_obj_get_parent(obj); + obj->ignore_layout = en; - if(f & LV_OBJ_FLAG_HIDDEN) { - lv_obj_invalidate(obj); - if(parent) { - lv_obj_mark_layout_as_dirty(parent); - } + if((was_on_layout != lv_obj_is_layout_positioned(obj))) { + lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); lv_obj_mark_layout_as_dirty(obj); } - - if((was_on_layout != lv_obj_is_layout_positioned(obj)) || (f & (LV_OBJ_FLAG_LAYOUT_1 | LV_OBJ_FLAG_LAYOUT_2))) { - if(parent) { - lv_obj_mark_layout_as_dirty(parent); - } - } - } -void lv_obj_set_flag(lv_obj_t * obj, lv_obj_flag_t f, bool v) +void lv_obj_set_floating(lv_obj_t * obj, bool en) { LV_CHECK_OBJ(obj, MY_CLASS, return); - if(v) lv_obj_add_flag(obj, f); - else lv_obj_remove_flag(obj, f); + + if(obj->floating == en) return; + + bool was_on_layout = lv_obj_is_layout_positioned(obj); + + obj->floating = en; + + if((was_on_layout != lv_obj_is_layout_positioned(obj))) { + lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); + lv_obj_mark_layout_as_dirty(obj); + } +} + +void lv_obj_set_send_draw_task_events(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->send_draw_task_events = en; +} + +void lv_obj_set_overflow_visible(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->overflow_visible = en; +} + +void lv_obj_set_event_trickle(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->event_trickle = en; +} + +void lv_obj_set_state_trickle(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->state_trickle = en; +} + +void lv_obj_set_radio_button(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + obj->radio_button = en; +} + +void lv_obj_set_flex_in_new_track(lv_obj_t * obj, bool en) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + + /*TODO For backward compatibility use it as an LV_OBJ_FLAG_LAYOUT_1 + *It will have its own bit in lv_obj_t after v9.5*/ + if(en) { + /*Need to allocate spec_attr to set the bit*/ + lv_obj_allocate_spec_attr(obj); + obj->spec_attr->user_flags |= 1 << 0; + } + else { + /*If spec_attr is not allocated, + *its not needed to clear it as 0 is the default value*/ + if(obj->spec_attr) obj->spec_attr->user_flags &= ~(1 << 0); + } + + lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); + lv_obj_mark_layout_as_dirty(obj); } void lv_obj_add_state(lv_obj_t * obj, lv_state_t state) @@ -343,7 +734,7 @@ void lv_obj_add_state(lv_obj_t * obj, lv_state_t state) lv_state_t new_state = obj->state | state; if(obj->state != new_state) { update_obj_state(obj, new_state); - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_STATE_TRICKLE)) { + if(lv_obj_is_state_trickle(obj)) { lv_obj_children_add_state(obj, state); } } @@ -356,7 +747,7 @@ void lv_obj_remove_state(lv_obj_t * obj, lv_state_t state) lv_state_t new_state = obj->state & (~state); if(obj->state != new_state) { update_obj_state(obj, new_state); - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_STATE_TRICKLE)) { + if(lv_obj_is_state_trickle(obj)) { lv_obj_children_remove_state(obj, state); } } @@ -369,30 +760,254 @@ void lv_obj_set_state(lv_obj_t * obj, lv_state_t state, bool v) else lv_obj_remove_state(obj, state); } -void lv_obj_set_radio_button(lv_obj_t * obj, bool en) -{ - LV_CHECK_OBJ(obj, MY_CLASS, return); - obj->radio_button = en; -} - /*======================= * Getter functions *======================*/ bool lv_obj_has_flag(const lv_obj_t * obj, lv_obj_flag_t f) { + LV_LOG_DEPRECATED("use the dedicated lv_obj_is_() getters instead, e.g. lv_obj_is_hidden(obj)."); + LV_CHECK_OBJ(obj, MY_CLASS, return false); - return (obj->flags & f) == f; + if(f >= LV_OBJ_FLAG_LAYOUT_1 && obj->spec_attr == NULL) return false;; + + if((f & LV_OBJ_FLAG_HIDDEN) && !obj->hidden) return false; + if((f & LV_OBJ_FLAG_CLICKABLE) && !obj->clickable) return false; + if((f & LV_OBJ_FLAG_CLICK_FOCUSABLE) && !obj->click_focusable) return false; + if((f & LV_OBJ_FLAG_CHECKABLE) && !obj->checkable) return false; + if((f & LV_OBJ_FLAG_SCROLLABLE) && !obj->scrollable) return false; + if((f & LV_OBJ_FLAG_SCROLL_ELASTIC) && !obj->scroll_elastic) return false; + if((f & LV_OBJ_FLAG_SCROLL_MOMENTUM) && !obj->scroll_momentum) return false; + if((f & LV_OBJ_FLAG_SCROLL_ONE) && !obj->scroll_one) return false; + if((f & LV_OBJ_FLAG_SCROLL_CHAIN_HOR) && !obj->scroll_chain_hor) return false; + if((f & LV_OBJ_FLAG_SCROLL_CHAIN_VER) && !obj->scroll_chain_ver) return false; + if((f & LV_OBJ_FLAG_SCROLL_ON_FOCUS) && !obj->scroll_on_focus) return false; + if((f & LV_OBJ_FLAG_SCROLL_WITH_ARROW) && !obj->scroll_with_arrow) return false; + if((f & LV_OBJ_FLAG_SNAPPABLE) && !obj->snappable) return false; + if((f & LV_OBJ_FLAG_PRESS_LOCK) && !obj->press_lock) return false; + if((f & LV_OBJ_FLAG_EVENT_BUBBLE) && !obj->event_bubble) return false; + if((f & LV_OBJ_FLAG_GESTURE_BUBBLE) && !obj->gesture_bubble) return false; + if((f & LV_OBJ_FLAG_ADV_HITTEST) && !obj->adv_hittest) return false; + if((f & LV_OBJ_FLAG_IGNORE_LAYOUT) && !obj->ignore_layout) return false; + if((f & LV_OBJ_FLAG_FLOATING) && !obj->floating) return false; + if((f & LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS) && !obj->send_draw_task_events) return false; + if((f & LV_OBJ_FLAG_OVERFLOW_VISIBLE) && !obj->overflow_visible) return false; + if((f & LV_OBJ_FLAG_EVENT_TRICKLE) && !obj->event_trickle) return false; + if((f & LV_OBJ_FLAG_STATE_TRICKLE) && !obj->state_trickle) return false; + if((f & LV_OBJ_FLAG_LAYOUT_1) && !(obj->spec_attr->user_flags & (1 << 0))) return false; + if((f & LV_OBJ_FLAG_LAYOUT_2) && !(obj->spec_attr->user_flags & (1 << 1))) return false; + if((f & LV_OBJ_FLAG_WIDGET_1) && !(obj->spec_attr->user_flags & (1 << 2))) return false; + if((f & LV_OBJ_FLAG_WIDGET_2) && !(obj->spec_attr->user_flags & (1 << 3))) return false; + if((f & LV_OBJ_FLAG_USER_1) && !(obj->spec_attr->user_flags & (1 << 4))) return false; + if((f & LV_OBJ_FLAG_USER_2) && !(obj->spec_attr->user_flags & (1 << 5))) return false; + if((f & LV_OBJ_FLAG_USER_3) && !(obj->spec_attr->user_flags & (1 << 6))) return false; + if((f & LV_OBJ_FLAG_USER_4) && !(obj->spec_attr->user_flags & (1 << 7))) return false; + + return true; } bool lv_obj_has_flag_any(const lv_obj_t * obj, lv_obj_flag_t f) { + LV_LOG_DEPRECATED("use the dedicated lv_obj_is_() getters instead, e.g. lv_obj_is_hidden(obj)."); + LV_CHECK_OBJ(obj, MY_CLASS, return false); - return !!(obj->flags & f); + if((f & LV_OBJ_FLAG_HIDDEN) && obj->hidden) return true; + if((f & LV_OBJ_FLAG_CLICKABLE) && obj->clickable) return true; + if((f & LV_OBJ_FLAG_CLICK_FOCUSABLE) && obj->click_focusable) return true; + if((f & LV_OBJ_FLAG_CHECKABLE) && obj->checkable) return true; + if((f & LV_OBJ_FLAG_SCROLLABLE) && obj->scrollable) return true; + if((f & LV_OBJ_FLAG_SCROLL_ELASTIC) && obj->scroll_elastic) return true; + if((f & LV_OBJ_FLAG_SCROLL_MOMENTUM) && obj->scroll_momentum) return true; + if((f & LV_OBJ_FLAG_SCROLL_ONE) && obj->scroll_one) return true; + if((f & LV_OBJ_FLAG_SCROLL_CHAIN_HOR) && obj->scroll_chain_hor) return true; + if((f & LV_OBJ_FLAG_SCROLL_CHAIN_VER) && obj->scroll_chain_ver) return true; + if((f & LV_OBJ_FLAG_SCROLL_ON_FOCUS) && obj->scroll_on_focus) return true; + if((f & LV_OBJ_FLAG_SCROLL_WITH_ARROW) && obj->scroll_with_arrow) return true; + if((f & LV_OBJ_FLAG_SNAPPABLE) && obj->snappable) return true; + if((f & LV_OBJ_FLAG_PRESS_LOCK) && obj->press_lock) return true; + if((f & LV_OBJ_FLAG_EVENT_BUBBLE) && obj->event_bubble) return true; + if((f & LV_OBJ_FLAG_GESTURE_BUBBLE) && obj->gesture_bubble) return true; + if((f & LV_OBJ_FLAG_ADV_HITTEST) && obj->adv_hittest) return true; + if((f & LV_OBJ_FLAG_IGNORE_LAYOUT) && obj->ignore_layout) return true; + if((f & LV_OBJ_FLAG_FLOATING) && obj->floating) return true; + if((f & LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS) && obj->send_draw_task_events) return true; + if((f & LV_OBJ_FLAG_OVERFLOW_VISIBLE) && obj->overflow_visible) return true; + if((f & LV_OBJ_FLAG_EVENT_TRICKLE) && obj->event_trickle) return true; + if((f & LV_OBJ_FLAG_STATE_TRICKLE) && obj->state_trickle) return true; + + if(f >= LV_OBJ_FLAG_LAYOUT_1 && obj->spec_attr == NULL) return false; + + if((f & LV_OBJ_FLAG_LAYOUT_1) && (obj->spec_attr->user_flags & (1 << 0))) return true; + if((f & LV_OBJ_FLAG_LAYOUT_2) && (obj->spec_attr->user_flags & (1 << 1))) return true; + if((f & LV_OBJ_FLAG_WIDGET_1) && (obj->spec_attr->user_flags & (1 << 2))) return true; + if((f & LV_OBJ_FLAG_WIDGET_2) && (obj->spec_attr->user_flags & (1 << 3))) return true; + if((f & LV_OBJ_FLAG_USER_1) && (obj->spec_attr->user_flags & (1 << 4))) return true; + if((f & LV_OBJ_FLAG_USER_2) && (obj->spec_attr->user_flags & (1 << 5))) return true; + if((f & LV_OBJ_FLAG_USER_3) && (obj->spec_attr->user_flags & (1 << 6))) return true; + if((f & LV_OBJ_FLAG_USER_4) && (obj->spec_attr->user_flags & (1 << 7))) return true; + + return false; } + +bool lv_obj_is_hidden(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->hidden; +} + +bool lv_obj_is_clickable(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->clickable; +} + +bool lv_obj_is_click_focusable(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->click_focusable; +} + +bool lv_obj_is_checkable(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->checkable; +} + +bool lv_obj_is_scrollable(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->scrollable; +} + +bool lv_obj_is_scroll_elastic(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->scroll_elastic; +} + +bool lv_obj_is_scroll_momentum(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->scroll_momentum; +} + +bool lv_obj_is_scroll_one(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->scroll_one; +} + +bool lv_obj_is_scroll_chain_hor(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->scroll_chain_hor; +} + +bool lv_obj_is_scroll_chain_ver(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->scroll_chain_ver; +} + +bool lv_obj_is_scroll_on_focus(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->scroll_on_focus; +} + +bool lv_obj_is_scroll_with_arrow(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->scroll_with_arrow; +} + +bool lv_obj_is_snappable(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->snappable; +} + +bool lv_obj_is_press_lock(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->press_lock; +} + +bool lv_obj_is_event_bubble(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->event_bubble; +} + +bool lv_obj_is_gesture_bubble(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->gesture_bubble; +} + +bool lv_obj_is_adv_hittest(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->adv_hittest; +} + +bool lv_obj_is_ignore_layout(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->ignore_layout; +} + +bool lv_obj_is_floating(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->floating; +} + +bool lv_obj_is_send_draw_task_events(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->send_draw_task_events; +} + +bool lv_obj_is_overflow_visible(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->overflow_visible; +} + +bool lv_obj_is_event_trickle(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->event_trickle; +} + +bool lv_obj_is_state_trickle(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->state_trickle; +} + +bool lv_obj_is_radio_button(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + return obj->radio_button; +} + +bool lv_obj_is_flex_in_new_track(const lv_obj_t * obj) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + + /*For backward compatibility use it as as LV_OBJ_FLAG_LAYOUT_1 + *It will have it's on bin in lv_obj_t after v9.5*/ + if(obj->spec_attr == NULL) return false; + + return obj->spec_attr->user_flags & (1 << 0); +} + + lv_state_t lv_obj_get_state(const lv_obj_t * obj) { LV_CHECK_OBJ(obj, MY_CLASS, return 0); @@ -407,12 +1022,6 @@ bool lv_obj_has_state(const lv_obj_t * obj, lv_state_t state) return !!(obj->state & state); } -bool lv_obj_is_radio_button(const lv_obj_t * obj) -{ - LV_CHECK_OBJ(obj, MY_CLASS, return false); - return obj->radio_button; -} - lv_group_t * lv_obj_get_group(const lv_obj_t * obj) { LV_CHECK_OBJ(obj, MY_CLASS, return NULL); @@ -621,6 +1230,19 @@ void lv_obj_set_user_data(lv_obj_t * obj, void * user_data) obj->user_data = user_data; } +void lv_obj_set_user_flag(lv_obj_t * obj, uint32_t bit, bool v) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return); + LV_CHECK_ARG(bit < 4, return); + + lv_obj_spec_attr_t * spec_attr = lv_obj_allocate_spec_attr(obj); + LV_ASSERT_MALLOC(spec_attr); + if(spec_attr == NULL) return; + + if(v) spec_attr->user_flags |= 1 << (bit + 4); + else spec_attr->user_flags &= ~(1 << (bit + 4)); +} + void * lv_obj_get_user_data(lv_obj_t * obj) { LV_CHECK_OBJ(obj, MY_CLASS, return NULL); @@ -628,6 +1250,15 @@ void * lv_obj_get_user_data(lv_obj_t * obj) return obj->user_data; } +bool lv_obj_get_user_flag(lv_obj_t * obj, uint32_t bit) +{ + LV_CHECK_OBJ(obj, MY_CLASS, return false); + LV_CHECK_ARG(bit < 4, return false); + + if(obj->spec_attr == NULL) return false; + else return (obj->spec_attr->user_flags & 1 << (bit + 4)) ? true : false; +} + lv_delete_dsc_t * lv_obj_add_delete_cb(lv_obj_t * obj, lv_delete_cb_t cb, void * user_data) { LV_CHECK_OBJ(obj, MY_CLASS, return NULL); @@ -686,16 +1317,19 @@ static void lv_obj_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) } /*Set attributes*/ - obj->flags = LV_OBJ_FLAG_CLICKABLE; - obj->flags |= LV_OBJ_FLAG_SNAPPABLE; - if(parent) obj->flags |= LV_OBJ_FLAG_PRESS_LOCK; - if(parent) obj->flags |= LV_OBJ_FLAG_SCROLL_CHAIN; - obj->flags |= LV_OBJ_FLAG_CLICK_FOCUSABLE; - obj->flags |= LV_OBJ_FLAG_SCROLLABLE; - obj->flags |= LV_OBJ_FLAG_SCROLL_ELASTIC; - obj->flags |= LV_OBJ_FLAG_SCROLL_MOMENTUM; - obj->flags |= LV_OBJ_FLAG_SCROLL_WITH_ARROW; - if(parent) obj->flags |= LV_OBJ_FLAG_GESTURE_BUBBLE; + obj->clickable = 1; + obj->snappable = 1; + obj->click_focusable = 1; + obj->scrollable = 1; + obj->scroll_elastic = 1; + obj->scroll_momentum = 1; + obj->scroll_with_arrow = 1; + if(parent) { + obj->press_lock = 1; + obj->scroll_chain_hor = 1; + obj->scroll_chain_ver = 1; + obj->gesture_bubble = 1; + } #if LV_OBJ_ID_AUTO_ASSIGN lv_obj_assign_id(class_p, obj); @@ -992,7 +1626,7 @@ static void lv_obj_event(const lv_obj_class_t * class_p, lv_event_t * e) lv_obj_remove_state(obj, LV_STATE_PRESSED); void * param = lv_event_get_param(e); /*Go the checked state if enabled*/ - if(lv_indev_get_scroll_obj(param) == NULL && lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) { + if(lv_indev_get_scroll_obj(param) == NULL && lv_obj_is_checkable(obj)) { bool was_checked = lv_obj_has_state(obj, LV_STATE_CHECKED); if(!(lv_obj_get_state(obj) & LV_STATE_CHECKED)) { @@ -1038,7 +1672,7 @@ static void lv_obj_event(const lv_obj_class_t * class_p, lv_event_t * e) } } else if(code == LV_EVENT_KEY) { - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) { + if(lv_obj_is_checkable(obj)) { uint32_t c = lv_event_get_key(e); bool was_checked = lv_obj_has_state(obj, LV_STATE_CHECKED); if(c == LV_KEY_RIGHT || c == LV_KEY_UP) { @@ -1057,7 +1691,7 @@ static void lv_obj_event(const lv_obj_class_t * class_p, lv_event_t * e) if(res != LV_RESULT_OK) return; } } - else if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_WITH_ARROW) && !lv_obj_is_editable(obj)) { + else if(lv_obj_is_scrollable(obj) && lv_obj_is_scroll_with_arrow(obj) && !lv_obj_is_editable(obj)) { /*scroll by keypad or encoder*/ lv_anim_enable_t anim_enable = LV_ANIM_OFF; int32_t sl = lv_obj_get_scroll_left(obj); @@ -1087,7 +1721,7 @@ static void lv_obj_event(const lv_obj_class_t * class_p, lv_event_t * e) } } else if(code == LV_EVENT_FOCUSED) { - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS)) { + if(lv_obj_is_scroll_on_focus(obj)) { lv_obj_scroll_to_view_recursive(obj, LV_ANIM_ON); } @@ -1414,9 +2048,13 @@ static lv_result_t lv_obj_set_any(lv_obj_t * obj, lv_prop_id_t id, const lv_prop LV_ASSERT(obj != NULL); if(id >= LV_PROPERTY_OBJ_FLAG_START && id <= LV_PROPERTY_OBJ_FLAG_END) { + /*The flag properties are kept for backward compatibility; the dedicated + *per-flag setters are registered as normal properties (see lv_obj_properties).*/ lv_obj_flag_t flag = 1L << (id - LV_PROPERTY_OBJ_FLAG_START); + LV_DEPRECATIONS_IGNORE_BEGIN if(prop->num) lv_obj_add_flag(obj, flag); else lv_obj_remove_flag(obj, flag); + LV_DEPRECATIONS_IGNORE_END return LV_RESULT_OK; } else if(id >= LV_PROPERTY_OBJ_STATE_START && id <= LV_PROPERTY_OBJ_STATE_END) { @@ -1440,7 +2078,9 @@ static lv_result_t lv_obj_get_any(const lv_obj_t * obj, lv_prop_id_t id, lv_prop if(id >= LV_PROPERTY_OBJ_FLAG_START && id <= LV_PROPERTY_OBJ_FLAG_END) { lv_obj_flag_t flag = 1L << (id - LV_PROPERTY_OBJ_FLAG_START); prop->id = id; - prop->num = obj->flags & flag; + LV_DEPRECATIONS_IGNORE_BEGIN + prop->num = lv_obj_has_flag_any(obj, flag); + LV_DEPRECATIONS_IGNORE_END return LV_RESULT_OK; } else if(id >= LV_PROPERTY_OBJ_STATE_START && id <= LV_PROPERTY_OBJ_STATE_END) { diff --git a/src/core/lv_obj_event.c b/src/core/lv_obj_event.c index 0bbffdc56f..875aa47e93 100644 --- a/src/core/lv_obj_event.c +++ b/src/core/lv_obj_event.c @@ -397,7 +397,7 @@ static bool event_is_bubbled(lv_event_t * e) } /*Check other codes only if bubbling is enabled*/ - if(lv_obj_has_flag(e->current_target, LV_OBJ_FLAG_EVENT_BUBBLE) == false) return false; + if(lv_obj_is_event_bubble(e->current_target) == false) return false; switch(e->code) { case LV_EVENT_HIT_TEST: @@ -429,7 +429,7 @@ static bool event_is_trickled(lv_event_t * e) if(e->stop_trickling) return false; /*Check other codes only if trickle is enabled*/ - if(lv_obj_has_flag(e->current_target, LV_OBJ_FLAG_EVENT_TRICKLE) == false) return false; + if(lv_obj_is_event_trickle(e->current_target) == false) return false; switch(e->code) { case LV_EVENT_HIT_TEST: diff --git a/src/core/lv_obj_pos.c b/src/core/lv_obj_pos.c index be9874acc5..8497c2809c 100644 --- a/src/core/lv_obj_pos.c +++ b/src/core/lv_obj_pos.c @@ -294,7 +294,7 @@ bool lv_obj_is_layout_positioned(const lv_obj_t * obj) { LV_CHECK_OBJ(obj, MY_CLASS, return false); - if(lv_obj_has_flag_any(obj, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_FLOATING)) return false; + if(lv_obj_is_hidden(obj) || lv_obj_is_ignore_layout(obj) || lv_obj_is_floating(obj)) return false; lv_obj_t * parent = lv_obj_get_parent(obj); if(parent == NULL) return false; @@ -885,7 +885,7 @@ void lv_obj_move_to(lv_obj_t * obj, int32_t x, int32_t y) lv_obj_t * parent = obj->parent; if(parent) { - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_FLOATING)) { + if(lv_obj_is_floating(obj)) { x += parent->coords.x1; y += parent->coords.y1; } @@ -956,7 +956,7 @@ void lv_obj_move_children_by(lv_obj_t * obj, int32_t x_diff, int32_t y_diff, boo uint32_t child_cnt = lv_obj_get_child_count(obj); for(i = 0; i < child_cnt; i++) { lv_obj_t * child = obj->spec_attr->children[i]; - if(ignore_floating && lv_obj_has_flag(child, LV_OBJ_FLAG_FLOATING)) continue; + if(ignore_floating && lv_obj_is_floating(child)) continue; child->coords.x1 += x_diff; child->coords.y1 += y_diff; child->coords.x2 += x_diff; @@ -1105,7 +1105,7 @@ bool lv_obj_area_is_visible(const lv_obj_t * obj, lv_area_t * area) LV_CHECK_ARG(area != NULL, return false); LV_CHECK_OBJ(obj, MY_CLASS, return false); - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)) return false; + if(lv_obj_is_hidden(obj)) return false; /*Invalidate the object only if it belongs to the current or previous or one of the layers'*/ lv_obj_t * obj_scr = lv_obj_get_screen(obj); @@ -1135,11 +1135,11 @@ bool lv_obj_area_is_visible(const lv_obj_t * obj, lv_area_t * area) lv_obj_t * parent = lv_obj_get_parent(obj); while(parent != NULL) { /*If the parent is hidden then the child is hidden and won't be drawn*/ - if(lv_obj_has_flag(parent, LV_OBJ_FLAG_HIDDEN)) return false; + if(lv_obj_is_hidden(parent)) return false; /*Truncate to the parent and if no common parts break*/ lv_area_t parent_coords = parent->coords; - if(lv_obj_has_flag(parent, LV_OBJ_FLAG_OVERFLOW_VISIBLE)) { + if(lv_obj_is_overflow_visible(parent)) { int32_t parent_ext_size = lv_obj_get_ext_draw_size(parent); lv_area_increase(&parent_coords, parent_ext_size, parent_ext_size); } @@ -1196,14 +1196,14 @@ bool lv_obj_hit_test(lv_obj_t * obj, const lv_point_t * point) LV_CHECK_ARG(point != NULL, return false); LV_CHECK_OBJ(obj, MY_CLASS, return false); - if(!lv_obj_has_flag(obj, LV_OBJ_FLAG_CLICKABLE)) return false; + if(!lv_obj_is_clickable(obj)) return false; lv_area_t a; lv_obj_get_click_area(obj, &a); bool res = lv_area_is_point_on(&a, point, 0); if(res == false) return false; - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_ADV_HITTEST)) { + if(lv_obj_is_adv_hittest(obj)) { lv_hit_test_info_t hit_info; hit_info.point = point; hit_info.res = true; @@ -1377,7 +1377,7 @@ static int32_t calc_content_width(lv_obj_t * obj) for(i = 0; i < child_cnt; i++) { int32_t child_res_tmp = LV_COORD_MIN; lv_obj_t * child = obj->spec_attr->children[i]; - if(lv_obj_has_flag_any(child, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) + if(child->hidden || child->floating) continue; if(child->w_ignore_size) @@ -1417,7 +1417,7 @@ static int32_t calc_content_width(lv_obj_t * obj) for(i = 0; i < child_cnt; i++) { int32_t child_res_tmp = LV_COORD_MIN; lv_obj_t * child = obj->spec_attr->children[i]; - if(lv_obj_has_flag_any(child, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) continue; + if(child->hidden || child->floating) continue; if(child->w_ignore_size) continue; @@ -1485,8 +1485,7 @@ static int32_t calc_content_height(lv_obj_t * obj) for(i = 0; i < child_cnt; i++) { int32_t child_res_tmp = LV_COORD_MIN; lv_obj_t * child = obj->spec_attr->children[i]; - if(lv_obj_has_flag_any(child, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) - continue; + if(child->hidden || child->floating) continue; if(child->h_ignore_size) continue; diff --git a/src/core/lv_obj_private.h b/src/core/lv_obj_private.h index d94416ae11..58794cf95a 100644 --- a/src/core/lv_obj_private.h +++ b/src/core/lv_obj_private.h @@ -49,11 +49,11 @@ typedef struct _lv_obj_spec_attr_t { uint16_t scroll_snap_y : 2; /**< Where to align the snappable children vertically*/ uint16_t scroll_dir : 4; /**< The allowed scroll direction(s), see `lv_dir_t`*/ uint16_t layer_type : 2; /**< Cache the layer type here. Element of lv_intermediate_layer_type_t */ - uint16_t name_static : 1; /**< 1: `name` was not dynamically allocated */ + uint16_t name_static : 1; /**< 1: `name` was not dynamically allocated */ + uint16_t user_flags : 8; /**< Store custom flags */ } lv_obj_spec_attr_t; - struct _lv_obj_t { #if LV_USE_EXT_DATA lv_ext_data_t ext_data; @@ -71,7 +71,78 @@ struct _lv_obj_t { void * id; #endif lv_area_t coords; - lv_obj_flag_t flags; + /** Make the object hidden. (Like it wasn't there at all) */ + uint32_t hidden : 1; + + /** Make the object clickable by the input devices */ + uint32_t clickable : 1; + + /** Add focused state to the object when clicked */ + uint32_t click_focusable : 1; + + /** Toggle checked state when the object is clicked */ + uint32_t checkable : 1; + + /** Make the object scrollable */ + uint32_t scrollable : 1; + + /** Allow scrolling inside but with slower speed */ + uint32_t scroll_elastic : 1; + + /** Make the object scroll further when "thrown" */ + uint32_t scroll_momentum : 1; + + /** Allow scrolling only one snappable child */ + uint32_t scroll_one : 1; + + /** Allow propagating the horizontal scroll to a parent */ + uint32_t scroll_chain_hor : 1; + + /** Allow propagating the vertical scroll to a parent */ + uint32_t scroll_chain_ver : 1; + + /** Automatically scroll object to make it visible when focused */ + uint32_t scroll_on_focus : 1; + + /** Allow scrolling the focused object with arrow keys */ + uint32_t scroll_with_arrow : 1; + + /** If scroll snap is enabled on the parent it can snap to this object */ + uint32_t snappable : 1; + + /** Keep the object pressed even if the press slid from the object */ + uint32_t press_lock : 1; + + /** Propagate the events to the parent too */ + uint32_t event_bubble : 1; + + /** Propagate the gestures to the parent */ + uint32_t gesture_bubble : 1; + + /** Allow performing more accurate hit (click) test */ + uint32_t adv_hittest : 1; + + /** Make the object not positioned by the layouts */ + uint32_t ignore_layout : 1; + + /** Do not scroll the object when the parent scrolls and ignore layout */ + uint32_t floating : 1; + + /** Send LV_EVENT_DRAW_TASK_ADDED events */ + uint32_t send_draw_task_events : 1; + + /** Do not clip the children to the parent's ext draw size */ + uint32_t overflow_visible : 1; + + /** Propagate the events to the children too */ + uint32_t event_trickle : 1; + + /** Propagate the states to the children too */ + uint32_t state_trickle : 1; + + /** Allow only one RADIO_BUTTON sibling to be checked */ + uint32_t radio_button : 1; + uint16_t state; uint16_t layout_inv : 1; uint16_t readjust_scroll_after_layout : 1; @@ -83,7 +154,6 @@ struct _lv_obj_t { uint16_t h_ignore_size : 1; /* ignore this obj when calculating content height of parent */ uint16_t w_ignore_size : 1; /* ignore this obj when calculating content width of parent */ uint16_t is_deleting : 1; - uint16_t radio_button : 1; /**< Allow only one RADIO_BUTTON sibling to be checked*/ /** The widget is rendered at least once already. * It's used to skip initial animations and transitions. */ diff --git a/src/core/lv_obj_scroll.c b/src/core/lv_obj_scroll.c index d1ec0fcac0..322c81b516 100644 --- a/src/core/lv_obj_scroll.c +++ b/src/core/lv_obj_scroll.c @@ -172,7 +172,7 @@ int32_t lv_obj_get_scroll_bottom(const lv_obj_t * obj) uint32_t child_cnt = lv_obj_get_child_count(obj); for(i = 0; i < child_cnt; i++) { const lv_obj_t * child = obj->spec_attr->children[i]; - if(lv_obj_has_flag_any(child, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) continue; + if((lv_obj_is_hidden(child) || lv_obj_is_floating(child))) continue; int32_t tmp_y = child->coords.y2 + lv_obj_get_style_margin_bottom(child, LV_PART_MAIN); child_res = LV_MAX(child_res, tmp_y); @@ -213,7 +213,7 @@ int32_t lv_obj_get_scroll_left(const lv_obj_t * obj) uint32_t child_cnt = lv_obj_get_child_count(obj); for(i = 0; i < child_cnt; i++) { const lv_obj_t * child = obj->spec_attr->children[i]; - if(lv_obj_has_flag_any(child, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) continue; + if((lv_obj_is_hidden(child) || lv_obj_is_floating(child))) continue; int32_t tmp_x = child->coords.x1 - lv_obj_get_style_margin_left(child, LV_PART_MAIN); x1 = LV_MIN(x1, tmp_x); @@ -251,7 +251,7 @@ int32_t lv_obj_get_scroll_right(const lv_obj_t * obj) uint32_t child_cnt = lv_obj_get_child_count(obj); for(i = 0; i < child_cnt; i++) { const lv_obj_t * child = obj->spec_attr->children[i]; - if(lv_obj_has_flag_any(child, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) continue; + if((lv_obj_is_hidden(child) || lv_obj_is_floating(child))) continue; int32_t tmp_x = child->coords.x2 + lv_obj_get_style_margin_right(child, LV_PART_MAIN); child_res = LV_MAX(child_res, tmp_x); @@ -524,7 +524,7 @@ void lv_obj_get_scrollbar_area(lv_obj_t * obj, lv_area_t * hor_area, lv_area_t * lv_area_set(hor_area, 0, 0, -1, -1); lv_area_set(ver_area, 0, 0, -1, -1); - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLLABLE) == false) return; + if(lv_obj_is_scrollable(obj) == false) return; lv_scrollbar_mode_t sm = lv_obj_get_scrollbar_mode(obj); if(sm == LV_SCROLLBAR_MODE_OFF) return; @@ -768,7 +768,7 @@ static void scroll_area_into_view(const lv_area_t * area, lv_obj_t * child, lv_p lv_anim_enable_t anim_en) { lv_obj_t * parent = lv_obj_get_parent(child); - if(!lv_obj_has_flag(parent, LV_OBJ_FLAG_SCROLLABLE)) return; + if(!lv_obj_is_scrollable(parent)) return; lv_dir_t scroll_dir = lv_obj_get_scroll_dir(parent); int32_t snap_goal = 0; diff --git a/src/core/lv_obj_tree.c b/src/core/lv_obj_tree.c index f13c680b7a..c34ec8bbf3 100644 --- a/src/core/lv_obj_tree.c +++ b/src/core/lv_obj_tree.c @@ -580,9 +580,9 @@ int32_t lv_obj_get_index(const lv_obj_t * obj) lv_obj_t * parent = lv_obj_get_parent(obj); if(parent == NULL) return -1; - int32_t i = 0; + uint32_t i = 0; for(i = 0; i < parent->spec_attr->child_cnt; i++) { - if(parent->spec_attr->children[i] == obj) return i; + if(parent->spec_attr->children[i] == obj) return (int32_t)i; } /*Shouldn't reach this point*/ diff --git a/src/core/lv_observer.c b/src/core/lv_observer.c index 4e5b5d9489..e2e2b75c3d 100644 --- a/src/core/lv_observer.c +++ b/src/core/lv_observer.c @@ -1014,12 +1014,15 @@ static void obj_flag_observer_cb(lv_observer_t * observer, lv_subject_t * subjec } if(p->inv) res = !res; + /*TODO: the flag binding API is deprecated separately; suppress the warning until then*/ + LV_DEPRECATIONS_IGNORE_BEGIN if(res) { lv_obj_add_flag(observer->target, p->flag); } else { lv_obj_remove_flag(observer->target, p->flag); } + LV_DEPRECATIONS_IGNORE_END } static void obj_state_observer_cb(lv_observer_t * observer, lv_subject_t * subject) diff --git a/src/core/lv_refr.c b/src/core/lv_refr.c index 1bb8360774..8454f208f0 100644 --- a/src/core/lv_refr.c +++ b/src/core/lv_refr.c @@ -140,7 +140,7 @@ void lv_obj_redraw(lv_layer_t * layer, lv_obj_t * obj) #endif const lv_area_t * obj_coords; - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_OVERFLOW_VISIBLE)) { + if(lv_obj_is_overflow_visible(obj)) { obj_coords = &obj_coords_ext; } else { @@ -463,7 +463,7 @@ lv_obj_t * lv_refr_get_top_obj(const lv_area_t * area_p, lv_obj_t * obj) lv_obj_t * found_p = NULL; if(lv_area_is_in(area_p, &obj->coords, 0) == false) return NULL; - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)) return NULL; + if(lv_obj_is_hidden(obj)) return NULL; if(lv_obj_get_layer_type(obj) != LV_LAYER_TYPE_NONE) return NULL; if(lv_obj_get_style_opa(obj, LV_PART_MAIN) < LV_OPA_MAX) return NULL; @@ -500,7 +500,7 @@ void lv_obj_refr(lv_layer_t * layer, lv_obj_t * obj) LV_CHECK_ARG(layer != NULL, return); LV_CHECK_ARG(obj != NULL, return); - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)) return; + if(lv_obj_is_hidden(obj)) return; /*If `opa_layered != LV_OPA_COVER` draw the widget on a new layer and blend that layer with the given opacity.*/ const lv_opa_t opa_layered = lv_obj_get_style_opa_layered(obj, LV_PART_MAIN); diff --git a/src/debugging/sysmon/lv_sysmon.c b/src/debugging/sysmon/lv_sysmon.c index f438d55d3c..07892691bb 100644 --- a/src/debugging/sysmon/lv_sysmon.c +++ b/src/debugging/sysmon/lv_sysmon.c @@ -118,11 +118,7 @@ void lv_sysmon_show_performance(lv_display_t * disp) lv_display_add_event_cb(disp, perf_monitor_disp_event_cb, LV_EVENT_ALL, NULL); } -#if LV_USE_PERF_MONITOR_LOG_MODE - lv_obj_add_flag(disp->perf_label, LV_OBJ_FLAG_HIDDEN); -#else - lv_obj_remove_flag(disp->perf_label, LV_OBJ_FLAG_HIDDEN); -#endif + lv_obj_set_hidden(disp->perf_label, LV_USE_PERF_MONITOR_LOG_MODE); } void lv_sysmon_hide_performance(lv_display_t * disp) @@ -133,7 +129,7 @@ void lv_sysmon_hide_performance(lv_display_t * disp) return; } - lv_obj_add_flag(disp->perf_label, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(disp->perf_label, true); } void lv_sysmon_performance_dump(lv_display_t * disp) @@ -179,7 +175,7 @@ void lv_sysmon_show_memory(lv_display_t * disp) lv_subject_add_observer_obj(&sysmon_mem.subject, mem_observer_cb, disp->mem_label, NULL); } - lv_obj_remove_flag(disp->mem_label, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(disp->mem_label, false); } void lv_sysmon_hide_memory(lv_display_t * disp) @@ -190,7 +186,7 @@ void lv_sysmon_hide_memory(lv_display_t * disp) return; } - lv_obj_add_flag(disp->mem_label, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(disp->mem_label, true); } #endif diff --git a/src/display/lv_display.c b/src/display/lv_display.c index 2089338f12..3b4e116590 100644 --- a/src/display/lv_display.c +++ b/src/display/lv_display.c @@ -150,8 +150,8 @@ lv_display_t * lv_display_create(int32_t hor_res, int32_t ver_res) lv_obj_remove_style_all(disp->bottom_layer); lv_obj_remove_style_all(disp->top_layer); lv_obj_remove_style_all(disp->sys_layer); - lv_obj_remove_flag(disp->top_layer, LV_OBJ_FLAG_CLICKABLE); - lv_obj_remove_flag(disp->sys_layer, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(disp->top_layer, false); + lv_obj_set_clickable(disp->sys_layer, false); if(lv_color_format_has_alpha(disp->color_format)) { lv_obj_remove_local_style_prop(disp->bottom_layer, LV_STYLE_BG_OPA, 0); diff --git a/src/draw/lv_draw.c b/src/draw/lv_draw.c index 0dcdfecf1b..f57e767f5f 100644 --- a/src/draw/lv_draw.c +++ b/src/draw/lv_draw.c @@ -141,7 +141,7 @@ void lv_draw_finalize_task_creation(lv_layer_t * layer, lv_draw_task_t * t) *dispatching might remove the "main" draw task while it's still being used in the event*/ if(info->task_running == false) { - if(base_dsc->obj && lv_obj_has_flag(base_dsc->obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS)) { + if(base_dsc->obj && lv_obj_is_send_draw_task_events(base_dsc->obj)) { info->task_running = true; lv_obj_send_event(base_dsc->obj, LV_EVENT_DRAW_TASK_ADDED, t); info->task_running = false; diff --git a/src/draw/lv_draw_label.c b/src/draw/lv_draw_label.c index e91a0d68f6..036fe369e6 100644 --- a/src/draw/lv_draw_label.c +++ b/src/draw/lv_draw_label.c @@ -229,7 +229,7 @@ void lv_draw_label_iterate_characters(lv_draw_task_t * t, const lv_draw_label_ds } else { /*If EXPAND is enabled then not limit the text's width to the object's width*/ - if(base_dsc->obj && !lv_obj_has_flag(base_dsc->obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS)) { + if(base_dsc->obj && !lv_obj_is_send_draw_task_events(base_dsc->obj)) { w = dsc->text_size.x; } else { diff --git a/src/draw/lv_draw_mask.c b/src/draw/lv_draw_mask.c index 0779412865..9fbef4bb00 100644 --- a/src/draw/lv_draw_mask.c +++ b/src/draw/lv_draw_mask.c @@ -59,12 +59,12 @@ void LV_ATTRIBUTE_FAST_MEM lv_draw_mask_rect(lv_layer_t * layer, const lv_draw_m lv_draw_dsc_base_t * base_dsc = t->draw_dsc; base_dsc->layer = layer; - if(base_dsc->obj && lv_obj_has_flag(base_dsc->obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS)) { + if(base_dsc->obj && lv_obj_is_send_draw_task_events(base_dsc->obj)) { /*Disable sending LV_EVENT_DRAW_TASK_ADDED first to avoid triggering recursive *event calls due draw task adds in the event*/ - lv_obj_remove_flag(base_dsc->obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(base_dsc->obj, false); lv_obj_send_event(dsc->base.obj, LV_EVENT_DRAW_TASK_ADDED, t); - lv_obj_add_flag(base_dsc->obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(base_dsc->obj, true); } lv_draw_finalize_task_creation(layer, t); diff --git a/src/draw/opengles/lv_draw_opengles.c b/src/draw/opengles/lv_draw_opengles.c index c801e46905..05af684df7 100644 --- a/src/draw/opengles/lv_draw_opengles.c +++ b/src/draw/opengles/lv_draw_opengles.c @@ -307,8 +307,8 @@ static unsigned int draw_to_texture(lv_draw_opengles_unit_t * u, cache_data_t * lv_obj_t * obj = ((lv_draw_dsc_base_t *)task->draw_dsc)->obj; bool original_send_draw_task_event = false; if(obj) { - original_send_draw_task_event = lv_obj_has_flag(obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + original_send_draw_task_event = lv_obj_is_send_draw_task_events(obj); + lv_obj_set_send_draw_task_events(obj, false); } if(cache_data != NULL) { @@ -317,7 +317,7 @@ static unsigned int draw_to_texture(lv_draw_opengles_unit_t * u, cache_data_t * LV_ASSERT_MALLOC(cache_data->draw_dsc); if(cache_data->draw_dsc == NULL) { if(obj) { - lv_obj_set_flag(obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS, original_send_draw_task_event); + lv_obj_set_send_draw_task_events(obj, original_send_draw_task_event); } LV_PROFILER_DRAW_END; return 0; @@ -408,7 +408,7 @@ static unsigned int draw_to_texture(lv_draw_opengles_unit_t * u, cache_data_t * *in opengles_texture_cache_free_cb*/ LV_LOG_ERROR("OpenGLES draw unit does not support tasks of type %d", task->type); if(obj) { - lv_obj_set_flag(obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS, original_send_draw_task_event); + lv_obj_set_send_draw_task_events(obj, original_send_draw_task_event); } LV_PROFILER_DRAW_END; return 0; @@ -430,7 +430,7 @@ static unsigned int draw_to_texture(lv_draw_opengles_unit_t * u, cache_data_t * } if(obj) { - lv_obj_set_flag(obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS, original_send_draw_task_event); + lv_obj_set_send_draw_task_events(obj, original_send_draw_task_event); } LV_PROFILER_DRAW_END; diff --git a/src/draw/sdl/lv_draw_sdl.c b/src/draw/sdl/lv_draw_sdl.c index 70262de0f6..ec92d030b5 100644 --- a/src/draw/sdl/lv_draw_sdl.c +++ b/src/draw/sdl/lv_draw_sdl.c @@ -230,8 +230,8 @@ static bool draw_to_texture(lv_draw_sdl_unit_t * u, cache_data_t * cache_data) lv_obj_t * obj = ((lv_draw_dsc_base_t *)task->draw_dsc)->obj; bool original_send_draw_task_event = false; if(obj) { - original_send_draw_task_event = lv_obj_has_flag(obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + original_send_draw_task_event = lv_obj_is_send_draw_task_events(obj); + lv_obj_set_send_draw_task_events(obj, false); } switch(task->type) { @@ -338,7 +338,7 @@ static bool draw_to_texture(lv_draw_sdl_unit_t * u, cache_data_t * cache_data) cache_data->texture = texture; if(obj) { - lv_obj_set_flag(obj, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS, original_send_draw_task_event); + lv_obj_set_send_draw_task_events(obj, original_send_draw_task_event); } return true; diff --git a/src/indev/lv_gridnav.c b/src/indev/lv_gridnav.c index efb454c9d8..e4a446574c 100644 --- a/src/indev/lv_gridnav.c +++ b/src/indev/lv_gridnav.c @@ -67,7 +67,7 @@ void lv_gridnav_add(lv_obj_t * obj, lv_gridnav_ctrl_t ctrl) dsc->focused_obj = NULL; lv_obj_add_event_cb(obj, gridnav_event_cb, LV_EVENT_ALL, dsc); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_WITH_ARROW); + lv_obj_set_scroll_with_arrow(obj, false); } void lv_gridnav_remove(lv_obj_t * obj) @@ -142,7 +142,7 @@ static void gridnav_event_cb(lv_event_t * e) lv_obj_t * guess = NULL; if(key == LV_KEY_RIGHT && !(dsc->ctrl & LV_GRIDNAV_CTRL_VERTICAL_MOVE_ONLY)) { - if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_has_flag(dsc->focused_obj, LV_OBJ_FLAG_SCROLLABLE) && + if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_is_scrollable(dsc->focused_obj) && lv_obj_get_scroll_right(dsc->focused_obj) > 0) { int32_t d = lv_obj_get_width(dsc->focused_obj) / 4; if(d <= 0) d = 1; @@ -162,7 +162,7 @@ static void gridnav_event_cb(lv_event_t * e) } } else if(key == LV_KEY_LEFT && !(dsc->ctrl & LV_GRIDNAV_CTRL_VERTICAL_MOVE_ONLY)) { - if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_has_flag(dsc->focused_obj, LV_OBJ_FLAG_SCROLLABLE) && + if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_is_scrollable(dsc->focused_obj) && lv_obj_get_scroll_left(dsc->focused_obj) > 0) { int32_t d = lv_obj_get_width(dsc->focused_obj) / 4; if(d <= 0) d = 1; @@ -182,7 +182,7 @@ static void gridnav_event_cb(lv_event_t * e) } } else if(key == LV_KEY_DOWN && !(dsc->ctrl & LV_GRIDNAV_CTRL_HORIZONTAL_MOVE_ONLY)) { - if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_has_flag(dsc->focused_obj, LV_OBJ_FLAG_SCROLLABLE) && + if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_is_scrollable(dsc->focused_obj) && lv_obj_get_scroll_bottom(dsc->focused_obj) > 0) { int32_t d = lv_obj_get_height(dsc->focused_obj) / 4; if(d <= 0) d = 1; @@ -201,7 +201,7 @@ static void gridnav_event_cb(lv_event_t * e) } } else if(key == LV_KEY_UP && !(dsc->ctrl & LV_GRIDNAV_CTRL_HORIZONTAL_MOVE_ONLY)) { - if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_has_flag(dsc->focused_obj, LV_OBJ_FLAG_SCROLLABLE) && + if((dsc->ctrl & LV_GRIDNAV_CTRL_SCROLL_FIRST) && lv_obj_is_scrollable(dsc->focused_obj) && lv_obj_get_scroll_top(dsc->focused_obj) > 0) { int32_t d = lv_obj_get_height(dsc->focused_obj) / 4; if(d <= 0) d = 1; @@ -379,8 +379,9 @@ static lv_obj_t * find_last_focusable(lv_obj_t * obj) static bool obj_is_focusable(lv_obj_t * obj) { - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)) return false; - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_CLICK_FOCUSABLE)) return true; + if(lv_obj_is_hidden(obj)) return false; + + if(lv_obj_is_clickable(obj) && lv_obj_is_click_focusable(obj)) return true; else return false; } diff --git a/src/indev/lv_indev.c b/src/indev/lv_indev.c index 81aadb0d2b..68e138a1d5 100644 --- a/src/indev/lv_indev.c +++ b/src/indev/lv_indev.c @@ -473,8 +473,10 @@ void lv_indev_set_cursor(lv_indev_t * indev, lv_obj_t * cur_obj) indev->cursor = cur_obj; lv_obj_set_parent(indev->cursor, lv_display_get_layer_sys(indev->disp)); lv_obj_set_pos(indev->cursor, indev->pointer.act_point.x, indev->pointer.act_point.y); - lv_obj_remove_flag(indev->cursor, LV_OBJ_FLAG_CLICKABLE); - lv_obj_add_flag(indev->cursor, LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_FLOATING); + lv_obj_set_clickable(indev->cursor, false); + + lv_obj_set_ignore_layout(indev->cursor, true); + lv_obj_set_floating(indev->cursor, true); } void lv_indev_set_group(lv_indev_t * indev, lv_group_t * group) @@ -610,7 +612,7 @@ lv_obj_t * lv_indev_search_obj(lv_obj_t * obj, lv_point_t * point) lv_obj_t * found_p = NULL; /*If this obj is hidden the children are hidden too so return immediately*/ - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)) return NULL; + if(lv_obj_is_hidden(obj)) return NULL; lv_point_t p_trans = *point; lv_obj_transform_point(obj, &p_trans, LV_OBJ_POINT_TRANSFORM_FLAG_INVERSE); @@ -619,7 +621,7 @@ lv_obj_t * lv_indev_search_obj(lv_obj_t * obj, lv_point_t * point) /*If the point is on this object check its children too*/ lv_area_t obj_coords = obj->coords; - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_OVERFLOW_VISIBLE)) { + if(lv_obj_is_overflow_visible(obj)) { int32_t ext_draw_size = lv_obj_get_ext_draw_size(obj); lv_area_increase(&obj_coords, ext_draw_size, ext_draw_size); } @@ -986,7 +988,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) if(data->key == LV_KEY_ENTER) { bool editable_or_scrollable = lv_obj_is_editable(indev_obj_act) || - lv_obj_has_flag(indev_obj_act, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_is_scrollable(indev_obj_act); if(lv_group_get_editing(g) == true || editable_or_scrollable == false) { if(is_enabled) { @@ -1031,7 +1033,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) if(indev_reset_check(indev_act)) return; bool editable_or_scrollable = lv_obj_is_editable(indev_obj_act) || - lv_obj_has_flag(indev_obj_act, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_is_scrollable(indev_obj_act); /*On enter long press toggle edit mode.*/ if(editable_or_scrollable) { @@ -1085,7 +1087,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) if(data->key == LV_KEY_ENTER) { bool editable_or_scrollable = lv_obj_is_editable(indev_obj_act) || - lv_obj_has_flag(indev_obj_act, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_is_scrollable(indev_obj_act); /*The button was released on a non-editable object. Just send enter*/ if(editable_or_scrollable == false) { @@ -1262,7 +1264,7 @@ static void indev_proc_press(lv_indev_t * indev) } /*If there is an active object it's not scrolled and not press locked also search*/ else if(indev->pointer.scroll_obj == NULL && - lv_obj_has_flag(indev_obj_act, LV_OBJ_FLAG_PRESS_LOCK) == false) { + lv_obj_is_press_lock(indev_obj_act) == false) { indev_obj_act = pointer_search_obj(disp, &indev->pointer.act_point); new_obj_searched = true; } @@ -1716,7 +1718,7 @@ static void indev_proc_reset_query_handler(lv_indev_t * indev) static void indev_click_focus(lv_indev_t * indev) { /*Handle click focus*/ - if(lv_obj_has_flag(indev_obj_act, LV_OBJ_FLAG_CLICK_FOCUSABLE) == false) { + if(lv_obj_is_click_focusable(indev_obj_act) == false) { return; } @@ -1791,7 +1793,7 @@ static void indev_gesture(lv_indev_t * indev) lv_obj_t * gesture_obj = indev->pointer.act_obj; /*If gesture parent is active check recursively the gesture attribute*/ - while(gesture_obj && lv_obj_has_flag(gesture_obj, LV_OBJ_FLAG_GESTURE_BUBBLE)) { + while(gesture_obj && lv_obj_is_gesture_bubble(gesture_obj)) { gesture_obj = lv_obj_get_parent(gesture_obj); } diff --git a/src/indev/lv_indev_scroll.c b/src/indev/lv_indev_scroll.c index b34540a9f4..e9b1ed637c 100644 --- a/src/indev/lv_indev_scroll.c +++ b/src/indev/lv_indev_scroll.c @@ -129,7 +129,7 @@ void lv_indev_scroll_throw_handler(lv_indev_t * indev) int32_t scroll_throw = indev->scroll_throw; - if(lv_obj_has_flag(scroll_obj, LV_OBJ_FLAG_SCROLL_MOMENTUM) == false) { + if(lv_obj_is_scroll_momentum(scroll_obj) == false) { indev->pointer.scroll_throw_vect.y = 0; indev->pointer.scroll_throw_vect.x = 0; } @@ -329,10 +329,10 @@ lv_obj_t * lv_indev_find_scroll_obj(lv_indev_t * indev) hor_en = false; } - if(lv_obj_has_flag(obj_act, LV_OBJ_FLAG_SCROLLABLE) == false) { + if(lv_obj_is_scrollable(obj_act) == false) { /*If this object don't want to chain the scroll to the parent stop searching*/ - if(lv_obj_has_flag(obj_act, LV_OBJ_FLAG_SCROLL_CHAIN_HOR) == false && hor_en) break; - if(lv_obj_has_flag(obj_act, LV_OBJ_FLAG_SCROLL_CHAIN_VER) == false && ver_en) break; + if(lv_obj_is_scroll_chain_hor(obj_act) == false && hor_en) break; + if(lv_obj_is_scroll_chain_ver(obj_act) == false && ver_en) break; obj_act = lv_obj_get_parent(obj_act); continue; @@ -422,8 +422,8 @@ lv_obj_t * lv_indev_find_scroll_obj(lv_indev_t * indev) } /*If this object don't want to chain the scroll to the parent stop searching*/ - if(lv_obj_has_flag(obj_act, LV_OBJ_FLAG_SCROLL_CHAIN_HOR) == false && hor_en) break; - if(lv_obj_has_flag(obj_act, LV_OBJ_FLAG_SCROLL_CHAIN_VER) == false && ver_en) break; + if(lv_obj_is_scroll_chain_hor(obj_act) == false && hor_en) break; + if(lv_obj_is_scroll_chain_ver(obj_act) == false && ver_en) break; /*Try the parent*/ obj_act = lv_obj_get_parent(obj_act); @@ -448,7 +448,7 @@ static void init_scroll_limits(lv_indev_t * indev) { lv_obj_t * obj = indev->pointer.scroll_obj; /*If there no STOP allow scrolling anywhere*/ - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLL_ONE) == false) { + if(lv_obj_is_scroll_one(obj) == false) { lv_area_set(&indev->pointer.scroll_area, LV_COORD_MIN, LV_COORD_MIN, LV_COORD_MAX, LV_COORD_MAX); } /*With STOP limit the scrolling to the perv and next snap point*/ @@ -532,8 +532,8 @@ static int32_t find_snap_point_x(const lv_obj_t * obj, int32_t min, int32_t max, uint32_t child_cnt = lv_obj_get_child_count(obj); for(i = 0; i < child_cnt; i++) { lv_obj_t * child = obj->spec_attr->children[i]; - if(lv_obj_has_flag_any(child, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) continue; - if(lv_obj_has_flag(child, LV_OBJ_FLAG_SNAPPABLE)) { + if((lv_obj_is_hidden(child) || lv_obj_is_floating(child))) continue; + if(lv_obj_is_snappable(child)) { int32_t x_child = 0; int32_t x_parent = 0; switch(align) { @@ -588,8 +588,8 @@ static int32_t find_snap_point_y(const lv_obj_t * obj, int32_t min, int32_t max, uint32_t child_cnt = lv_obj_get_child_count(obj); for(i = 0; i < child_cnt; i++) { lv_obj_t * child = obj->spec_attr->children[i]; - if(lv_obj_has_flag_any(child, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) continue; - if(lv_obj_has_flag(child, LV_OBJ_FLAG_SNAPPABLE)) { + if((lv_obj_is_hidden(child) || lv_obj_is_floating(child))) continue; + if(lv_obj_is_snappable(child)) { int32_t y_child = 0; int32_t y_parent = 0; switch(align) { @@ -649,7 +649,7 @@ static int32_t elastic_diff(lv_obj_t * scroll_obj, int32_t diff, int32_t scroll_ if(diff == 0) return 0; /*Scroll back to the edge if required*/ - if(!lv_obj_has_flag(scroll_obj, LV_OBJ_FLAG_SCROLL_ELASTIC)) { + if(!lv_obj_is_scroll_elastic(scroll_obj)) { /* * If the scrolling object does not set the `LV_OBJ_FLAG_SCROLL_ELASTIC` flag, * make sure that `diff` will not cause the scroll to exceed the `start` or `end` boundary of the content. diff --git a/src/layouts/flex/lv_flex.c b/src/layouts/flex/lv_flex.c index 24a2dc5f5b..71329562d9 100644 --- a/src/layouts/flex/lv_flex.c +++ b/src/layouts/flex/lv_flex.c @@ -333,8 +333,8 @@ static int32_t find_track_end(lv_obj_t * cont, flex_t * f, int32_t item_start_id lv_obj_t * item = lv_obj_get_child(cont, item_id); bool first_item = true; while(item) { - if(!lv_obj_has_flag_any(item, LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) { - if(!first_item && lv_obj_has_flag(item, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK)) + if(!(lv_obj_is_ignore_layout(item) || lv_obj_is_hidden(item) || lv_obj_is_floating(item))) { + if(!first_item && lv_obj_is_flex_in_new_track(item)) break; uint8_t grow_value = lv_obj_get_style_flex_grow(item, LV_PART_MAIN); if(grow_value) { @@ -472,7 +472,7 @@ static void children_repos(lv_obj_t * cont, flex_t * f, int32_t item_first_id, i lv_obj_t * item = lv_obj_get_child(cont, item_first_id); /*Reposition the children*/ while(item && item_first_id != item_last_id) { - if(lv_obj_has_flag_any(item, LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) { + if((lv_obj_is_ignore_layout(item) || lv_obj_is_hidden(item) || lv_obj_is_floating(item))) { item = get_next_item(cont, f->rev, &item_first_id); continue; } diff --git a/src/layouts/grid/lv_grid.c b/src/layouts/grid/lv_grid.c index a7c7fef593..8640f28391 100644 --- a/src/layouts/grid/lv_grid.c +++ b/src/layouts/grid/lv_grid.c @@ -326,7 +326,7 @@ static lv_result_t calc_cols(lv_obj_t * cont, lv_grid_calc_t * c) uint32_t ci; for(ci = 0; ci < lv_obj_get_child_count(cont); ci++) { lv_obj_t * item = lv_obj_get_child(cont, ci); - if(lv_obj_has_flag_any(item, LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) continue; + if((lv_obj_is_ignore_layout(item) || lv_obj_is_hidden(item) || lv_obj_is_floating(item))) continue; uint32_t col_span = get_col_span(item); if(col_span != 1) continue; @@ -423,7 +423,7 @@ static lv_result_t calc_rows(lv_obj_t * cont, lv_grid_calc_t * c) uint32_t ci; for(ci = 0; ci < lv_obj_get_child_count(cont); ci++) { lv_obj_t * item = lv_obj_get_child(cont, ci); - if(lv_obj_has_flag_any(item, LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) continue; + if((lv_obj_is_ignore_layout(item) || lv_obj_is_hidden(item) || lv_obj_is_floating(item))) continue; uint32_t row_span = get_row_span(item); if(row_span != 1) continue; @@ -487,7 +487,7 @@ static lv_result_t calc_rows(lv_obj_t * cont, lv_grid_calc_t * c) */ static void item_repos(lv_obj_t * item, lv_grid_calc_t * c, item_repos_hint_t * hint) { - if(lv_obj_has_flag_any(item, LV_OBJ_FLAG_IGNORE_LAYOUT | LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_FLOATING)) return; + if(lv_obj_is_ignore_layout(item) || lv_obj_is_hidden(item) || lv_obj_is_floating(item)) return; int32_t col_span = get_col_span(item); if(col_span <= 0) { diff --git a/src/others/file_explorer/lv_file_explorer.c b/src/others/file_explorer/lv_file_explorer.c index 61c8ac0b67..b7b5a0fed5 100644 --- a/src/others/file_explorer/lv_file_explorer.c +++ b/src/others/file_explorer/lv_file_explorer.c @@ -306,7 +306,7 @@ static void lv_file_explorer_constructor(const lv_obj_class_t * class_p, lv_obj_ /*The area displayed above the file browse list(head)*/ explorer->head_area = lv_obj_create(explorer->browser_area); lv_obj_set_size(explorer->head_area, LV_PCT(100), LV_PCT(14)); - lv_obj_remove_flag(explorer->head_area, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(explorer->head_area, false); #if LV_FILE_EXPLORER_QUICK_ACCESS /*Two lists of quick access bar*/ @@ -503,7 +503,7 @@ static void quick_access_area_event_handler(lv_event_t * e) lv_file_explorer_t * explorer = (lv_file_explorer_t *)obj; if(code == LV_EVENT_LAYOUT_CHANGED) { - if(lv_obj_has_flag(area, LV_OBJ_FLAG_HIDDEN)) + if(lv_obj_is_hidden(area)) lv_obj_set_size(explorer->browser_area, LV_PCT(100), LV_PCT(100)); else lv_obj_set_size(explorer->browser_area, LV_PCT(FILE_EXPLORER_BROWSER_AREA_WIDTH), LV_PCT(100)); diff --git a/src/widgets/arc/lv_arc.c b/src/widgets/arc/lv_arc.c index 094e9d0f91..67cd45451a 100644 --- a/src/widgets/arc/lv_arc.c +++ b/src/widgets/arc/lv_arc.c @@ -546,8 +546,9 @@ static void lv_arc_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) arc->last_angle = arc->indic_angle_end; arc->in_out = CLICK_OUTSIDE_BG_ANGLES; - lv_obj_add_flag(obj, LV_OBJ_FLAG_CLICKABLE); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN | LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_clickable(obj, true); + lv_obj_set_scroll_chain(obj, false); + lv_obj_set_scrollable(obj, false); lv_obj_set_ext_click_area(obj, LV_DPI_DEF / 10); LV_TRACE_OBJ_CREATE("finished"); @@ -591,7 +592,7 @@ static void lv_arc_event(const lv_obj_class_t * class_p, lv_event_t * e) r -= indic_width; /*Add some more sensitive area if there is no advanced hit testing. * (Advanced hit testing is more precise)*/ - if(lv_obj_has_flag(obj, LV_OBJ_FLAG_ADV_HITTEST)) { + if(lv_obj_is_adv_hittest(obj)) { r -= indic_width; } else { diff --git a/src/widgets/arclabel/lv_arclabel.c b/src/widgets/arclabel/lv_arclabel.c index b256fb71eb..863f1f6e7c 100644 --- a/src/widgets/arclabel/lv_arclabel.c +++ b/src/widgets/arclabel/lv_arclabel.c @@ -389,7 +389,9 @@ static void lv_arclabel_constructor(const lv_obj_class_t * class_p, lv_obj_t * o lv_arclabel_set_text_static(obj, LV_ARCLABEL_DEFAULT_TEXT); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLL_CHAIN | LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_clickable(obj, false); + lv_obj_set_scroll_chain(obj, false); + lv_obj_set_scrollable(obj, false); LV_TRACE_OBJ_CREATE("finished"); } diff --git a/src/widgets/bar/lv_bar.c b/src/widgets/bar/lv_bar.c index 818a757afb..eae78e10e3 100644 --- a/src/widgets/bar/lv_bar.c +++ b/src/widgets/bar/lv_bar.c @@ -336,8 +336,8 @@ static void lv_bar_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_bar_init_anim(obj, &bar->cur_value_anim); lv_bar_init_anim(obj, &bar->start_value_anim); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CHECKABLE); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_checkable(obj, false); + lv_obj_set_scrollable(obj, false); lv_bar_set_value(obj, 0, LV_ANIM_OFF); LV_TRACE_OBJ_CREATE("finished"); diff --git a/src/widgets/button/lv_button.c b/src/widgets/button/lv_button.c index 497a34ce82..8960b62c8a 100644 --- a/src/widgets/button/lv_button.c +++ b/src/widgets/button/lv_button.c @@ -64,8 +64,8 @@ static void lv_button_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj LV_UNUSED(class_p); LV_TRACE_OBJ_CREATE("begin"); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scrollable(obj, false); + lv_obj_set_scroll_on_focus(obj, true); LV_TRACE_OBJ_CREATE("finished"); } diff --git a/src/widgets/calendar/lv_calendar.c b/src/widgets/calendar/lv_calendar.c index 7241265637..d6700675ba 100644 --- a/src/widgets/calendar/lv_calendar.c +++ b/src/widgets/calendar/lv_calendar.c @@ -356,7 +356,9 @@ static void lv_calendar_constructor(const lv_obj_class_t * class_p, lv_obj_t * o lv_buttonmatrix_set_button_ctrl_all(calendar->btnm, LV_BUTTONMATRIX_CTRL_CLICK_TRIG | LV_BUTTONMATRIX_CTRL_NO_REPEAT); lv_obj_add_event_cb(calendar->btnm, draw_task_added_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); lv_obj_set_width(calendar->btnm, lv_pct(100)); - lv_obj_add_flag(calendar->btnm, LV_OBJ_FLAG_EVENT_BUBBLE | LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + + lv_obj_set_event_bubble(calendar->btnm, true); + lv_obj_set_send_draw_task_events(calendar->btnm, true); lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_COLUMN); lv_obj_set_flex_grow(calendar->btnm, 1); diff --git a/src/widgets/calendar/lv_calendar_header_arrow.c b/src/widgets/calendar/lv_calendar_header_arrow.c index 352d7d3c33..4a81a8d119 100644 --- a/src/widgets/calendar/lv_calendar_header_arrow.c +++ b/src/widgets/calendar/lv_calendar_header_arrow.c @@ -79,7 +79,7 @@ static void my_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_obj_set_width(mo_prev, btn_size); lv_obj_add_event_cb(mo_prev, month_event_cb, LV_EVENT_CLICKED, NULL); - lv_obj_remove_flag(mo_prev, LV_OBJ_FLAG_CLICK_FOCUSABLE); + lv_obj_set_click_focusable(mo_prev, false); lv_obj_t * label = lv_label_create(obj); lv_label_set_long_mode(label, LV_LABEL_LONG_MODE_SCROLL_CIRCULAR); @@ -91,7 +91,7 @@ static void my_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_obj_set_size(mo_next, btn_size, btn_size); lv_obj_add_event_cb(mo_next, month_event_cb, LV_EVENT_CLICKED, NULL); - lv_obj_remove_flag(mo_next, LV_OBJ_FLAG_CLICK_FOCUSABLE); + lv_obj_set_click_focusable(mo_next, false); lv_obj_add_event_cb(obj, value_changed_event_cb, LV_EVENT_VALUE_CHANGED, NULL); /*Refresh the drop downs*/ diff --git a/src/widgets/checkbox/lv_checkbox.c b/src/widgets/checkbox/lv_checkbox.c index 333b3585a0..7b40337553 100644 --- a/src/widgets/checkbox/lv_checkbox.c +++ b/src/widgets/checkbox/lv_checkbox.c @@ -154,10 +154,10 @@ static void lv_checkbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * o cb->static_txt = 1; #endif - lv_obj_add_flag(obj, LV_OBJ_FLAG_CLICKABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_CHECKABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_clickable(obj, true); + lv_obj_set_checkable(obj, true); + lv_obj_set_scroll_on_focus(obj, true); + lv_obj_set_scrollable(obj, false); LV_TRACE_OBJ_CREATE("finished"); } diff --git a/src/widgets/dropdown/lv_dropdown.c b/src/widgets/dropdown/lv_dropdown.c index 014d48aeba..2c406d6424 100644 --- a/src/widgets/dropdown/lv_dropdown.c +++ b/src/widgets/dropdown/lv_dropdown.c @@ -548,7 +548,7 @@ void lv_dropdown_open(lv_obj_t * dropdown_obj) lv_obj_add_state(dropdown_obj, LV_STATE_CHECKED); lv_obj_set_parent(dropdown->list, lv_obj_get_screen(dropdown_obj)); lv_obj_move_to_index(dropdown->list, -1); - lv_obj_remove_flag(dropdown->list, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(dropdown->list, false); /*To allow styling the list*/ lv_obj_send_event(dropdown_obj, LV_EVENT_READY, NULL); @@ -645,7 +645,7 @@ void lv_dropdown_close(lv_obj_t * obj) lv_dropdown_t * dropdown = (lv_dropdown_t *)obj; dropdown->pr_opt_id = LV_DROPDOWN_PR_NONE; - lv_obj_add_flag(dropdown->list, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(dropdown->list, true); lv_obj_send_event(obj, LV_EVENT_CANCEL, NULL); } @@ -655,7 +655,7 @@ bool lv_dropdown_is_open(lv_obj_t * obj) LV_CHECK_OBJ(obj, MY_CLASS, return false); lv_dropdown_t * dropdown = (lv_dropdown_t *)obj; - return lv_obj_has_flag(dropdown->list, LV_OBJ_FLAG_HIDDEN) ? false : true; + return lv_obj_is_hidden(dropdown->list) ? false : true; } #if LV_USE_OBSERVER @@ -712,7 +712,7 @@ static void lv_dropdown_constructor(const lv_obj_class_t * class_p, lv_obj_t * o dropdown->option_cnt = 0; dropdown->dir = LV_DIR_BOTTOM; - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(obj, true); #if LV_WIDGETS_HAS_DEFAULT_VALUE lv_dropdown_set_options_static(obj, "Option 1\nOption 2\nOption 3"); #endif @@ -746,10 +746,10 @@ static void lv_dropdownlist_constructor(const lv_obj_class_t * class_p, lv_obj_t LV_UNUSED(class_p); LV_TRACE_OBJ_CREATE("begin"); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_IGNORE_LAYOUT); - lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_scroll_on_focus(obj, false); + lv_obj_set_click_focusable(obj, false); + lv_obj_set_ignore_layout(obj, true); + lv_obj_set_hidden(obj, true); lv_label_create(obj); diff --git a/src/widgets/image/lv_image.c b/src/widgets/image/lv_image.c index e669fee303..3c49823e1c 100644 --- a/src/widgets/image/lv_image.c +++ b/src/widgets/image/lv_image.c @@ -689,8 +689,8 @@ static void lv_image_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_point_set(&img->pivot, LV_PCT(50), LV_PCT(50)); /*Default pivot to image center*/ img->align = LV_IMAGE_ALIGN_CENTER; - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_ADV_HITTEST); + lv_obj_set_clickable(obj, false); + lv_obj_set_adv_hittest(obj, true); LV_TRACE_OBJ_CREATE("finished"); } diff --git a/src/widgets/ime/lv_ime_pinyin.c b/src/widgets/ime/lv_ime_pinyin.c index eb3395dd1c..49c373d6b9 100644 --- a/src/widgets/ime/lv_ime_pinyin.c +++ b/src/widgets/ime/lv_ime_pinyin.c @@ -538,7 +538,7 @@ static void lv_ime_pinyin_constructor(const lv_obj_class_t * class_p, lv_obj_t * lv_memzero(pinyin_ime->py_num, sizeof(pinyin_ime->py_num)); lv_memzero(pinyin_ime->py_pos, sizeof(pinyin_ime->py_pos)); - lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(obj, true); #if LV_IME_PINYIN_USE_DEFAULT_DICT init_pinyin_dict(obj, lv_ime_pinyin_def_dict); @@ -548,10 +548,10 @@ static void lv_ime_pinyin_constructor(const lv_obj_class_t * class_p, lv_obj_t * pinyin_ime->cand_panel = lv_buttonmatrix_create(lv_obj_get_parent(obj)); lv_buttonmatrix_set_map(pinyin_ime->cand_panel, (const char **)lv_btnm_def_pinyin_sel_map); lv_obj_set_size(pinyin_ime->cand_panel, LV_PCT(100), LV_PCT(5)); - lv_obj_add_flag(pinyin_ime->cand_panel, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(pinyin_ime->cand_panel, true); lv_buttonmatrix_set_one_checked(pinyin_ime->cand_panel, true); - lv_obj_remove_flag(pinyin_ime->cand_panel, LV_OBJ_FLAG_CLICK_FOCUSABLE); + lv_obj_set_click_focusable(pinyin_ime->cand_panel, false); /* Set cand_panel style*/ // Default style @@ -651,7 +651,7 @@ static void lv_ime_pinyin_kb_event(lv_event_t * e) if(lv_strcmp(txt, "Enter") == 0 || lv_strcmp(txt, LV_SYMBOL_NEW_LINE) == 0) { pinyin_ime_clear_data(obj); - lv_obj_add_flag(pinyin_ime->cand_panel, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(pinyin_ime->cand_panel, true); } else if(lv_strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) { // del input char @@ -666,7 +666,7 @@ static void lv_ime_pinyin_kb_event(lv_event_t * e) pinyin_ime->ta_count--; if(pinyin_ime->ta_count <= 0) { pinyin_ime_clear_data(obj); - lv_obj_add_flag(pinyin_ime->cand_panel, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(pinyin_ime->cand_panel, true); } else if(pinyin_ime->mode == LV_IME_PINYIN_MODE_K26) { pinyin_input_proc(obj); @@ -695,7 +695,7 @@ static void lv_ime_pinyin_kb_event(lv_event_t * e) lv_textarea_set_cursor_pos(ta, LV_TEXTAREA_CURSOR_LAST); lv_ime_pinyin_set_mode(obj, LV_IME_PINYIN_MODE_K9_NUMBER); lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER); - lv_obj_add_flag(pinyin_ime->cand_panel, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(pinyin_ime->cand_panel, true); } else if(lv_strcmp(txt, LV_SYMBOL_KEYBOARD) == 0) { if(pinyin_ime->mode == LV_IME_PINYIN_MODE_K26) { @@ -801,7 +801,7 @@ static void pinyin_input_proc(lv_obj_t * obj) } } - lv_obj_remove_flag(pinyin_ime->cand_panel, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(pinyin_ime->cand_panel, false); lv_obj_invalidate(pinyin_ime->cand_panel); } @@ -959,7 +959,7 @@ static void pinyin_ime_clear_data(lv_obj_t * obj) } lv_memzero(pinyin_ime->input_char, sizeof(pinyin_ime->input_char)); - lv_obj_add_flag(pinyin_ime->cand_panel, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(pinyin_ime->cand_panel, true); } #if LV_IME_PINYIN_USE_K9_MODE diff --git a/src/widgets/keyboard/lv_keyboard.c b/src/widgets/keyboard/lv_keyboard.c index fd3db0724c..f058cac776 100644 --- a/src/widgets/keyboard/lv_keyboard.c +++ b/src/widgets/keyboard/lv_keyboard.c @@ -441,7 +441,7 @@ const char * lv_keyboard_get_button_text(const lv_obj_t * obj, uint32_t btn_id) static void lv_keyboard_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) { LV_UNUSED(class_p); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE); + lv_obj_set_click_focusable(obj, false); lv_keyboard_t * keyboard = (lv_keyboard_t *)obj; keyboard->ta = NULL; diff --git a/src/widgets/label/lv_label.c b/src/widgets/label/lv_label.c index 08732d6be1..0648fd8eea 100644 --- a/src/widgets/label/lv_label.c +++ b/src/widgets/label/lv_label.c @@ -786,7 +786,7 @@ static void lv_label_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) label->sel_end = LV_DRAW_LABEL_NO_TXT_SEL; #endif - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(obj, false); lv_label_set_long_mode(obj, LV_LABEL_LONG_MODE_WRAP); lv_label_set_text(obj, LV_LABEL_DEFAULT_TEXT); diff --git a/src/widgets/line/lv_line.c b/src/widgets/line/lv_line.c index c84244f645..2d0fbe3e66 100644 --- a/src/widgets/line/lv_line.c +++ b/src/widgets/line/lv_line.c @@ -159,7 +159,7 @@ static void lv_line_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) line->y_inv = 0; line->point_array_is_mutable = 0; - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(obj, false); LV_TRACE_OBJ_CREATE("finished"); } diff --git a/src/widgets/menu/lv_menu.c b/src/widgets/menu/lv_menu.c index ebae254a2f..7cc3feeb3f 100644 --- a/src/widgets/menu/lv_menu.c +++ b/src/widgets/menu/lv_menu.c @@ -264,33 +264,33 @@ void lv_menu_set_page(lv_obj_t * obj, lv_obj_t * page) if(menu->sidebar_generated) { if(menu->mode_root_back_btn == LV_MENU_ROOT_BACK_BUTTON_ENABLED) { /* Root back btn is always shown if enabled*/ - lv_obj_remove_flag(menu->sidebar_header_back_btn, LV_OBJ_FLAG_HIDDEN); - lv_obj_add_flag(menu->sidebar_header_back_btn, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_hidden(menu->sidebar_header_back_btn, false); + lv_obj_set_clickable(menu->sidebar_header_back_btn, true); } else { - lv_obj_add_flag(menu->sidebar_header_back_btn, LV_OBJ_FLAG_HIDDEN); - lv_obj_remove_flag(menu->sidebar_header_back_btn, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_hidden(menu->sidebar_header_back_btn, true); + lv_obj_set_clickable(menu->sidebar_header_back_btn, false); } } if(menu->cur_depth >= 2) { - lv_obj_remove_flag(menu->main_header_back_btn, LV_OBJ_FLAG_HIDDEN); - lv_obj_add_flag(menu->main_header_back_btn, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_hidden(menu->main_header_back_btn, false); + lv_obj_set_clickable(menu->main_header_back_btn, true); } else { - lv_obj_add_flag(menu->main_header_back_btn, LV_OBJ_FLAG_HIDDEN); - lv_obj_remove_flag(menu->main_header_back_btn, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_hidden(menu->main_header_back_btn, true); + lv_obj_set_clickable(menu->main_header_back_btn, false); } } else { /* With sidebar disabled */ if(menu->cur_depth >= 2 || menu->mode_root_back_btn == LV_MENU_ROOT_BACK_BUTTON_ENABLED) { - lv_obj_remove_flag(menu->main_header_back_btn, LV_OBJ_FLAG_HIDDEN); - lv_obj_add_flag(menu->main_header_back_btn, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_hidden(menu->main_header_back_btn, false); + lv_obj_set_clickable(menu->main_header_back_btn, true); } else { - lv_obj_add_flag(menu->main_header_back_btn, LV_OBJ_FLAG_HIDDEN); - lv_obj_remove_flag(menu->main_header_back_btn, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_hidden(menu->main_header_back_btn, true); + lv_obj_set_clickable(menu->main_header_back_btn, false); } } @@ -315,8 +315,8 @@ void lv_menu_set_sidebar_page(lv_obj_t * obj, lv_obj_t * page) lv_obj_move_to_index(sidebar_cont, 1); lv_obj_set_size(sidebar_cont, LV_PCT(30), LV_PCT(100)); lv_obj_set_flex_flow(sidebar_cont, LV_FLEX_FLOW_COLUMN); - lv_obj_add_flag(sidebar_cont, LV_OBJ_FLAG_EVENT_BUBBLE); - lv_obj_remove_flag(sidebar_cont, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_event_bubble(sidebar_cont, true); + lv_obj_set_clickable(sidebar_cont, false); menu->sidebar = sidebar_cont; lv_obj_t * sidebar_header = lv_obj_class_create_obj(&lv_menu_sidebar_header_cont_class, sidebar_cont); @@ -324,13 +324,13 @@ void lv_menu_set_sidebar_page(lv_obj_t * obj, lv_obj_t * page) lv_obj_set_size(sidebar_header, LV_PCT(100), LV_SIZE_CONTENT); lv_obj_set_flex_flow(sidebar_header, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(sidebar_header, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_remove_flag(sidebar_header, LV_OBJ_FLAG_CLICKABLE); - lv_obj_add_flag(sidebar_header, LV_OBJ_FLAG_EVENT_BUBBLE); + lv_obj_set_clickable(sidebar_header, false); + lv_obj_set_event_bubble(sidebar_header, true); menu->sidebar_header = sidebar_header; lv_obj_t * sidebar_header_back_btn = lv_button_create(menu->sidebar_header); lv_obj_add_event_cb(sidebar_header_back_btn, lv_menu_back_event_cb, LV_EVENT_CLICKED, menu); - lv_obj_add_flag(sidebar_header_back_btn, LV_OBJ_FLAG_EVENT_BUBBLE); + lv_obj_set_event_bubble(sidebar_header_back_btn, true); lv_obj_set_flex_flow(sidebar_header_back_btn, LV_FLEX_FLOW_ROW); menu->sidebar_header_back_btn = sidebar_header_back_btn; @@ -338,7 +338,7 @@ void lv_menu_set_sidebar_page(lv_obj_t * obj, lv_obj_t * page) lv_image_set_src(sidebar_header_back_icon, LV_SYMBOL_LEFT); lv_obj_t * sidebar_header_title = lv_label_create(menu->sidebar_header); - lv_obj_add_flag(sidebar_header_title, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(sidebar_header_title, true); menu->sidebar_header_title = sidebar_header_title; menu->sidebar_generated = true; @@ -391,9 +391,9 @@ void lv_menu_set_load_page_event(lv_obj_t * menu, lv_obj_t * obj, lv_obj_t * pag { LV_CHECK_OBJ(menu, MY_CLASS, return); - lv_obj_add_flag(obj, LV_OBJ_FLAG_CLICKABLE); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_clickable(obj, true); + lv_obj_set_scrollable(obj, false); + lv_obj_set_scroll_on_focus(obj, true); /* Remove old event */ uint32_t i; @@ -593,7 +593,7 @@ static void lv_menu_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_ll_init(&(menu->history_ll), sizeof(lv_menu_history_t)); menu->storage = lv_obj_create(obj); - lv_obj_add_flag(menu->storage, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->storage, true); menu->sidebar = NULL; menu->sidebar_header = NULL; @@ -606,8 +606,8 @@ static void lv_menu_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_obj_set_height(main_cont, LV_PCT(100)); lv_obj_set_flex_grow(main_cont, 1); lv_obj_set_flex_flow(main_cont, LV_FLEX_FLOW_COLUMN); - lv_obj_add_flag(main_cont, LV_OBJ_FLAG_EVENT_BUBBLE); - lv_obj_remove_flag(main_cont, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_event_bubble(main_cont, true); + lv_obj_set_clickable(main_cont, false); menu->main = main_cont; lv_obj_t * main_header = lv_obj_class_create_obj(&lv_menu_main_header_cont_class, main_cont); @@ -615,14 +615,14 @@ static void lv_menu_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_obj_set_size(main_header, LV_PCT(100), LV_SIZE_CONTENT); lv_obj_set_flex_flow(main_header, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(main_header, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_remove_flag(main_header, LV_OBJ_FLAG_CLICKABLE); - lv_obj_add_flag(main_header, LV_OBJ_FLAG_EVENT_BUBBLE); + lv_obj_set_clickable(main_header, false); + lv_obj_set_event_bubble(main_header, true); menu->main_header = main_header; /* Create the default simple back btn and title */ lv_obj_t * main_header_back_btn = lv_button_create(menu->main_header); lv_obj_add_event_cb(main_header_back_btn, lv_menu_back_event_cb, LV_EVENT_CLICKED, menu); - lv_obj_add_flag(main_header_back_btn, LV_OBJ_FLAG_EVENT_BUBBLE); + lv_obj_set_event_bubble(main_header_back_btn, true); lv_obj_set_flex_flow(main_header_back_btn, LV_FLEX_FLOW_ROW); menu->main_header_back_btn = main_header_back_btn; @@ -630,7 +630,7 @@ static void lv_menu_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_image_set_src(main_header_back_icon, LV_SYMBOL_LEFT); lv_obj_t * main_header_title = lv_label_create(menu->main_header); - lv_obj_add_flag(main_header_title, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(main_header_title, true); menu->main_header_title = main_header_title; menu->main_page = NULL; @@ -663,7 +663,7 @@ static void lv_menu_page_constructor(const lv_obj_class_t * class_p, lv_obj_t * lv_obj_set_parent(obj, ((lv_menu_t *)menu)->storage); lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_COLUMN); lv_obj_set_flex_align(obj, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_add_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE); + lv_obj_set_event_bubble(obj, true); } static void lv_menu_page_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) @@ -684,14 +684,14 @@ static void lv_menu_cont_constructor(const lv_obj_class_t * class_p, lv_obj_t * LV_UNUSED(class_p); lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(obj, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(obj, false); } static void lv_menu_section_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) { LV_UNUSED(class_p); lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_COLUMN); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(obj, false); } static void lv_menu_refr_sidebar_header_mode(lv_obj_t * obj) @@ -722,10 +722,10 @@ static void lv_menu_refr_sidebar_header_mode(lv_obj_t * obj) lv_obj_refr_size(menu->sidebar_page); if(lv_obj_get_content_height(menu->sidebar_header) == 0) { - lv_obj_add_flag(menu->sidebar_header, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->sidebar_header, true); } else { - lv_obj_remove_flag(menu->sidebar_header, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->sidebar_header, false); } } @@ -758,10 +758,10 @@ static void lv_menu_refr_main_header_mode(lv_obj_t * obj) lv_obj_update_layout(menu->main_header); if(lv_obj_get_content_height(menu->main_header) == 0) { - lv_obj_add_flag(menu->main_header, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->main_header, true); } else { - lv_obj_remove_flag(menu->main_header, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->main_header, false); } } @@ -860,10 +860,10 @@ static void lv_menu_value_changed_event_cb(lv_event_t * e) if(main_page != NULL && menu->main_header_title != NULL) { if(main_page->title != NULL) { lv_label_set_text(menu->main_header_title, main_page->title); - lv_obj_remove_flag(menu->main_header_title, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->main_header_title, false); } else { - lv_obj_add_flag(menu->main_header_title, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->main_header_title, true); } } @@ -871,10 +871,10 @@ static void lv_menu_value_changed_event_cb(lv_event_t * e) if(sidebar_page != NULL && menu->sidebar_header_title != NULL) { if(sidebar_page->title != NULL) { lv_label_set_text(menu->sidebar_header_title, sidebar_page->title); - lv_obj_remove_flag(menu->sidebar_header_title, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->sidebar_header_title, false); } else { - lv_obj_add_flag(menu->sidebar_header_title, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(menu->sidebar_header_title, true); } } } diff --git a/src/widgets/msgbox/lv_msgbox.c b/src/widgets/msgbox/lv_msgbox.c index a28ddc59d9..ca1931e166 100644 --- a/src/widgets/msgbox/lv_msgbox.c +++ b/src/widgets/msgbox/lv_msgbox.c @@ -23,7 +23,6 @@ /********************* * DEFINES *********************/ -#define LV_MSGBOX_FLAG_AUTO_PARENT LV_OBJ_FLAG_WIDGET_1 /*Mark that the parent was automatically created*/ #define MY_CLASS (&lv_msgbox_class) /********************** @@ -114,7 +113,7 @@ lv_obj_t * lv_msgbox_create(lv_obj_t * parent) parent = lv_obj_class_create_obj(&lv_msgbox_backdrop_class, lv_layer_top()); LV_ASSERT_MALLOC(parent); lv_obj_class_init_obj(parent); - lv_obj_remove_flag(parent, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(parent, false); lv_obj_set_size(parent, LV_PCT(100), LV_PCT(100)); } @@ -125,7 +124,7 @@ lv_obj_t * lv_msgbox_create(lv_obj_t * parent) lv_msgbox_t * mbox = (lv_msgbox_t *)obj; lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_COLUMN); - if(auto_parent) lv_obj_add_flag(obj, LV_MSGBOX_FLAG_AUTO_PARENT); + mbox->auto_parent = auto_parent; mbox->content = lv_obj_class_create_obj(&lv_msgbox_content_class, obj); LV_ASSERT_MALLOC(mbox->content); @@ -153,7 +152,7 @@ lv_obj_t * lv_msgbox_add_title(lv_obj_t * obj, const char * title) lv_obj_set_size(mbox->header, lv_pct(100), lv_display_get_dpi(lv_obj_get_display(obj)) / 3); lv_obj_set_flex_flow(mbox->header, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(mbox->header, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_remove_flag(mbox->header, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(mbox->header, false); lv_obj_move_to_index(mbox->header, 0); } @@ -178,7 +177,7 @@ lv_obj_t * lv_msgbox_add_header_button(lv_obj_t * obj, const void * icon) LV_ASSERT_MALLOC(btn); if(btn == NULL) return NULL; lv_obj_class_init_obj(btn); - lv_obj_remove_flag(btn, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(btn, false); if(icon) { lv_obj_t * img = lv_image_create(btn); @@ -225,14 +224,14 @@ lv_obj_t * lv_msgbox_add_footer_button(lv_obj_t * obj, const char * text) lv_obj_set_flex_flow(mbox->footer, LV_FLEX_FLOW_ROW); lv_obj_set_flex_align(mbox->footer, LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_remove_flag(mbox->footer, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(mbox->footer, false); } lv_obj_t * btn = lv_obj_class_create_obj(&lv_msgbox_footer_button_class, mbox->footer); LV_ASSERT_MALLOC(btn); if(btn == NULL) return NULL; lv_obj_class_init_obj(btn); - lv_obj_remove_flag(btn, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(btn, false); if(text) { lv_obj_t * label = lv_label_create(btn); @@ -280,13 +279,17 @@ lv_obj_t * lv_msgbox_get_title(lv_obj_t * obj) void lv_msgbox_close(lv_obj_t * obj) { - if(lv_obj_has_flag(obj, LV_MSGBOX_FLAG_AUTO_PARENT)) lv_obj_delete(lv_obj_get_parent(obj)); + LV_CHECK_OBJ(obj, MY_CLASS, return); + lv_msgbox_t * mbox = (lv_msgbox_t *)obj; + if(mbox->auto_parent) lv_obj_delete(lv_obj_get_parent(obj)); else lv_obj_delete(obj); } void lv_msgbox_close_async(lv_obj_t * obj) { - if(lv_obj_has_flag(obj, LV_MSGBOX_FLAG_AUTO_PARENT)) lv_obj_delete_async(lv_obj_get_parent(obj)); + LV_CHECK_OBJ(obj, MY_CLASS, return); + lv_msgbox_t * mbox = (lv_msgbox_t *)obj; + if(mbox->auto_parent) lv_obj_delete_async(lv_obj_get_parent(obj)); else lv_obj_delete_async(obj); } diff --git a/src/widgets/msgbox/lv_msgbox_private.h b/src/widgets/msgbox/lv_msgbox_private.h index 448a0d300f..0b75c8e1d7 100644 --- a/src/widgets/msgbox/lv_msgbox_private.h +++ b/src/widgets/msgbox/lv_msgbox_private.h @@ -37,6 +37,7 @@ struct _lv_msgbox_t { lv_obj_t * content; lv_obj_t * footer; lv_obj_t * title; + uint32_t auto_parent : 1; /**< Mark that the parent was automatically created*/ }; diff --git a/src/widgets/property/lv_obj_properties.c b/src/widgets/property/lv_obj_properties.c index 01300797d5..1fde789789 100644 --- a/src/widgets/property/lv_obj_properties.c +++ b/src/widgets/property/lv_obj_properties.c @@ -14,13 +14,19 @@ * Generated code from properties.py */ /* *INDENT-OFF* */ -const lv_property_name_t lv_obj_property_names[76] = { +const lv_property_name_t lv_obj_property_names[100] = { + {"adv_hittest", LV_PROPERTY_OBJ_ADV_HITTEST,}, {"align", LV_PROPERTY_OBJ_ALIGN,}, + {"checkable", LV_PROPERTY_OBJ_CHECKABLE,}, {"child_count", LV_PROPERTY_OBJ_CHILD_COUNT,}, + {"click_focusable", LV_PROPERTY_OBJ_CLICK_FOCUSABLE,}, + {"clickable", LV_PROPERTY_OBJ_CLICKABLE,}, {"content_height", LV_PROPERTY_OBJ_CONTENT_HEIGHT,}, {"content_width", LV_PROPERTY_OBJ_CONTENT_WIDTH,}, {"display", LV_PROPERTY_OBJ_DISPLAY,}, + {"event_bubble", LV_PROPERTY_OBJ_EVENT_BUBBLE,}, {"event_count", LV_PROPERTY_OBJ_EVENT_COUNT,}, + {"event_trickle", LV_PROPERTY_OBJ_EVENT_TRICKLE,}, {"ext_draw_size", LV_PROPERTY_OBJ_EXT_DRAW_SIZE,}, {"flag_adv_hittest", LV_PROPERTY_OBJ_FLAG_ADV_HITTEST,}, {"flag_checkable", LV_PROPERTY_OBJ_FLAG_CHECKABLE,}, @@ -56,22 +62,39 @@ const lv_property_name_t lv_obj_property_names[76] = { {"flag_user_4", LV_PROPERTY_OBJ_FLAG_USER_4,}, {"flag_widget_1", LV_PROPERTY_OBJ_FLAG_WIDGET_1,}, {"flag_widget_2", LV_PROPERTY_OBJ_FLAG_WIDGET_2,}, + {"flex_in_new_track", LV_PROPERTY_OBJ_FLEX_IN_NEW_TRACK,}, + {"floating", LV_PROPERTY_OBJ_FLOATING,}, + {"gesture_bubble", LV_PROPERTY_OBJ_GESTURE_BUBBLE,}, {"h", LV_PROPERTY_OBJ_H,}, + {"hidden", LV_PROPERTY_OBJ_HIDDEN,}, + {"ignore_layout", LV_PROPERTY_OBJ_IGNORE_LAYOUT,}, {"index", LV_PROPERTY_OBJ_INDEX,}, {"layout", LV_PROPERTY_OBJ_LAYOUT,}, + {"overflow_visible", LV_PROPERTY_OBJ_OVERFLOW_VISIBLE,}, {"parent", LV_PROPERTY_OBJ_PARENT,}, + {"press_lock", LV_PROPERTY_OBJ_PRESS_LOCK,}, {"screen", LV_PROPERTY_OBJ_SCREEN,}, {"scroll_bottom", LV_PROPERTY_OBJ_SCROLL_BOTTOM,}, + {"scroll_chain_hor", LV_PROPERTY_OBJ_SCROLL_CHAIN_HOR,}, + {"scroll_chain_ver", LV_PROPERTY_OBJ_SCROLL_CHAIN_VER,}, {"scroll_dir", LV_PROPERTY_OBJ_SCROLL_DIR,}, + {"scroll_elastic", LV_PROPERTY_OBJ_SCROLL_ELASTIC,}, {"scroll_end", LV_PROPERTY_OBJ_SCROLL_END,}, {"scroll_left", LV_PROPERTY_OBJ_SCROLL_LEFT,}, + {"scroll_momentum", LV_PROPERTY_OBJ_SCROLL_MOMENTUM,}, + {"scroll_on_focus", LV_PROPERTY_OBJ_SCROLL_ON_FOCUS,}, + {"scroll_one", LV_PROPERTY_OBJ_SCROLL_ONE,}, {"scroll_right", LV_PROPERTY_OBJ_SCROLL_RIGHT,}, {"scroll_snap_x", LV_PROPERTY_OBJ_SCROLL_SNAP_X,}, {"scroll_snap_y", LV_PROPERTY_OBJ_SCROLL_SNAP_Y,}, {"scroll_top", LV_PROPERTY_OBJ_SCROLL_TOP,}, + {"scroll_with_arrow", LV_PROPERTY_OBJ_SCROLL_WITH_ARROW,}, {"scroll_x", LV_PROPERTY_OBJ_SCROLL_X,}, {"scroll_y", LV_PROPERTY_OBJ_SCROLL_Y,}, + {"scrollable", LV_PROPERTY_OBJ_SCROLLABLE,}, {"scrollbar_mode", LV_PROPERTY_OBJ_SCROLLBAR_MODE,}, + {"send_draw_task_events", LV_PROPERTY_OBJ_SEND_DRAW_TASK_EVENTS,}, + {"snappable", LV_PROPERTY_OBJ_SNAPPABLE,}, {"state_alt", LV_PROPERTY_OBJ_STATE_ALT,}, {"state_any", LV_PROPERTY_OBJ_STATE_ANY,}, {"state_checked", LV_PROPERTY_OBJ_STATE_CHECKED,}, @@ -84,6 +107,7 @@ const lv_property_name_t lv_obj_property_names[76] = { {"state_pressed", LV_PROPERTY_OBJ_STATE_PRESSED,}, {"state_scrolled", LV_PROPERTY_OBJ_STATE_SCROLLED,}, {"state_start", LV_PROPERTY_OBJ_STATE_START,}, + {"state_trickle", LV_PROPERTY_OBJ_STATE_TRICKLE,}, {"state_user_1", LV_PROPERTY_OBJ_STATE_USER_1,}, {"state_user_2", LV_PROPERTY_OBJ_STATE_USER_2,}, {"state_user_3", LV_PROPERTY_OBJ_STATE_USER_3,}, diff --git a/src/widgets/roller/lv_roller.c b/src/widgets/roller/lv_roller.c index 44d9696873..f30d824fec 100644 --- a/src/widgets/roller/lv_roller.c +++ b/src/widgets/roller/lv_roller.c @@ -366,8 +366,8 @@ static void lv_roller_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj roller->sel_opt_id = 0; roller->sel_opt_id_ori = 0; - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_VER); + lv_obj_set_scrollable(obj, false); + lv_obj_set_scroll_chain_ver(obj, false); LV_LOG_INFO("begin"); lv_obj_t * label = lv_obj_class_create_obj(&lv_roller_label_class, obj); diff --git a/src/widgets/scale/lv_scale.c b/src/widgets/scale/lv_scale.c index c8d3513929..5ef082feb6 100644 --- a/src/widgets/scale/lv_scale.c +++ b/src/widgets/scale/lv_scale.c @@ -694,7 +694,7 @@ static void lv_scale_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) scale->txt_src = NULL; lv_array_init(&scale->needles, 0, sizeof(lv_scale_needle_t)); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(obj, false); LV_TRACE_OBJ_CREATE("finished"); } diff --git a/src/widgets/slider/lv_slider.c b/src/widgets/slider/lv_slider.c index 86e69328cb..5cd2565e5d 100644 --- a/src/widgets/slider/lv_slider.c +++ b/src/widgets/slider/lv_slider.c @@ -243,9 +243,9 @@ static void lv_slider_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj slider->dragging = 0U; slider->left_knob_focus = 0U; - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_chain_hor(obj, false); + lv_obj_set_scrollable(obj, false); + lv_obj_set_scroll_on_focus(obj, true); lv_obj_set_ext_click_area(obj, LV_DPX(8)); } @@ -316,8 +316,8 @@ static void lv_slider_event(const lv_obj_class_t * class_p, lv_event_t * e) } } else if(indev_type == LV_INDEV_TYPE_POINTER) { - if(is_slider_horizontal(obj)) lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_VER); - else lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR); + if(is_slider_horizontal(obj)) lv_obj_set_scroll_chain_ver(obj, true); + else lv_obj_set_scroll_chain_hor(obj, true); } } else if(code == LV_EVENT_FOCUSED) { @@ -328,12 +328,12 @@ static void lv_slider_event(const lv_obj_class_t * class_p, lv_event_t * e) } else if(code == LV_EVENT_SIZE_CHANGED) { if(is_slider_horizontal(obj)) { - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_VER); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR); + lv_obj_set_scroll_chain_ver(obj, true); + lv_obj_set_scroll_chain_hor(obj, false); } else { - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_VER); + lv_obj_set_scroll_chain_hor(obj, true); + lv_obj_set_scroll_chain_ver(obj, false); } lv_obj_refresh_ext_draw_size(obj); } @@ -639,9 +639,9 @@ static void update_knob_pos(lv_obj_t * obj, bool check_drag) if(*slider->value_to_set != new_value) { *slider->value_to_set = new_value; if(is_hor) - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_VER); + lv_obj_set_scroll_chain_ver(obj, false); else - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR); + lv_obj_set_scroll_chain_hor(obj, false); lv_obj_invalidate(obj); lv_result_t res = lv_obj_send_event(obj, LV_EVENT_VALUE_CHANGED, NULL); diff --git a/src/widgets/spinner/lv_spinner.c b/src/widgets/spinner/lv_spinner.c index e68bc6d352..2671820423 100644 --- a/src/widgets/spinner/lv_spinner.c +++ b/src/widgets/spinner/lv_spinner.c @@ -147,7 +147,7 @@ static void lv_spinner_constructor(const lv_obj_class_t * class_p, lv_obj_t * ob LV_UNUSED(class_p); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(obj, false); lv_spinner_set_anim_params(obj, DEF_TIME, DEF_ARC_ANGLE); } diff --git a/src/widgets/switch/lv_switch.c b/src/widgets/switch/lv_switch.c index c63af4c58a..0a69d432e2 100644 --- a/src/widgets/switch/lv_switch.c +++ b/src/widgets/switch/lv_switch.c @@ -128,9 +128,9 @@ static void lv_switch_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj sw->anim_state = LV_SWITCH_ANIM_STATE_INV; sw->orientation = LV_SWITCH_ORIENTATION_AUTO; - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_CHECKABLE); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scrollable(obj, false); + lv_obj_set_checkable(obj, true); + lv_obj_set_scroll_on_focus(obj, true); LV_TRACE_OBJ_CREATE("finished"); } diff --git a/src/widgets/tabview/lv_tabview.c b/src/widgets/tabview/lv_tabview.c index 43dee9a594..f89d5d8aeb 100644 --- a/src/widgets/tabview/lv_tabview.c +++ b/src/widgets/tabview/lv_tabview.c @@ -346,8 +346,8 @@ static void lv_tabview_constructor(const lv_obj_class_t * class_p, lv_obj_t * ob } lv_tabview_set_tab_bar_position(obj, default_direction); - lv_obj_add_flag(cont, LV_OBJ_FLAG_SCROLL_ONE); - lv_obj_remove_flag(cont, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_one(cont, true); + lv_obj_set_scroll_on_focus(cont, false); } static void lv_tabview_event(const lv_obj_class_t * class_p, lv_event_t * e) diff --git a/src/widgets/textarea/lv_textarea.c b/src/widgets/textarea/lv_textarea.c index 9a3b4a004e..2a733ebe7c 100644 --- a/src/widgets/textarea/lv_textarea.c +++ b/src/widgets/textarea/lv_textarea.c @@ -848,8 +848,8 @@ static void lv_textarea_constructor(const lv_obj_class_t * class_p, lv_obj_t * o lv_label_set_text(ta->label, ""); lv_obj_add_event_cb(ta->label, label_event_cb, LV_EVENT_STYLE_CHANGED, NULL); lv_obj_add_event_cb(ta->label, label_event_cb, LV_EVENT_SIZE_CHANGED, NULL); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS); - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_WITH_ARROW); + lv_obj_set_scroll_on_focus(obj, true); + lv_obj_set_scroll_with_arrow(obj, false); lv_textarea_set_cursor_pos(obj, 0); @@ -1211,7 +1211,7 @@ static void update_cursor_position_on_click(lv_event_t * e) ta->sel_start = char_id_at_click; ta->sel_end = LV_LABEL_TEXT_SELECTION_OFF; ta->text_sel_in_prog = 1; - lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); + lv_obj_set_scroll_chain(obj, false); } else if(ta->text_sel_in_prog && code == LV_EVENT_PRESSING) { /*Input device may be moving. Store the end position*/ @@ -1219,7 +1219,7 @@ static void update_cursor_position_on_click(lv_event_t * e) } else if(ta->text_sel_in_prog && (code == LV_EVENT_PRESS_LOST || code == LV_EVENT_RELEASED)) { /*Input device is released. Check if anything was selected.*/ - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); + lv_obj_set_scroll_chain(obj, true); } } diff --git a/src/widgets/tileview/lv_tileview.c b/src/widgets/tileview/lv_tileview.c index c2dd2453d6..65602dabb3 100644 --- a/src/widgets/tileview/lv_tileview.c +++ b/src/widgets/tileview/lv_tileview.c @@ -136,7 +136,7 @@ static void lv_tileview_constructor(const lv_obj_class_t * class_p, lv_obj_t * o LV_UNUSED(class_p); lv_obj_set_size(obj, LV_PCT(100), LV_PCT(100)); lv_obj_add_event_cb(obj, tileview_event_cb, LV_EVENT_SCROLL_END, NULL); - lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ONE); + lv_obj_set_scroll_one(obj, true); lv_obj_set_scroll_snap_x(obj, LV_SCROLL_SNAP_CENTER); lv_obj_set_scroll_snap_y(obj, LV_SCROLL_SNAP_CENTER); } diff --git a/tests/src/test_cases/draw/test_clip_corner.c b/tests/src/test_cases/draw/test_clip_corner.c index e839be83c8..afeb4383fa 100644 --- a/tests/src/test_cases/draw/test_clip_corner.c +++ b/tests/src/test_cases/draw/test_clip_corner.c @@ -54,7 +54,7 @@ void test_clip_corner_1(void) create_panel(100, false); lv_obj_t * cont = create_panel(0, true); - lv_obj_add_flag(cont, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(cont, true); create_panel(10, true); create_panel(30, true); create_panel(100, true); diff --git a/tests/src/test_cases/draw/test_draw_label.c b/tests/src/test_cases/draw/test_draw_label.c index 05d81b5a68..aecd26da79 100644 --- a/tests/src/test_cases/draw/test_draw_label.c +++ b/tests/src/test_cases/draw/test_draw_label.c @@ -103,7 +103,7 @@ static void all_decor_labels_create(lv_text_decor_t decor) lv_obj_t * label; label = decor_label_create(decor, LV_TEXT_ALIGN_LEFT, LV_OPA_COVER); - lv_obj_add_flag(label, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(label, true); label = decor_label_create(decor, LV_TEXT_ALIGN_CENTER, LV_OPA_COVER); label = decor_label_create(decor, LV_TEXT_ALIGN_RIGHT, LV_OPA_COVER); diff --git a/tests/src/test_cases/libs/test_gif.c b/tests/src/test_cases/libs/test_gif.c index 42ae8b81c4..a9faf96c51 100644 --- a/tests/src/test_cases/libs/test_gif.c +++ b/tests/src/test_cases/libs/test_gif.c @@ -75,7 +75,7 @@ void test_gif_decode_ignore_invisible(void) lv_gif_set_auto_pause_invisible(gif, true); - lv_obj_add_flag(gif, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(gif, true); lv_gif_set_src(gif, "A:src/test_assets/totoro_transparent.gif"); @@ -83,7 +83,7 @@ void test_gif_decode_ignore_invisible(void) lv_gif_set_auto_pause_invisible(gif, false); - lv_obj_remove_flag(gif, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(gif, false); lv_gif_set_src(gif, "A:src/test_assets/totoro_transparent.gif"); diff --git a/tests/src/test_cases/libs/test_libjpeg_turbo.c b/tests/src/test_cases/libs/test_libjpeg_turbo.c index 7d410fd816..fecbace395 100644 --- a/tests/src/test_cases/libs/test_libjpeg_turbo.c +++ b/tests/src/test_cases/libs/test_libjpeg_turbo.c @@ -69,7 +69,7 @@ void test_jpg_2(void) TEST_ASSERT_EQUAL_SCREENSHOT("libs/jpg_2.png"); size_t mem_before = lv_test_get_free_mem(); - for(uint32_t i = 0; i < 20; i++) { + for(uint32_t i = 0; i < 40; i++) { create_images(); lv_obj_invalidate(lv_screen_active()); @@ -78,7 +78,7 @@ void test_jpg_2(void) TEST_ASSERT_EQUAL_SCREENSHOT("libs/jpg_2.png"); - TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 64); + TEST_ASSERT_MEM_LEAK_LESS_THAN(mem_before, 128); } void test_jpg_cmyk(void) diff --git a/tests/src/test_cases/libs/test_svg_decoder.c b/tests/src/test_cases/libs/test_svg_decoder.c index 3780d6711f..ca0f77e3d6 100644 --- a/tests/src/test_cases/libs/test_svg_decoder.c +++ b/tests/src/test_cases/libs/test_svg_decoder.c @@ -79,7 +79,7 @@ void svg_snapshot(void) lv_obj_center(img); lv_draw_buf_t * draw_buf = lv_snapshot_take(img, LV_COLOR_FORMAT_ARGB8888); - lv_obj_add_flag(img, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(img, true); lv_obj_t * img2 = lv_image_create(lv_screen_active()); lv_image_set_src(img2, draw_buf); lv_obj_set_style_outline_width(img2, 2, 0); diff --git a/tests/src/test_cases/test_align_flex.c b/tests/src/test_cases/test_align_flex.c index 095914a28b..26605bf374 100644 --- a/tests/src/test_cases/test_align_flex.c +++ b/tests/src/test_cases/test_align_flex.c @@ -94,7 +94,7 @@ void test_wrap_grow_min_width(void) lv_obj_set_flex_grow(obj, grow); if(i == 9) { - lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(obj, true); } lv_obj_t * label = lv_label_create(obj); @@ -124,7 +124,7 @@ void test_wrap_grow_min_width_content(void) } if(i == 12) { - lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(obj, true); } lv_obj_t * label = lv_label_create(obj); @@ -149,7 +149,7 @@ void test_wrap_grow_min_width_pct(void) lv_obj_set_flex_grow(obj, grow); if(i == 9) { - lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(obj, true); } lv_obj_t * label = lv_label_create(obj); @@ -174,7 +174,7 @@ void test_wrap_grow_max_width_content(void) lv_obj_set_flex_grow(obj, grow); if(i == 9) { - lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(obj, true); } lv_obj_t * label = lv_label_create(obj); @@ -199,7 +199,7 @@ void test_wrap_grow_max_width_pct(void) lv_obj_set_flex_grow(obj, grow); if(i == 9) { - lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(obj, true); } lv_obj_t * label = lv_label_create(obj); @@ -704,7 +704,7 @@ static lv_obj_t * cont_row_5_create(void) static void hide(lv_obj_t * cont, uint32_t idx) { - lv_obj_add_flag(lv_obj_get_child(cont, idx), LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(lv_obj_get_child(cont, idx), true); } void test_flex_hide_items(void) @@ -756,7 +756,7 @@ void test_flex_hide_item_first_grow(void) lv_obj_t * label1 = lv_label_create(cont); lv_label_set_text(label1, "Hidden"); - lv_obj_set_flag(label1, LV_OBJ_FLAG_HIDDEN, true); + lv_obj_set_hidden(label1, true); lv_obj_set_style_bg_color(label1, lv_color_hex3(0xf00), 0); lv_obj_set_style_bg_opa(label1, LV_OPA_30, 0); diff --git a/tests/src/test_cases/test_bindings.c b/tests/src/test_cases/test_bindings.c index 746dc1640c..0cad1e1b94 100644 --- a/tests/src/test_cases/test_bindings.c +++ b/tests/src/test_cases/test_bindings.c @@ -142,7 +142,7 @@ static void create_ui(void) } if(i == 1) { /*Use flags*/ - lv_obj_add_flag(btn, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(btn, true); } if(i == 2) { lv_obj_t * btn_label = lv_obj_get_child(btn, 0); @@ -182,12 +182,12 @@ static void create_ui(void) img = lv_image_create(scr); lv_image_set_src(img, &test_img_lvgl_logo_jpg); lv_obj_align(img, LV_ALIGN_BOTTOM_RIGHT, -20, -20); - lv_obj_add_flag(img, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(img, true); img = lv_image_create(scr); lv_image_set_src(img, "A:src/test_assets/test_img_lvgl_logo.png"); lv_obj_set_pos(img, 500, 420); - lv_obj_add_flag(img, LV_OBJ_FLAG_IGNORE_LAYOUT); + lv_obj_set_ignore_layout(img, true); lv_image_set_rotation(img, 200); lv_image_set_scale_x(img, 400); } diff --git a/tests/src/test_cases/test_event_trickle.c b/tests/src/test_cases/test_event_trickle.c index 09ebccd76e..2a027f9ede 100644 --- a/tests/src/test_cases/test_event_trickle.c +++ b/tests/src/test_cases/test_event_trickle.c @@ -17,7 +17,7 @@ void test_event_trickle_basic(void) { /*Create a parent container*/ lv_obj_t * parent = lv_obj_create(lv_screen_active()); - lv_obj_add_flag(parent, LV_OBJ_FLAG_EVENT_TRICKLE); + lv_obj_set_event_trickle(parent, true); lv_obj_add_event_cb(parent, test_event_cb, LV_EVENT_CLICKED, NULL); /*Create children*/ @@ -45,7 +45,7 @@ void test_event_trickle_stop(void) { /*Create a parent container*/ lv_obj_t * parent = lv_obj_create(lv_screen_active()); - lv_obj_add_flag(parent, LV_OBJ_FLAG_EVENT_TRICKLE); + lv_obj_set_event_trickle(parent, true); /*Add event handler that stops trickle down*/ lv_obj_add_event_cb(parent, test_event_cb, LV_EVENT_CLICKED, NULL); diff --git a/tests/src/test_cases/test_flex_grow.c b/tests/src/test_cases/test_flex_grow.c index bc1bc8949e..4a5eb96d5e 100644 --- a/tests/src/test_cases/test_flex_grow.c +++ b/tests/src/test_cases/test_flex_grow.c @@ -47,7 +47,7 @@ void test_grid_fr(void) lv_obj_set_style_bg_color(child_grow_1, lv_palette_main(LV_PALETTE_BLUE), LV_PART_MAIN); lv_obj_set_size(child_grow_1, 1, 10); lv_obj_set_flex_grow(child_grow_1, grow_1); - lv_obj_add_flag(child_grow_1, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); + lv_obj_set_flex_in_new_track(child_grow_1, true); lv_obj_t * child_grow_2 = lv_obj_create(container); simple_style(child_grow_2); diff --git a/tests/src/test_cases/test_gesture_pinch.c b/tests/src/test_cases/test_gesture_pinch.c index 076cd9e642..00d7618b12 100644 --- a/tests/src/test_cases/test_gesture_pinch.c +++ b/tests/src/test_cases/test_gesture_pinch.c @@ -33,7 +33,7 @@ void test_gesture_pinch(void) lv_memzero(&counts, sizeof(counts)); lv_obj_t * label = lv_label_create(lv_screen_active()); - lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(label, true); lv_obj_set_size(label, 320, 320); lv_obj_add_event_cb(label, gesture_event_cb, LV_EVENT_GESTURE, &counts); diff --git a/tests/src/test_cases/test_group.c b/tests/src/test_cases/test_group.c index 4f9fd279e2..0bdd6a70d1 100644 --- a/tests/src/test_cases/test_group.c +++ b/tests/src/test_cases/test_group.c @@ -159,7 +159,7 @@ void test_group_remove_focused_obj_sends_defocused_when_others_unfocusable(void) lv_group_add_obj(group, obj_disabled); lv_group_add_obj(group, obj_focused); - lv_obj_add_flag(obj_hidden, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(obj_hidden, true); lv_obj_add_state(obj_disabled, LV_STATE_DISABLED); lv_group_focus_obj(obj_focused); diff --git a/tests/src/test_cases/test_hover.c b/tests/src/test_cases/test_hover.c index 899977ac59..eed4c72327 100644 --- a/tests/src/test_cases/test_hover.c +++ b/tests/src/test_cases/test_hover.c @@ -56,7 +56,7 @@ void test_hover_basic(void) lv_obj_set_size(label, 200, 20); lv_label_set_text(label, "Clickable text can be hovered!"); lv_obj_set_pos(label, 100, 20); - lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_clickable(label, true); lv_obj_set_style_text_color(label, lv_color_hex(0x5be1b6), LV_PART_MAIN | LV_STATE_HOVERED); /*Set hover callback*/ diff --git a/tests/src/test_cases/test_indev.c b/tests/src/test_cases/test_indev.c index 5cc73c64ef..0aef2c855c 100644 --- a/tests/src/test_cases/test_indev.c +++ b/tests/src/test_cases/test_indev.c @@ -156,7 +156,7 @@ void test_indev_scroll_between_two_buttons_with_and_without_press_lock(void) uint32_t pressed_lost_count_2 = 0; lv_obj_t * btn1 = lv_button_create(lv_screen_active()); - lv_obj_remove_flag(btn1, LV_OBJ_FLAG_PRESS_LOCK); + lv_obj_set_press_lock(btn1, false); lv_obj_set_size(btn1, 120, 100); lv_obj_set_pos(btn1, 300, 200); lv_obj_add_event_cb(btn1, indev_scroll_press_event_cb, LV_EVENT_PRESSED, diff --git a/tests/src/test_cases/test_indev_scroll_rotation.c b/tests/src/test_cases/test_indev_scroll_rotation.c index b301cb06a5..7d62ef66af 100644 --- a/tests/src/test_cases/test_indev_scroll_rotation.c +++ b/tests/src/test_cases/test_indev_scroll_rotation.c @@ -45,7 +45,7 @@ void setUp(void) container = lv_obj_create(lv_screen_active()); lv_obj_set_size(container, 200, 200); lv_obj_center(container); - lv_obj_add_flag(container, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(container, true); lv_obj_set_scroll_dir(container, LV_DIR_HOR); lv_obj_add_event_cb(container, scroll_begin_cb, LV_EVENT_SCROLL_BEGIN, NULL); @@ -56,22 +56,22 @@ void setUp(void) /* List: vertical scrollable, remove SCROLL_CHAIN_VER (like widget_list) */ list_obj = lv_obj_create(container); lv_obj_set_size(list_obj, 200, 200); - lv_obj_add_flag(list_obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(list_obj, true); lv_obj_set_scroll_dir(list_obj, LV_DIR_VER); - lv_obj_remove_flag(list_obj, LV_OBJ_FLAG_SCROLL_CHAIN_VER); + lv_obj_set_scroll_chain_ver(list_obj, false); /* Rotated container (like barcode div with rotate 90deg) */ rotated_obj = lv_obj_create(list_obj); lv_obj_set_size(rotated_obj, 100, 50); lv_obj_center(rotated_obj); lv_obj_set_style_transform_rotation(rotated_obj, 900, LV_PART_MAIN); - lv_obj_remove_flag(rotated_obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(rotated_obj, false); /* Inner touch target (like barcode obj) */ inner_obj = lv_obj_create(rotated_obj); lv_obj_set_size(inner_obj, 80, 30); lv_obj_center(inner_obj); - lv_obj_remove_flag(inner_obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_set_scrollable(inner_obj, false); lv_test_wait(50); } diff --git a/tests/src/test_cases/test_observer.c b/tests/src/test_cases/test_observer.c index 4fe8065fba..dfc4577a9f 100644 --- a/tests/src/test_cases/test_observer.c +++ b/tests/src/test_cases/test_observer.c @@ -68,14 +68,14 @@ void test_object_observer_add_remove(void) lv_observer_t * observer = lv_obj_bind_flag_if_eq(obj, &subject, LV_OBJ_FLAG_HIDDEN, 5); - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 5); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); lv_observer_remove(observer); lv_subject_set_int(&subject, 1); /* This shouldn't get updated */ - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); lv_obj_delete(obj); /* We shouldn't crash here */ } @@ -526,20 +526,20 @@ void test_observer_obj_flag_eq(void) lv_obj_bind_flag_if_eq(obj, &subject, LV_OBJ_FLAG_HIDDEN, 5); /*Should be applied immediately*/ - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_obj_bind_flag_if_not_eq(obj, &subject, LV_OBJ_FLAG_CHECKABLE, 10); /*Should be applied immediately*/ - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); + TEST_ASSERT_EQUAL(true, lv_obj_is_checkable(obj)); lv_subject_set_int(&subject, 5); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); + TEST_ASSERT_EQUAL(true, lv_obj_is_checkable(obj)); lv_subject_set_int(&subject, 10); - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); + TEST_ASSERT_EQUAL(false, lv_obj_is_checkable(obj)); } void test_observer_obj_flag_ge(void) @@ -550,16 +550,16 @@ void test_observer_obj_flag_ge(void) lv_obj_bind_flag_if_ge(obj, &subject, LV_OBJ_FLAG_HIDDEN, 5); /*Should be applied immediately*/ - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 5); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 4); - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 6); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); } void test_observer_obj_flag_gt(void) @@ -570,16 +570,16 @@ void test_observer_obj_flag_gt(void) lv_obj_bind_flag_if_gt(obj, &subject, LV_OBJ_FLAG_HIDDEN, 5); /*Should be applied immediately*/ - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 5); - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 6); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 4); - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); } void test_observer_obj_flag_le(void) @@ -590,16 +590,16 @@ void test_observer_obj_flag_le(void) lv_obj_bind_flag_if_le(obj, &subject, LV_OBJ_FLAG_HIDDEN, 5); /*Should be applied immediately*/ - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 5); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 6); - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 4); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); } void test_observer_obj_flag_lt(void) @@ -610,16 +610,16 @@ void test_observer_obj_flag_lt(void) lv_obj_bind_flag_if_lt(obj, &subject, LV_OBJ_FLAG_HIDDEN, 5); /*Should be applied immediately*/ - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 4); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 5); - TEST_ASSERT_EQUAL(false, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(false, lv_obj_is_hidden(obj)); lv_subject_set_int(&subject, 3); - TEST_ASSERT_EQUAL(true, lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_EQUAL(true, lv_obj_is_hidden(obj)); } void test_observer_obj_state_invalid_subject(void) @@ -761,7 +761,7 @@ void test_observer_button_checked(void) { lv_obj_t * obj = lv_button_create(lv_screen_active()); lv_obj_set_size(obj, 100, 100); - lv_obj_add_flag(obj, LV_OBJ_FLAG_CHECKABLE); + lv_obj_set_checkable(obj, true); lv_obj_update_layout(obj); /*Can bind only to int*/ diff --git a/tests/src/test_cases/test_snapshot.c b/tests/src/test_cases/test_snapshot.c index af9da6504f..417657d083 100644 --- a/tests/src/test_cases/test_snapshot.c +++ b/tests/src/test_cases/test_snapshot.c @@ -176,7 +176,7 @@ void test_snapshot_take_snapshot_multiple_widgets(void) lv_obj_set_style_border_width(obj_4, 0, 0); lv_obj_set_style_bg_color(obj_4, lv_color_hex3(0x0ff), 0); lv_obj_align(obj_4, LV_ALIGN_BOTTOM_MID, 0, 0); - lv_obj_add_flag(obj_4, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(obj_4, true); lv_obj_t * obj_5 = lv_obj_create(lv_screen_active()); lv_obj_set_size(obj_5, 100, 100); diff --git a/tests/src/test_cases/widgets/test_arc.c b/tests/src/test_cases/widgets/test_arc.c index 8caa6d3cd7..9408249f64 100644 --- a/tests/src/test_cases/widgets/test_arc.c +++ b/tests/src/test_cases/widgets/test_arc.c @@ -165,7 +165,7 @@ void test_arc_click_area_with_adv_hittest(void) arc = lv_arc_create(lv_screen_active()); lv_obj_set_size(arc, 100, 100); lv_obj_set_style_arc_width(arc, 10, 0); - lv_obj_add_flag(arc, LV_OBJ_FLAG_ADV_HITTEST); + lv_obj_set_adv_hittest(arc, true); lv_obj_add_event_cb(arc, dummy_event_cb, LV_EVENT_PRESSED, NULL); lv_obj_set_ext_click_area(arc, 5); @@ -249,8 +249,8 @@ void test_two_overlapping_arcs_can_be_interacted_independently(void) lv_obj_set_size(arc2, 100, 100); lv_arc_set_bg_angles(arc, 20, 160); lv_arc_set_bg_angles(arc2, 200, 340); - lv_obj_add_flag(arc, LV_OBJ_FLAG_ADV_HITTEST); - lv_obj_add_flag(arc2, LV_OBJ_FLAG_ADV_HITTEST); + lv_obj_set_adv_hittest(arc, true); + lv_obj_set_adv_hittest(arc2, true); lv_arc_set_value(arc, 10); lv_arc_set_value(arc2, 10); lv_arc_set_rotation(arc, 355); diff --git a/tests/src/test_cases/widgets/test_btn.c b/tests/src/test_cases/widgets/test_btn.c index c904af143d..3a8a479d79 100644 --- a/tests/src/test_cases/widgets/test_btn.c +++ b/tests/src/test_cases/widgets/test_btn.c @@ -22,8 +22,8 @@ void test_button_creation(void) btn = lv_button_create(active_screen); TEST_ASSERT_NOT_NULL(btn); /* These flags are set in the object's constructor. */ - TEST_ASSERT_TRUE(lv_obj_has_flag(btn, LV_OBJ_FLAG_SCROLL_ON_FOCUS)); - TEST_ASSERT_FALSE(lv_obj_has_flag(btn, LV_OBJ_FLAG_SCROLLABLE)); + TEST_ASSERT_TRUE(lv_obj_is_scroll_on_focus(btn)); + TEST_ASSERT_FALSE(lv_obj_is_scrollable(btn)); } #endif diff --git a/tests/src/test_cases/widgets/test_chart.c b/tests/src/test_cases/widgets/test_chart.c index e151569cc4..484d74e766 100644 --- a/tests/src/test_cases/widgets/test_chart.c +++ b/tests/src/test_cases/widgets/test_chart.c @@ -179,7 +179,7 @@ void test_draw_task_hooking(void) lv_obj_set_parent(chart, chart_wrapper); lv_obj_set_size(chart, lv_pct(200), lv_pct(100)); - lv_obj_add_flag(chart, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(chart, true); lv_chart_set_div_line_count(chart, 0, 21); lv_chart_set_point_count(chart, 21); lv_obj_add_event_cb(chart, chart_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); diff --git a/tests/src/test_cases/widgets/test_ime_pinyin.c b/tests/src/test_cases/widgets/test_ime_pinyin.c index 9a19666d33..f19f4220a2 100644 --- a/tests/src/test_cases/widgets/test_ime_pinyin.c +++ b/tests/src/test_cases/widgets/test_ime_pinyin.c @@ -108,7 +108,7 @@ void test_ime_pinyin_get_cand_panel(void) lv_ime_pinyin_set_keyboard(g_pinyin_ime, g_kb); lv_obj_t * cand_panel = lv_ime_pinyin_get_cand_panel(g_pinyin_ime); TEST_ASSERT_NOT_NULL(cand_panel); - TEST_ASSERT_TRUE(lv_obj_has_flag(cand_panel, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_TRUE(lv_obj_is_hidden(cand_panel)); } /* Test mode switching */ @@ -177,7 +177,7 @@ void test_ime_pinyin_kb_event(void) TEST_ASSERT_NOT_NULL(cand_panel); /* Verify cand_panel is initially hidden */ - TEST_ASSERT_TRUE(lv_obj_has_flag(cand_panel, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_TRUE(lv_obj_is_hidden(cand_panel)); /* Simulate keyboard button click for 'n' */ lv_buttonmatrix_set_selected_button(g_kb, 26); /* 'n' key position */ @@ -374,7 +374,7 @@ void test_ime_pinyin_cand_panel_visibility(void) lv_obj_t * cand_panel = lv_ime_pinyin_get_cand_panel(g_pinyin_ime); /* Initially hidden */ - TEST_ASSERT_TRUE(lv_obj_has_flag(cand_panel, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_TRUE(lv_obj_is_hidden(cand_panel)); /* After entering some text, it should be visible (if valid pinyin) */ /* This is tested indirectly by verifying the structure */ @@ -773,7 +773,7 @@ void test_ime_pinyin_cand_selection(void) lv_obj_send_event(g_kb, LV_EVENT_VALUE_CHANGED, NULL); /* If candidates exist, simulate selection */ - if(ime->cand_num > 0 && !lv_obj_has_flag(ime->cand_panel, LV_OBJ_FLAG_HIDDEN)) { + if(ime->cand_num > 0 && !lv_obj_is_hidden(ime->cand_panel)) { /* Select first candidate (button id 1, 0 is left arrow) */ lv_buttonmatrix_set_selected_button(ime->cand_panel, 1); lv_obj_send_event(ime->cand_panel, LV_EVENT_VALUE_CHANGED, NULL); @@ -957,7 +957,7 @@ void test_ime_pinyin_cand_page_buttons(void) press_button_by_text(g_kb, "n"); /* If candidate panel is visible, test navigation */ - if(!lv_obj_has_flag(cand_panel, LV_OBJ_FLAG_HIDDEN) && ime->cand_num > 0) { + if(!lv_obj_is_hidden(cand_panel) && ime->cand_num > 0) { /* Try to click left/right buttons on candidate panel */ lv_buttonmatrix_set_selected_button(cand_panel, 0); /* Left button */ lv_obj_send_event(cand_panel, LV_EVENT_VALUE_CHANGED, NULL); diff --git a/tests/src/test_cases/widgets/test_line.c b/tests/src/test_cases/widgets/test_line.c index 9ff158d628..ca9f8e27fd 100644 --- a/tests/src/test_cases/widgets/test_line.c +++ b/tests/src/test_cases/widgets/test_line.c @@ -27,7 +27,7 @@ void test_line_should_have_valid_documented_default_values(void) TEST_ASSERT_EQUAL_UINT16(default_point_num, lv_line_get_point_count(line)); TEST_ASSERT_NULL(lv_line_get_points(line)); TEST_ASSERT_FALSE(lv_line_get_y_invert(line)); - TEST_ASSERT_FALSE(lv_obj_has_flag(line, LV_OBJ_FLAG_CLICKABLE)); + TEST_ASSERT_FALSE(lv_obj_is_clickable(line)); /* line doesn't have any points, so it's 0,0 in size */ TEST_ASSERT_EQUAL_UINT16(0U, lv_obj_get_self_width(line)); TEST_ASSERT_EQUAL_UINT16(0U, lv_obj_get_self_height(line)); diff --git a/tests/src/test_cases/widgets/test_lottie.c b/tests/src/test_cases/widgets/test_lottie.c index 8bf4df1de1..8d7adbc32b 100644 --- a/tests/src/test_cases/widgets/test_lottie.c +++ b/tests/src/test_cases/widgets/test_lottie.c @@ -158,12 +158,12 @@ void test_lottie_no_jump_when_visible_again(void) lv_test_fast_forward(200); TEST_ASSERT_EQUAL_SCREENSHOT("widgets/lottie_2.png"); - lv_obj_add_flag(lottie, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(lottie, true); lv_test_fast_forward(300); TEST_ASSERT_EQUAL_SCREENSHOT("widgets/lottie_1.png"); /*Empty screen*/ /*Should be on the same frame*/ - lv_obj_remove_flag(lottie, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(lottie, false); TEST_ASSERT_EQUAL_SCREENSHOT("widgets/lottie_2.png"); lv_test_fast_forward(750); diff --git a/tests/src/test_cases/widgets/test_menu.c b/tests/src/test_cases/widgets/test_menu.c index 4cf993e4c9..2e4fdaf10c 100644 --- a/tests/src/test_cases/widgets/test_menu.c +++ b/tests/src/test_cases/widgets/test_menu.c @@ -594,7 +594,7 @@ void test_menu_header_hidden_when_empty(void) lv_obj_t * header = lv_menu_get_main_header(menu); lv_refr_now(NULL); - TEST_ASSERT_TRUE(lv_obj_has_flag(header, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_TRUE(lv_obj_is_hidden(header)); } void test_menu_group_focus(void) @@ -680,7 +680,7 @@ void test_menu_sidebar_root_back_disabled(void) lv_refr_now(NULL); lv_obj_t * sidebar_back_btn = lv_menu_get_sidebar_header_back_button(menu); - TEST_ASSERT_TRUE(lv_obj_has_flag(sidebar_back_btn, LV_OBJ_FLAG_HIDDEN)); + TEST_ASSERT_TRUE(lv_obj_is_hidden(sidebar_back_btn)); } void test_menu_selected_tab_clear_without_sidebar(void) diff --git a/tests/src/test_cases/widgets/test_obj_flags.c b/tests/src/test_cases/widgets/test_obj_flags.c index d2715bc2e8..c2d7e9cf6e 100644 --- a/tests/src/test_cases/widgets/test_obj_flags.c +++ b/tests/src/test_cases/widgets/test_obj_flags.c @@ -26,7 +26,7 @@ void test_obj_flag_overflow_visible_1(void) lv_obj_t * obj_main = lv_obj_create(lv_screen_active()); lv_obj_set_size(obj_main, 400, 300); lv_obj_set_style_bg_color(obj_main, lv_palette_main(LV_PALETTE_RED), 0); - lv_obj_add_flag(obj_main, LV_OBJ_FLAG_OVERFLOW_VISIBLE); + lv_obj_set_overflow_visible(obj_main, true); lv_obj_center(obj_main); lv_obj_set_ext_draw_size(obj_main, 100); @@ -38,7 +38,7 @@ void test_obj_flag_overflow_visible_1(void) lv_obj_t * btn_1 = lv_button_create(obj_child_1); lv_obj_set_size(btn_1, 100, 100); lv_obj_align(btn_1, LV_ALIGN_LEFT_MID, -75, 0); - lv_obj_remove_flag(btn_1, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(btn_1, false); uint32_t cnt_1; lv_obj_add_event_cb(btn_1, btn_clicked_event_cb, LV_EVENT_CLICKED, &cnt_1); @@ -49,14 +49,14 @@ void test_obj_flag_overflow_visible_1(void) lv_obj_t * obj_child_2 = lv_obj_create(obj_main); lv_obj_set_size(obj_child_2, 200, 200); lv_obj_set_style_bg_color(obj_child_2, lv_palette_main(LV_PALETTE_ORANGE), 0); - lv_obj_add_flag(obj_child_2, LV_OBJ_FLAG_OVERFLOW_VISIBLE); + lv_obj_set_overflow_visible(obj_child_2, true); lv_obj_align(obj_child_2, LV_ALIGN_RIGHT_MID, 100, 0); lv_obj_set_ext_draw_size(obj_child_2, 100); lv_obj_t * btn_2 = lv_button_create(obj_child_2); lv_obj_set_size(btn_2, 100, 100); lv_obj_align(btn_2, LV_ALIGN_RIGHT_MID, 75, 0); - lv_obj_remove_flag(btn_2, LV_OBJ_FLAG_SCROLL_ON_FOCUS); + lv_obj_set_scroll_on_focus(btn_2, false); uint32_t cnt_2; lv_obj_add_event_cb(btn_2, btn_clicked_event_cb, LV_EVENT_CLICKED, &cnt_2); @@ -235,10 +235,10 @@ void test_obj_flag_radio_button(void) void test_obj_flag_parent_hidden(void) { /* #10083: Ensure that adding and removing screen flags don't make lvgl crash*/ - lv_obj_add_flag(lv_screen_active(), LV_OBJ_FLAG_HIDDEN); - TEST_ASSERT_TRUE(lv_obj_has_flag(lv_screen_active(), LV_OBJ_FLAG_HIDDEN)); - lv_obj_remove_flag(lv_screen_active(), LV_OBJ_FLAG_HIDDEN); - TEST_ASSERT_FALSE(lv_obj_has_flag(lv_screen_active(), LV_OBJ_FLAG_HIDDEN)); + lv_obj_set_hidden(lv_screen_active(), true); + TEST_ASSERT_TRUE(lv_obj_is_hidden(lv_screen_active())); + lv_obj_set_hidden(lv_screen_active(), false); + TEST_ASSERT_FALSE(lv_obj_is_hidden(lv_screen_active())); TEST_PASS(); } diff --git a/tests/src/test_cases/widgets/test_obj_property.c b/tests/src/test_cases/widgets/test_obj_property.c index c3381e3c5b..5dab22d92b 100644 --- a/tests/src/test_cases/widgets/test_obj_property.c +++ b/tests/src/test_cases/widgets/test_obj_property.c @@ -58,7 +58,8 @@ void test_obj_property_set_get_should_match(void) TEST_ASSERT_EQUAL_PTR(&lv_font_montserrat_26, lv_obj_get_style_text_font(obj, LV_PART_MAIN)); TEST_ASSERT_EQUAL_PTR(&lv_font_montserrat_26, lv_obj_get_property(obj, LV_PROPERTY_STYLE_TEXT_FONT).ptr); - /* Object flags */ + /* Object flags (deprecated flag API kept for backward compatibility) */ + LV_DEPRECATIONS_IGNORE_BEGIN prop.id = LV_PROPERTY_OBJ_FLAG_HIDDEN ; prop.num = 1; TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK); @@ -70,6 +71,7 @@ void test_obj_property_set_get_should_match(void) TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK); TEST_ASSERT_FALSE(lv_obj_has_flag(obj, LV_OBJ_FLAG_CLICKABLE)); TEST_ASSERT_FALSE(lv_obj_get_property(obj, LV_PROPERTY_OBJ_FLAG_CLICKABLE).num); + LV_DEPRECATIONS_IGNORE_END /* Obj property */ prop.id = LV_PROPERTY_OBJ_PARENT; @@ -159,10 +161,10 @@ void test_obj_property_flag(void) }; lv_obj_t * obj = lv_obj_create(lv_screen_active()); - obj->flags = 0; + /*This test intentionally exercises the deprecated flag API kept for backward compatibility.*/ + LV_DEPRECATIONS_IGNORE_BEGIN for(unsigned long i = 0; i < sizeof(properties) / sizeof(properties[0]); i++) { - TEST_ASSERT_FALSE(lv_obj_get_property(obj, properties[i].id).num); lv_obj_add_flag(obj, properties[i].flag); TEST_ASSERT_TRUE(lv_obj_get_property(obj, properties[i].id).num); @@ -182,6 +184,7 @@ void test_obj_property_flag(void) TEST_ASSERT_FALSE(lv_obj_get_property(obj, properties[i].id).num); TEST_ASSERT_FALSE(lv_obj_has_flag(obj, properties[i].flag)); } + LV_DEPRECATIONS_IGNORE_END #endif } diff --git a/tests/src/test_cases/widgets/test_roller.c b/tests/src/test_cases/widgets/test_roller.c index 18cbcc6824..a5044106dd 100644 --- a/tests/src/test_cases/widgets/test_roller.c +++ b/tests/src/test_cases/widgets/test_roller.c @@ -207,7 +207,7 @@ void test_roller_keypad_events(void) void test_roller_with_overlay_and_bubble_events_enabled(void) { lv_obj_t * overlay = lv_obj_create(roller); - lv_obj_add_flag(overlay, LV_OBJ_FLAG_EVENT_BUBBLE); + lv_obj_set_event_bubble(overlay, true); lv_obj_send_event(overlay, LV_EVENT_PRESSED, NULL); } @@ -296,8 +296,8 @@ void test_roller_transformed_click(void) lv_obj_set_parent(roller_mouse, rotated); lv_obj_t * click_dot = lv_obj_create(active_screen); - lv_obj_add_flag(click_dot, LV_OBJ_FLAG_FLOATING); - lv_obj_remove_flag(click_dot, LV_OBJ_FLAG_CLICKABLE); + lv_obj_set_floating(click_dot, true); + lv_obj_set_clickable(click_dot, false); lv_obj_set_size(click_dot, 10, 10); lv_obj_set_style_border_width(click_dot, 0, 0); lv_obj_set_style_radius(click_dot, LV_RADIUS_CIRCLE, 0); @@ -316,7 +316,7 @@ void test_roller_appearance(void) const char * opts = "0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg\n0@Tg"; - lv_obj_add_flag(roller_mouse, LV_OBJ_FLAG_HIDDEN); + lv_obj_set_hidden(roller_mouse, true); lv_obj_t * rollers[10] = {roller, roller_infinite}; uint32_t i = 2; diff --git a/tests/src/test_cases/widgets/test_scale.c b/tests/src/test_cases/widgets/test_scale.c index a552f55c8c..8475bcb319 100644 --- a/tests/src/test_cases/widgets/test_scale.c +++ b/tests/src/test_cases/widgets/test_scale.c @@ -333,7 +333,7 @@ void test_scale_render_example_7(void) lv_scale_set_range(scale, 10, 40); lv_obj_add_event_cb(scale, draw_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(scale, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(scale, true); TEST_ASSERT_EQUAL_SCREENSHOT("widgets/scale_5.png"); } diff --git a/tests/src/test_cases/widgets/test_slider.c b/tests/src/test_cases/widgets/test_slider.c index 08e37b5952..faf4e7762d 100644 --- a/tests/src/test_cases/widgets/test_slider.c +++ b/tests/src/test_cases/widgets/test_slider.c @@ -39,8 +39,8 @@ void test_textarea_should_have_valid_documented_default_values(void) /* Horizontal slider */ TEST_ASSERT_TRUE(objw >= objh); - TEST_ASSERT_FALSE(lv_obj_has_flag(slider, LV_OBJ_FLAG_SCROLL_CHAIN)); - TEST_ASSERT_FALSE(lv_obj_has_flag(slider, LV_OBJ_FLAG_SCROLLABLE)); + TEST_ASSERT_FALSE((lv_obj_is_scroll_chain_hor(slider) && lv_obj_is_scroll_chain_ver(slider))); + TEST_ASSERT_FALSE(lv_obj_is_scrollable(slider)); } void test_slider_event_keys_right_and_up_increment_value_by_one(void) @@ -322,7 +322,7 @@ void test_slider_scroll_chain_horizontal(void) lv_obj_send_event(slider, LV_EVENT_RELEASED, NULL); /* Horizontal ptr should allow vertical scroll chain */ - TEST_ASSERT_TRUE(lv_obj_has_flag(slider, LV_OBJ_FLAG_SCROLL_CHAIN_VER)); + TEST_ASSERT_TRUE(lv_obj_is_scroll_chain_ver(slider)); } void test_slider_scroll_chain_vertical(void) @@ -335,7 +335,7 @@ void test_slider_scroll_chain_vertical(void) lv_obj_send_event(slider, LV_EVENT_RELEASED, NULL); /* Vertical ptr should allow horizontal scroll chain */ - TEST_ASSERT_TRUE(lv_obj_has_flag(slider, LV_OBJ_FLAG_SCROLL_CHAIN_HOR)); + TEST_ASSERT_TRUE(lv_obj_is_scroll_chain_hor(slider)); } void test_slider_range_mode_key_decrement_left_value(void) diff --git a/tests/src/test_cases/widgets/test_switch.c b/tests/src/test_cases/widgets/test_switch.c index 1a10eb1f89..5fbc149a54 100644 --- a/tests/src/test_cases/widgets/test_switch.c +++ b/tests/src/test_cases/widgets/test_switch.c @@ -124,7 +124,7 @@ void test_switch_should_trigger_value_changed_event_only_once(void) /* See #2785 for context */ void test_switch_should_state_change_when_event_bubbling_is_enabled(void) { - lv_obj_add_flag(sw, LV_OBJ_FLAG_EVENT_BUBBLE); + lv_obj_set_event_bubble(sw, true); mouse_click_on_switch(); TEST_ASSERT(lv_obj_has_state(sw, LV_STATE_CHECKED)); diff --git a/tests/src/test_cases/widgets/test_table.c b/tests/src/test_cases/widgets/test_table.c index 21231ddeae..4011638f91 100644 --- a/tests/src/test_cases/widgets/test_table.c +++ b/tests/src/test_cases/widgets/test_table.c @@ -189,7 +189,7 @@ void test_table_rendering(void) { lv_obj_center(table); lv_obj_add_event_cb(table, draw_part_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL); - lv_obj_add_flag(table, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS); + lv_obj_set_send_draw_task_events(table, true); lv_obj_set_style_border_side(table, LV_BORDER_SIDE_FULL, LV_PART_ITEMS); lv_obj_set_style_pad_all(table, 10, LV_PART_ITEMS); lv_obj_set_style_border_width(table, 5, LV_PART_ITEMS);