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
d304e4f8
Commit
d304e4f8
authored
Sep 13, 2004
by
Dmitry Timoshkov
Committed by
Alexandre Julliard
Sep 13, 2004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Log flags for WM_WINDOWPOSCHANGING/WM_WINDOWPOSCHANGED messages, make
the tests pass on Win95/Win98/Win2000, fix some test failures under Wine.
parent
4387895d
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
179 additions
and
85 deletions
+179
-85
msg.c
dlls/user/tests/msg.c
+179
-82
winpos.c
dlls/x11drv/winpos.c
+0
-3
No files found.
dlls/user/tests/msg.c
View file @
d304e4f8
...
...
@@ -35,6 +35,10 @@
#define MDI_FIRST_CHILD_ID 2004
/* undocumented SWP flags - from SDK 3.1 */
#define SWP_NOCLIENTSIZE 0x0800
#define SWP_NOCLIENTMOVE 0x1000
/*
FIXME: add tests for these
Window Edge Styles (Win31/Win95/98 look), in order of precedence:
...
...
@@ -82,13 +86,13 @@ static const struct message WmCreateOverlappedSeq[] = {
* for a not visible overlapped window.
*/
static
const
struct
message
WmSWP_ShowOverlappedSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_NCPAINT
,
sent
|
wparam
|
optional
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
HCBT_ACTIVATE
,
hook
},
{
WM_QUERYNEWPALETTE
,
sent
|
wparam
|
lparam
|
optional
,
0
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
|
optional
,
0
},
/* Win9x: SWP_NOSENDCHANGING */
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
|
optional
,
SWP_NOSIZE
|
SWP_NOMOVE
},
/* Win9x: SWP_NOSENDCHANGING */
{
WM_ACTIVATEAPP
,
sent
|
wparam
,
1
},
{
WM_NCACTIVATE
,
sent
|
wparam
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
...
...
@@ -100,7 +104,8 @@ static const struct message WmSWP_ShowOverlappedSeq[] = {
{
WM_NCPAINT
,
sent
|
wparam
|
optional
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
/* Win9x adds SWP_NOZORDER below */
{
WM_WINDOWPOSCHANGED
,
sent
,
/*|wparam, SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE*/
},
{
WM_NCCALCSIZE
,
sent
|
wparam
|
optional
,
1
},
{
WM_NCPAINT
,
sent
|
wparam
|
optional
,
1
},
{
WM_ERASEBKGND
,
sent
|
optional
},
...
...
@@ -110,21 +115,21 @@ static const struct message WmSWP_ShowOverlappedSeq[] = {
* for a visible overlapped window.
*/
static
const
struct
message
WmSWP_HideOverlappedSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* ShowWindow(SW_SHOW) for a not visible overlapped window */
static
const
struct
message
WmShowOverlappedSeq
[]
=
{
{
WM_SHOWWINDOW
,
sent
|
wparam
,
1
},
{
WM_NCPAINT
,
sent
|
wparam
|
optional
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_NCPAINT
,
sent
|
wparam
|
optional
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
HCBT_ACTIVATE
,
hook
},
{
WM_QUERYNEWPALETTE
,
sent
|
wparam
|
lparam
|
optional
,
0
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_ACTIVATEAPP
,
sent
|
wparam
,
1
},
{
WM_NCACTIVATE
,
sent
|
wparam
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
...
...
@@ -136,7 +141,8 @@ static const struct message WmShowOverlappedSeq[] = {
{
WM_NCPAINT
,
sent
|
wparam
|
optional
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
/* Win9x adds SWP_NOZORDER below */
{
WM_WINDOWPOSCHANGED
,
sent
,
/*|wparam, SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE*/
},
{
WM_NCCALCSIZE
,
sent
|
optional
},
{
WM_NCPAINT
,
sent
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
...
...
@@ -152,8 +158,8 @@ static const struct message WmShowOverlappedSeq[] = {
/* ShowWindow(SW_HIDE) for a visible overlapped window */
static
const
struct
message
WmHideOverlappedSeq
[]
=
{
{
WM_SHOWWINDOW
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
WM_SIZE
,
sent
},
{
WM_MOVE
,
sent
},
{
WM_NCACTIVATE
,
sent
|
wparam
,
0
},
...
...
@@ -171,8 +177,8 @@ static const struct message WmHideInvisibleOverlappedSeq[] = {
/* DestroyWindow for a visible overlapped window */
static
const
struct
message
WmDestroyOverlappedSeq
[]
=
{
{
HCBT_DESTROYWND
,
hook
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
WM_NCACTIVATE
,
sent
|
wparam
,
0
},
{
WM_ACTIVATE
,
sent
|
wparam
,
0
},
{
WM_ACTIVATEAPP
,
sent
|
wparam
,
0
},
...
...
@@ -254,9 +260,9 @@ static const struct message WmCreateMaximizedChildSeq[] = {
{
WM_MOVE
,
sent
},
{
HCBT_MINMAX
,
hook
|
lparam
,
0
,
SW_MAXIMIZE
},
{
WM_GETMINMAXINFO
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
0x8000
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGED
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOREDRAW
|
SWP_NOCLIENTMOVE
|
0x8000
},
{
WM_SIZE
,
sent
|
defwinproc
},
{
WM_PARENTNOTIFY
,
sent
|
parent
|
wparam
,
WM_CREATE
},
{
0
}
...
...
@@ -272,34 +278,42 @@ static const struct message WmCreateVisibleChildSeq[] = {
{
WM_MOVE
,
sent
},
{
WM_PARENTNOTIFY
,
sent
|
parent
|
wparam
,
WM_CREATE
},
{
WM_SHOWWINDOW
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
|
SWP_NOZORDER
},
{
WM_ERASEBKGND
,
sent
|
parent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* ShowWindow(SW_SHOW) for a not visible child window */
static
const
struct
message
WmShowChildSeq
[]
=
{
{
WM_SHOWWINDOW
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_ERASEBKGND
,
sent
|
parent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* ShowWindow(SW_HIDE) for a visible child window */
static
const
struct
message
WmHideChildSeq
[]
=
{
{
WM_SHOWWINDOW
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_ERASEBKGND
,
sent
|
parent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* SetWindowPos(SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE)
* for a not visible child window
*/
static
const
struct
message
WmShowChildSeq_2
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_CHILDACTIVATE
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* SetWindowPos(SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE)
* for a not visible child window
*/
static
const
struct
message
WmShowChildSeq_3
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* ShowWindow(SW_SHOW) for child with invisible parent */
...
...
@@ -314,14 +328,14 @@ static const struct message WmHideChildInvisibleParentSeq[] = {
};
/* SetWindowPos(SWP_SHOWWINDOW) for child with invisible parent */
static
const
struct
message
WmShowChildInvisibleParentSeq_2
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
|
SWP_NOZORDER
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
|
SWP_NOZORDER
|
SWP_NOREDRAW
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* SetWindowPos(SWP_HIDEWINDOW) for child with invisible parent */
static
const
struct
message
WmHideChildInvisibleParentSeq_2
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOREDRAW
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* DestroyWindow for a visible child window */
...
...
@@ -329,9 +343,9 @@ static const struct message WmDestroyChildSeq[] = {
{
HCBT_DESTROYWND
,
hook
},
{
WM_PARENTNOTIFY
,
sent
|
parent
|
wparam
,
WM_DESTROY
},
{
WM_SHOWWINDOW
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_ERASEBKGND
,
sent
|
parent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
HCBT_SETFOCUS
,
hook
},
/* set focus to a parent */
{
WM_KILLFOCUS
,
sent
},
{
WM_IME_SETCONTEXT
,
sent
|
wparam
|
optional
,
0
},
...
...
@@ -363,8 +377,8 @@ static const struct message WmDragTitleBarSeq[] = { /* FIXME: add */
{
WM_SYSCOMMAND
,
sent
|
defwinproc
|
wparam
,
SC_MOVE
+
2
},
{
WM_GETMINMAXINFO
,
sent
|
defwinproc
},
{
WM_ENTERSIZEMOVE
,
sent
|
defwinproc
},
{
WM_WINDOWPOSCHANGING
,
sent
|
defwinproc
},
{
WM_WINDOWPOSCHANGED
,
sent
|
defwinproc
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
|
defwinproc
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
|
defwinproc
,
0
},
{
WM_MOVE
,
sent
|
defwinproc
},
{
WM_EXITSIZEMOVE
,
sent
|
defwinproc
},
{
0
}
...
...
@@ -376,13 +390,13 @@ static const struct message WmDragThickBordersBarSeq[] = { /* FIXME: add */
{
WM_GETMINMAXINFO
,
sent
|
defwinproc
},
{
WM_ENTERSIZEMOVE
,
sent
|
defwinproc
},
{
WM_SIZING
,
sent
|
defwinproc
|
wparam
,
4
},
/* one for each mouse movement */
{
WM_WINDOWPOSCHANGING
,
sent
|
defwinproc
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
|
defwinproc
,
0
},
{
WM_GETMINMAXINFO
,
sent
|
defwinproc
},
{
WM_NCCALCSIZE
,
sent
|
defwinproc
|
wparam
,
1
},
{
WM_NCPAINT
,
sent
|
defwinproc
|
wparam
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
},
{
WM_ERASEBKGND
,
sent
|
defwinproc
},
{
WM_WINDOWPOSCHANGED
,
sent
|
defwinproc
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
|
defwinproc
,
0
},
{
WM_MOVE
,
sent
|
defwinproc
},
{
WM_SIZE
,
sent
|
defwinproc
},
{
WM_EXITSIZEMOVE
,
sent
|
defwinproc
},
...
...
@@ -390,10 +404,10 @@ static const struct message WmDragThickBordersBarSeq[] = { /* FIXME: add */
};
/* Resizing child window with MoveWindow (32) */
static
const
struct
message
WmResizingChildWithMoveWindowSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_NOACTIVATE
|
SWP_NOZORDER
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_NOACTIVATE
|
SWP_NOZORDER
},
{
WM_MOVE
,
sent
|
defwinproc
},
{
WM_SIZE
,
sent
|
defwinproc
},
{
0
}
...
...
@@ -486,8 +500,8 @@ static const struct message WmCreateCustomDialogSeq[] = {
};
/* Calling EndDialog for a custom dialog (32) */
static
const
struct
message
WmEndCustomDialogSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_GETTEXT
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
...
...
@@ -500,7 +514,7 @@ static const struct message WmEndCustomDialogSeq[] = {
{
WM_GETICON
,
sent
|
optional
|
defwinproc
},
{
WM_GETTEXT
,
sent
|
optional
|
defwinproc
},
{
WM_ACTIVATE
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
optional
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
|
optional
,
0
},
{
HCBT_SETFOCUS
,
hook
},
{
WM_KILLFOCUS
,
sent
},
{
WM_IME_SETCONTEXT
,
sent
|
wparam
|
optional
,
0
},
...
...
@@ -522,14 +536,14 @@ static const struct message WmModalDialogSeq[] = {
{
WM_CHANGEUISTATE
,
sent
|
optional
},
{
WM_SHOWWINDOW
,
sent
},
{
HCBT_ACTIVATE
,
hook
},
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_NCACTIVATE
,
sent
|
wparam
,
1
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETTEXT
,
sent
|
optional
},
{
WM_ACTIVATE
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_NCPAINT
,
sent
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
...
...
@@ -537,7 +551,7 @@ static const struct message WmModalDialogSeq[] = {
{
WM_GETTEXT
,
sent
|
optional
},
{
WM_ERASEBKGND
,
sent
},
{
WM_CTLCOLORDLG
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
...
...
@@ -555,8 +569,8 @@ static const struct message WmModalDialogSeq[] = {
{
WM_ENTERIDLE
,
sent
|
parent
|
optional
},
{
WM_TIMER
,
sent
},
{
WM_ENABLE
,
sent
|
parent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
...
...
@@ -580,25 +594,25 @@ static const struct message WmModalDialogSeq[] = {
/* Creation of a modal dialog that is resized inside WM_INITDIALOG (32) */
static
const
struct
message
WmCreateModalDialogResizeSeq
[]
=
{
/* FIXME: add */
/* (inside dialog proc, handling WM_INITDIALOG) */
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_NCCALCSIZE
,
sent
},
{
WM_NCACTIVATE
,
sent
|
parent
|
wparam
,
0
},
{
WM_GETTEXT
,
sent
|
defwinproc
},
{
WM_ACTIVATE
,
sent
|
parent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
parent
},
{
WM_NCACTIVATE
,
sent
|
wparam
,
1
},
{
WM_ACTIVATE
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGED
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_SIZE
,
sent
|
defwinproc
},
/* (setting focus) */
{
WM_SHOWWINDOW
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_NCPAINT
,
sent
},
{
WM_GETTEXT
,
sent
|
defwinproc
},
{
WM_ERASEBKGND
,
sent
},
{
WM_CTLCOLORDLG
,
sent
|
defwinproc
},
{
WM_WINDOWPOSCHANGED
,
sent
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_PAINT
,
sent
},
/* (bunch of WM_CTLCOLOR* for each control) */
{
WM_PAINT
,
sent
|
parent
},
...
...
@@ -608,9 +622,9 @@ static const struct message WmCreateModalDialogResizeSeq[] = { /* FIXME: add */
};
/* SetMenu for NonVisible windows with size change*/
static
const
struct
message
WmSetMenuNonVisibleSizeChangeSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOREDRAW
},
{
WM_MOVE
,
sent
|
defwinproc
},
{
WM_SIZE
,
sent
|
defwinproc
},
{
WM_GETICON
,
sent
|
optional
},
...
...
@@ -622,20 +636,20 @@ static const struct message WmSetMenuNonVisibleSizeChangeSeq[] = {
};
/* SetMenu for NonVisible windows with no size change */
static
const
struct
message
WmSetMenuNonVisibleNoSizeChangeSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOREDRAW
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* SetMenu for Visible windows with size change */
static
const
struct
message
WmSetMenuVisibleSizeChangeSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_NCPAINT
,
sent
|
wparam
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
WM_ACTIVATE
,
sent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_MOVE
,
sent
|
defwinproc
},
{
WM_SIZE
,
sent
|
defwinproc
},
{
WM_NCCALCSIZE
,
sent
|
wparam
|
optional
,
1
},
...
...
@@ -645,24 +659,24 @@ static const struct message WmSetMenuVisibleSizeChangeSeq[] = {
};
/* SetMenu for Visible windows with no size change */
static
const
struct
message
WmSetMenuVisibleNoSizeChangeSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_NCPAINT
,
sent
|
wparam
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
WM_ACTIVATE
,
sent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* DrawMenuBar for a visible window */
static
const
struct
message
WmDrawMenuBarSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_NCPAINT
,
sent
|
wparam
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
...
...
@@ -706,17 +720,17 @@ static const struct message WmSetScrollRangeSeq[] =
/* SetScrollRange for a window without a non-client area */
static
const
struct
message
WmSetScrollRangeHVSeq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOMOVE
|
SWP_NOSIZE
|
SWP_NOZORDER
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_FRAMECHANGED
|
SWP_NOACTIVATE
|
SWP_NOMOVE
|
SWP_NOSIZE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* SetScrollRange for a window with a non-client area */
static
const
struct
message
WmSetScrollRangeHV_NC_Seq
[]
=
{
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
,
/*|wparam, SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER*/
},
{
WM_NCCALCSIZE
,
sent
|
wparam
,
1
},
{
WM_NCPAINT
,
sent
|
optional
},
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
...
...
@@ -726,7 +740,7 @@ static const struct message WmSetScrollRangeHV_NC_Seq[] =
{
WM_GETTEXT
,
sent
|
defwinproc
|
optional
},
{
WM_ERASEBKGND
,
sent
|
optional
},
{
WM_CTLCOLORDLG
,
sent
|
defwinproc
|
optional
},
/* sent to a parent of the dialog */
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
,
/*|wparam, SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|0x1000*/
},
{
WM_SIZE
,
sent
|
defwinproc
},
{
WM_GETTEXT
,
sent
|
optional
},
{
WM_GETICON
,
sent
|
optional
},
...
...
@@ -793,9 +807,20 @@ static void ok_sequence(const struct message *expected, const char *context, int
if
(
expected
->
message
==
actual
->
message
)
{
if
(
expected
->
flags
&
wparam
)
{
if
(
expected
->
wParam
!=
actual
->
wParam
&&
todo
)
{
todo_wine
{
ok
(
FALSE
,
"%s: in msg 0x%04x expecting wParam 0x%x got 0x%x
\n
"
,
context
,
expected
->
message
,
expected
->
wParam
,
actual
->
wParam
);
}
}
else
ok
(
expected
->
wParam
==
actual
->
wParam
,
"%s: in msg 0x%04x expecting wParam 0x%x got 0x%x
\n
"
,
context
,
expected
->
message
,
expected
->
wParam
,
actual
->
wParam
);
}
if
(
expected
->
flags
&
lparam
)
ok
(
expected
->
lParam
==
actual
->
lParam
,
"%s: in msg 0x%04x expecting lParam 0x%lx got 0x%lx
\n
"
,
...
...
@@ -870,18 +895,19 @@ static const struct message WmCreateMDIframeSeq[] = {
{
WM_NCCALCSIZE
,
sent
|
wparam
,
0
},
{
WM_CREATE
,
sent
},
{
WM_SHOWWINDOW
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
},
{
HCBT_ACTIVATE
,
hook
},
{
WM_QUERYNEWPALETTE
,
sent
|
wparam
|
lparam
|
optional
,
0
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
|
optional
,
0
},
/* Win9x */
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
|
optional
,
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
/* Win9x */
{
WM_ACTIVATEAPP
,
sent
|
wparam
,
1
},
{
WM_NCACTIVATE
,
sent
|
wparam
,
1
},
{
WM_ACTIVATE
,
sent
|
wparam
,
1
},
{
HCBT_SETFOCUS
,
hook
},
{
WM_IME_SETCONTEXT
,
sent
|
wparam
|
defwinproc
|
optional
,
1
},
{
WM_SETFOCUS
,
sent
|
wparam
|
defwinproc
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
/* Win9x adds SWP_NOZORDER below */
{
WM_WINDOWPOSCHANGED
,
sent
,
/*|wparam, SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE*/
},
{
WM_SIZE
,
sent
},
{
WM_MOVE
,
sent
},
{
0
}
...
...
@@ -889,8 +915,8 @@ static const struct message WmCreateMDIframeSeq[] = {
/* DestroyWindow for MDI frame window, initially visible */
static
const
struct
message
WmDestroyMDIframeSeq
[]
=
{
{
HCBT_DESTROYWND
,
hook
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
WM_NCACTIVATE
,
sent
|
wparam
,
0
},
{
WM_ACTIVATE
,
sent
|
wparam
|
optional
,
0
},
/* Win9x */
{
WM_ACTIVATEAPP
,
sent
|
wparam
|
optional
,
0
},
/* Win9x */
...
...
@@ -908,8 +934,8 @@ static const struct message WmCreateMDIclientSeq[] = {
{
WM_MOVE
,
sent
},
{
WM_PARENTNOTIFY
,
sent
|
wparam
,
WM_CREATE
},
/* in MDI frame */
{
WM_SHOWWINDOW
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOACTIVATE
|
SWP_NOZORDER
|
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOACTIVATE
|
SWP_NOZORDER
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
0
}
};
/* DestroyWindow for MDI client window, initially visible */
...
...
@@ -917,8 +943,8 @@ static const struct message WmDestroyMDIclientSeq[] = {
{
HCBT_DESTROYWND
,
hook
},
{
WM_PARENTNOTIFY
,
sent
|
wparam
,
WM_DESTROY
},
/* in MDI frame */
{
WM_SHOWWINDOW
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
WM_DESTROY
,
sent
},
{
WM_NCDESTROY
,
sent
},
{
0
}
...
...
@@ -938,12 +964,12 @@ static const struct message WmCreateMDIchildVisibleSeq[] = {
*/
{
WM_PARENTNOTIFY
,
sent
/*|wparam, WM_CREATE*/
},
/* in MDI client */
{
WM_SHOWWINDOW
,
sent
|
wparam
,
1
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
/*SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER*/
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
{
WM_MDIREFRESHMENU
,
sent
/*|wparam|lparam, 0, 0*/
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
/*SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE*/
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
},
{
WM_CHILDACTIVATE
,
sent
|
wparam
|
lparam
,
0
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
|
defwinproc
,
0
},
/*SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE*/
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
|
defwinproc
,
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
},
/* Win9x: message sequence terminates here. */
...
...
@@ -969,9 +995,9 @@ static const struct message WmDestroyMDIchildVisibleSeq[] = {
*/
{
WM_PARENTNOTIFY
,
sent
/*|wparam, WM_DESTROY*/
},
/* in MDI client */
{
WM_SHOWWINDOW
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
0
},
/*SWP_HIDEWINDOW|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER*/
{
WM_WINDOWPOSCHANGING
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
},
{
WM_ERASEBKGND
,
sent
|
parent
|
optional
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
0
},
{
WM_WINDOWPOSCHANGED
,
sent
|
wparam
,
SWP_HIDEWINDOW
|
SWP_NOACTIVATE
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOZORDER
|
SWP_NOCLIENTSIZE
|
SWP_NOCLIENTMOVE
},
/* { WM_DESTROY, sent }
* Win9x: message sequence terminates here.
...
...
@@ -1063,6 +1089,26 @@ static LRESULT WINAPI mdi_client_hook_proc(HWND hwnd, UINT message, WPARAM wPara
{
trace
(
"mdi client: %p, %04x, %08x, %08lx
\n
"
,
hwnd
,
message
,
wParam
,
lParam
);
switch
(
message
)
{
case
WM_WINDOWPOSCHANGING
:
case
WM_WINDOWPOSCHANGED
:
{
WINDOWPOS
*
winpos
=
(
WINDOWPOS
*
)
lParam
;
trace
(
"%s
\n
"
,
(
message
==
WM_WINDOWPOSCHANGING
)
?
"WM_WINDOWPOSCHANGING"
:
"WM_WINDOWPOSCHANGED"
);
trace
(
"%p after %p, x %d, y %d, cx %d, cy %d flags %08x
\n
"
,
winpos
->
hwnd
,
winpos
->
hwndInsertAfter
,
winpos
->
x
,
winpos
->
y
,
winpos
->
cx
,
winpos
->
cy
,
winpos
->
flags
);
/* Log only documented flags, win2k uses 0x1000 and 0x2000
* in the high word for internal purposes
*/
wParam
=
winpos
->
flags
&
0xffff
;
break
;
}
}
msg
.
message
=
message
;
msg
.
flags
=
sent
|
wparam
|
lparam
;
msg
.
wParam
=
wParam
;
...
...
@@ -1098,6 +1144,11 @@ static LRESULT WINAPI mdi_child_wnd_proc(HWND hwnd, UINT message, WPARAM wParam,
trace
(
"%p after %p, x %d, y %d, cx %d, cy %d flags %08x
\n
"
,
winpos
->
hwnd
,
winpos
->
hwndInsertAfter
,
winpos
->
x
,
winpos
->
y
,
winpos
->
cx
,
winpos
->
cy
,
winpos
->
flags
);
/* Log only documented flags, win2k uses 0x1000 and 0x2000
* in the high word for internal purposes
*/
wParam
=
winpos
->
flags
&
0xffff
;
break
;
}
}
...
...
@@ -1131,6 +1182,26 @@ static LRESULT WINAPI mdi_frame_wnd_proc(HWND hwnd, UINT message, WPARAM wParam,
{
trace
(
"mdi frame: %p, %04x, %08x, %08lx
\n
"
,
hwnd
,
message
,
wParam
,
lParam
);
switch
(
message
)
{
case
WM_WINDOWPOSCHANGING
:
case
WM_WINDOWPOSCHANGED
:
{
WINDOWPOS
*
winpos
=
(
WINDOWPOS
*
)
lParam
;
trace
(
"%s
\n
"
,
(
message
==
WM_WINDOWPOSCHANGING
)
?
"WM_WINDOWPOSCHANGING"
:
"WM_WINDOWPOSCHANGED"
);
trace
(
"%p after %p, x %d, y %d, cx %d, cy %d flags %08x
\n
"
,
winpos
->
hwnd
,
winpos
->
hwndInsertAfter
,
winpos
->
x
,
winpos
->
y
,
winpos
->
cx
,
winpos
->
cy
,
winpos
->
flags
);
/* Log only documented flags, win2k uses 0x1000 and 0x2000
* in the high word for internal purposes
*/
wParam
=
winpos
->
flags
&
0xffff
;
break
;
}
}
msg
.
message
=
message
;
msg
.
flags
=
sent
|
wparam
|
lparam
;
if
(
defwndproc_counter
)
msg
.
flags
|=
defwinproc
;
...
...
@@ -1204,7 +1275,7 @@ static void test_mdi_messages(void)
0
,
0
,
0
,
0
,
mdi_frame
,
0
,
GetModuleHandleA
(
0
),
&
client_cs
);
assert
(
mdi_client
);
ok_sequence
(
WmCreateMDIclientSeq
,
"Create visible MDI client window"
,
TRU
E
);
ok_sequence
(
WmCreateMDIclientSeq
,
"Create visible MDI client window"
,
FALS
E
);
ok
(
GetFocus
()
==
mdi_frame
,
"input focus should be on MDI frame not on %p
\n
"
,
GetFocus
());
...
...
@@ -1513,7 +1584,7 @@ static void test_messages(void)
hchild
=
CreateWindowExA
(
0
,
"TestWindowClass"
,
"Test child"
,
WS_CHILD
|
WS_MAXIMIZE
,
0
,
0
,
10
,
10
,
hparent
,
0
,
0
,
NULL
);
ok
(
hchild
!=
0
,
"Failed to create child window
\n
"
);
ok_sequence
(
WmCreateMaximizedChildSeq
,
"CreateWindow:maximized child"
,
FALS
E
);
ok_sequence
(
WmCreateMaximizedChildSeq
,
"CreateWindow:maximized child"
,
TRU
E
);
DestroyWindow
(
hchild
);
flush_sequence
();
...
...
@@ -1546,7 +1617,13 @@ static void test_messages(void)
test_WM_SETREDRAW
(
hchild
);
ShowWindow
(
hchild
,
SW_SHOW
);
ok_sequence
(
WmShowChildSeq
,
"ShowWindow:child"
,
FALSE
);
ok_sequence
(
WmShowChildSeq
,
"ShowWindow(SW_SHOW):child"
,
FALSE
);
ShowWindow
(
hchild
,
SW_HIDE
);
ok_sequence
(
WmHideChildSeq
,
"ShowWindow(SW_HIDE):child"
,
FALSE
);
ShowWindow
(
hchild
,
SW_SHOW
);
ok_sequence
(
WmShowChildSeq
,
"ShowWindow(SW_SHOW):child"
,
FALSE
);
/* test WM_SETREDRAW on a visible child window */
test_WM_SETREDRAW
(
hchild
);
...
...
@@ -1658,12 +1735,12 @@ static void test_messages(void)
ok
(
!
IsWindowVisible
(
hchild
),
"IsWindowVisible() should return FALSE
\n
"
);
SetWindowPos
(
hchild
,
0
,
0
,
0
,
0
,
0
,
SWP_SHOWWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
|
SWP_NOZORDER
);
ok_sequence
(
WmShowChildInvisibleParentSeq_2
,
"SetWindowPos:show child with invisible parent"
,
FALS
E
);
ok_sequence
(
WmShowChildInvisibleParentSeq_2
,
"SetWindowPos:show child with invisible parent"
,
TRU
E
);
ok
(
GetWindowLongA
(
hchild
,
GWL_STYLE
)
&
WS_VISIBLE
,
"WS_VISIBLE should be set
\n
"
);
ok
(
!
IsWindowVisible
(
hchild
),
"IsWindowVisible() should return FALSE
\n
"
);
SetWindowPos
(
hchild
,
0
,
0
,
0
,
0
,
0
,
SWP_HIDEWINDOW
|
SWP_NOSIZE
|
SWP_NOMOVE
|
SWP_NOACTIVATE
|
SWP_NOZORDER
);
ok_sequence
(
WmHideChildInvisibleParentSeq_2
,
"SetWindowPos:hide child with invisible parent"
,
FALS
E
);
ok_sequence
(
WmHideChildInvisibleParentSeq_2
,
"SetWindowPos:hide child with invisible parent"
,
TRU
E
);
ok
(
!
(
GetWindowLongA
(
hchild
,
GWL_STYLE
)
&
WS_VISIBLE
),
"WS_VISIBLE should not be set
\n
"
);
ok
(
!
IsWindowVisible
(
hchild
),
"IsWindowVisible() should return FALSE
\n
"
);
...
...
@@ -2118,6 +2195,26 @@ static LRESULT WINAPI MsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam, LPAR
trace
(
"%p, %04x, %08x, %08lx
\n
"
,
hwnd
,
message
,
wParam
,
lParam
);
switch
(
message
)
{
case
WM_WINDOWPOSCHANGING
:
case
WM_WINDOWPOSCHANGED
:
{
WINDOWPOS
*
winpos
=
(
WINDOWPOS
*
)
lParam
;
trace
(
"%s
\n
"
,
(
message
==
WM_WINDOWPOSCHANGING
)
?
"WM_WINDOWPOSCHANGING"
:
"WM_WINDOWPOSCHANGED"
);
trace
(
"%p after %p, x %d, y %d, cx %d, cy %d flags %08x
\n
"
,
winpos
->
hwnd
,
winpos
->
hwndInsertAfter
,
winpos
->
x
,
winpos
->
y
,
winpos
->
cx
,
winpos
->
cy
,
winpos
->
flags
);
/* Log only documented flags, win2k uses 0x1000 and 0x2000
* in the high word for internal purposes
*/
wParam
=
winpos
->
flags
&
0xffff
;
break
;
}
}
msg
.
message
=
message
;
msg
.
flags
=
sent
|
wparam
|
lparam
;
if
(
defwndproc_counter
)
msg
.
flags
|=
defwinproc
;
...
...
dlls/x11drv/winpos.c
View file @
d304e4f8
...
...
@@ -711,8 +711,6 @@ static BOOL fixup_flags( WINDOWPOS *winpos )
if
((
wndPtr
->
rectWindow
.
left
==
winpos
->
x
)
&&
(
wndPtr
->
rectWindow
.
top
==
winpos
->
y
))
winpos
->
flags
|=
SWP_NOMOVE
;
/* Already the right position */
if
(
winpos
->
hwnd
==
GetActiveWindow
())
winpos
->
flags
|=
SWP_NOACTIVATE
;
/* Already active */
else
if
((
wndPtr
->
dwStyle
&
(
WS_POPUP
|
WS_CHILD
))
!=
WS_CHILD
)
{
if
(
!
(
winpos
->
flags
&
SWP_NOACTIVATE
))
/* Bring to the top when activating */
...
...
@@ -1007,7 +1005,6 @@ BOOL X11DRV_SetWindowPos( WINDOWPOS *winpos )
wine_tsx11_lock
();
XClearArea
(
display
,
get_whole_window
(
wndPtr
),
0
,
0
,
0
,
0
,
True
);
wine_tsx11_unlock
();
winpos
->
flags
|=
SWP_FRAMECHANGED
;
}
if
(
winpos
->
flags
&
SWP_SHOWWINDOW
)
{
...
...
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