Added server-side infrastructure for the thread input structure.
Reimplemented AttachThreadInput() and added GetGUIThreadInfo().
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 8b2a63f..01b6e19 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -2729,6 +2729,40 @@
};
+
+struct attach_thread_input_request
+{
+ struct request_header __header;
+ thread_id_t tid_from;
+ thread_id_t tid_to;
+ int attach;
+};
+struct attach_thread_input_reply
+{
+ struct reply_header __header;
+};
+
+
+
+struct get_thread_input_request
+{
+ struct request_header __header;
+ thread_id_t tid;
+};
+struct get_thread_input_reply
+{
+ struct reply_header __header;
+ user_handle_t focus;
+ user_handle_t capture;
+ user_handle_t active;
+ user_handle_t foreground;
+ user_handle_t menu_owner;
+ user_handle_t move_size;
+ user_handle_t caret;
+ rectangle_t rect;
+};
+
+
enum request
{
REQ_new_process,
@@ -2887,6 +2921,8 @@
REQ_remove_window_property,
REQ_get_window_property,
REQ_get_window_properties,
+ REQ_attach_thread_input,
+ REQ_get_thread_input,
REQ_NB_REQUESTS
};
@@ -3050,6 +3086,8 @@
struct remove_window_property_request remove_window_property_request;
struct get_window_property_request get_window_property_request;
struct get_window_properties_request get_window_properties_request;
+ struct attach_thread_input_request attach_thread_input_request;
+ struct get_thread_input_request get_thread_input_request;
};
union generic_reply
{
@@ -3211,8 +3249,10 @@
struct remove_window_property_reply remove_window_property_reply;
struct get_window_property_reply get_window_property_reply;
struct get_window_properties_reply get_window_properties_reply;
+ struct attach_thread_input_reply attach_thread_input_reply;
+ struct get_thread_input_reply get_thread_input_reply;
};
-#define SERVER_PROTOCOL_VERSION 84
+#define SERVER_PROTOCOL_VERSION 85
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/include/winuser.h b/include/winuser.h
index cce01e4..f7c29ff 100644
--- a/include/winuser.h
+++ b/include/winuser.h
@@ -397,6 +397,27 @@
} INPUT, *PINPUT, *LPINPUT;
+typedef struct tagGUITHREADINFO
+{
+ DWORD cbSize;
+ DWORD flags;
+ HWND hwndActive;
+ HWND hwndFocus;
+ HWND hwndCapture;
+ HWND hwndMenuOwner;
+ HWND hwndMoveSize;
+ HWND hwndCaret;
+ RECT rcCaret;
+} GUITHREADINFO, *PGUITHREADINFO, *LPGUITHREADINFO;
+
+#define GUI_CARETBLINKING 0x00000001
+#define GUI_INMOVESIZE 0x00000002
+#define GUI_INMENUMODE 0x00000004
+#define GUI_SYSTEMMENUMODE 0x00000008
+#define GUI_POPUPMENUMODE 0x00000010
+#define GUI_16BITTASK 0x00000020
+
+
/***** Dialogs *****/
/* Gcc on Solaris has a version of this that we don't care about */
@@ -4079,15 +4100,16 @@
INT WINAPI GetDlgItemTextA(HWND,INT,LPSTR,UINT);
INT WINAPI GetDlgItemTextW(HWND,INT,LPWSTR,UINT);
#define GetDlgItemText WINELIB_NAME_AW(GetDlgItemText)
-UINT WINAPI GetDoubleClickTime(void);
-HWND WINAPI GetFocus(void);
-HWND WINAPI GetForegroundWindow(void);
-BOOL WINAPI GetInputState(void);
-UINT WINAPI GetInternalWindowPos(HWND,LPRECT,LPPOINT);
-UINT WINAPI GetKBCodePage(void);
-INT WINAPI GetKeyboardType(INT);
-INT WINAPI GetKeyNameTextA(LONG,LPSTR,INT);
-INT WINAPI GetKeyNameTextW(LONG,LPWSTR,INT);
+UINT WINAPI GetDoubleClickTime(void);
+HWND WINAPI GetFocus(void);
+HWND WINAPI GetForegroundWindow(void);
+BOOL WINAPI GetGUIThreadInfo(DWORD,GUITHREADINFO*);
+BOOL WINAPI GetInputState(void);
+UINT WINAPI GetInternalWindowPos(HWND,LPRECT,LPPOINT);
+UINT WINAPI GetKBCodePage(void);
+INT WINAPI GetKeyboardType(INT);
+INT WINAPI GetKeyNameTextA(LONG,LPSTR,INT);
+INT WINAPI GetKeyNameTextW(LONG,LPWSTR,INT);
#define GetKeyNameText WINELIB_NAME_AW(GetKeyNameText)
INT WINAPI GetKeyboardLayoutNameA(LPSTR);
INT WINAPI GetKeyboardLayoutNameW(LPWSTR);