From 89efdb0c8e5b75bd49d7eae3ede3e4496658bc39 Mon Sep 17 00:00:00 2001 From: anod <182859762@qq.com> Date: Fri, 14 Oct 2022 11:45:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E4=BF=AE=E6=AD=A3=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E7=BF=BB=E9=A1=B5=E7=9A=84=E6=97=B6=E5=80=99=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E5=AE=95=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/arm11/atp.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/source/arm11/atp.c b/source/arm11/atp.c index 0990438..7311464 100644 --- a/source/arm11/atp.c +++ b/source/arm11/atp.c @@ -196,14 +196,20 @@ 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 {\ - if( idx_top < title_len )\ - {\ - void *title_data[2] = {(void*)title, (void*)title_offset};\ - container_paint( title_paint, 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 );\ +#define REFRESH_PAGE { \ + if( idx_top < title_len ) \ + { \ + void *title_data[2]; \ + title_data[0] = (void*)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]); \ + } \ + container_paint( title_paint, 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 ); \ } atp_error_t atp_select( atp_text_t title, atp_counter_t cnt, atp_itemprovider_t provider, atp_keyhandler_t handler, atp_callerdata_t data, atp_itemval_t *res ) @@ -226,6 +232,7 @@ atp_error_t atp_select( atp_text_t title, atp_counter_t cnt, atp_itemprovider_t ++title_len; cursor = next; } + for( int i=title_len; i < TITLE_MAX; ++i ) title_offset[i] = 0; // draw item draw_options( title_len, 0, cnt, item_sel, provider, data );