Huw Davies : comctl32: Fix return value of PropertySheet() for modal propsheets.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Nov 2 15:44:18 CST 2006


Module: wine
Branch: master
Commit: 6d0b86a92b925192346df871210694dedeaae29c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6d0b86a92b925192346df871210694dedeaae29c

Author: Huw Davies <huw at codeweavers.com>
Date:   Thu Nov  2 12:21:53 2006 +0000

comctl32: Fix return value of PropertySheet() for modal propsheets.

---

 dlls/comctl32/propsheet.c |   30 +++++++++++++++---------------
 1 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
index 1fd5caf..4c81ec7 100644
--- a/dlls/comctl32/propsheet.c
+++ b/dlls/comctl32/propsheet.c
@@ -122,8 +122,6 @@ typedef struct tagPropSheetInfo
   BOOL hasApply;
   BOOL hasFinish;
   BOOL useCallback;
-  BOOL restartWindows;
-  BOOL rebootSystem;
   BOOL activeValid;
   PropPageInfo* proppage;
   HFONT hFont;
@@ -132,6 +130,7 @@ typedef struct tagPropSheetInfo
   int height;
   HIMAGELIST hImageList;
   BOOL ended;
+  INT result;
 } PropSheetInfo;
 
 typedef struct
@@ -333,8 +332,7 @@ static BOOL PROPSHEET_CollectSheetInfoA(
   if (psInfo->active_page < 0 || psInfo->active_page >= psInfo->nPages)
      psInfo->active_page = 0;
 
-  psInfo->restartWindows = FALSE;
-  psInfo->rebootSystem = FALSE;
+  psInfo->result = 0;
   psInfo->hImageList = 0;
   psInfo->activeValid = FALSE;
 
@@ -388,8 +386,7 @@ static BOOL PROPSHEET_CollectSheetInfoW(
   if (psInfo->active_page < 0 || psInfo->active_page >= psInfo->nPages)
      psInfo->active_page = 0;
 
-  psInfo->restartWindows = FALSE;
-  psInfo->rebootSystem = FALSE;
+  psInfo->result = 0;
   psInfo->hImageList = 0;
   psInfo->activeValid = FALSE;
 
@@ -2763,6 +2760,9 @@ static INT do_loop(PropSheetInfo *psInfo
         ret = -1;
     }
 
+    if(ret != -1)
+        ret = psInfo->result;
+
     DestroyWindow(hwnd);
     return ret;
 }
@@ -3147,14 +3147,10 @@ static BOOL PROPSHEET_DoCommand(HWND hwn
 		{
 		    PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd,
 								      PropSheetInfoStr);
-		    int result = TRUE;
-
-		    if (psInfo->restartWindows)
-			result = ID_PSRESTARTWINDOWS;
 
-		    /* reboot system takes precedence over restart windows */
-		    if (psInfo->rebootSystem)
-			result = ID_PSREBOOTSYSTEM;
+                    /* don't overwrite ID_PSRESTARTWINDOWS or ID_PSREBOOTSYSTEM */
+                    if (psInfo->result == 0)
+                        psInfo->result = IDOK;
 
 		    if (psInfo->isModeless)
 			psInfo->activeValid = FALSE;
@@ -3630,7 +3626,10 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMs
       if (!psInfo)
         return FALSE;
 
-      psInfo->restartWindows = TRUE;
+      /* reboot system takes precedence over restart windows */
+      if (psInfo->result != ID_PSREBOOTSYSTEM)
+          psInfo->result = ID_PSRESTARTWINDOWS;
+
       return TRUE;
     }
 
@@ -3642,7 +3641,8 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMs
       if (!psInfo)
         return FALSE;
 
-      psInfo->rebootSystem = TRUE;
+      psInfo->result = ID_PSREBOOTSYSTEM;
+
       return TRUE;
     }
 




More information about the wine-cvs mailing list