diff --git a/source/arm11/atp.c b/source/arm11/atp.c index b518b18..fa5d452 100644 --- a/source/arm11/atp.c +++ b/source/arm11/atp.c @@ -157,9 +157,9 @@ atp_error_t atp_show( atp_counter_t cnt, atp_lineprovider_t provider, atp_caller static atp_error_t title_paint( atp_callerdata_t datain, atp_counter_t idx, atp_linecfg_t *config ) { - void **data = (void**)datain; - atp_text_t title = *(atp_text_t*)data[0]; - uint8_t *title_offset = *(uint8_t**)data[1]; + uint8_t **data = datain; + atp_text_t title = (atp_text_t)data[0]; + uint8_t *title_offset = data[1]; for( atp_counter_t i=0; i < idx; ++i ) title += title_offset[i]; config->text = title; @@ -197,15 +197,17 @@ static void draw_options( int start_row, int start_idx, int option_cnt, int sele #define SELECTED_ROW(top, len, sel) (((top) < (len)) ? ((len)-(top)+(sel)) : ((sel)+(len)-(top))) #define REFRESH_PAGE { \ + screen_clean(); if( idx_top < title_len ) \ { \ - void *title_data[2]; \ - title_data[0] = (void*)title; \ + uint8_t* title_data[2]; \ + title_data[0] = (uint8_t*)title; \ title_data[1] = &title_offset[idx_top]; \ for( int i=0; i < idx_top; ++i ) \ { \ - title_data[0] = (void*)((atp_text_t)title_data[0] + title_offset[i]); \ + title_data[0] += title_offset[i]; \ } \ + container_paint( title_paint, (atp_callerdata_t)title_data, title_len-idx_top, idx_top ); \ draw_options( title_len - idx_top, 0, cnt, item_sel, provider, data ); \ } \ else draw_options( 0, idx_top - title_len, cnt, item_sel, provider, data ); \