Implement PROPSHEET_InsertPage.
Knut Andre Tidemann
knut.tidemann at gmail.com
Sat Oct 23 06:32:24 CDT 2010
---
dlls/comctl32/propsheet.c | 75 +++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 72 insertions(+), 3 deletions(-)
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
index f711399..2c41b75 100644
--- a/dlls/comctl32/propsheet.c
+++ b/dlls/comctl32/propsheet.c
@@ -2480,11 +2480,80 @@ static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags)
*/
static BOOL PROPSHEET_InsertPage(HWND hwndDlg, HPROPSHEETPAGE hpageInsertAfter, HPROPSHEETPAGE hpage)
{
+ PropPageInfo * ppi;
+ PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
+ HWND hwndTabControl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
+ TCITEMW item;
+ LPCPROPSHEETPAGEW ppsp = (LPCPROPSHEETPAGEW)hpage;
+ int pageIndex = -1;
+ int i;
+
if (IS_INTRESOURCE(hpageInsertAfter))
- FIXME("(%p, %d, %p): stub\n", hwndDlg, LOWORD(hpageInsertAfter), hpage);
+ {
+ pageIndex = LOWORD(hpageInsertAfter);
+ }
else
- FIXME("(%p, %p, %p): stub\n", hwndDlg, hpageInsertAfter, hpage);
- return FALSE;
+ {
+ for(int i = 0; i < psInfo->nPages; i++)
+ {
+ if(psInfo->proppage[i].hPage == hpageInsertAfter)
+ {
+ pageIndex = i+1;
+ break;
+ }
+ }
+
+ if(pageIndex == -1)
+ return FALSE;
+ }
+
+ if ((int)pageIndex > psInfo->nPages)
+ return PROPSHEET_AddPage(hwndDlg, hpage);
+
+ ppi = ReAlloc(psInfo->proppage, sizeof(PropPageInfo) * (psInfo->nPages + 1));
+ if (!ppi)
+ return FALSE;
+
+ psInfo->proppage = ppi;
+ if (!PROPSHEET_CollectPageInfo(ppsp, psInfo, psInfo->nPages, FALSE))
+ return FALSE;
+
+ /* Move the other pages */
+ for (i = pageIndex; i < (psInfo->nPages - 1); i++)
+ psInfo->proppage[i+1] = psInfo->proppage[i];
+
+ psInfo->proppage[(int)pageIndex].hpage = hpage;
+
+ if (ppsp->dwFlags & PSP_PREMATURE)
+ PROPSHEET_CreatePage(hwndDlg, pageIndex, psInfo, ppsp);
+
+ /*
+ * Add a new tab to the tab control
+ */
+ item.mask = TCIF_TEXT;
+ item.pszText = (LPWSTR) psInfo->proppage[pageIndex].pszText;
+ item.cchTextMax = MAX_TABTEXT_LENGTH;
+
+ if (psInfo->hImageList)
+ {
+ SendMessageW(hwndTabControl, TCM_SETIMAGELIST, 0, (LPARAM)psInfo->hImageList);
+ }
+
+ if(psInfo->proppage[pageIndex].hasIcon)
+ {
+ item.mask |= TCIF_IMAGE;
+ item.iImage = pageIndex;
+ }
+
+ SendMessageW(hwndTabControl, TCM_INSERTITEMW, pageIndex,
+ (LPARAM)&item);
+
+ psInfo->nPages++;
+
+ /* If this is the only page, show it */
+ if(psInfo->nPages == 1)
+ PROPSHEET_SetCurSel(hwndDlg, 0, 1, 0);
+ return TRUE;
}
/******************************************************************************
--
1.7.3.2
------------5h1O3GdvC7n7xJHWL29uhP--
More information about the wine-patches
mailing list