Added proper support for storing window parents in the server.
Added a few requests to query the window hierarchy.
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index ebf2d3f..18ecc74 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -1563,17 +1563,11 @@
-struct create_desktop_window_request
-{
- struct request_header __header;
- user_handle_t handle;
-};
-
-
-
struct create_window_request
{
struct request_header __header;
+ user_handle_t parent;
+ user_handle_t owner;
user_handle_t handle;
};
@@ -1607,6 +1601,42 @@
};
+
+struct get_window_parents_request
+{
+ struct request_header __header;
+ user_handle_t handle;
+ int count;
+ /* VARARG(parents,user_handles); */
+};
+
+
+
+struct get_window_children_request
+{
+ struct request_header __header;
+ user_handle_t parent;
+ int count;
+ /* VARARG(parents,user_handles); */
+};
+
+
+
+struct get_window_tree_request
+{
+ struct request_header __header;
+ user_handle_t handle;
+ user_handle_t parent;
+ user_handle_t owner;
+ user_handle_t next_sibling;
+ user_handle_t prev_sibling;
+ user_handle_t first_sibling;
+ user_handle_t last_sibling;
+ user_handle_t first_child;
+ user_handle_t last_child;
+};
+
+
enum request
{
REQ_new_process,
@@ -1732,11 +1762,13 @@
REQ_wait_named_pipe,
REQ_disconnect_named_pipe,
REQ_get_named_pipe_info,
- REQ_create_desktop_window,
REQ_create_window,
REQ_link_window,
REQ_destroy_window,
REQ_get_window_info,
+ REQ_get_window_parents,
+ REQ_get_window_children,
+ REQ_get_window_tree,
REQ_NB_REQUESTS
};
@@ -1867,13 +1899,15 @@
struct wait_named_pipe_request wait_named_pipe;
struct disconnect_named_pipe_request disconnect_named_pipe;
struct get_named_pipe_info_request get_named_pipe_info;
- struct create_desktop_window_request create_desktop_window;
struct create_window_request create_window;
struct link_window_request link_window;
struct destroy_window_request destroy_window;
struct get_window_info_request get_window_info;
+ struct get_window_parents_request get_window_parents;
+ struct get_window_children_request get_window_children;
+ struct get_window_tree_request get_window_tree;
};
-#define SERVER_PROTOCOL_VERSION 52
+#define SERVER_PROTOCOL_VERSION 53
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/include/winuser.h b/include/winuser.h
index a8523eb..d1daa24 100644
--- a/include/winuser.h
+++ b/include/winuser.h
@@ -3602,8 +3602,8 @@
BOOL WINAPI GetUserObjectInformationA(HANDLE,INT,LPVOID,DWORD,LPDWORD);
BOOL WINAPI GetUserObjectInformationW(HANDLE,INT,LPVOID,DWORD,LPDWORD);
#define GetUserObjectInformation WINELIB_NAME_AW(GetUserObjectInformation)
-HWND WINAPI GetWindow(HWND,WORD);
-HDC WINAPI GetWindowDC(HWND);
+HWND WINAPI GetWindow(HWND,UINT);
+HDC WINAPI GetWindowDC(HWND);
LONG WINAPI GetWindowLongA(HWND,INT);
LONG WINAPI GetWindowLongW(HWND,INT);
#define GetWindowLong WINELIB_NAME_AW(GetWindowLong)