diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index ff7a4238f..86ef3b847 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -285,9 +285,10 @@ CLASS lcl_popups IMPLEMENTATION. DATA: lo_branches TYPE REF TO lcl_git_branch_list, lt_branches TYPE lcl_git_branch_list=>ty_git_branch_list_tt, - lv_head_suffix TYPE string, lv_answer TYPE c LENGTH 1, - lv_default TYPE i VALUE 1, "Default cursor position + lv_default TYPE i, + lv_head_suffix TYPE string, + lv_head_symref TYPE string, lt_selection TYPE TABLE OF spopli. FIELD-SYMBOLS: LIKE LINE OF lt_selection, @@ -297,28 +298,43 @@ CLASS lcl_popups IMPLEMENTATION. lo_branches = lcl_git_transport=>branches( iv_url ). lt_branches = lo_branches->get_branches_only( ). lv_head_suffix = | ({ lcl_git_branch_list=>c_head_name })|. + lv_head_symref = lo_branches->get_head_symref( ). LOOP AT lt_branches ASSIGNING . - IF -name = lcl_git_branch_list=>c_head_name - AND -name <> lo_branches->get_head_symref( ). - " HEAD but other HEAD symref exist - CONTINUE. - ENDIF. + CHECK -name IS NOT INITIAL. " To ensure some below ifs - APPEND INITIAL LINE TO lt_selection ASSIGNING . - IF iv_default_branch IS NOT INITIAL AND iv_default_branch = -name. - lv_default = sy-tabix. - ENDIF. + IF -is_head = abap_true. - IF -name = lo_branches->get_head_symref( ) - AND -name <> lcl_git_branch_list=>c_head_name. - " HEAD symref but not HEAD itself - -varoption = -display_name && lv_head_suffix. + IF -name = lcl_git_branch_list=>c_head_name. " HEAD + IF -name <> lv_head_symref AND lv_head_symref IS NOT INITIAL. + " HEAD but other HEAD symref exists - ignore + CONTINUE. + ELSE. + INSERT INITIAL LINE INTO lt_selection INDEX 1 ASSIGNING . + -varoption = -name. + ENDIF. + ELSE. + INSERT INITIAL LINE INTO lt_selection INDEX 1 ASSIGNING . + -varoption = -display_name && lv_head_suffix. + ENDIF. + + IF lv_default > 0. " Shift down default if set + lv_default = lv_default + 1. + ENDIF. ELSE. + APPEND INITIAL LINE TO lt_selection ASSIGNING . -varoption = -display_name. ENDIF. + IF -name = iv_default_branch. + IF -is_head = abap_true. + lv_default = 1. + ELSE. + lv_default = sy-tabix. + ENDIF. + ENDIF. + ENDLOOP. IF iv_show_new_option = abap_true. @@ -362,7 +378,6 @@ CLASS lcl_popups IMPLEMENTATION. rs_branch = lo_branches->find_by_name( -name ). ENDIF. - ENDMETHOD. METHOD repo_popup.