Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
8e968fd2
Commit
8e968fd2
authored
Aug 04, 2010
by
Nikolay Sivov
Committed by
Alexandre Julliard
Aug 04, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comctl32/monthcal: Add some tests for post-V1 hittest fields.
parent
37c86328
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
163 additions
and
33 deletions
+163
-33
monthcal.c
dlls/comctl32/monthcal.c
+8
-10
monthcal.c
dlls/comctl32/tests/monthcal.c
+153
-23
commctrl.h
include/commctrl.h
+2
-0
No files found.
dlls/comctl32/monthcal.c
View file @
8e968fd2
...
...
@@ -1715,23 +1715,21 @@ MONTHCAL_HitTest(const MONTHCAL_INFO *infoPtr, MCHITTESTINFO *lpht)
lpht
->
uHit
=
MCHT_CALENDARWEEKNUM
;
lpht
->
st
.
wYear
=
ht_month
.
wYear
;
if
(
day
<
1
)
{
if
(
day
<
1
)
{
lpht
->
st
.
wMonth
=
ht_month
.
wMonth
-
1
;
}
else
if
(
day
>
MONTHCAL_MonthLength
(
ht_month
.
wMonth
,
ht_month
.
wYear
))
{
lpht
->
st
.
wMonth
=
ht_month
.
wMonth
+
1
;
}
else
lpht
->
st
.
wMonth
=
ht_month
.
wMonth
;
if
(
day
<
1
)
{
lpht
->
st
.
wDay
=
MONTHCAL_MonthLength
(
ht_month
.
wMonth
-
1
,
ht_month
.
wYear
)
-
day
;
}
else
if
(
day
>
MONTHCAL_MonthLength
(
ht_month
.
wMonth
,
ht_month
.
wYear
))
{
else
if
(
day
>
MONTHCAL_MonthLength
(
ht_month
.
wMonth
,
ht_month
.
wYear
))
{
lpht
->
st
.
wMonth
=
ht_month
.
wMonth
+
1
;
lpht
->
st
.
wDay
=
day
-
MONTHCAL_MonthLength
(
ht_month
.
wMonth
,
ht_month
.
wYear
);
}
else
{
lpht
->
st
.
wMonth
=
ht_month
.
wMonth
;
lpht
->
st
.
wDay
=
day
;
}
}
else
if
(
PtInRect
(
&
infoPtr
->
calendars
[
calIdx
].
days
,
lpht
->
pt
))
{
...
...
dlls/comctl32/tests/monthcal.c
View file @
8e968fd2
...
...
@@ -28,12 +28,14 @@
#include "commctrl.h"
#include "wine/test.h"
#include "v6util.h"
#include <assert.h>
#include <windows.h>
#include "msg.h"
#define expect(expected, got) ok(expected == got, "Expected %d, got %d\n", expected, got);
#define expect_hex(expected, got) ok(expected == got, "Expected %x, got %x\n", expected, got);
#define expect_d(expected, got) ok(abs((expected) - (got)) <= 2, "Expected %d, got %d\n", expected, got);
#define NUM_MSG_SEQUENCES 2
#define PARENT_SEQ_INDEX 0
...
...
@@ -292,26 +294,6 @@ static const struct message destroy_monthcal_multi_sel_style_seq[] = {
{
0
}
};
/* expected message sequence for parent window*/
static
const
struct
message
destroy_parent_seq
[]
=
{
{
0x0090
,
sent
|
optional
},
/* Vista */
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_IME_SETCONTEXT
,
sent
|
wparam
|
optional
,
0
},
{
WM_IME_NOTIFY
,
sent
|
wparam
|
lparam
|
defwinproc
|
optional
,
1
,
0
},
{
WM_NCACTIVATE
,
sent
|
wparam
|
optional
,
0
},
{
WM_ACTIVATE
,
sent
|
wparam
|
optional
,
0
},
{
WM_NCACTIVATE
,
sent
|
wparam
|
lparam
|
optional
,
0
,
0
},
{
WM_ACTIVATE
,
sent
|
wparam
|
lparam
|
optional
,
0
,
0
},
{
WM_ACTIVATEAPP
,
sent
|
wparam
|
optional
,
0
},
{
WM_KILLFOCUS
,
sent
|
wparam
|
lparam
|
optional
,
0
,
0
},
{
WM_IME_SETCONTEXT
,
sent
|
wparam
|
optional
,
0
},
{
WM_IME_NOTIFY
,
sent
|
wparam
|
lparam
|
defwinproc
|
optional
,
1
,
0
},
{
WM_DESTROY
,
sent
|
wparam
|
lparam
,
0
,
0
},
{
WM_NCDESTROY
,
sent
|
wparam
|
lparam
,
0
,
0
},
{
0
}
};
static
void
test_monthcal
(
void
)
{
HWND
hwnd
;
...
...
@@ -1680,11 +1662,135 @@ static void test_killfocus(void)
DestroyWindow
(
hwnd
);
}
static
void
test_hittest_v6
(
void
)
{
MCHITTESTINFO
mchit
;
DWORD
ret
;
HWND
hwnd
;
RECT
r
;
hwnd
=
create_monthcal_control
(
0
);
SendMessage
(
hwnd
,
MCM_SETCALENDARBORDER
,
TRUE
,
0
);
SendMessage
(
hwnd
,
MCM_GETMINREQRECT
,
0
,
(
LPARAM
)
&
r
);
/* reserving some area around calendar */
MoveWindow
(
hwnd
,
0
,
0
,
r
.
right
*
3
/
2
,
r
.
bottom
*
3
/
2
,
FALSE
);
mchit
.
cbSize
=
sizeof
(
MCHITTESTINFO
);
mchit
.
pt
.
x
=
mchit
.
pt
.
y
=
0
;
mchit
.
iOffset
=
-
1
;
mchit
.
iRow
=
-
1
;
mchit
.
iCol
=
-
1
;
ret
=
SendMessage
(
hwnd
,
MCM_HITTEST
,
0
,
(
LPARAM
)
&
mchit
);
if
(
ret
==
-
1
)
{
win_skip
(
"Only MCHITTESTINFO_V1 supported
\n
"
);
DestroyWindow
(
hwnd
);
return
;
}
todo_wine
expect_hex
(
MCHT_NOWHERE
,
ret
);
expect
(
-
1
,
mchit
.
iOffset
);
expect
(
-
1
,
mchit
.
iRow
);
expect
(
-
1
,
mchit
.
iCol
);
MoveWindow
(
hwnd
,
0
,
0
,
r
.
right
,
r
.
bottom
,
FALSE
);
mchit
.
pt
.
x
=
r
.
right
/
2
;
mchit
.
pt
.
y
=
r
.
bottom
/
2
;
mchit
.
iOffset
=
-
1
;
ret
=
SendMessage
(
hwnd
,
MCM_HITTEST
,
0
,
(
LPARAM
)
&
mchit
);
expect_hex
(
MCHT_CALENDARDATE
,
ret
);
todo_wine
expect
(
0
,
mchit
.
iOffset
);
/* over day area */
mchit
.
pt
.
x
=
r
.
right
/
(
7
*
2
);
mchit
.
pt
.
y
=
r
.
bottom
/
2
;
mchit
.
iOffset
=
-
1
;
mchit
.
iCol
=
mchit
.
iRow
=
-
1
;
mchit
.
uHit
=
0
;
mchit
.
rc
.
left
=
mchit
.
rc
.
right
=
mchit
.
rc
.
top
=
mchit
.
rc
.
bottom
=
-
1
;
ret
=
SendMessage
(
hwnd
,
MCM_HITTEST
,
0
,
(
LPARAM
)
&
mchit
);
expect_hex
(
MCHT_CALENDARDATE
,
ret
);
expect_hex
(
MCHT_CALENDARDATE
,
mchit
.
uHit
);
todo_wine
expect
(
0
,
mchit
.
iOffset
);
todo_wine
expect
(
2
,
mchit
.
iRow
);
todo_wine
expect
(
0
,
mchit
.
iCol
);
/* returned a one day rectangle */
todo_wine
expect_d
(
r
.
right
/
7
,
mchit
.
rc
.
right
-
mchit
.
rc
.
left
);
todo_wine
expect_d
(
r
.
bottom
/
10
,
mchit
.
rc
.
bottom
-
mchit
.
rc
.
top
);
/* title */
mchit
.
pt
.
x
=
1
;
mchit
.
pt
.
y
=
1
;
mchit
.
iOffset
=
-
1
;
mchit
.
iCol
=
mchit
.
iRow
=
-
1
;
mchit
.
uHit
=
0
;
mchit
.
rc
.
left
=
mchit
.
rc
.
right
=
mchit
.
rc
.
top
=
mchit
.
rc
.
bottom
=
-
1
;
ret
=
SendMessage
(
hwnd
,
MCM_HITTEST
,
0
,
(
LPARAM
)
&
mchit
);
expect_hex
(
MCHT_TITLE
,
ret
);
expect_hex
(
MCHT_TITLE
,
mchit
.
uHit
);
todo_wine
expect
(
0
,
mchit
.
iOffset
);
expect
(
-
1
,
mchit
.
iRow
);
expect
(
-
1
,
mchit
.
iCol
);
todo_wine
expect
(
0
,
mchit
.
rc
.
left
);
todo_wine
expect
(
0
,
mchit
.
rc
.
top
);
todo_wine
expect_d
(
r
.
right
,
mchit
.
rc
.
right
);
todo_wine
ok
(
mchit
.
rc
.
bottom
>
0
,
"got %d
\n
"
,
mchit
.
rc
.
bottom
);
/* between two calendars */
MoveWindow
(
hwnd
,
0
,
0
,
r
.
right
*
5
/
2
,
r
.
bottom
,
FALSE
);
mchit
.
pt
.
x
=
r
.
right
/
(
5
*
4
);
mchit
.
pt
.
y
=
r
.
bottom
/
2
;
mchit
.
iOffset
=
-
2
;
mchit
.
iCol
=
mchit
.
iRow
=
-
2
;
mchit
.
uHit
=
0
;
mchit
.
rc
.
left
=
mchit
.
rc
.
right
=
mchit
.
rc
.
top
=
mchit
.
rc
.
bottom
=
-
1
;
ret
=
SendMessage
(
hwnd
,
MCM_HITTEST
,
0
,
(
LPARAM
)
&
mchit
);
todo_wine
expect_hex
(
MCHT_NOWHERE
,
ret
);
todo_wine
expect_hex
(
MCHT_NOWHERE
,
mchit
.
uHit
);
expect
(
-
2
,
mchit
.
iOffset
);
expect
(
-
2
,
mchit
.
iRow
);
expect
(
-
2
,
mchit
.
iCol
);
todo_wine
expect
(
0
,
mchit
.
rc
.
left
);
todo_wine
expect
(
0
,
mchit
.
rc
.
top
);
todo_wine
expect_d
(
r
.
right
*
5
/
2
,
mchit
.
rc
.
right
);
todo_wine
expect_d
(
r
.
bottom
,
mchit
.
rc
.
bottom
);
DestroyWindow
(
hwnd
);
}
static
void
test_get_set_border
(
void
)
{
HWND
hwnd
;
DWORD
ret
;
hwnd
=
create_monthcal_control
(
0
);
/* a non-default value */
ret
=
SendMessage
(
hwnd
,
MCM_SETCALENDARBORDER
,
TRUE
,
10
);
expect
(
0
,
ret
);
ret
=
SendMessage
(
hwnd
,
MCM_GETCALENDARBORDER
,
0
,
0
);
if
(
ret
!=
10
)
{
skip
(
"MCM_GET/SETCALENDARBORDER not supported
\n
"
);
DestroyWindow
(
hwnd
);
return
;
}
expect
(
10
,
ret
);
DestroyWindow
(
hwnd
);
}
START_TEST
(
monthcal
)
{
HMODULE
hComctl32
;
BOOL
(
WINAPI
*
pInitCommonControlsEx
)(
const
INITCOMMONCONTROLSEX
*
);
INITCOMMONCONTROLSEX
iccex
;
HMODULE
hComctl32
;
HWND
hwnd
;
ULONG_PTR
ctx_cookie
;
HANDLE
hCtx
;
hComctl32
=
GetModuleHandleA
(
"comctl32.dll"
);
pInitCommonControlsEx
=
(
void
*
)
GetProcAddress
(
hComctl32
,
"InitCommonControlsEx"
);
...
...
@@ -1719,7 +1825,31 @@ START_TEST(monthcal)
test_monthcal_selrange
();
test_killfocus
();
flush_sequences
(
sequences
,
NUM_MSG_SEQUENCES
);
if
(
!
load_v6_module
(
&
ctx_cookie
,
&
hCtx
))
{
DestroyWindow
(
parent_wnd
);
return
;
}
/* this is a XP SP3 failure workaround */
hwnd
=
CreateWindowExA
(
0
,
MONTHCAL_CLASSA
,
"foo"
,
WS_CHILD
|
WS_BORDER
|
WS_VISIBLE
,
0
,
0
,
100
,
100
,
parent_wnd
,
NULL
,
GetModuleHandleA
(
NULL
),
NULL
);
if
(
!
IsWindow
(
hwnd
))
{
win_skip
(
"FIXME: failed to create Monthcal window.
\n
"
);
unload_v6_module
(
ctx_cookie
,
hCtx
);
DestroyWindow
(
parent_wnd
);
return
;
}
else
DestroyWindow
(
hwnd
);
test_hittest_v6
();
test_get_set_border
();
unload_v6_module
(
ctx_cookie
,
hCtx
);
DestroyWindow
(
parent_wnd
);
ok_sequence
(
sequences
,
PARENT_SEQ_INDEX
,
destroy_parent_seq
,
"Destroy parent window"
,
FALSE
);
}
include/commctrl.h
View file @
8e968fd2
...
...
@@ -4675,6 +4675,8 @@ static const WCHAR MONTHCAL_CLASSW[] = { 'S','y','s',
#define MCM_GETMONTHDELTA (MCM_FIRST + 19)
#define MCM_SETMONTHDELTA (MCM_FIRST + 20)
#define MCM_GETMAXTODAYWIDTH (MCM_FIRST + 21)
#define MCM_SETCALENDARBORDER (MCM_FIRST + 30)
#define MCM_GETCALENDARBORDER (MCM_FIRST + 31)
#define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
#define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
...
...
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