Revision: 14736
          http://sourceforge.net/p/edk2/code/14736
Author:   ydong10
Date:     2013-09-28 04:51:32 +0000 (Sat, 28 Sep 2013)
Log Message:
-----------
Fix modal form display error.

Signed-off-by: Eric Dong <[email protected]>
Reviewed-by: Liming Gao <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c

Modified: trunk/edk2/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c    
2013-09-27 12:19:51 UTC (rev 14735)
+++ trunk/edk2/MdeModulePkg/Universal/DisplayEngineDxe/FormDisplay.c    
2013-09-28 04:51:32 UTC (rev 14736)
@@ -279,7 +279,10 @@
   // For modal form, clean the entire row.
   //
   if ((gFormData->Attribute & HII_DISPLAY_MODAL) != 0) {
-    return (UINT16)(gStatementDimensions.RightColumn - 
gStatementDimensions.LeftColumn - gModalSkipColumn - SCROLL_ARROW_HEIGHT);
+    if (AdjustWidth  != NULL) {
+      *AdjustWidth = LEFT_SKIPPED_COLUMNS;
+    }
+    return (UINT16)(gStatementDimensions.RightColumn - 
gStatementDimensions.LeftColumn - 2 * (gModalSkipColumn + 
LEFT_SKIPPED_COLUMNS));
   }
 
   Size = 0;
@@ -1999,9 +2002,12 @@
         if (!ValueIsScroll (TRUE, TopOfScreen)) {
           UpArrow = TRUE;
         }
-        
-        PrintStringAtWithWidth(gStatementDimensions.LeftColumn, TopRow - 1, 
L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);
 
+        if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {
+          PrintStringAtWithWidth(gStatementDimensions.LeftColumn + 
gModalSkipColumn, TopRow - 1, L"", gStatementDimensions.RightColumn - 
gStatementDimensions.LeftColumn - 2 * gModalSkipColumn);
+        } else {
+          PrintStringAtWithWidth(gStatementDimensions.LeftColumn, TopRow - 1, 
L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);
+        }
         if (UpArrow) {
           gST->ConOut->SetAttribute (gST->ConOut, GetArrowColor ());
           PrintCharAt (
@@ -2036,15 +2042,25 @@
             SavedMenuOption = MenuOption;
             SkipHighLight   = TRUE;
           }
-          
-          DisplayOneMenu (MenuOption, 
-                          ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) ? 
LEFT_SKIPPED_COLUMNS + gModalSkipColumn : LEFT_SKIPPED_COLUMNS,
-                          gStatementDimensions.LeftColumn, 
-                          Link == TopOfScreen ? SkipValue : 0, 
-                          BottomRow,
-                          Link == NewPos && IsSelectable(MenuOption)
-                          );
 
+          if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {
+            DisplayOneMenu (MenuOption, 
+                            LEFT_SKIPPED_COLUMNS,
+                            gStatementDimensions.LeftColumn + 
gModalSkipColumn, 
+                            Link == TopOfScreen ? SkipValue : 0, 
+                            BottomRow,
+                            Link == NewPos && IsSelectable(MenuOption)
+                            );
+          } else {
+            DisplayOneMenu (MenuOption, 
+                            LEFT_SKIPPED_COLUMNS,
+                            gStatementDimensions.LeftColumn, 
+                            Link == TopOfScreen ? SkipValue : 0, 
+                            BottomRow,
+                            Link == NewPos && IsSelectable(MenuOption)
+                            );         
+          }
+
           //
           // 3. Update the row info which will be used by next menu.
           //
@@ -2069,7 +2085,7 @@
         //
         while (Row <= BottomRow) {
           if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {
-            PrintStringAtWithWidth(gStatementDimensions.LeftColumn, Row++, 
L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);
+            PrintStringAtWithWidth(gStatementDimensions.LeftColumn + 
gModalSkipColumn, Row++, L"", gStatementDimensions.RightColumn - 
gStatementDimensions.LeftColumn - 2 * gModalSkipColumn);
           } else {
             PrintStringAtWithWidth(gStatementDimensions.LeftColumn, Row++, 
L"", gStatementDimensions.RightColumn - gHelpBlockWidth - 
gStatementDimensions.LeftColumn);
           }
@@ -2078,8 +2094,11 @@
         //
         // 4. Print the down arrow row.
         //
-        PrintStringAtWithWidth(gStatementDimensions.LeftColumn, BottomRow + 1, 
L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);
-       
+        if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {
+          PrintStringAtWithWidth(gStatementDimensions.LeftColumn + 
gModalSkipColumn, BottomRow + 1, L"", gStatementDimensions.RightColumn - 
gStatementDimensions.LeftColumn - 2 *  + gModalSkipColumn);
+        } else {
+          PrintStringAtWithWidth(gStatementDimensions.LeftColumn, BottomRow + 
1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);
+        }
         if (DownArrow) {
           gST->ConOut->SetAttribute (gST->ConOut, GetArrowColor ());
           PrintCharAt (

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to