LVGL v8 is available for testing!

Sorry for the confusion. I renamed it because LIGHT is more standard and the “deviation” should be enabled explicitly.

It draws all needles of scale 1 and than all needles of scale 2 etc. It’d be really better to keep the “natural” order (i.e. the creation order of the needles). I’ll take a look at it tomorrow.

It shouldn’t happen, can you send a code snippet (or how to modify the example) to reproduce?

I fixed it. The rotation wasn’t using anti aliasing. lv_example_meter_3 looks like this for me:

clock

Looks cool :sunglasses:

Hi
i have tested the ultimate V8 scr and i get a little bug w/ Encoder_Demo because the function " const char * txt = lv_msgbox_get_active_btn_text(msgbox);" returns Null now (and i can’t close the message box!!)
Il i doint’ call msgbox_create(), it’s ok
Thanks

I’ve fixed to draw the indicators in creation order.

Hi,

Thank you! I’ve just fixed it :slight_smile:

Hi!!
Well i think i have a little problem here on my PC because i still get the bug w/ the lv_msgbox_get_active_btn_text; function!!
Thank you

The bug was that

lv_obj_t * msgbox = lv_event_get_current_target(e);

needs to be used instead of

lv_obj_t * msgbox = lv_event_get_target(e);

Do you see this change in your code?

Hi
Thank you it works better now ( i can close the msgbow with encoder and touch on screen)…

But i have the 3 following small bugs :

  • Using the encoder In the message box I can’t see which the buton get the focus (i can click and close the window)…

  • Navigate in tabview w/ encoder is little tricky… (how can i desabled horizontal scrolling between tabs??)

  • the checkbox in Selectors tab is now invisible or appear very small (few pix!!) when it get focus…

Thank you!!

Hi
I’am stil testing the V8 version from the Demo_Encoder code (i add a tab for each new test )

I created a chart graphic w/ negatives and positives values (-100 to +100) w/ lv_chart_set_range. The points are on the right position but on the left the Y axis value indicate (0/bottom to 200/top).

How can i fix this small problem?

Thanks

@Herve_14 Thank you for this valuable feedback They help a lot! :slight_smile:

Fixed.

Do you mean to automatically go to the tab of the focused widget?

Fixed.

Fixed.

Hi… it’s great if i can help testing and feedbacking the V8!

First, thanks for all the fixed bugs…

About the tab navigation, for me, to avoid confusion the user should expressly select the tab w/ finger or encoder… I think i can fixe this using the group in the same way as with version 7 of demo_encoder (the navigation with encoder was ok) …

Also i’m trying to avoid horizontal scrolling between tab calling lv_obj_set_scroll_dir(parent, LV_DIR_VER ); but nothing append (and LV_DIR_VER desable only vertical scrolling).

This week i’am still testing the graphic(with cursor etc.) and i noticed 2 little bugs :

  • The first division lines (Y/left and X/bottom) don’t appear

  • The events binded to chart are trigered twice

Thank you.

Try this:

lv_obj_set_scroll_dir(lv_tabview_get_content(tabview), LV_DIR_NONE);

I believe I fixed it, but a code snippet to see the issue would be appreciated.

Which events do you mean? A code snippet would be great here too.

Hi

Yes it’s ok it’s fixed w/ the last V8 version

I’ am sorry it’s my fault : i called twice lv_obj_add_event_cb for the chart!!

Yes it’s ok it works the user can’t scroll horizontally the tabs…
But In this configuration the defaut group (g) contain all the widgets so the encoder navigation doesn’t work!!
So i created a event _cb (LV_EVENT_VALUE_CHANGED) on tab view to empty the defaut group and fill it with :

  • the button matrix of the tabview :
	lv_group_remove_all_objs(g);	
	lv_group_add_obj(g,lv_tabview_get_tab_btns(tv));
  • All the objects of the new select tab :
static void  Add_Object_Child_to_Group(lv_group_t * Grp, lv_obj_t * Obj)
{
char  i;
	for (i=0; i<lv_obj_get_child_cnt(Obj);i++)
	{
		lv_group_add_obj(Grp,lv_obj_get_child(Obj,i));
	}
}

it works fine with finger navigation (pointer indev) but i still have few bugs only with encoder navigation :

  • The user can’t see when the tab button get the focus of the encoder (the tab button text changed of color w/ version7)
  • The list widget has a different behavior if we simply add it in the group… i think we have now to add in the group all the button of the list…
  • In v8 the user doesn’t see when a chart get the focus of the encocer… perhaps because the chart is created inside a panel objet (like widget demo)…
  • If the pointer navigation works fine to navigate, when the user touch a widget there no more modication (color or border lines) to indicates that the widget got the focus (as with the encoder)… It’s the function of *lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS);?

Yesterday i have tested all the little layout examples (grid and flex) : It’s very nice and powerfull… very impressive… congratulations!!

Regards

Hello, I’m starting a new project with LVGL.

I’m wondering if it is ok to use v8, as this project will take some time to develop, so I hope in the end the v8 is released by that time… is this a good option ?

I have little experience with v7, so I’m thinking to learn the new version instead of learn the (almost) outdated version.

Yes, it’s not that good now. I’ll improve it today.

Yes, it’s changed. The list got simplified to be more flexible and well… simpler. Now the list buttons are normal buttons and you can add them to a group one by one. I left the honor to implement a list like in v7 for a determined contributor :slight_smile:

In the default theme, I added focused style only to “interactive” objects. Thinking about ot more the chart can be considered an interactive object. I’ll add foced style to it.

There is a new state in v8, called LV_STATE_FOCUS_KEY. It’s inspired by :focus-visible from CSS. This state is applied only when the focus “arrived” from an encoder of keypad. With touchpad the “focus ring” is not that useful and with LV_STATE_FOCUS_KEY it can be hidden.
You can still use LV_STATE_FOCUSED to show the focused styles regardless of the source of the focus.

Happy tp hear that! ^^

I definitely encourage you the use v8 for a new project. The docs is not fully updated yet, but there are many example to show how to do things.

Hi

Yes, it’s not that good now. I’ll improve it today.

Ok thaks, it’s ok now… Just two remarks :

  • The circular navigation through a Btn_matrix stop when the user want to change button from right to left, but it’s ok with oposite direction (from left to right)…
  • I dont know if it possible - because it’s only in tab choice- i think we could save a click when the user choose a tab… : one click to choose the tab and exit of edit mode…

Yes, it’s changed. The list got simplified to be more flexible and well… simpler. Now the list buttons are normal buttons and you can add them to a group one by one. I left the honor to implement a list like in v7 for a determined contributor
No need to change the list widget, i adapted the fonction that i call to fill the navigation group on each tab change :

static void  Add_Object_Child_to_Group(lv_group_t * Grp, lv_obj_t * Obj)
{
char  i;
	for (i=0; i<lv_obj_get_child_cnt(Obj);i++)
	{
		if (lv_obj_has_class(lv_obj_get_child(Obj,i),&lv_list_class))
		{		
			 Add_Object_Child_to_Group(Grp,lv_obj_get_child(Obj,i));			
		} 
        else lv_group_add_obj(Grp,lv_obj_get_child(Obj,i));  //recursive call		
	}	
}

Yes my application (rc transmitter for modelism) will need interative chart to let the user change some curves (it’s easy w/ cursor to select a point and a slider to change the value) … But no need to change the theme… i added a border line with a style with : lv_obj_add_style(chart1, &style_chart, LV_STATE_FOCUS_KEY);.
I wanted to use the lv_obj_set_local_style_prop but i didn’t understand the meaning of the second parameter lv_style_prop_t prop

It’s not a problem… i added the folowing event on each widget ( lv_obj_add_event_cb(obj,set_focus_state_cb,LV_EVENT_FOCUSED,NULL):wink: :

static void  set_focus_state_cb(lv_event_t * evt)
{
    lv_obj_t * obj = lv_event_get_current_target(evt);
	lv_obj_add_state(obj, LV_STATE_FOCUS_KEY);
}

I have tested many examples to understand the V8 and i thinks there are very few bugs now. The only bug that still crash the code is the line lv_dropdown_open(obj); in case 11 of the stress démo…

Thanks!!

I have a platformio project that works with lvgl@7.91. I modified platformio.ini to lvgl@8.0.0 and am now getting the build errors below. Is this expected? Should I try adapt my code or does the LVGL team wants to check on your side for backward compatibility?

Project: https://github.com/zapta/simple_stepper_motor_analyzer/tree/master/platformio

Build errors:

Compiling .pio\build\blackpill_f401ce\src\fonts\font_fa_symbols_28.cpp.o
src\display\lv_adapter.cpp:20:8: error: ‘lv_disp_buf_t’ does not name a type; did you mean ‘lv_disp_drv_t’?
20 | static lv_disp_buf_t disp_buf;
| ^~~~~~~~~~~~~
| lv_disp_drv_t
src\display\lv_adapter.cpp: In function ‘void lv_adapter::init_display_driver()’:
src\display\lv_adapter.cpp:120:21: error: ‘disp_buf’ was not declared in this scope
120 | lv_disp_buf_init(&disp_buf, buf_1, NULL, kBufferSize);
| ^~~~~~~~
src\display\lv_adapter.cpp:120:3: error: ‘lv_disp_buf_init’ was not declared in this scope; did you mean ‘lv_disp_drv_init’?
120 | lv_disp_buf_init(&disp_buf, buf_1, NULL, kBufferSize);
| ^~~~~~~~~~~~~~~~
| lv_disp_drv_init
src\display\lv_adapter.cpp:126:12: error: ‘lv_disp_drv_t’ {aka ‘struct _lv_disp_drv_t’} has no member named ‘buffer’
126 | disp_drv.buffer = &disp_buf;
| ^~~~~~
*** [.pio\build\blackpill_f401ce\src\display\lv_adapter.cpp.o] Error 1
src\fonts\font_fa_symbols_28.cpp:1019:11: error: conflicting declaration ‘lv_font_t font_fa_symbols_28’
1019 | lv_font_t font_fa_symbols_28 = {
| ^~~~~~~~~~~~~~~~~~
In file included from .pio\libdeps\blackpill_f401ce\lvgl/src/core/…/misc/lv_style.h:17,
from .pio\libdeps\blackpill_f401ce\lvgl/src/core/lv_obj.h:20,
from .pio\libdeps\blackpill_f401ce\lvgl/lvgl.h:32,
from src\fonts\font_fa_symbols_28.cpp:1:
src/lv_conf.h:413:21: note: previous declaration as ‘const lv_font_t font_fa_symbols_28’
413 | LV_FONT_DECLARE(font_fa_symbols_28)
| ^~~~~~~~~~~~~~~~~~
.pio\libdeps\blackpill_f401ce\lvgl/src/core/…/misc/…/font/lv_font.h:125:59: note: in definition of macro ‘LV_FONT_DECLARE’
125 | #define LV_FONT_DECLARE(font_name) extern const lv_font_t font_name;
| ^~~~~~~~~
.pio\libdeps\blackpill_f401ce\lvgl/src/core/…/misc/…/font/lv_font.h:237:1: note: in expansion of macro ‘LV_FONT_CUSTOM_DECLARE’
237 | LV_FONT_CUSTOM_DECLARE
| ^~~~~~~~~~~~~~~~~~~~~~
*** [.pio\build\blackpill_f401ce\src\fonts\font_fa_symbols_28.cpp.o] Error 1

Backward compatibility is not really available for v8… the strategy from @kisvegabor is to stick with v7 if you need compatibility as it’s still receiving any needed bug fixes.

Thanks @embeddedt, I will adapt the code on my end then.

As for V8 fixes, currently the latest version on platformio is 8.0.0, I hope that fixes will be applied at incremented version number to avoid confusion.