diff --git a/reactos/base/setup/usetup/genlist.c b/reactos/base/setup/usetup/genlist.c index e96b75e1b5e..240df1cbebb 100644 --- a/reactos/base/setup/usetup/genlist.c +++ b/reactos/base/setup/usetup/genlist.c @@ -653,4 +653,17 @@ RestoreGenericListState( List->CurrentEntry = List->BackupEntry; } + +BOOL +GenericListHasSingleEntry( + PGENERIC_LIST List) +{ + if (!IsListEmpty(&List->ListHead) && List->ListHead.Flink == List->ListHead.Blink) + return TRUE; + + /* if both list head pointers (which normally point to the first and last list member, respectively) + point to the same entry then it means that there's just a single thing in there, otherwise... false! */ + return FALSE; +} + /* EOF */ diff --git a/reactos/base/setup/usetup/genlist.h b/reactos/base/setup/usetup/genlist.h index eda4aec40ac..0361d2b8882 100644 --- a/reactos/base/setup/usetup/genlist.h +++ b/reactos/base/setup/usetup/genlist.h @@ -54,10 +54,6 @@ DrawGenericList( SHORT Right, SHORT Bottom); -VOID -DrawScrollBarGenericLis( - PGENERIC_LIST List); - VOID ScrollDownGenericList( PGENERIC_LIST List); @@ -121,4 +117,8 @@ GenericListKeyPress( PGENERIC_LIST List, CHAR AsciChar); +BOOL +GenericListHasSingleEntry( + PGENERIC_LIST List); + /* EOF */ diff --git a/reactos/base/setup/usetup/interface/usetup.c b/reactos/base/setup/usetup/interface/usetup.c index 84077f5b7e0..f71db84b53d 100644 --- a/reactos/base/setup/usetup/interface/usetup.c +++ b/reactos/base/setup/usetup/interface/usetup.c @@ -633,6 +633,12 @@ LanguagePage(PINPUT_RECORD Ir) /* Load the font */ SelectedLanguageId = DefaultLanguage; SetConsoleCodePage(); + UpdateKBLayout(); + + /* If there's just a single language in the list skip + * the language selection process altogether! */ + if (GenericListHasSingleEntry(LanguageList)) + return INTRO_PAGE; DrawGenericList(LanguageList, 2,