@@ -345,11 +345,13 @@ static bool archive_view_input(InputEvent* event, void* context) {
345345
346346 if (event -> key == InputKeyUp ) {
347347 if (model -> item_idx < scroll_speed ) {
348- scroll_speed = model -> item_idx ;
348+ model -> button_held_for_ticks = 0 ;
349+ model -> item_idx = model -> item_cnt - 1 ;
350+ } else {
351+ model -> item_idx =
352+ ((model -> item_idx - scroll_speed ) + model -> item_cnt ) %
353+ model -> item_cnt ;
349354 }
350-
351- model -> item_idx =
352- ((model -> item_idx - scroll_speed ) + model -> item_cnt ) % model -> item_cnt ;
353355 if (is_file_list_load_required (model )) {
354356 model -> list_loading = true;
355357 browser -> callback (ArchiveBrowserEventLoadPrevItems , browser -> context );
@@ -361,11 +363,12 @@ static bool archive_view_input(InputEvent* event, void* context) {
361363 model -> button_held_for_ticks += 1 ;
362364 } else if (event -> key == InputKeyDown ) {
363365 int32_t count = model -> item_cnt ;
364- if (model -> item_idx >= (count - scroll_speed )) {
365- scroll_speed = model -> item_cnt - model -> item_idx - 1 ;
366+ if (model -> item_idx + scroll_speed >= count ) {
367+ model -> button_held_for_ticks = 0 ;
368+ model -> item_idx = 0 ;
369+ } else {
370+ model -> item_idx = (model -> item_idx + scroll_speed ) % model -> item_cnt ;
366371 }
367-
368- model -> item_idx = (model -> item_idx + scroll_speed ) % model -> item_cnt ;
369372 if (is_file_list_load_required (model )) {
370373 model -> list_loading = true;
371374 browser -> callback (ArchiveBrowserEventLoadNextItems , browser -> context );
0 commit comments