Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
c457fbdd
Commit
c457fbdd
authored
Aug 06, 2001
by
Andreas Mohr
Committed by
Alexandre Julliard
Aug 06, 2001
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed tab control index handling.
parent
99f54153
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
48 additions
and
13 deletions
+48
-13
propsheet.c
dlls/comctl32/propsheet.c
+48
-13
No files found.
dlls/comctl32/propsheet.c
View file @
c457fbdd
...
...
@@ -151,6 +151,8 @@ static BOOL PROPSHEET_CollectSheetInfo(LPCPROPSHEETHEADERA lppsh,
psInfo
->
isModeless
=
dwFlags
&
PSH_MODELESS
;
memcpy
(
&
psInfo
->
ppshheader
,
lppsh
,
dwSize
);
TRACE
(
"
\n
** PROPSHEETHEADER **
\n
dwSize
\t\t
%ld
\n
dwFlags
\t\t
%08lx
\n
hwndParent
\t
%04x
\n
hInstance
\t
%08x
\n
pszCaption
\t
'%s'
\n
nPages
\t\t
%d
\n
pfnCallback
\t
%p
\n
"
,
lppsh
->
dwSize
,
lppsh
->
dwFlags
,
lppsh
->
hwndParent
,
lppsh
->
hInstance
,
lppsh
->
pszCaption
,
lppsh
->
nPages
,
lppsh
->
pfnCallback
);
if
(
HIWORD
(
lppsh
->
pszCaption
))
{
...
...
@@ -193,6 +195,7 @@ BOOL PROPSHEET_CollectPageInfo(LPCPROPSHEETPAGEA lppsp,
DWORD
dwFlags
;
int
width
,
height
;
TRACE
(
"
\n
"
);
psInfo
->
proppage
[
index
].
hpage
=
(
HPROPSHEETPAGE
)
lppsp
;
psInfo
->
proppage
[
index
].
hwndPage
=
0
;
psInfo
->
proppage
[
index
].
isDirty
=
FALSE
;
...
...
@@ -358,6 +361,7 @@ BOOL PROPSHEET_CreateDialog(PropSheetInfo* psInfo)
DWORD
resSize
;
WORD
resID
=
IDD_PROPSHEET
;
TRACE
(
"
\n
"
);
if
(
psInfo
->
ppshheader
.
dwFlags
&
PSH_WIZARD
)
resID
=
IDD_WIZARD
;
...
...
@@ -873,6 +877,7 @@ static PADDING_INFO PROPSHEET_GetPaddingInfoWizard(HWND hwndDlg, const PropSheet
INT
idButton
;
POINT
ptButton
,
ptLine
;
TRACE
(
"
\n
"
);
if
(
psInfo
->
hasHelp
)
{
idButton
=
IDHELP
;
...
...
@@ -931,6 +936,7 @@ static BOOL PROPSHEET_CreateTabControl(HWND hwndParent,
int
iImage
=
0
;
char
tabtext
[
MAX_TABTEXT_LENGTH
]
=
"Tab text"
;
TRACE
(
"
\n
"
);
item
.
mask
=
TCIF_TEXT
;
item
.
pszText
=
tabtext
;
item
.
cchTextMax
=
MAX_TABTEXT_LENGTH
;
...
...
@@ -1094,6 +1100,9 @@ static BOOL PROPSHEET_CreatePage(HWND hwndParent,
*/
static
BOOL
PROPSHEET_ShowPage
(
HWND
hwndDlg
,
int
index
,
PropSheetInfo
*
psInfo
)
{
HWND
hwndTabCtrl
;
TRACE
(
"active_page %d, index %d
\n
"
,
psInfo
->
active_page
,
index
);
if
(
index
==
psInfo
->
active_page
)
{
if
(
GetTopWindow
(
hwndDlg
)
!=
psInfo
->
proppage
[
index
].
hwndPage
)
...
...
@@ -1114,14 +1123,10 @@ static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo * psInfo)
ShowWindow
(
psInfo
->
proppage
[
index
].
hwndPage
,
SW_SHOW
);
if
(
!
(
psInfo
->
ppshheader
.
dwFlags
&
PSH_WIZARD
))
{
HWND
hwndTabCtrl
;
/* Synchronize current selection with tab control */
hwndTabCtrl
=
GetDlgItem
(
hwndDlg
,
IDC_TABCONTROL
);
SendMessageA
(
hwndTabCtrl
,
TCM_SETCURSEL
,
index
,
0
);
}
/* Synchronize current selection with tab control
* It seems to be needed even in case of PSH_WIZARD (no tab controls there) */
hwndTabCtrl
=
GetDlgItem
(
hwndDlg
,
IDC_TABCONTROL
);
SendMessageA
(
hwndTabCtrl
,
TCM_SETCURSEL
,
index
,
0
);
psInfo
->
active_page
=
index
;
psInfo
->
activeValid
=
TRUE
;
...
...
@@ -1141,6 +1146,7 @@ static BOOL PROPSHEET_Back(HWND hwndDlg)
PropSheetInfoStr
);
LRESULT
result
;
TRACE
(
"active_page %d
\n
"
,
psInfo
->
active_page
);
if
(
psInfo
->
active_page
<
0
)
return
FALSE
;
...
...
@@ -1178,6 +1184,7 @@ static BOOL PROPSHEET_Next(HWND hwndDlg)
PropSheetInfo
*
psInfo
=
(
PropSheetInfo
*
)
GetPropA
(
hwndDlg
,
PropSheetInfoStr
);
TRACE
(
"active_page %d
\n
"
,
psInfo
->
active_page
);
if
(
psInfo
->
active_page
<
0
)
return
FALSE
;
...
...
@@ -1211,6 +1218,7 @@ static BOOL PROPSHEET_Finish(HWND hwndDlg)
PropSheetInfo
*
psInfo
=
(
PropSheetInfo
*
)
GetPropA
(
hwndDlg
,
PropSheetInfoStr
);
TRACE
(
"active_page %d
\n
"
,
psInfo
->
active_page
);
if
(
psInfo
->
active_page
<
0
)
return
FALSE
;
...
...
@@ -1248,6 +1256,7 @@ static BOOL PROPSHEET_Apply(HWND hwndDlg, LPARAM lParam)
PropSheetInfo
*
psInfo
=
(
PropSheetInfo
*
)
GetPropA
(
hwndDlg
,
PropSheetInfoStr
);
TRACE
(
"active_page %d
\n
"
,
psInfo
->
active_page
);
if
(
psInfo
->
active_page
<
0
)
return
FALSE
;
...
...
@@ -1309,6 +1318,7 @@ static void PROPSHEET_Cancel(HWND hwndDlg, LPARAM lParam)
PSHNOTIFY
psn
;
int
i
;
TRACE
(
"active_page %d
\n
"
,
psInfo
->
active_page
);
if
(
psInfo
->
active_page
<
0
)
return
;
...
...
@@ -1351,6 +1361,7 @@ static void PROPSHEET_Help(HWND hwndDlg)
HWND
hwndPage
;
PSHNOTIFY
psn
;
TRACE
(
"active_page %d
\n
"
,
psInfo
->
active_page
);
if
(
psInfo
->
active_page
<
0
)
return
;
...
...
@@ -1372,6 +1383,7 @@ static void PROPSHEET_Changed(HWND hwndDlg, HWND hwndDirtyPage)
PropSheetInfo
*
psInfo
=
(
PropSheetInfo
*
)
GetPropA
(
hwndDlg
,
PropSheetInfoStr
);
TRACE
(
"
\n
"
);
if
(
!
psInfo
)
return
;
/*
* Set the dirty flag of this page.
...
...
@@ -1404,6 +1416,7 @@ static void PROPSHEET_UnChanged(HWND hwndDlg, HWND hwndCleanPage)
PropSheetInfo
*
psInfo
=
(
PropSheetInfo
*
)
GetPropA
(
hwndDlg
,
PropSheetInfoStr
);
TRACE
(
"
\n
"
);
if
(
!
psInfo
)
return
;
for
(
i
=
0
;
i
<
psInfo
->
nPages
;
i
++
)
{
...
...
@@ -1428,6 +1441,7 @@ static void PROPSHEET_UnChanged(HWND hwndDlg, HWND hwndCleanPage)
*/
static
void
PROPSHEET_PressButton
(
HWND
hwndDlg
,
int
buttonID
)
{
TRACE
(
"buttonID %d
\n
"
,
buttonID
);
switch
(
buttonID
)
{
case
PSBTN_APPLYNOW
:
...
...
@@ -1476,12 +1490,20 @@ static BOOL PROPSHEET_CanSetCurSel(HWND hwndDlg)
PropSheetInfoStr
);
HWND
hwndPage
;
PSHNOTIFY
psn
;
BOOL
res
=
FALSE
;
TRACE
(
"active_page %d
\n
"
,
psInfo
->
active_page
);
if
(
!
psInfo
)
return
FALSE
;
{
res
=
FALSE
;
goto
end
;
}
if
(
psInfo
->
active_page
<
0
)
return
TRUE
;
{
res
=
TRUE
;
goto
end
;
}
/*
* Notify the current page.
...
...
@@ -1492,7 +1514,11 @@ static BOOL PROPSHEET_CanSetCurSel(HWND hwndDlg)
psn
.
hdr
.
idFrom
=
0
;
psn
.
lParam
=
0
;
return
!
SendMessageA
(
hwndPage
,
WM_NOTIFY
,
0
,
(
LPARAM
)
&
psn
);
res
=
!
SendMessageA
(
hwndPage
,
WM_NOTIFY
,
0
,
(
LPARAM
)
&
psn
);
end:
TRACE
(
"<-- %d
\n
"
,
res
);
return
res
;
}
/******************************************************************************
...
...
@@ -1507,6 +1533,7 @@ static BOOL PROPSHEET_SetCurSel(HWND hwndDlg,
PropSheetInfo
*
psInfo
=
(
PropSheetInfo
*
)
GetPropA
(
hwndDlg
,
PropSheetInfoStr
);
HWND
hwndHelp
=
GetDlgItem
(
hwndDlg
,
IDHELP
);
TRACE
(
"index %d, skipdir %d, hpage %p
\n
"
,
index
,
skipdir
,
hpage
);
/* hpage takes precedence over index */
if
(
hpage
!=
NULL
)
index
=
PROPSHEET_GetPageIndex
(
hpage
,
psInfo
);
...
...
@@ -1569,6 +1596,7 @@ static void PROPSHEET_SetTitleA(HWND hwndDlg, DWORD dwStyle, LPCSTR lpszText)
PropSheetInfo
*
psInfo
=
(
PropSheetInfo
*
)
GetPropA
(
hwndDlg
,
PropSheetInfoStr
);
char
szTitle
[
256
];
TRACE
(
"'%s' (style %08lx)
\n
"
,
lpszText
,
dwStyle
);
if
(
HIWORD
(
lpszText
)
==
0
)
{
if
(
!
LoadStringA
(
psInfo
->
ppshheader
.
hInstance
,
LOWORD
(
lpszText
),
szTitle
,
sizeof
(
szTitle
)
-
1
))
...
...
@@ -1599,6 +1627,7 @@ static void PROPSHEET_SetFinishTextA(HWND hwndDlg, LPCSTR lpszText)
{
HWND
hwndButton
=
GetDlgItem
(
hwndDlg
,
IDC_FINISH_BUTTON
);
TRACE
(
"'%s'
\n
"
,
lpszText
);
/* Set text, show and enable the Finish button */
SetWindowTextA
(
hwndButton
,
lpszText
);
ShowWindow
(
hwndButton
,
SW_SHOW
);
...
...
@@ -1652,6 +1681,7 @@ static BOOL PROPSHEET_AddPage(HWND hwndDlg,
char
tabtext
[
MAX_TABTEXT_LENGTH
]
=
"Tab text"
;
LPCPROPSHEETPAGEA
ppsp
=
(
LPCPROPSHEETPAGEA
)
hpage
;
TRACE
(
"hpage %p
\n
"
,
hpage
);
/*
* Allocate and fill in a new PropPageInfo entry.
*/
...
...
@@ -1703,6 +1733,7 @@ static BOOL PROPSHEET_RemovePage(HWND hwndDlg,
HWND
hwndTabControl
=
GetDlgItem
(
hwndDlg
,
IDC_TABCONTROL
);
PropPageInfo
*
oldPages
;
TRACE
(
"index %d, hpage %p
\n
"
,
index
,
hpage
);
if
(
!
psInfo
)
{
return
FALSE
;
}
...
...
@@ -1851,6 +1882,7 @@ static int PROPSHEET_GetPageIndex(HPROPSHEETPAGE hpage, PropSheetInfo* psInfo)
BOOL
found
=
FALSE
;
int
index
=
0
;
TRACE
(
"hpage %p
\n
"
,
hpage
);
while
((
index
<
psInfo
->
nPages
)
&&
(
found
==
FALSE
))
{
if
(
psInfo
->
proppage
[
index
].
hpage
==
hpage
)
...
...
@@ -2028,6 +2060,7 @@ static BOOL PROPSHEET_IsDialogMessage(HWND hwnd, LPMSG lpMsg)
{
PropSheetInfo
*
psInfo
=
(
PropSheetInfo
*
)
GetPropA
(
hwnd
,
PropSheetInfoStr
);
TRACE
(
"
\n
"
);
if
(
!
psInfo
||
(
hwnd
!=
lpMsg
->
hwnd
&&
!
IsChild
(
hwnd
,
lpMsg
->
hwnd
)))
return
FALSE
;
...
...
@@ -2158,8 +2191,10 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
PROPSHEET_SetCurSel
(
hwnd
,
idx
,
1
,
psInfo
->
proppage
[
idx
].
hpage
);
if
(
!
(
psInfo
->
ppshheader
.
dwFlags
&
PSH_WIZARD
))
SendMessageA
(
hwndTabCtrl
,
TCM_SETCURSEL
,
psInfo
->
active_page
,
0
);
/* doing TCM_SETCURSEL seems to be needed even in case of PSH_WIZARD,
* as some programs call TCM_GETCURSEL to get the current selection
* from which to switch to the next page */
SendMessageA
(
hwndTabCtrl
,
TCM_SETCURSEL
,
psInfo
->
active_page
,
0
);
if
(
!
HIWORD
(
psInfo
->
ppshheader
.
pszCaption
)
&&
psInfo
->
ppshheader
.
hInstance
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment