I am ok for this change. Reviewed-by: Liming Gao <gaolim...@byosoft.com.cn>
> -----邮件原件----- > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Gao, Zhichao > 发送时间: 2021年9月28日 13:18 > 收件人: devel@edk2.groups.io; Gao, Zhichao <zhichao....@intel.com> > 抄送: Wang, Jian J <jian.j.w...@intel.com>; Liming Gao > <gaolim...@byosoft.com.cn>; Ni, Ray <ray...@intel.com> > 主题: Re: [edk2-devel] [PATCH V3] MdeModulePkg/BootManagerMenuApp: > Limit string drawing within one line > > 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 (#81202): https://edk2.groups.io/g/devel/message/81202 Mute This Topic: https://groups.io/mt/85918704/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-