Ken Thomases
2f68e47167
winemac: Don't use the main dispatch queue to implement OnMainThread() for a thread with no event queue.
...
The main dispatch queue is a serial queue and is a shared resource. If we
submit a long-running task to it, then no other tasks, including those submitted
by the system frameworks, can run until it completes.
2013-10-30 15:29:33 +01:00
Alexandre Julliard
e4a43cfa1f
winemac: Don't try to set the app icon before GDI is properly initialized.
2013-10-24 19:00:10 +02:00
Ken Thomases
35f0cf26b0
winemac: Send WM_CANCELMODE when keyboard layout changes from Cocoa side.
...
The standard keyboard shortcut for switching the keyboard layout is Command-
Space, but the Mac driver never sees the Space key press. So, Wine only sees
a press and release of Alt, which puts focus on the menu bar. This prevents
that focus change.
2013-10-24 10:54:55 +02:00
Ken Thomases
742c48b348
winemac: Disable software GL rendering unless it's enabled via a new registry setting, AllowSoftwareRendering.
2013-10-22 16:37:40 +02:00
Alexandre Julliard
639c202ea7
winemac: Use an init once function to register IME classes.
2013-10-22 10:25:36 +02:00
Alexandre Julliard
5435dad997
winemac: Only register the IME class when needed.
2013-10-21 14:46:25 +02:00
Ken Thomases
3ececfd2a5
winemac: Fix a leak in macdrv_CountClipboardFormats(). (Clang).
2013-10-21 10:46:44 +02:00
Ken Thomases
49197e811b
winemac: Rename some confusingly-named variables.
2013-10-21 10:46:33 +02:00
Ken Thomases
c7f8e71ab6
winemac: Fix some bytes-vs-WCHARs length computation bugs in the UTF-16 clipboard support.
2013-10-21 10:46:29 +02:00
Ken Thomases
1c049e5031
winemac: Restore app cursor settings when cursor moves back into an app window.
...
The code had previously set the cursor back to the standard arrow and unhid
it when it left all app windows. Now it restores the cursor image that the
app set and re-hides it if necessary when it moves back over any app window.
2013-10-18 11:33:32 +02:00
Ken Thomases
8747df094d
winemac: Treat mouse moves in a window title bar as outside the window.
...
Don't queue mouse-moved events. Reset the cursor.
2013-10-18 11:32:53 +02:00
Ken Thomases
761092a2fe
winemac: Clean up fully-delivered events in queues which aren't being drained.
...
Some events get queued for all GUI-connected threads but are only processed
by the first to dequeue them. Other threads which tend their event queue
discard such already-processed events. However, some threads may be
connected to the GUI but never tend their event queue. To prevent such
threads from accumulating zombie events, the zombies are cleared each time a
new event is queued.
2013-10-18 11:32:37 +02:00
Ken Thomases
9deb00bfdc
winemac: Don't coalesce events which might be in multiple queues.
2013-10-18 11:32:23 +02:00
Kevin Eaves
771fcd894a
winemac: Restore the window title when the window style is changed.
2013-10-17 20:29:25 +02:00
Alexandre Julliard
6ae1e33a17
winemac: Clear the thread data explicitly on detach.
2013-10-16 20:49:24 +02:00
Ken Thomases
f4f50c9e4a
winemac: Implement support for Cocoa-style full-screen mode.
...
Based in large part on a patch submitted by Kevin Eaves.
2013-10-11 11:04:53 +02:00
Ken Thomases
79d45585bc
winemac: Add registry settings to make Option keys send Alt rather than accessing additional characters from the keyboard layout.
2013-10-10 10:45:22 +02:00
Ken Thomases
05e3d0e5cc
winemac: Make sure the same housekeeping is done when closing a window as is done when hiding it.
2013-10-10 10:45:13 +02:00
Frédéric Delanoy
510e30bd63
winemac.drv: Use BOOL type where appropriate.
2013-10-09 10:08:34 +02:00
Ken Thomases
c043587d56
winemac: Tell Wine when Cocoa has brought a window to the front.
2013-10-08 15:39:01 +02:00
Ken Thomases
9779f0ace4
winemac: If the app doesn't specify a custom max. tracking size, don't restrict Cocoa.
2013-10-08 15:39:01 +02:00
Ken Thomases
4d9340eb41
winemac: Update the window min/max size info and enforce it when zooming.
2013-10-08 15:39:01 +02:00
Ken Thomases
bdcb8138fe
winemac: Don't accidentally clear Cocoa window style mask bits.
2013-10-08 15:39:01 +02:00
Ken Thomases
dd59ab26fe
winemac: Only update window minimized state when it has changed from what processed events told us it was.
...
This fixes a problem where windows could spontaneously re-minimize after
being unminimized. Cocoa would see the window unminimize. It would queue
a WINDOW_DID_UNMINIMIZE event. While that event was pending, Wine might do
something which caused set_cocoa_window_properties() to be called and tell
Cocoa to conform itself to the current Win32 state. The current Win32 state
still had the window minimized, so Cocoa would re-minimize the window. It
would even discard the WINDOW_DID_UNMINIMIZE event.
2013-10-08 15:39:01 +02:00
Ken Thomases
0e8e45cf99
winemac: Use unsigned type for bitfields.
2013-10-08 15:39:01 +02:00
Ken Thomases
1186c36c89
winemac: Make clicking on the app's dock icon unminimize a window if there are only minimized windows.
...
Cocoa would automatically do this for a normal app. However, the Mac driver
makes all of its windows inherit from NSPanel and Cocoa ignores panels for
this feature.
2013-10-04 12:45:56 +02:00
Ken Thomases
63fe00eae7
winemac: Allow zero-sized windows to be selected from the Mac Window menu.
...
They show up in the taskbar on Windows 7. Selecting them from there is
meaningful and useful, as is selecting them from the Window menu.
In addition to just switching among windows from that menu, this is also
important to recovering a minimized window if the user has configured their
system preferences to minimize windows into the process's dock icon (rather
than as separate dock icons).
2013-10-04 12:45:52 +02:00
Ken Thomases
b7709771d1
winemac: Reapply display modes when switching back to app after "escaping" with Command-Tab.
...
The Mac driver captures the displays when the program changes the display
mode. If the user types Command-Tab to switch away, it resets the displays
to their original modes and releases them. However, if they switched back,
it didn't restore the mode to what the program had set, so the program often
showed the game window in a corner of the screen with the top behind the Mac
menu bar.
2013-10-02 11:00:36 +02:00
Ken Thomases
7c55e912da
winemac: Remove a too-early attempt to set the process's Dock icon.
2013-10-01 23:05:08 +02:00
Ken Thomases
54291ad3d1
winemac: Let Wine always drive window minimization; Cocoa just requests it.
2013-09-30 20:36:34 +02:00
Frédéric Delanoy
66a95f6d45
winemac.drv: Use BOOL type where appropriate.
2013-09-30 20:35:02 +02:00
Ken Thomases
12e0b0577c
winemac: Activate an app if it sets focus on a window shortly after a hot key is pressed.
...
The Mac driver doesn't normally steal focus, but a press of a hot key counts
as the user giving permission.
2013-09-27 10:41:17 +02:00
Ken Thomases
6bae7cf796
winemac: Implement support for global hot keys.
...
Partially based on a patch for winex11 previously submitted by Vincent Povirk.
2013-09-27 10:41:05 +02:00
Ken Thomases
5a859655d7
winemac: Re-sync the window region whenever factors affecting its conversion to Cocoa coordinates change.
2013-09-27 10:39:22 +02:00
Ken Thomases
d7f4d67514
winemac: Fix hiding windows that are minimized using -close instead of -orderOut:.
...
Cocoa won't order a minimized window out of the screen list using -orderOut:.
This leaves a window that should be hidden still visible in the Dock, where
it can be unminimized.
2013-09-27 10:39:13 +02:00
Ken Thomases
4e0e9ca84a
winemac: When programmatically focusing a window, don't generate WINDOW_LOST_FOCUS event for previously focused window.
...
That event can confuse things if the program switches focus from A to B and
then back to A and then processes events. It will get an event saying that
A lost focus in Cocoa, check that A does indeed have current focus in Wine,
and so switch focus away from it (to the desktop window). (It then gets an
event that B lost focus, but that does nothing at that point.)
2013-09-26 20:05:41 +02:00
Michael Stefaniuc
3a13dc5995
winemac.drv: Avoid using CONST.
2013-09-24 12:58:00 +02:00
Ken Thomases
018d629b3c
winemac: Use NSMouseInRect() instead of NSPointInRect() to compensate for Cocoa's off-by-one coordinate system.
...
This matches what Cocoa does when determining how to handle an event so that,
for example, our test if a click is in the window grow box corresponds to
whether Cocoa will run an internal mouse-tracking loop to resize the window
when we pass it the event. This fixes a problem where both Cocoa and user32
would try to run a resize loop and the cursor would get "stuck" resizing the
window after the button was released.
2013-09-19 09:30:18 +02:00
Ken Thomases
4ad9d5f04a
winemac: Send WM_ENTER/EXITSIZEMOVE messages at start/end of a resizing operation.
2013-09-18 22:23:09 +02:00
Ken Thomases
d55d2ec85a
winemac: Move memory management of liveResizeDisplayTimer into property setter.
2013-09-18 22:23:09 +02:00
Ken Thomases
a3197b8ad0
winemac: At the start of a resize operation, get window min/max size info and pass it to Cocoa.
2013-09-18 22:23:09 +02:00
Ken Thomases
53036b6917
winemac: Trace the pixel format in DescribePixelFormat().
2013-09-12 11:08:23 +02:00
Ken Thomases
a300efc852
winemac: Return failure from DescribePixelFormat() for invalid pixel format.
...
Also use the proper function for checking the format and looking up the
internal format description.
2013-09-12 11:08:19 +02:00
Ken Thomases
d33a4da5ed
winemac: Restrict DescribePixelFormat() to displayable pixel formats.
2013-09-12 11:07:58 +02:00
Ken Thomases
ae2ce18fd6
winemac: Don't allow dead-key state to repeat after characters are generated.
...
It's fairly common in Mac keyboard layouts that, if you type a dead key twice,
the second key press will both produce a non-dead character and also
perpetuate the dead-key state. For example, with the U.S. layout, Option-E,
E will produce "" and Option-E, Option-E, E will produce "". Windows
keyboard layouts don't tend to do this. The second key press produces the
non-dead character and clears the dead-key state.
2013-09-10 11:07:41 +02:00
Ken Thomases
7ed00f6d97
winemac: Add support for mouse-move and right- and middle-click events on systray icons in the Mac status bar.
2013-09-06 11:59:13 +02:00
Ken Thomases
675b052572
winemac: When ordering sibling child windows, don't remove and re-add ones already in the right order.
2013-09-03 16:58:15 +02:00
Ken Thomases
987309e528
winemac: Don't use Cocoa parent-child relationship when topmost state is enough to keep owned in front of owner.
...
The Cocoa parent-child relationship has undesirable side effects and bugs. In
the general case, it's the only way to maintain the z-order of owned windows
relative to their owner. But when the owner is non-topmost and an owned
window is topmost, the Cocoa window level will enforce that and we don't
need it.
2013-09-03 16:58:15 +02:00
Ken Thomases
fad48773f6
winemac: A window is ineligible to be a Cocoa parent or child while minimized.
2013-08-30 11:18:38 +02:00
Ken Thomases
84903c5db3
winemac: Track latent child windows (the inverse of the latent parent window relationship).
...
This allows the relationship to be restored when the window becomes eligible
again.
2013-08-30 11:18:35 +02:00
Ken Thomases
a68d0a24ef
winemac: When a window becomes ineligible to be a parent, make the relationship latent in its children, too.
2013-08-30 11:18:30 +02:00
Ken Thomases
029bcf97dd
winemac: Clear latent parent on window close to break potential retain cycle.
2013-08-30 11:18:27 +02:00
Ken Thomases
512237ebe6
winemac: Consolidate the code for managing the Cocoa parent/child window relationship.
2013-08-30 11:18:23 +02:00
Ken Thomases
6873c3ee66
winemac: Make -setMacDrvParentWindow: do nothing if new parent is same as latent parent.
2013-08-30 11:18:18 +02:00
Ken Thomases
4b2f4eb600
winemac: Remove some duplicated code from -makeKeyAndOrderFront:.
2013-08-30 11:18:15 +02:00
Ken Thomases
315b39ec8d
winemac: Skip minimized windows when looking for z-ordering neighbor.
2013-08-30 11:18:11 +02:00
Ken Thomases
b550ee8d59
winemac: On click, don't reorder Cocoa child window after siblings of higher level.
...
It may be necessary to reorder to some extent because the clicked window is
behind a sibling at the same level, but that shouldn't move it later in the
list than higher-level siblings.
Cocoa gets buggy if the list of child windows isn't in z-order.
2013-08-30 11:18:07 +02:00
Ken Thomases
d14f787192
winemac: Don't reorder clicked window relative to sibling owned windows if it's in the right place.
...
The right place may not be the end of the list of Cocoa child windows if some
of the siblings are at a higher window level (i.e. floating if the clicked
window is not).
2013-08-30 11:17:56 +02:00
Ken Thomases
1b9fac3b3d
winemac: Don't generate scroll wheel events for axes with 0 delta.
2013-08-27 11:50:52 +02:00
Ken Thomases
b755674df3
winemac: Don't unminimize a window for SetFocus().
2013-08-27 11:50:52 +02:00
Charles Davis
a157c7bd81
winemac.drv: Support the public UTF-16 type for Unicode text.
2013-08-22 22:06:43 +02:00
Ken Thomases
251160fef9
winemac: Always trace arguments in macdrv_ShowWindow().
2013-08-21 12:13:56 +02:00
Ken Thomases
121eb08bae
winemac: Improve tracing in sync_window_position() to include adjusted frame.
2013-08-21 12:13:56 +02:00
Ken Thomases
d6624ee9f6
winemac: Remove a redundant memset of a struct.
2013-08-21 12:13:56 +02:00
Ken Thomases
20c3c80257
winemac: Create 1x1 Cocoa window with empty shape for zero-sized Win32 window.
2013-08-21 12:13:55 +02:00
Ken Thomases
87dd13150a
winemac: Make cgrect_from_rect() preserve origin of empty rectangles.
2013-08-21 12:13:55 +02:00
Charles Davis
8a041504c8
winemac.drv: Advertise some legacy WGL extensions in the GL_EXTENSIONS string.
2013-08-16 11:55:23 +02:00
Ken Thomases
4b24fce4e2
winemac: Avoid using display palette API, which was deprecated with the 10.7 SDK.
2013-08-15 16:17:49 +02:00
Ken Thomases
47337ed14c
winemac: Make a file-scope variable static.
2013-08-01 11:42:32 +02:00
Charles Davis
05a68dbc55
winemac.drv: Also return the number of pixel formats if the caller didn't supply a PIXELFORMATDESCRIPTOR.
2013-07-27 12:14:46 -05:00
Ken Thomases
a39b02c3e7
winemac: Dispatch key-up events directly to window to be sure to get them.
...
For keys pressed in combination with Command, -[NSApplication sendEvent:]
simply doesn't pass the key-up event through to the window. We have to
track which keys we've told Wine are pressed because Cocoa may consume
key-downs that trigger menus or system behaviors.
2013-07-09 10:30:45 +02:00
Ken Thomases
a723af61ac
Revert "winemac: Dispatch key events directly to window to be sure to get key-up events.".
...
This reverts commit 0d20ac02f7
.
2013-07-09 10:30:43 +02:00
Ken Thomases
4f23821f08
winemac: Add registry setting to control setting display gamma ramp.
2013-07-09 10:28:43 +02:00
Ken Thomases
9e878cb92c
winemac: Add registry setting to disable vertical sync.
2013-07-02 10:07:57 +02:00
Ken Thomases
b7c7d09470
winemac: Add registry setting to control glFlush() skipping for single-buffer contexts and disable it by default.
2013-07-02 10:05:35 +02:00
Ken Thomases
967a49fcb2
winemac: Force swap interval to 0 for single-buffered contexts to avoid vsync'ed flushes.
2013-07-02 10:05:07 +02:00
Ken Thomases
d30705bdfe
winemac: Use screen color space for windows covered by OpenGL views.
2013-07-02 10:04:59 +02:00
Ken Thomases
941ce31adb
winemac: Fix ordering of windows owned by same owner when on inactive desktop space.
2013-06-28 11:40:55 +02:00
Ken Thomases
0d20ac02f7
winemac: Dispatch key events directly to window to be sure to get key-up events.
...
For keys pressed in combination with Command, -[NSApplication sendEvent:]
simply doesn't pass the key-up event through to the window.
2013-06-28 11:40:41 +02:00
Ken Thomases
3c7bc8202c
winemac: Avoid overdriving single-buffered GL if possible; the system throttles us.
...
Use glFlushRenderAPPLE(), if available, instead of glFlush() calls less
than 1/60th of a second since the last.
2013-06-21 11:57:42 +02:00
Ken Thomases
a8efa5271b
winemac: Fix off-by-one errors when indexing into pixel_formats array with 1-based pixel format number.
2013-06-21 11:56:37 +02:00
Alexandre Julliard
410b728c7b
winemac.drv: Don't register IME classes before the dll is initialized.
2013-06-20 22:14:35 +02:00
Ken Thomases
153f3e27c4
winemac: Forcibly release mouse capture for clicks in Mac menu bar or app deactivation.
2013-06-20 11:31:25 +02:00
Ken Thomases
1d10457aee
winemac: Also activate if a window is ordered front shortly after tray icon clicked.
...
... in addition to if one is focused.
2013-06-20 11:30:16 +02:00
Ken Thomases
92a67d4259
winemac: Don't complain that WM_MACDRV_ACTIVATE_ON_FOLLOWING_FOCUS is unrecognized.
2013-06-20 11:29:58 +02:00
Ken Thomases
300b231107
winemac: Cope with apps which return multiple DROPEFFECTs from IDropTarget::DragEnter() and DragOver().
2013-06-18 13:16:23 +02:00
Ken Thomases
f035cc73d0
winemac: Don't give windows focus on click if the click was sent to Wine.
...
Only clicks on the title bar (outside the close or minimize buttons) or the
grow box give windows focus.
2013-06-18 12:57:44 +02:00
Ken Thomases
3faf1a92b0
winemac: Don't bring disabled or no-activate windows forward when clicked.
2013-06-18 12:57:43 +02:00
Ken Thomases
d22ac28f5e
winemac: Allow clicks on owned windows to reorder them relative to other owned windows of the same owner.
2013-06-07 11:59:02 +02:00
Ken Thomases
f6924b9603
winemac: Honor requests to order owned windows relative to other owned windows of the same owner.
2013-06-07 11:58:59 +02:00
Ken Thomases
b96b565514
winemac: Command-clicks shouldn't give windows focus.
2013-06-07 11:58:52 +02:00
Ken Thomases
e635952459
winemac: Actually switch Win32 focus away from a window that has lost Cocoa focus.
2013-06-07 11:57:50 +02:00
Ken Thomases
220b8b7946
winemac: Add an option to capture the displays for full-screen windows in addition to display mode changes.
...
Under HKCU\Software\Wine\Mac Driver, set string value
CaptureDisplaysForFullscreen to "y" to enable the new behavior.
2013-06-07 11:57:06 +02:00
Ken Thomases
a6dc4906de
winemac: Ignore window frame changes while minimized but check again when unminimized.
2013-06-04 15:01:15 +02:00
Ken Thomases
62a1907c9e
winemac: Make windows key after unminimizing, if allowed.
...
We generally prevent Cocoa from making our windows key (focused) so that
Wine can be in control. However, after unminimizing, Wine believes the
window is already focused but Cocoa doesn't, so key presses just cause beeps.
2013-06-04 15:01:12 +02:00
Ken Thomases
b15f412e14
winemac: Allow Cocoa to make minimized windows key; it will unminimize them as necessary.
2013-06-04 15:01:08 +02:00
Ken Thomases
f010a930df
winemac: Improve the debug tracing in macdrv_SetWindowStyle().
2013-06-04 15:01:03 +02:00
Ken Thomases
f57db8a3de
winemac: Keep old window surface for minimized windows to allow redrawing.
...
This improves the animation of the window unminimizing from the Dock in some
cases. The window would often be blank or, for shaped windows, invisible
during that animation.
2013-06-04 15:00:59 +02:00
Ken Thomases
b285c5706e
winemac: Defer minimizing hidden windows until they are shown.
...
Minimizing invisible windows causes weird phantoms to appear in
Exposé, the Window menu, and the Dock.
2013-06-04 15:00:54 +02:00
Ken Thomases
841f158d81
winemac: Don't accidentally unminimize a window when trying to change z-order.
2013-06-04 15:00:31 +02:00
Ken Thomases
4c651e39e4
winemac: Don't unminimize a window on first activation during start-up.
2013-06-04 15:00:28 +02:00
Aric Stewart
c6d307533b
macdrv: Rework the way we handle cursor position and composition text.
2013-05-30 20:19:34 +02:00
Ken Thomases
d8269a0586
winemac: Add Hide, Hide Others, and Show All items to the application menu.
2013-05-29 19:49:42 +02:00
Ken Thomases
c3d2e43060
winemac: By default, make full-screen windows not float when not the active app.
...
Added a registry setting to control the behavior: WindowsFloatWhenInactive
with possible values "none", "all, and "nonfullscreen" which is the default.
2013-05-29 19:49:40 +02:00
Ken Thomases
c8d4b1cc5e
winemac: Order front in -makeKeyAndOrderFront:; we only override to control key status.
...
When we have windows on two different spaces and the user switches between them by
clicking our Dock icon, Cocoa inexplicably sends the switched-to window to the
back of the z-order. It's only -makeKeyAndOrderFront: that brings it forward
again, but our override broke that.
2013-05-17 16:36:40 +02:00
Ken Thomases
ef874a8eaa
winemac: Don't reorder windows if they're already ordered as requested.
...
This avoids adjusting window levels. It also avoid unnecessarily deinterleaving
the windows of this and other processes.
2013-05-17 16:36:35 +02:00
Ken Thomases
7a047af640
winemac: In -setFrameIfOnScreen:, don't adjust window levels if fullscreen-ness didn't change.
2013-05-17 16:36:31 +02:00
Ken Thomases
94746f1d2d
winemac: In -setFrameIfOnScreen:, avoid some work if the frame didn't change.
2013-05-17 16:36:28 +02:00
Ken Thomases
27510fae8e
winemac: Centralize adjusting of window levels using the window server's z-order.
2013-05-17 16:36:24 +02:00
Ken Thomases
8343e7ce4d
winemac: Set up window's latent parent-child relationship before ordering the window.
...
Making a window a child reorders it to be immediately above or below its parent,
potentially undoing the ordering we had just done.
2013-05-17 16:36:00 +02:00
Ken Thomases
0d4a26eff5
winemac: Use window server's window list to find next window to offer focus to.
...
... rather than our orderedWineWindows array, which is going away.
2013-05-17 16:35:54 +02:00
Ken Thomases
6d4098ebd3
winemac: Consider minimized windows as "on screen" for our purposes.
2013-05-17 16:35:48 +02:00
Ken Thomases
c3183fc007
winemac: Implement simpler way to find front Wine window.
...
This uses Cocoa and the window server to track windows and their z-order,
which is more reliable than our own tracking.
2013-05-17 16:35:27 +02:00
Ken Thomases
05c250dfcb
winemac: Always call super in -validateMenuItem:; fixes check mark in Windows menu.
2013-05-17 12:15:22 +02:00
Ken Thomases
939d9a906f
winemac: Improve positioning of input method candidate window.
2013-05-17 12:14:51 +02:00
Ken Thomases
1ac1cd69ad
winemac: Fix disabling of resizable windows.
2013-05-14 17:28:30 +02:00
Ken Thomases
08e940fb1d
winemac: Unminimize a window on activation if there are only minimized windows.
2013-05-08 19:35:04 +02:00
Ken Thomases
1a697e15b9
winemac: Implement SetCapture().
2013-05-07 11:20:32 +02:00
Ken Thomases
3eee56668a
winemac: Mouse drags don't imply anything about z-order of target window because of implicit capture.
2013-05-07 11:20:11 +02:00
Ken Thomases
3e3d982185
winemac: Prefer absolute mouse moves unless cursor is pinned by clipping or desktop edges.
...
This fixes an issue with sub-pixel-precise pointing devices on Lion and later.
Wine's notion of the cursor position would get out of sync with the actual position
because deltas don't convey the actual movement distance.
2013-05-07 11:19:43 +02:00
Ken Thomases
1c4d8938ec
winemac: Apply cursor clipping to events that were in Cocoa's queue when clipping started.
2013-05-07 11:19:37 +02:00
Ken Thomases
d9ae2f3e38
winemac: Consolidate scroll wheel handling into -[WineApplicationController handleScrollWheel:].
2013-05-07 11:19:33 +02:00
Ken Thomases
e15b82ad1b
winemac: Consolidate mouse button handling into -[WineApplicationController handleMouseButton:].
2013-05-07 11:19:27 +02:00
Ken Thomases
72e893237c
winemac: Consolidate mouse move handling into -[WineApplicationController handleMouseMove:].
2013-05-07 11:19:21 +02:00
Ken Thomases
76691853f5
winemac: Extract application-level handling of mouse move events to a separate method.
2013-05-07 11:19:00 +02:00
Ken Thomases
3964f805cc
winemac: Change some run-time asserts to compile-time.
2013-05-06 11:37:44 +02:00
Ken Thomases
7c808ddfbc
winemac: Return 0 from ToUnicodeEx() for a key release.
2013-05-03 11:47:47 +02:00
Ken Thomases
51129752bc
winemac: For SetCursorPos(), reset positions of pending mouse button and scroll events.
...
They are effectively deemed to have happened after the SetCursorPos().
2013-04-26 11:48:53 +02:00
Ken Thomases
a6722029e5
winemac: Work around mouse "pausing" after CGWarpMouseCursorPosition().
2013-04-26 11:48:36 +02:00
Ken Thomases
a34168edaa
winemac: Fix an off-by-one error in macdrv_wglChoosePixelFormatARB().
2013-04-25 11:45:11 +02:00
Ken Thomases
dfa2ba390d
winemac: Improve logging from wglChoosePixelFormatARB() and wglGetPixelFormatAttribivARB().
2013-04-25 11:45:07 +02:00
Ken Thomases
1c7a2ba33b
winemac: If an app opens a window shortly after its systray icon is clicked, activate it.
...
The Mac driver doesn't normally steal focus, but a click on the systray icon
counts as the user giving permission.
2013-04-25 11:44:42 +02:00
Ken Thomases
192b8dbf9d
winemac: Implement an IME that uses the OS X input methods.
...
Developed with Aric Stewart.
2013-04-22 12:37:50 +02:00
Ken Thomases
72be23270e
winemac: Set up and drain autorelease pool in LogErrorv() so it's safe to call from background threads.
2013-04-22 12:37:50 +02:00
Alexandre Julliard
04ad06353d
user32: Move the common parts of ScrollDC into user32 and the null driver.
2013-04-19 16:16:16 +02:00
Francois Gouget
2baecad2c5
Assorted spelling fixes.
2013-04-18 19:13:16 +02:00
Ken Thomases
e7d5f329e5
winemac: Refactor WineApplication class to separate most logic into a controller class.
2013-04-16 12:10:36 +02:00
Ken Thomases
2e226b9ad8
winemac: Don't order the window on-screen in -[WineWindow adjustWindowLevel].
2013-04-11 12:06:41 +02:00
Ken Thomases
cba4bcb47f
winemac: Handle failure to get clipboard format name; don't use uninitialized buffer.
2013-04-09 11:25:05 +02:00
Ken Thomases
401b75e3e9
winemac: Scale large system tray icons down to fit status bar.
2013-04-05 11:59:12 +02:00
Ken Thomases
787a937ed8
winemac: Add debug tracing for queried icon size.
2013-04-05 11:59:03 +02:00
Ken Thomases
c2bbdc4b86
winemac: Clip surface drawn region to new visible rect on window resize.
...
This prevents stale drawing from being revealed if the window later grows.
2013-04-05 11:57:32 +02:00
Ken Thomases
f37153ac7d
winemac: Initialize window surface to Mac-standard window background color instead of black.
2013-04-05 11:57:13 +02:00
Ken Thomases
26a74c664d
winemac: Tell Cocoa to preserve our window content during live resizing.
2013-04-05 11:56:32 +02:00
Ken Thomases
fd1e187ac7
winemac: Handle a Cocoa quit request as a single-process session shutdown.
...
This lets programs ask the user to save documents, etc., and possibly cancel
the quit.
2013-04-04 12:16:31 +02:00
Ken Thomases
ca2d7140fb
winemac: Add a delivery limit to events.
...
Some events are application-wide, not specific to a thread. Such an event
needs to be broadcast to all GUI-attached threads because we don't know which
are handling events, but we don't want the event to be processed in each.
Often it should only be processed by the first to pull it from its queue.
2013-04-04 12:14:56 +02:00
Ken Thomases
1ee93853c2
winemac: Make macdrv_event structs heap-allocated and reference-counted.
2013-04-04 12:14:33 +02:00
Ken Thomases
b55d7aae10
winemac: Constify some macdrv_event pointer parameters.
2013-04-04 12:13:45 +02:00
Ken Thomases
5dac8a90cc
winemac: Drain the autorelease pool within loop in OnMainThread().
2013-04-04 12:13:38 +02:00
Ken Thomases
94dc91a45d
winemac: During live resize, force occasional redisplay due to spontaneous redrawing.
2013-04-02 12:47:27 +02:00
C.W. Betts
95daa45dbc
winemac: Implement getting and setting screen saver state on OS X.
2013-03-29 17:52:17 +01:00
Ken Thomases
a767ee99fa
winemac: Track drawn surface region to reduce black flicker for new or resized windows.
2013-03-29 17:17:22 +01:00
Ken Thomases
0e8b305023
winemac: Draw surface region rects separately instead of clipping one big draw.
2013-03-29 17:17:22 +01:00
Ken Thomases
f7406e74ae
winemac: Invalidate window shadow on every draw for transparent windows.
2013-03-29 17:17:22 +01:00
Ken Thomases
7ab76484c4
winemac: Add proper locking in macdrv_surface_set_region().
2013-03-29 17:17:22 +01:00
Ken Thomases
4fba2995b6
winemac: Don't override -[NSOpenGLContext clearDrawable], just use our own method.
2013-03-28 12:19:01 +01:00
Ken Thomases
5c8d6a0b93
winemac: Synthesize 8- and 16-bpp display modes if the system doesn't provide any.
...
macdrv_ChangeDisplaySettingsEx() ignores the requested bpp, anyway, so we
can report any values we think programs will want.
2013-03-28 12:18:51 +01:00
Ken Thomases
81d1bfd65d
winemac: Set the ordering of color modes explicitly to reduce chance of picking an odd one.
2013-03-27 20:12:28 +01:00
Ken Thomases
484cf761fc
winemac: Use kCGLPFANoRecovery for accelerated pixel formats in create_context().
2013-03-27 20:12:28 +01:00
Ken Thomases
4ec2809e73
winemac: Keep stable surface for layered windows using UpdateLayeredWindow().
2013-03-26 16:40:23 +01:00
Ken Thomases
678f086904
winemac: Support CFSTR_SHELLURLW (UniformResourceLocator) clipboard format, mapped to public.url.
2013-03-26 12:12:28 +01:00
Ken Thomases
36343f520b
winemac: Specify import and export functions explicitly in builtin_format_names[].
2013-03-26 12:12:26 +01:00
Ken Thomases
e633f79f61
winemac: Implement GetDeviceGammaRamp() and SetDeviceGammaRamp().
2013-03-26 12:07:03 +01:00
Ken Thomases
3158fd764d
winemac: Don't read an array at index -1 in debugstr_pf().
2013-03-25 14:09:25 +01:00
Ken Thomases
6ee486644a
winemac: Allow Command-[Shift-]Tab to switch apps even when the displays are captured.
2013-03-25 14:03:02 +01:00
Ken Thomases
9714e6ee63
winemac: Implement rudimentary support for system tray icons as Mac status items.
2013-03-25 14:02:56 +01:00
Ken Thomases
b1de532393
winemac: Set application Dock icon from first icon resource in process's .exe file.
2013-03-25 14:01:04 +01:00
Ken Thomases
462721a115
winemac: Move create_cgimage_from_icon_bitmaps() into new module, image.c.
2013-03-25 14:01:01 +01:00
Ken Thomases
322ce433d5
winemac: Rename create_cgimage_from_icon() to create_cgimage_from_icon_bitmaps().
2013-03-25 13:57:20 +01:00
Ken Thomases
7993bd3d90
winemac: Implement support for drag-and-drop.
2013-03-14 12:03:32 +01:00
Ken Thomases
fb5794a764
winemac: Extract new function from macdrv_EnumClipboardFormats() parameterized by the target pasteboard.
2013-03-14 12:02:49 +01:00
Ken Thomases
caf6db7bf9
winemac: Extract new function from macdrv_IsClipboardFormatAvailable() parameterized by the target pasteboard.
2013-03-14 12:02:45 +01:00
Ken Thomases
c8e6bad153
winemac: Extract new function from macdrv_GetClipboardData() parameterized by the target pasteboard.
2013-03-14 12:02:41 +01:00
Ken Thomases
4ae5b106f8
winemac: Enable pasteboard functions to operate on arbitrary pasteboards.
...
... not just the general pasteboard (although the general pasteboard is
still the default).
2013-03-14 12:02:36 +01:00
Ken Thomases
761ad810d9
winemac: Allow for processing Cocoa events while waiting for query results.
2013-03-14 12:02:28 +01:00
Ken Thomases
bff19b1739
winemac: Add support for CF_HDROP clipboard format, mapped to/from Cocoa's NSFilenamesPboardType.
2013-03-14 12:02:23 +01:00
Ken Thomases
95d5270a0d
winemac: Synthesize additional bitmap pasteboard types from any that Cocoa can convert.
...
Mac apps generally put TIFF on the pasteboard, but Windows programs are
more likely to handle CF_DIB or CF_BITMAP which map to BMP.
2013-03-14 12:02:17 +01:00
Ken Thomases
6528619494
winemac: Add support for CF_DIB and CF_BITMAP clipboard formats.
2013-03-14 12:02:10 +01:00
Ken Thomases
a8d55288de
winemac: Add clipboard formats which can or must be put on Mac pasteboard without transformation.
2013-03-14 12:02:05 +01:00
Ken Thomases
449e2655c2
winemac: Add support for delay-rendered (a.k.a. promised) clipboard data.
2013-03-11 10:53:38 +01:00
Ken Thomases
69e631e04e
winemac: Add support for "query" events which wait for synchronous responses.
2013-03-11 10:53:32 +01:00
Ken Thomases
bf824ed38c
winemac: Implement setting of clipboard data with support for text formats.
2013-03-11 10:53:26 +01:00
Ken Thomases
764a8edb09
winemac: Implement GetClipboardData() with support for text formats.
2013-03-11 10:53:21 +01:00
Ken Thomases
7cf3e0596f
winemac: Implement EnumClipboardFormats() with support for text formats.
2013-03-11 10:53:15 +01:00
Ken Thomases
af10783e18
winemac: Implement IsClipboardFormatAvailable() with support for text formats.
2013-03-11 10:53:05 +01:00
Ken Thomases
6b2b3e69f7
winemac: Implement CountClipboardFormats() with support for text formats.
2013-03-11 10:52:59 +01:00
Ken Thomases
4d51a688e3
winemac: Override -[NSOpenGLContext clearDrawable] to not hide the GL surface.
...
This fixes a problem with flickering when repeatedly attaching and detaching
a GL context from a window, such as for each WM_PAINT.
2013-03-11 10:44:26 +01:00
Ken Thomases
89a4e5a6d1
winemac: Don't defer attaching OpenGL context to view if it is backed by a window device.
...
This fixes a problem with certain OpenGL programs which create a context very
briefly before destroying it, like while handling WM_PAINT.
2013-03-11 10:44:13 +01:00
Ken Thomases
37b33a9de8
winemac: Improve handling of "invert" pixels in monochrome cursors.
2013-03-08 11:01:48 +01:00
C.W. Betts
c333c6ea6c
winemac: Fix compilation on Lion and later.
2013-03-08 11:00:30 +01:00
Ken Thomases
3f807e7a1a
winemac: Implement WGL_EXT_swap_control.
2013-03-06 12:57:26 +01:00
Ken Thomases
9c29be680c
winemac: Implement WGL_NV_render_texture_rectangle.
2013-03-06 12:57:21 +01:00
Ken Thomases
8bbf09b412
winemac: Implement WGL_ARB_render_texture.
2013-03-06 12:57:17 +01:00
Ken Thomases
be7231bea3
winemac: Implement WGL_ARB_pbuffer.
2013-03-06 12:57:11 +01:00
Ken Thomases
0ce3761655
winemac: Implement WGL_ARB_pixel_format and enable dependent extensions.
2013-03-06 12:57:04 +01:00
Ken Thomases
8d0d95c033
winemac: Implement WGL_ARB_make_current_read.
2013-03-06 12:56:43 +01:00
Ken Thomases
3f3ee6393d
winemac: Implement OpenGL support.
2013-03-06 12:56:12 +01:00
Ken Thomases
c76f0beeab
winemac: Fail gracefully and early when run from a non-GUI session.
2013-03-05 09:50:02 +01:00
Ken Thomases
9b0fdc645f
winemac: Implement ClipCursor().
2013-02-25 10:40:39 +01:00
Ken Thomases
5c933c89ad
winemac: Implement SetCursorPos().
2013-02-25 10:40:39 +01:00
Ken Thomases
de079223bf
winemac: Reset the cursor to the normal Mac arrow when it's outside all Wine windows.
2013-02-25 10:40:39 +01:00
Ken Thomases
5d8e685297
winemac: Request mouse move events when our window is active even when cursor is outside it.
2013-02-25 10:40:38 +01:00
Ken Thomases
0a56ef356a
winemac: Handle mouse moves in -[WineApplication sendEvent:] instead of WineWindow.
2013-02-25 10:40:38 +01:00
Ken Thomases
38f7a4d518
winemac: Implement GetCursorPos().
2013-02-25 10:40:38 +01:00
Ken Thomases
b79d955342
winemac: Use system cursors when possible.
2013-02-25 10:40:37 +01:00
Ken Thomases
a49df4b317
winemac: Implement SetCursor() and DestroyCursorIcon().
2013-02-25 10:40:37 +01:00
Ken Thomases
6cfa0a31d8
winemac: Don't bring a window onto the screen in SetFocus().
2013-02-19 10:40:12 +01:00
Ken Thomases
1561fa4126
winemac: Call sync_window_position() before show_window() since window frame affects whether it shows.
2013-02-19 10:40:08 +01:00
Ken Thomases
abb0161c4c
winemac: Always use proper z-order when putting a window on screen.
2013-02-19 10:40:03 +01:00
Ken Thomases
d26a6bf451
winemac: Implement ChangeDisplaySettingsEx().
2013-02-18 10:35:46 +01:00
Ken Thomases
4f4ac0cafc
winemac: Implement EnumDisplaySettingsEx().
2013-02-18 10:35:35 +01:00
Ken Thomases
bc75a9baff
winemac: Implement DISPLAYS_CHANGED event for when display configuration has changed.
2013-02-18 10:34:55 +01:00
Ken Thomases
be6af9a169
winemac: Implement support for full-screen windows.
2013-02-18 10:34:46 +01:00
Ken Thomases
ba86e67792
winemac: Track Cocoa windows in a z-ordered list.
2013-02-18 10:34:40 +01:00
Ken Thomases
3799acb3ac
winemac: Use only on-screen windows for Cocoa parent (Win32 owner) and ordering sibling.
2013-02-18 10:34:33 +01:00
Ken Thomases
d74e90080a
winemac: Don't set Cocoa window frame to be zero-sized.
2013-02-18 10:34:29 +01:00
Ken Thomases
47352930d8
winemac: Discard old frame changed events when setting frame for off-screen windows, too.
2013-02-18 10:34:24 +01:00
Ken Thomases
a472d39b7d
winemac: Prevent Cocoa from consuming certain key-down events.
2013-02-11 11:46:11 +01:00
Ken Thomases
3748c39308
winemac: Implement MOUSE_SCROLL events.
2013-02-11 11:46:10 +01:00
Ken Thomases
033fe9a7c2
winemac: Process clicks in an inactive window in addition to activating it.
2013-02-07 12:04:51 +01:00
Ken Thomases
572324bae3
winemac: Implement MOUSE_MOVED(_ABSOLUTE) events.
2013-02-07 12:04:49 +01:00
Ken Thomases
6289a612ae
winemac: Add WineApplication methods to convert from Cocoa to Win32 coordinate space.
...
Cocoa coordinate space has its origin in the lower left of the primary screen
and y increases up.
2013-02-07 12:04:46 +01:00
Ken Thomases
5f06bf80db
winemac: Implement SysCommand() to prevent Alt keypresses from activating system menu.
2013-02-07 12:04:42 +01:00
Ken Thomases
956ec43201
winemac: Implement fake support for the active Windows keyboard layout.
2013-02-06 20:28:29 +01:00
Ken Thomases
2b4d95cd47
winemac: Implement GetKeyNameText().
2013-02-06 20:28:28 +01:00
Ken Thomases
80baa3a0e9
winemac: Implement VkKeyScanEx().
2013-02-06 20:28:28 +01:00
Ken Thomases
a649d845ed
winemac: Implement MapVirtualKeyEx().
2013-02-06 20:28:28 +01:00
Ken Thomases
3fcb69b7ca
winemac: Implement Beep().
2013-02-06 20:28:28 +01:00
Alexandre Julliard
e1b6dc57ac
winemac: Don't move off-screen windows to a random position.
2013-02-05 20:15:34 +01:00
Ken Thomases
0757a66360
winemac: Ignore Cocoa's window frame adjustments for off-screen windows.
2013-02-05 11:11:45 +01:00
Ken Thomases
3ab66a6916
winemac: Implement ToUnicodeEx().
2013-02-05 11:07:19 +01:00
Ken Thomases
77de57683f
winemac: Generate KEY_PRESS/RELEASE events from Cocoa key events.
2013-02-05 11:06:43 +01:00
Ken Thomases
d0e1a02515
winemac: Rebuild key map when Mac keyboard layout changes.
2013-02-05 11:06:27 +01:00
Ken Thomases
b78eee3172
winemac: Build a map from Mac virtual key codes to Win32 vkeys and scan codes based on Mac keyboard layout.
2013-02-05 11:06:02 +01:00
Ken Thomases
8a0c8d9264
winemac: Implement support for minimizing windows.
2013-02-05 11:05:23 +01:00
Ken Thomases
6efd198c52
winemac: Implement ScrollDC().
2013-02-05 11:04:33 +01:00
Ken Thomases
b564d97229
winemac: Implement an APP_DEACTIVATED event.
2013-01-28 14:03:51 +01:00
Ken Thomases
3c5973139f
winemac: Implement a WINDOW_LOST_FOCUS event.
2013-01-28 14:03:45 +01:00
Ken Thomases
7863a230ec
winemac: Implement a WINDOW_GOT_FOCUS event for when Cocoa tries to focus a window.
2013-01-28 14:03:40 +01:00
Ken Thomases
beccf0f8c0
winemac: Maintain a list of which windows have been "key" (focused) recently.
2013-01-28 14:03:25 +01:00
Ken Thomases
6cde62ac18
winemac: Take control over when a window can become focused away from Cocoa.
2013-01-28 14:03:18 +01:00
Ken Thomases
bd269786a5
winemac: Implement a MOUSE_BUTTON event for mouse clicks.
2013-01-28 14:02:45 +01:00
Ken Thomases
a22be47fcf
winemac: Add infrastructure to convert from Cocoa event time to Wine tick count.
2013-01-28 14:02:08 +01:00
Ken Thomases
6e59740e18
winemac: Implement WINDOW_FRAME_CHANGED event to tell Wine when window is moved or resized.
2013-01-28 14:00:49 +01:00
Ken Thomases
ed367c504d
winemac: Implement a WINDOW_CLOSE_REQUESTED event to allow closing windows.
2013-01-21 12:51:19 +01:00
Ken Thomases
4e83d2fca0
winemac: Implement MsgWaitForMultipleObjectsEx and infrastructure for processing events.
2013-01-21 12:51:18 +01:00
Ken Thomases
177b67e6bd
winemac: Make each Mac driver window track the HWND it's associated with.
2013-01-21 12:51:18 +01:00
Ken Thomases
207c4d193f
winemac: Associate an event queue with each thread that creates windows and with each window.
2013-01-21 12:51:17 +01:00
Ken Thomases
3c995bb682
winemac: Add WineEventQueue class for conveying events from Cocoa to Wine threads.
2013-01-21 12:51:17 +01:00
Ken Thomases
b6d902ee46
winemac: Add a simple ERR() logging macro that can be used from Cocoa code.
2013-01-21 12:51:16 +01:00