NEED HELP: Menu Auto-Scroll Issue

So I tried making the QoL feature, Auto-Scrolling for UI pages like Options.

Problem is it only fires once instead of looping when the button is held.

Here’s how the set up looks:

    UFUNCTION()
    void BPF_PageNav_Handle(ECndWidget_HandleActions Handle_Action, bool ButtonState);


    UFUNCTION()
    void BPF_Page_NavigateItem(ECndWidget_HandleActions Handle_Action, bool ButtonState);
    
    UFUNCTION()
    void BPF_Page_NavigateValue(ECndWidget_HandleActions Handle_Action, bool ButtonState);

    void BPF_Page_NavigateAutoscroll(ECndWidget_HandleActions Handle_Action, bool ButtonState, float Speed);
   
    UFUNCTION()
    void BPF_PageNav_AutoScroll_Clear();



// Triggered From Menu Base
void UCndWgt_MenuPage_Master::BPF_PageNav_Handle(ECndWidget_HandleActions Handle_Action, bool ButtonState)
{

if (ButtonState)
{

    switch (Handle_Action)
    {

        // Page Item Selection

    case HA_ItemUp:
    case HA_ItemDown:
    case HA_ItemNext:
    case HA_ItemPrev:
    {

        switch (Window_Active.Type)
        {
        case WindowType_Vertical:
        {

            switch (Handle_Action)
            {

                // Page Item Selection

            case HA_ItemUp:
            case HA_ItemDown:
            {
                BPF_Page_NavigateItem(Handle_Action, ButtonState);

                break;

            }
            case HA_ItemNext:
            case HA_ItemPrev:
            {

                BPF_Page_NavigateValue(Handle_Action, ButtonState);

                break;
            }

            break;
        }

            break;
        }

        }



        break;
    }

}

void UCndWgt_MenuPage_Master::BPF_Page_NavigateItem(ECndWidget_HandleActions Handle_Action, bool ButtonState)
{

UCndWgt_MenuParts_ListItem_Master* Item_Desired = nullptr;

if (ButtonState)
{


}

// Check if we’re not scrolling item’s value right now.
if (!Data.IsAutoScrolling_Values)
{
if (CanAutoScroll_Items)
{
if (AutoScroll_Speed_Items > 0.09f)
{
if (!Data.IsAutoScrolling_Items)
{

            if (CND_DebugLog)
            {

                UE_LOG(LogTemp, Warning,
                    TEXT("%s | Autoscrolling Started - Items [%s] [%s] Speed: [%s]"),
                    *CND_DebugString,
                    *UEnum::GetValueAsString(Handle_Action),
                    ButtonState ? TEXT("True") : TEXT("False"),
                    *FString::SanitizeFloat(AutoScroll_Speed_Items)
                );

            }
           
            Data.TDEL_UI_AutoScroll.Unbind();
            Data.TDEL_UI_AutoScroll.BindUFunction(this, FName("BPF_Page_NavigateItem"), Handle_Action, ButtonState);

            Data.IsAutoScrolling_Items = true;

        }

        if (Data.IsAutoScrolling_Items)
        {

            BPF_Page_NavigateAutoscroll(Handle_Action, ButtonState, AutoScroll_Speed_Items);

        }
    }
}

}

}



void UCndWgt_MenuPage_Master::BPF_Page_NavigateAutoscroll(ECndWidget_HandleActions Handle_Action, bool ButtonState, float Speed)
{

    if (CND_DebugLog)
    {

        UE_LOG(LogTemp, Warning,
            TEXT("%s | Autoscrolling... [%s] [%s]"),
            *CND_DebugString,
            *UEnum::GetValueAsString(Handle_Action),
            ButtonState ? TEXT("True") : TEXT("False")
        );

    }

    // Delay: Set up a timer for Action
    GetWorld()->GetTimerManager().SetTimer(
        Data.TH_UI_AutoScroll,
        Data.TDEL_UI_AutoScroll,
        Speed,
        false
    );

}