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
56852a5e
Commit
56852a5e
authored
Apr 08, 2007
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Apr 06, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
user32: Windows uses ptMaxTrackSize to set an initial window size not ptMaxSize.
parent
aef2edb0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
14 deletions
+64
-14
win.c
dlls/user32/tests/win.c
+56
-11
window.c
dlls/winex11.drv/window.c
+8
-3
No files found.
dlls/user32/tests/win.c
View file @
56852a5e
...
...
@@ -3718,8 +3718,36 @@ static void test_IsWindowUnicode(void)
DestroyWindow
(
hwnd
);
}
static
LRESULT
CALLBACK
minmax_wnd_proc
(
HWND
hwnd
,
UINT
msg
,
WPARAM
wp
,
LPARAM
lp
)
{
MINMAXINFO
*
minmax
;
if
(
msg
!=
WM_GETMINMAXINFO
)
return
DefWindowProc
(
hwnd
,
msg
,
wp
,
lp
);
minmax
=
(
MINMAXINFO
*
)
lp
;
if
((
GetWindowLong
(
hwnd
,
GWL_STYLE
)
&
WS_CHILD
))
{
minmax
->
ptReserved
.
x
=
0
;
minmax
->
ptReserved
.
y
=
0
;
minmax
->
ptMaxSize
.
x
=
400
;
minmax
->
ptMaxSize
.
y
=
400
;
minmax
->
ptMaxPosition
.
x
=
300
;
minmax
->
ptMaxPosition
.
y
=
300
;
minmax
->
ptMaxTrackSize
.
x
=
200
;
minmax
->
ptMaxTrackSize
.
y
=
200
;
minmax
->
ptMinTrackSize
.
x
=
100
;
minmax
->
ptMinTrackSize
.
y
=
100
;
}
else
DefWindowProc
(
hwnd
,
msg
,
wp
,
lp
);
return
1
;
}
static
void
test_CreateWindow
(
void
)
{
WNDCLASS
cls
;
HWND
hwnd
,
parent
;
HMENU
hmenu
;
RECT
rc
,
rc_minmax
;
...
...
@@ -3917,8 +3945,20 @@ static void test_CreateWindow(void)
ok
(
GetLastError
()
==
ERROR_INVALID_MENU_HANDLE
,
"IsMenu set error %d
\n
"
,
GetLastError
());
/* test child window sizing */
cls
.
style
=
0
;
cls
.
lpfnWndProc
=
minmax_wnd_proc
;
cls
.
cbClsExtra
=
0
;
cls
.
cbWndExtra
=
0
;
cls
.
hInstance
=
GetModuleHandle
(
0
);
cls
.
hIcon
=
0
;
cls
.
hCursor
=
LoadCursorA
(
0
,
(
LPSTR
)
IDC_ARROW
);
cls
.
hbrBackground
=
GetStockObject
(
WHITE_BRUSH
);
cls
.
lpszMenuName
=
NULL
;
cls
.
lpszClassName
=
"MinMax_WndClass"
;
RegisterClass
(
&
cls
);
SetLastError
(
0xdeadbeef
);
parent
=
CreateWindowEx
(
0
,
"
static
"
,
NULL
,
WS_CAPTION
|
WS_SYSMENU
|
WS_THICKFRAME
,
parent
=
CreateWindowEx
(
0
,
"
MinMax_WndClass
"
,
NULL
,
WS_CAPTION
|
WS_SYSMENU
|
WS_THICKFRAME
,
0
,
0
,
100
,
100
,
0
,
0
,
0
,
NULL
);
ok
(
parent
!=
0
,
"CreateWindowEx error %d
\n
"
,
GetLastError
());
expect_menu
(
parent
,
0
);
...
...
@@ -3928,19 +3968,20 @@ static void test_CreateWindow(void)
memset
(
&
minmax
,
0
,
sizeof
(
minmax
));
SendMessage
(
parent
,
WM_GETMINMAXINFO
,
0
,
(
LPARAM
)
&
minmax
);
SetRect
(
&
rc_minmax
,
0
,
0
,
minmax
.
ptMaxSize
.
x
,
minmax
.
ptMaxSize
.
y
);
ok
(
IsRectEmpty
(
&
rc_minmax
),
"rc_minmax is not empty
\n
"
);
ok
(
IsRectEmpty
(
&
rc_minmax
),
"ptMaxSize is not empty
\n
"
);
SetRect
(
&
rc_minmax
,
0
,
0
,
minmax
.
ptMaxTrackSize
.
x
,
minmax
.
ptMaxTrackSize
.
y
);
ok
(
IsRectEmpty
(
&
rc_minmax
),
"ptMaxTrackSize is not empty
\n
"
);
GetWindowRect
(
parent
,
&
rc
);
ok
(
!
IsRectEmpty
(
&
rc
),
"parent window rect is empty
\n
"
);
GetClientRect
(
parent
,
&
rc
);
ok
(
rc_minmax
.
left
>=
rc
.
left
&&
rc_minmax
.
top
>=
rc
.
top
&&
rc_minmax
.
right
<=
rc
.
right
&&
rc_minmax
.
bottom
<=
rc
.
bottom
,
"rc_minmax (%d,%d-%d,%d) is not within of parent client rect (%d,%d-%d,%d)
\n
"
,
rc_minmax
.
left
,
rc_minmax
.
top
,
rc_minmax
.
right
,
rc_minmax
.
bottom
,
rc
.
left
,
rc
.
top
,
rc
.
right
,
rc
.
bottom
);
ok
(
!
IsRectEmpty
(
&
rc
),
"parent client rect is empty
\n
"
);
InflateRect
(
&
rc
,
200
,
200
);
trace
(
"creating child with rect (%d,%d-%d,%d)
\n
"
,
rc
.
left
,
rc
.
top
,
rc
.
right
,
rc
.
bottom
);
SetLastError
(
0xdeadbeef
);
hwnd
=
CreateWindowEx
(
0
,
"
static
"
,
NULL
,
WS_CHILD
|
WS_CAPTION
|
WS_SYSMENU
|
WS_THICKFRAME
,
hwnd
=
CreateWindowEx
(
0
,
"
MinMax_WndClass
"
,
NULL
,
WS_CHILD
|
WS_CAPTION
|
WS_SYSMENU
|
WS_THICKFRAME
,
rc
.
left
,
rc
.
top
,
rc
.
right
-
rc
.
left
,
rc
.
bottom
-
rc
.
top
,
parent
,
(
HMENU
)
1
,
0
,
NULL
);
ok
(
hwnd
!=
0
,
"CreateWindowEx error %d
\n
"
,
GetLastError
());
...
...
@@ -3948,10 +3989,12 @@ static void test_CreateWindow(void)
expect_style
(
hwnd
,
WS_CHILD
|
WS_CAPTION
|
WS_SYSMENU
|
WS_THICKFRAME
);
expect_ex_style
(
hwnd
,
WS_EX_WINDOWEDGE
);
OffsetRect
(
&
rc
,
-
rc
.
left
,
-
rc
.
top
);
memset
(
&
minmax
,
0
,
sizeof
(
minmax
));
SendMessage
(
hwnd
,
WM_GETMINMAXINFO
,
0
,
(
LPARAM
)
&
minmax
);
SetRect
(
&
rc_minmax
,
0
,
0
,
minmax
.
ptMaxTrackSize
.
x
,
minmax
.
ptMaxTrackSize
.
y
);
GetWindowRect
(
hwnd
,
&
rc
_minmax
);
OffsetRect
(
&
rc
_minmax
,
-
rc_minmax
.
left
,
-
rc_minmax
.
top
);
GetWindowRect
(
hwnd
,
&
rc
);
OffsetRect
(
&
rc
,
-
rc
.
left
,
-
rc
.
top
);
ok
(
EqualRect
(
&
rc
,
&
rc_minmax
),
"rects don't match: (%d,%d-%d,%d) and (%d,%d-%d,%d)
\n
"
,
rc
.
left
,
rc
.
top
,
rc
.
right
,
rc
.
bottom
,
rc_minmax
.
left
,
rc_minmax
.
top
,
rc_minmax
.
right
,
rc_minmax
.
bottom
);
...
...
@@ -3959,6 +4002,8 @@ static void test_CreateWindow(void)
DestroyWindow
(
hwnd
);
DestroyWindow
(
parent
);
UnregisterClass
(
"MinMax_WndClass"
,
GetModuleHandle
(
0
));
#undef expect_menu
#undef expect_style
#undef expect_ex_style
...
...
dlls/winex11.drv/window.c
View file @
56852a5e
...
...
@@ -1078,10 +1078,15 @@ BOOL X11DRV_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
if
((
cs
->
style
&
WS_THICKFRAME
)
||
!
(
cs
->
style
&
(
WS_POPUP
|
WS_CHILD
)))
{
POINT
maxSize
,
maxPos
,
minTrack
,
maxTrack
;
/* Although Windows sends WM_GETMINMAXINFO at the window creation time,
* it doesn't use returned values to set window size.
*/
WINPOS_GetMinMaxInfo
(
hwnd
,
&
maxSize
,
&
maxPos
,
&
minTrack
,
&
maxTrack
);
if
(
maxTrack
.
x
<
cs
->
cx
)
cs
->
cx
=
maxTrack
.
x
;
if
(
maxTrack
.
y
<
cs
->
cy
)
cs
->
cy
=
maxTrack
.
y
;
if
(
cs
->
cx
<
0
)
cs
->
cx
=
0
;
if
(
cs
->
cy
<
0
)
cs
->
cy
=
0
;
SetRect
(
&
rect
,
cs
->
x
,
cs
->
y
,
cs
->
x
+
cs
->
cx
,
cs
->
y
+
cs
->
cy
);
if
(
!
X11DRV_SetWindowPos
(
hwnd
,
0
,
&
rect
,
&
rect
,
SWP_NOZORDER
,
NULL
))
return
FALSE
;
}
/* send WM_NCCREATE */
...
...
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