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
18576b36
Commit
18576b36
authored
Dec 07, 2011
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Dec 07, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
user32: Add the tests for dialog window styles, make them pass under Wine.
parent
8f565eb6
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
134 additions
and
3 deletions
+134
-3
dialog.c
dlls/user32/dialog.c
+2
-3
win.c
dlls/user32/tests/win.c
+132
-0
No files found.
dlls/user32/dialog.c
View file @
18576b36
...
...
@@ -557,11 +557,10 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCVOID dlgTemplate,
rect
.
left
=
rect
.
top
=
0
;
rect
.
right
=
MulDiv
(
template
.
cx
,
xBaseUnit
,
4
);
rect
.
bottom
=
MulDiv
(
template
.
cy
,
yBaseUnit
,
8
);
if
(
template
.
style
&
WS_CHILD
)
template
.
style
&=
~
(
WS_CAPTION
|
WS_SYSMENU
);
template
.
style
|=
DS_3DLOOK
;
if
(
template
.
style
&
DS_MODALFRAME
)
template
.
exStyle
|=
WS_EX_DLGMODALFRAME
;
if
(
template
.
style
&
DS_CONTROL
)
if
(
(
template
.
style
&
DS_CONTROL
)
||
!
(
template
.
style
&
WS_CHILD
)
)
template
.
exStyle
|=
WS_EX_CONTROLPARENT
;
AdjustWindowRectEx
(
&
rect
,
template
.
style
,
(
hMenu
!=
0
),
template
.
exStyle
);
pos
.
x
=
rect
.
left
;
...
...
dlls/user32/tests/win.c
View file @
18576b36
...
...
@@ -3813,6 +3813,137 @@ static void test_window_styles(void)
}
}
static
INT_PTR
WINAPI
empty_dlg_proc
(
HWND
hwnd
,
UINT
msg
,
WPARAM
wparam
,
LPARAM
lparam
)
{
return
0
;
}
static
void
check_dialog_style
(
DWORD
style_in
,
DWORD
ex_style_in
,
DWORD
style_out
,
DWORD
ex_style_out
)
{
struct
{
DLGTEMPLATE
dt
;
WORD
menu_name
;
WORD
class_id
;
WORD
class_atom
;
WCHAR
caption
[
1
];
}
dlg_data
;
DWORD
style
,
ex_style
;
HWND
hwnd
,
parent
=
0
;
if
(
style_in
&
WS_CHILD
)
parent
=
CreateWindowEx
(
0
,
"static"
,
NULL
,
WS_OVERLAPPEDWINDOW
,
0
,
0
,
0
,
0
,
NULL
,
NULL
,
NULL
,
NULL
);
dlg_data
.
dt
.
style
=
style_in
;
dlg_data
.
dt
.
dwExtendedStyle
=
ex_style_in
;
dlg_data
.
dt
.
cdit
=
0
;
dlg_data
.
dt
.
x
=
0
;
dlg_data
.
dt
.
y
=
0
;
dlg_data
.
dt
.
cx
=
100
;
dlg_data
.
dt
.
cy
=
100
;
dlg_data
.
menu_name
=
0
;
dlg_data
.
class_id
=
0
;
dlg_data
.
class_atom
=
0
;
dlg_data
.
caption
[
0
]
=
0
;
hwnd
=
CreateDialogIndirectParam
(
GetModuleHandle
(
0
),
&
dlg_data
.
dt
,
parent
,
empty_dlg_proc
,
0
);
ok
(
hwnd
!=
0
,
"dialog creation failed, style %#x, exstyle %#x
\n
"
,
style_in
,
ex_style_in
);
flush_events
(
TRUE
);
style
=
GetWindowLong
(
hwnd
,
GWL_STYLE
);
ex_style
=
GetWindowLong
(
hwnd
,
GWL_EXSTYLE
);
ok
(
style
==
(
style_out
|
DS_3DLOOK
),
"expected style %#x, got %#x
\n
"
,
style_out
|
DS_3DLOOK
,
style
);
ok
(
ex_style
==
ex_style_out
,
"expected ex_style %#x, got %#x
\n
"
,
ex_style_out
,
ex_style
);
/* try setting the styles explicitly */
SetWindowLong
(
hwnd
,
GWL_EXSTYLE
,
ex_style_in
);
style
=
GetWindowLong
(
hwnd
,
GWL_STYLE
);
ex_style
=
GetWindowLong
(
hwnd
,
GWL_EXSTYLE
);
ok
(
style
==
(
style_out
|
DS_3DLOOK
),
"expected style %#x, got %#x
\n
"
,
style_out
|
DS_3DLOOK
,
style
);
/* WS_EX_WINDOWEDGE can't always be changed */
if
(
ex_style_in
&
WS_EX_DLGMODALFRAME
)
ex_style_out
=
ex_style_in
|
WS_EX_WINDOWEDGE
;
else
if
((
style
&
(
WS_DLGFRAME
|
WS_THICKFRAME
))
&&
!
(
ex_style_in
&
WS_EX_STATICEDGE
))
ex_style_out
=
ex_style_in
|
WS_EX_WINDOWEDGE
;
else
ex_style_out
=
ex_style_in
&
~
WS_EX_WINDOWEDGE
;
ok
(
ex_style
==
ex_style_out
,
"expected ex_style %#x, got %#x
\n
"
,
ex_style_out
,
ex_style
);
SetWindowLong
(
hwnd
,
GWL_STYLE
,
style_in
);
style
=
GetWindowLong
(
hwnd
,
GWL_STYLE
);
ex_style
=
GetWindowLong
(
hwnd
,
GWL_EXSTYLE
);
/* WS_CLIPSIBLINGS can't be reset on top-level windows */
if
((
style_in
&
(
WS_CHILD
|
WS_POPUP
))
==
WS_CHILD
)
style_out
=
style_in
;
else
style_out
=
style_in
|
WS_CLIPSIBLINGS
;
ok
(
style
==
style_out
,
"expected style %#x, got %#x
\n
"
,
style_out
,
style
);
/* WS_EX_WINDOWEDGE can't always be changed */
if
(
ex_style_in
&
WS_EX_DLGMODALFRAME
)
ex_style_out
=
ex_style_in
|
WS_EX_WINDOWEDGE
;
else
if
((
style
&
(
WS_DLGFRAME
|
WS_THICKFRAME
))
&&
!
(
ex_style_in
&
WS_EX_STATICEDGE
))
ex_style_out
=
ex_style_in
|
WS_EX_WINDOWEDGE
;
else
ex_style_out
=
ex_style_in
&
~
WS_EX_WINDOWEDGE
;
/* FIXME: Remove the condition below once Wine is fixed */
if
(
ex_style
!=
ex_style_out
)
todo_wine
ok
(
ex_style
==
ex_style_out
,
"expected ex_style %#x, got %#x
\n
"
,
ex_style_out
,
ex_style
);
else
ok
(
ex_style
==
ex_style_out
,
"expected ex_style %#x, got %#x
\n
"
,
ex_style_out
,
ex_style
);
DestroyWindow
(
hwnd
);
DestroyWindow
(
parent
);
}
static
void
test_dialog_styles
(
void
)
{
check_dialog_style
(
0
,
0
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_DLGFRAME
,
0
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_THICKFRAME
,
0
,
WS_THICKFRAME
|
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_DLGFRAME
,
WS_EX_STATICEDGE
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_WINDOWEDGE
|
WS_EX_STATICEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_THICKFRAME
,
WS_EX_STATICEDGE
,
WS_THICKFRAME
|
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_WINDOWEDGE
|
WS_EX_STATICEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
DS_CONTROL
,
0
,
WS_CLIPSIBLINGS
|
WS_CAPTION
|
DS_CONTROL
,
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_OVERLAPPEDWINDOW
,
0
,
WS_CLIPSIBLINGS
|
WS_OVERLAPPEDWINDOW
,
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_CHILD
,
0
,
WS_CHILD
,
0
);
check_dialog_style
(
WS_CHILD
|
WS_DLGFRAME
,
0
,
WS_CHILD
|
WS_DLGFRAME
,
WS_EX_WINDOWEDGE
);
check_dialog_style
(
WS_CHILD
|
WS_THICKFRAME
,
0
,
WS_CHILD
|
WS_THICKFRAME
,
WS_EX_WINDOWEDGE
);
check_dialog_style
(
WS_CHILD
|
WS_DLGFRAME
,
WS_EX_STATICEDGE
,
WS_CHILD
|
WS_DLGFRAME
,
WS_EX_STATICEDGE
);
check_dialog_style
(
WS_CHILD
|
WS_THICKFRAME
,
WS_EX_STATICEDGE
,
WS_CHILD
|
WS_THICKFRAME
,
WS_EX_STATICEDGE
);
check_dialog_style
(
WS_CHILD
|
DS_CONTROL
,
0
,
WS_CHILD
|
DS_CONTROL
,
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_CHILD
|
WS_CAPTION
,
0
,
WS_CHILD
|
WS_CAPTION
,
WS_EX_WINDOWEDGE
);
check_dialog_style
(
WS_CHILD
|
WS_CAPTION
|
WS_SYSMENU
,
0
,
WS_CHILD
|
WS_CAPTION
|
WS_SYSMENU
,
WS_EX_WINDOWEDGE
);
check_dialog_style
(
WS_CHILD
,
WS_EX_WINDOWEDGE
,
WS_CHILD
,
0
);
check_dialog_style
(
WS_CHILD
,
WS_EX_DLGMODALFRAME
,
WS_CHILD
,
WS_EX_WINDOWEDGE
|
WS_EX_DLGMODALFRAME
);
check_dialog_style
(
WS_CHILD
,
WS_EX_DLGMODALFRAME
|
WS_EX_STATICEDGE
,
WS_CHILD
,
WS_EX_STATICEDGE
|
WS_EX_WINDOWEDGE
|
WS_EX_DLGMODALFRAME
);
check_dialog_style
(
WS_CHILD
|
WS_POPUP
,
0
,
WS_CHILD
|
WS_POPUP
|
WS_CLIPSIBLINGS
,
0
);
check_dialog_style
(
WS_CHILD
|
WS_POPUP
|
WS_DLGFRAME
,
0
,
WS_CHILD
|
WS_POPUP
|
WS_DLGFRAME
|
WS_CLIPSIBLINGS
,
WS_EX_WINDOWEDGE
);
check_dialog_style
(
WS_CHILD
|
WS_POPUP
|
WS_THICKFRAME
,
0
,
WS_CHILD
|
WS_POPUP
|
WS_THICKFRAME
|
WS_CLIPSIBLINGS
,
WS_EX_WINDOWEDGE
);
check_dialog_style
(
WS_CHILD
|
WS_POPUP
|
WS_DLGFRAME
,
WS_EX_STATICEDGE
,
WS_CHILD
|
WS_POPUP
|
WS_DLGFRAME
|
WS_CLIPSIBLINGS
,
WS_EX_STATICEDGE
);
check_dialog_style
(
WS_CHILD
|
WS_POPUP
|
WS_THICKFRAME
,
WS_EX_STATICEDGE
,
WS_CHILD
|
WS_POPUP
|
WS_THICKFRAME
|
WS_CLIPSIBLINGS
,
WS_EX_STATICEDGE
);
check_dialog_style
(
WS_CHILD
|
WS_POPUP
|
DS_CONTROL
,
0
,
WS_CHILD
|
WS_POPUP
|
WS_CLIPSIBLINGS
|
DS_CONTROL
,
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_CHILD
|
WS_POPUP
,
WS_EX_APPWINDOW
,
WS_CHILD
|
WS_POPUP
|
WS_CLIPSIBLINGS
,
WS_EX_APPWINDOW
);
check_dialog_style
(
WS_CHILD
|
WS_POPUP
,
WS_EX_WINDOWEDGE
,
WS_CHILD
|
WS_POPUP
|
WS_CLIPSIBLINGS
,
0
);
check_dialog_style
(
WS_CHILD
,
WS_EX_WINDOWEDGE
,
WS_CHILD
,
0
);
check_dialog_style
(
0
,
WS_EX_TOOLWINDOW
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_WINDOWEDGE
|
WS_EX_TOOLWINDOW
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_POPUP
,
0
,
WS_POPUP
|
WS_CLIPSIBLINGS
,
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_POPUP
,
WS_EX_WINDOWEDGE
,
WS_POPUP
|
WS_CLIPSIBLINGS
,
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_POPUP
|
WS_DLGFRAME
,
0
,
WS_POPUP
|
WS_DLGFRAME
|
WS_CLIPSIBLINGS
,
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_POPUP
|
WS_THICKFRAME
,
0
,
WS_POPUP
|
WS_THICKFRAME
|
WS_CLIPSIBLINGS
,
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_POPUP
|
WS_DLGFRAME
,
WS_EX_STATICEDGE
,
WS_POPUP
|
WS_DLGFRAME
|
WS_CLIPSIBLINGS
,
WS_EX_STATICEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_POPUP
|
WS_THICKFRAME
,
WS_EX_STATICEDGE
,
WS_POPUP
|
WS_THICKFRAME
|
WS_CLIPSIBLINGS
,
WS_EX_STATICEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_POPUP
|
DS_CONTROL
,
0
,
WS_POPUP
|
WS_CLIPSIBLINGS
|
DS_CONTROL
,
WS_EX_CONTROLPARENT
);
check_dialog_style
(
WS_CAPTION
,
WS_EX_STATICEDGE
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_STATICEDGE
|
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
0
,
WS_EX_APPWINDOW
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_APPWINDOW
|
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
if
(
pGetLayeredWindowAttributes
)
{
check_dialog_style
(
0
,
WS_EX_LAYERED
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_LAYERED
|
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
0
,
WS_EX_LAYERED
|
WS_EX_TRANSPARENT
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_LAYERED
|
WS_EX_TRANSPARENT
|
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
check_dialog_style
(
0
,
WS_EX_LAYERED
|
WS_EX_TRANSPARENT
|
WS_EX_TOOLWINDOW
,
WS_CLIPSIBLINGS
|
WS_CAPTION
,
WS_EX_LAYERED
|
WS_EX_TRANSPARENT
|
WS_EX_TOOLWINDOW
|
WS_EX_WINDOWEDGE
|
WS_EX_CONTROLPARENT
);
}
}
static
void
test_scrollwindow
(
HWND
hwnd
)
{
HDC
hdc
;
...
...
@@ -6745,6 +6876,7 @@ START_TEST(win)
test_AdjustWindowRect
();
test_window_styles
();
test_dialog_styles
();
test_redrawnow
();
test_csparentdc
();
test_SetWindowLong
();
...
...
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