Commit graph

78 commits

Author SHA1 Message Date
Jinoh Kang
17e6ef6d7e server: Correctly expose composited parent window and its child on position change.
Skip redrawing the composited child window when the window rect and
visible region stays the same, since we're taking the union of the old
and new visible regions.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53153
Signed-off-by: Jinoh Kang <jinoh.kang.kr@gmail.com>
2022-11-04 19:23:56 +01:00
Jacek Caban
5b56bad50b server: Make window struct a server object.
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-02-09 18:37:32 +01:00
Rémi Bernon
769a2616ae server: Track desktop users per thread instead of per process.
As some thread may use a different desktop from their process.

This fixes the user32 win tests, which leaks a desktop that never gets
closed. The test_shell_window test creates a new desktop, which spawns
explorer.exe process, incrementing the desktop user count to 1, then
associates the desktop to a thread, which closes it on exit.

Never the user count is incremented to 2, and closing the thread desktop
doesn't either check whether the desktop process should be terminated.

Reversely, it is possible to create a desktop, associate it with a
thread /and/ a process, and this time the desktop process would be
terminated when the process exits, although the thread may still be
using it.

Tracking the users per thread is more robust and fixes the problem as
set_thread_desktop increments the desktop user count, and thread exit
decrements it.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-21 21:00:33 +02:00
Paul Gofman
74a74556dd server: Support creating processes with specified parent.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47817
Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-13 13:13:36 +01:00
Alexandre Julliard
8698b600c6 server: Map region to the window DPI in redraw_region().
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-24 20:12:05 +02:00
Alexandre Julliard
c5a6925676 user32: Scale coordinates in WIN_GetRectangles() based on DPI awareness.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-24 20:12:05 +02:00
Alexandre Julliard
d3876ca84e server: Add a couple of rectangle helper functions.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-05 19:08:34 +02:00
Alexandre Julliard
70dd64cf97 server: Add a helper function to validate a window handle.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-30 18:08:36 +09:00
Alexandre Julliard
c6f12bd9cc server: Notify all listeners when the contents of the clipboard have changed.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-30 16:33:04 +09:00
Alexandre Julliard
5962df3a1e server: Cleanup clipboard information upon window destruction.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-24 00:16:43 +09:00
Alexandre Julliard
fcc977c139 server: Store the desktop object names inside their window station.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-01-20 22:40:58 +09:00
Piotr Caban
3f1bbdcae3 server: Send mouse hardware messages to thread owning top-most window.
Also don't limit mouse message scope to top-most window when message
comes from SendInput or window that generated the event is
minimized/transparent.
2014-10-17 17:51:52 +09:00
Piotr Caban
de21941178 user32: Change SetForegroundWindow behavior on windows with parent and no WS_CHILD flag. 2014-03-27 16:18:05 +01:00
Vincent Povirk
4c83138f72 server: Implement RegisterHotKey/UnregisterHotKey. 2011-06-21 14:51:08 +02:00
Alexandre Julliard
3909f51122 server: Don't queue a hardware WM_MOUSEMOVE if the position hasn't changed. 2011-04-06 21:07:04 +02:00
Alexandre Julliard
21e86f60ec server: Post a message to the desktop window when the cursor clip rectangle changes. 2011-04-05 13:36:57 +02:00
Alexandre Julliard
85358b10f3 server: Add a more general way of posting messages to the desktop window. 2011-04-05 13:36:56 +02:00
Alexandre Julliard
6576703fac server: Return the time of last change along with the current cursor position. 2011-03-31 20:15:56 +02:00
Alexandre Julliard
c64c36f573 server: Store all desktop cursor information in a separate structure. 2011-03-31 19:54:22 +02:00
Alexandre Julliard
c7efa293f0 server: Invoke low-level hardware hooks directly from the server side. 2011-03-02 21:26:13 +01:00
Alexandre Julliard
06b78feade server: Store the global key state in the server. 2011-02-25 13:50:25 +01:00
Alexandre Julliard
02e8174067 server: Store the cursor clip rectangle in the server. 2011-02-25 13:50:19 +01:00
Alexandre Julliard
183c41b49a server: Store the global cursor position in the server. 2011-02-25 11:25:15 +01:00
Alexandre Julliard
ac4aac747c server: Make the foreground thread input per-desktop instead of global. 2011-02-25 11:19:46 +01:00
Alexandre Julliard
d56ac06260 server: Mirror the window region for RTL windows in get/set_window_region and redraw_window. 2010-09-27 21:07:11 +02:00
Dmitry Timoshkov
66e981ec8d server: Make layered windows transparent for mouse messages. 2010-06-11 14:16:03 +02:00
Alexandre Julliard
538b24747c server: Free client-side user handles at process exit. 2009-10-15 17:56:04 +02:00
Alexandre Julliard
9018e13c5e server: Add support for allocating purely client-side user handles. 2009-10-12 17:07:04 +02:00
Alexandre Julliard
cc55fd317a server: Make hook procedures client_ptr_t instead of void pointers. 2008-12-29 17:35:35 +01:00
Alexandre Julliard
0cd3ff6cbe server: Make the class opaque data a client_ptr_t instead of a void pointer. 2008-12-29 17:24:39 +01:00
Alexandre Julliard
cb2788efaf server: Add a module_handle_t type to represent client-side module handles. 2008-12-29 16:41:44 +01:00
Alexandre Julliard
31282b3f63 server: Define an lparam_t type for message parameters that can hold all sorts of data. 2008-12-10 16:01:50 +01:00
Alexandre Julliard
81e6edbda9 server: Add support for a top-level message parent window in parallel to the desktop window. 2008-06-25 14:43:39 +02:00
Alexandre Julliard
34fe91bf2b user32: Implemented EnumDesktopWindows. 2008-03-19 11:13:46 +01:00
Alexandre Julliard
0f273c17ff server: Added data_size_t type to represent sizes in the server protocol.
Make it an unsigned int to save some space on Win64, if we need to
transfer more than 4Gb over the server pipe something is seriously
wrong.
2006-07-26 11:11:03 +02:00
Mike McCormack
db9b557b54 server: Make wparam and lparam values unsigned long for win64 compatability. 2006-06-08 10:39:58 +02:00
Jonathan Ernst
360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Alexandre Julliard
90af5a0d17 server: Connect to the window station and desktop specified by startup info.
If window station and desktop aren't inherited from the parent, don't
connect to them from the server, but from the USER init code where we
can get the proper values from the startup info structure.
2006-03-27 12:57:17 +02:00
Alexandre Julliard
f978f615d8 server: Support for closing the desktop window.
If a thread is owning the desktop window, when all other users of the
desktop have exited, signal the owner to close the desktop (with a 1
second delay).
2006-03-06 21:02:24 +01:00
Alexandre Julliard
251be542ac server: Infrastructure for having a thread own the desktop window. 2006-03-06 20:37:52 +01:00
Alexandre Julliard
ead9b062e3 Added a struct unicode_str to encapsulate object names. 2005-11-18 16:31:18 +00:00
Alexandre Julliard
4a40b2eefb Store the global hooks table in the desktop object. 2005-07-11 18:05:50 +00:00
Alexandre Julliard
5ad90c0f37 Tie windows and thread input structures to a specific desktop.
Support multiple desktop windows (one per desktop object).
Use the window desktop to find the window station to use for property
atoms.
2005-07-11 13:30:23 +00:00
Alexandre Julliard
499e343d9f Export the winstation and desktop structures to avoid having to write
too many accessor functions.
2005-07-11 10:55:53 +00:00
Alexandre Julliard
8c518808b8 Put in place the basic infrastructure to allow supporting multiple
desktop windows.
2005-07-08 11:37:40 +00:00
Alexandre Julliard
248f4b29fe Store the global atom table in the process window station. 2005-07-07 11:29:23 +00:00
Alexandre Julliard
45128bdcdd Make the clipboard information local to the process window station. 2005-06-29 20:13:36 +00:00
Alexandre Julliard
78a3e63377 The desktop of a new thread should be set from the process initial
desktop, not from the parent thread.
Fixed a couple of bugs in the desktop name handling.
2005-06-09 12:07:12 +00:00
Alexandre Julliard
1bf96e09a9 Beginnings of support for window stations and desktops. 2005-06-08 18:44:50 +00:00
Alexandre Julliard
63342353bc Store a bitmap of active hooks on the client side to try to avoid
server calls for hooks that are not set.
2005-05-11 13:03:15 +00:00