PROPSHEET: Minor improvements

Filip Navara xnavara at volny.cz
Sat Sep 18 04:11:13 CDT 2004


Changelog:
- Implement PSM_INDEXTOID, PSM_INDEXTOPAGE and PSM_PAGETOINDEX messages.
- Partially implement the PSH_WIZARDCONTEXTHELP and PSH_NOCONTEXTHELP
  styles.

-------------- next part --------------
Index: dlls/comctl32/comctl_Cn.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Cn.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Cn.rc
--- dlls/comctl32/comctl_Cn.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Cn.rc	17 Sep 2004 20:29:05 -0000
@@ -20,7 +20,7 @@
 #pragma code_page(936)
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "ÊôÐÔ "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Cs.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Cs.rc,v
retrieving revision 1.2
diff -u -r1.2 comctl_Cs.rc
--- dlls/comctl32/comctl_Cs.rc	24 Aug 2004 18:33:04 -0000	1.2
+++ dlls/comctl32/comctl_Cs.rc	17 Sep 2004 20:29:17 -0000
@@ -22,7 +22,7 @@
 LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Vlastnosti "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_De.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_De.rc,v
retrieving revision 1.9
diff -u -r1.9 comctl_De.rc
--- dlls/comctl32/comctl_De.rc	24 Aug 2004 18:33:04 -0000	1.9
+++ dlls/comctl32/comctl_De.rc	17 Sep 2004 20:29:26 -0000
@@ -40,7 +40,7 @@
 }
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Eigenschaften für "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_En.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_En.rc,v
retrieving revision 1.8
diff -u -r1.8 comctl_En.rc
--- dlls/comctl32/comctl_En.rc	24 Aug 2004 18:33:04 -0000	1.8
+++ dlls/comctl32/comctl_En.rc	17 Sep 2004 20:29:33 -0000
@@ -19,7 +19,7 @@
 LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Properties for "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Es.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Es.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Es.rc
--- dlls/comctl32/comctl_Es.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Es.rc	17 Sep 2004 20:29:37 -0000
@@ -19,7 +19,7 @@
 LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Propiedades de "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Fr.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Fr.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Fr.rc
--- dlls/comctl32/comctl_Fr.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Fr.rc	17 Sep 2004 20:29:40 -0000
@@ -23,7 +23,7 @@
 LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Propriétés pour "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_It.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_It.rc,v
retrieving revision 1.5
diff -u -r1.5 comctl_It.rc
--- dlls/comctl32/comctl_It.rc	24 Aug 2004 18:33:04 -0000	1.5
+++ dlls/comctl32/comctl_It.rc	17 Sep 2004 20:29:45 -0000
@@ -20,7 +20,7 @@
 LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Proprietà per "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Ja.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Ja.rc,v
retrieving revision 1.5
diff -u -r1.5 comctl_Ja.rc
--- dlls/comctl32/comctl_Ja.rc	10 May 2004 21:26:04 -0000	1.5
+++ dlls/comctl32/comctl_Ja.rc	17 Sep 2004 20:29:52 -0000
@@ -19,7 +19,7 @@
 LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Properties for "
 FONT 9, "MS UI Gothic"
 BEGIN
Index: dlls/comctl32/comctl_Ko.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Ko.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Ko.rc
--- dlls/comctl32/comctl_Ko.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Ko.rc	17 Sep 2004 20:29:58 -0000
@@ -19,7 +19,7 @@
 LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Properties for "
 FONT 9, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Nl.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Nl.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Nl.rc
--- dlls/comctl32/comctl_Nl.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Nl.rc	17 Sep 2004 20:30:03 -0000
@@ -21,7 +21,7 @@
 LANGUAGE LANG_DUTCH, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Eigenschappen van "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Pl.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Pl.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Pl.rc
--- dlls/comctl32/comctl_Pl.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Pl.rc	17 Sep 2004 20:30:07 -0000
@@ -20,7 +20,7 @@
 LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "W³aœciwoœci "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Pt.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Pt.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Pt.rc
--- dlls/comctl32/comctl_Pt.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Pt.rc	17 Sep 2004 20:30:11 -0000
@@ -19,7 +19,7 @@
 LANGUAGE LANG_PORTUGUESE, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Propriedades para "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Ru.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Ru.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Ru.rc
--- dlls/comctl32/comctl_Ru.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Ru.rc	17 Sep 2004 20:30:16 -0000
@@ -21,7 +21,7 @@
 LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Ñâîéñòâà äëÿ "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Si.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Si.rc,v
retrieving revision 1.5
diff -u -r1.5 comctl_Si.rc
--- dlls/comctl32/comctl_Si.rc	24 Aug 2004 18:33:04 -0000	1.5
+++ dlls/comctl32/comctl_Si.rc	17 Sep 2004 20:30:22 -0000
@@ -19,7 +19,7 @@
 LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Lastnosti"
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Th.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Th.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Th.rc
--- dlls/comctl32/comctl_Th.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Th.rc	17 Sep 2004 20:30:30 -0000
@@ -19,7 +19,7 @@
 LANGUAGE LANG_THAI, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "¤Ø³ÊÁºÑµÔ¢Í§ "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/comctl_Uk.rc
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl_Uk.rc,v
retrieving revision 1.4
diff -u -r1.4 comctl_Uk.rc
--- dlls/comctl32/comctl_Uk.rc	24 Aug 2004 18:33:04 -0000	1.4
+++ dlls/comctl32/comctl_Uk.rc	17 Sep 2004 20:30:33 -0000
@@ -21,7 +21,7 @@
 LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
 
 IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140
-STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
+STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE
 CAPTION "Âëàñòèâîñò³ äëÿ "
 FONT 8, "MS Shell Dlg"
 BEGIN
Index: dlls/comctl32/propsheet.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/propsheet.c,v
retrieving revision 1.119
diff -u -r1.119 propsheet.c
--- dlls/comctl32/propsheet.c	14 Sep 2004 01:06:44 -0000	1.119
+++ dlls/comctl32/propsheet.c	18 Sep 2004 08:53:35 -0000
@@ -34,13 +34,12 @@
  *   - Messages:
  *     o PSM_GETRESULT
  *     o PSM_IDTOINDEX
- *     o PSM_INDEXTOID
- *     o PSM_INDEXTOPAGE
  *     o PSM_INSERTPAGE
- *     o PSM_PAGETOINDEX
  *     o PSM_RECALCPAGESIZES
  *     o PSM_SETHEADERSUBTITLE
  *     o PSM_SETHEADERTITLE
+ *     o WM_HELP
+ *     o WM_CONTEXTMENU
  *   - Notifications:
  *     o PSN_GETOBJECT
  *     o PSN_QUERYINITIALFOCUS
@@ -48,10 +47,8 @@
  *   - Styles:
  *     o PSH_WIZARDHASFINISH
  *     o PSH_RTLREADING
- *     o PSH_WIZARDCONTEXTHELP
  *     o PSH_STRETCHWATERMARK
  *     o PSH_USEPAGELANG
- *     o PSH_NOCONTEXTHELP
  *     o PSH_USEPSTARTPAGE
  *   - Page styles:
  *     o PSP_USEFUSIONCONTEXT
@@ -237,18 +234,14 @@
    * unhandled header flags:
    *  PSH_WIZARDHASFINISH    0x00000010
    *  PSH_RTLREADING         0x00000800
-   *  PSH_WIZARDCONTEXTHELP  0x00001000
    *  PSH_STRETCHWATERMARK   0x00040000
    *  PSH_USEPAGELANG        0x00200000
-   *  PSH_NOCONTEXTHELP      0x02000000      also not in .h
    */
 
     add_flag(PSH_WIZARDHASFINISH);
     add_flag(PSH_RTLREADING);
-    add_flag(PSH_WIZARDCONTEXTHELP);
     add_flag(PSH_STRETCHWATERMARK);
     add_flag(PSH_USEPAGELANG);
-    add_flag(PSH_NOCONTEXTHELP);
     if (string[0] != '\0')
 	FIXME("%s\n", string);
 }
@@ -689,9 +682,29 @@
 
   memcpy(temp, template, resSize);
 
+  if (psInfo->ppshheader.dwFlags & PSH_NOCONTEXTHELP)
+  {
+    if (((MyDLGTEMPLATEEX*)temp)->signature == 0xFFFF)
+      ((MyDLGTEMPLATEEX*)temp)->style &= ~DS_CONTEXTHELP;
+    else
+      ((DLGTEMPLATE*)temp)->style &= ~DS_CONTEXTHELP;
+  }
+  if ((psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD) &&
+      (psInfo->ppshheader.dwFlags & PSH_WIZARDCONTEXTHELP))
+  {
+    if (((MyDLGTEMPLATEEX*)temp)->signature == 0xFFFF)
+      ((MyDLGTEMPLATEEX*)temp)->style |= DS_CONTEXTHELP;
+    else
+      ((DLGTEMPLATE*)temp)->style |= DS_CONTEXTHELP;
+  }
+
   if (psInfo->useCallback)
     (*(psInfo->ppshheader.pfnCallback))(0, PSCB_PRECREATE, (LPARAM)temp);
 
+  /* NOTE: MSDN states "Returns a positive value if successful, or -1
+   * otherwise for modal property sheets.", but this is wrong. The
+   * actual return value is either TRUE (success), FALSE (cancel) or
+   * -1 (error). */
   if( psInfo->unicode )
   {
     if (!(psInfo->ppshheader.dwFlags & PSH_MODELESS))
@@ -2568,7 +2581,16 @@
  */
 static LRESULT PROPSHEET_PageToIndex(HWND hwndDlg, HPROPSHEETPAGE hPage)
 {
-    FIXME("(%p, %p): stub\n", hwndDlg, hPage);
+    int index;
+    PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
+                                                       PropSheetInfoStr);
+
+    TRACE("(%p, %p)\n", hwndDlg, hPage);
+
+    for (index = 0; index < psInfo->nPages; index++)
+        if (psInfo->proppage[index].hpage == hPage)
+            return index;
+    WARN("%p not found\n", hPage);
     return -1;
 }
 
@@ -2577,8 +2599,14 @@
  */
 static LRESULT PROPSHEET_IndexToPage(HWND hwndDlg, int iPageIndex)
 {
-    FIXME("(%p, %d): stub\n", hwndDlg, iPageIndex);
-    return 0;
+    PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
+                                                       PropSheetInfoStr);
+    TRACE("(%p, %d)\n", hwndDlg, iPageIndex);
+    if (iPageIndex<0 || iPageIndex>=psInfo->nPages) {
+        WARN("%d out of range.\n", iPageIndex);
+	return 0;
+    }
+    return (LRESULT)psInfo->proppage[iPageIndex].hpage;
 }
 
 /******************************************************************************
@@ -2595,8 +2623,19 @@
  */
 static LRESULT PROPSHEET_IndexToId(HWND hwndDlg, int iPageIndex)
 {
-    FIXME("(%p, %d): stub\n", hwndDlg, iPageIndex);
-    return 0;
+    PropSheetInfo * psInfo = (PropSheetInfo*) GetPropW(hwndDlg,
+                                                       PropSheetInfoStr);
+    LPCPROPSHEETPAGEW psp;
+    TRACE("(%p, %d)\n", hwndDlg, iPageIndex);
+    if (iPageIndex<0 || iPageIndex>=psInfo->nPages) {
+        WARN("%d out of range.\n", iPageIndex);
+	return 0;
+    }
+    psp = (LPCPROPSHEETPAGEW)psInfo->proppage[iPageIndex].hpage;
+    if (psp->dwFlags & PSP_DLGINDIRECT || HIWORD(psp->u.pszTemplate)) {
+        return 0;
+    }
+    return (LRESULT)psp->u.pszTemplate;
 }
 
 /******************************************************************************


More information about the wine-patches mailing list