Hi Liming/Ray, I have updated the commit message and the BZ comments. Do you agree to merge the code?
Thanks, Zhichao > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Gao, > Zhichao > Sent: Monday, September 27, 2021 3:10 PM > To: devel@edk2.groups.io > Cc: Wang, Jian J <jian.j.w...@intel.com>; Liming Gao > <gaolim...@byosoft.com.cn>; Ni, Ray <ray...@intel.com> > Subject: [edk2-devel] [PATCH V3] MdeModulePkg/BootManagerMenuApp: > Limit string drawing within one line > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3590 > > Limit the draw box always within the screen's column and row. > Limit the string drawing within one line.For the incompleted string the last 3 > characters in one line wouldbe replaced with "...". > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Ray Ni <ray...@intel.com> > Signed-off-by: Zhichao Gao <zhichao....@intel.com>Reviewed-by: Ray Ni > <ray...@intel.com> ---V2:Drop the change in UefiBootManagerLib in V1.Add > the limitation in BootManagerMenuApp instead.V3:Update the commit > message only. > .../BootManagerMenuApp/BootManagerMenu.c | 72 > ++++++++++++++++++- > 1 file changed, 69 insertions(+), 3 deletions(-) > > diff --git > a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > c > b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > c > index 9e729074ec..d4bdeba073 100644 > --- > a/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > c > +++ > b/MdeModulePkg/Application/BootManagerMenuApp/BootManagerMenu. > c > @@ -1,7 +1,7 @@ > /** @file The application to show the Boot Manager Menu. -Copyright (c) > 2011 - 2018, Intel Corporation. All rights reserved.<BR>+Copyright (c) 2011 - > 2021, Intel Corporation. All rights reserved.<BR> SPDX-License-Identifier: > BSD-2-Clause-Patent **/@@ -45,9 +45,56 @@ PrintStringAt ( > IN CHAR16 *String ) {+ UINTN ScreenWidth;+ UINTN > ScreenRows;+ CHAR16 *TurncateString;+ EFI_STATUS Status;+ UINTN > ShowingLength; gST->ConOut->SetCursorPosition (gST->ConOut, Column, > Row);- return Print (L"%s", String);++ gST->ConOut->QueryMode (+ > gST->ConOut,+ gST->ConOut->Mode->Mode,+ > &ScreenWidth,+ &ScreenRows+ );++ if (Column > > (ScreenWidth - 1) || Row > (ScreenRows - 1)) {+ return 0;+ }++ if > ((StrLen > (String) + Column) > (ScreenWidth - 1)) {+ //+ // | - ScreenWidth > - |+ > // ...Column.....................+ // TurncateString length should leave > one > character for draw box and+ // require one character for string end.+ > //+ > ShowingLength = ScreenWidth - Column - 1;+ TurncateString = AllocatePool > ((ShowingLength + 1) * sizeof (CHAR16));++ if (TurncateString == NULL) {+ > return 0;+ }++ Status = StrnCpyS (TurncateString, ShowingLength + 1, > String, ShowingLength - 3);++ if (EFI_ERROR (Status)) {+ FreePool > (TurncateString);+ return 0;+ }++ *(TurncateString + ShowingLength > - 3) > = L'.';+ *(TurncateString + ShowingLength - 2) = L'.';+ > *(TurncateString + > ShowingLength - 1) = L'.';+ *(TurncateString + ShowingLength) = L'\0';+ > ShowingLength = Print (L"%s", TurncateString);+ FreePool > (TurncateString);+ return ShowingLength;+ } else {+ return Print > (L"%s", > String);+ } } /**@@ -68,7 +115,22 @@ PrintCharAt ( > CHAR16 Character ) {+ UINTN ScreenWidth;+ UINTN > ScreenRows;+ gST->ConOut->SetCursorPosition (gST->ConOut, Column, > Row);++ gST->ConOut->QueryMode (+ gST->ConOut,+ > gST- > >ConOut->Mode->Mode,+ &ScreenWidth,+ > &ScreenRows+ );++ if (Column > (ScreenWidth - 1) || Row > > (ScreenRows - 1)) {+ return 0;+ }+ return Print (L"%c", Character); } > @@ - > 193,7 +255,11 @@ InitializeBootMenuScreen ( > MaxPrintRows = Row - 6; UnSelectableItmes = TITLE_TOKEN_COUNT + 2 + > HELP_TOKEN_COUNT + 2;- BootMenuData->MenuScreen.Width = > MaxStrWidth + 8;+ if (MaxStrWidth + 8 > Column) {+ BootMenuData- > >MenuScreen.Width = Column;+ } else {+ BootMenuData- > >MenuScreen.Width = MaxStrWidth + 8;+ } if (BootMenuData->ItemCount > + UnSelectableItmes > MaxPrintRows) { BootMenuData- > >MenuScreen.Height = MaxPrintRows; BootMenuData- > >ScrollBarControl.HasScrollBar = TRUE;-- > 2.31.1.windows.1 > > > > -=-=-=-=-=-= > Groups.io Links: You receive all messages sent to this group. > View/Reply Online (#81153): https://edk2.groups.io/g/devel/message/81153 > Mute This Topic: https://groups.io/mt/85895022/1768756 > Group Owner: devel+ow...@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [zhichao....@intel.com] > -=-=-=-=-=-= > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#81201): https://edk2.groups.io/g/devel/message/81201 Mute This Topic: https://groups.io/mt/85895022/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-