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]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to