Commit Graph

184 Commits

Author SHA1 Message Date
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 b755674df3 winemac: Don't unminimize a window for SetFocus(). 2013-08-27 11:50:52 +02: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 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 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 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 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 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 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
Aric Stewart c6d307533b macdrv: Rework the way we handle cursor position and composition text. 2013-05-30 20:19:34 +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 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 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 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 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 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 1ee93853c2 winemac: Make macdrv_event structs heap-allocated and reference-counted. 2013-04-04 12:14:33 +02:00
Ken Thomases 94dc91a45d winemac: During live resize, force occasional redisplay due to spontaneous redrawing. 2013-04-02 12:47:27 +02: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 7993bd3d90 winemac: Implement support for drag-and-drop. 2013-03-14 12:03:32 +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 3f3ee6393d winemac: Implement OpenGL support. 2013-03-06 12:56:12 +01:00
Ken Thomases 9b0fdc645f winemac: Implement ClipCursor(). 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 d26a6bf451 winemac: Implement ChangeDisplaySettingsEx(). 2013-02-18 10:35:46 +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 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 0757a66360 winemac: Ignore Cocoa's window frame adjustments for off-screen windows. 2013-02-05 11:11:45 +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 8a0c8d9264 winemac: Implement support for minimizing windows. 2013-02-05 11:05:23 +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 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 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 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 c0d43fb51f winemac: Implement layered windows: SetLayeredWindowAttributes() and UpdateLayeredWindow(). 2013-01-15 12:17:02 +01:00
Ken Thomases 2d4bcc47be winemac: Implement SetWindowRgn. 2013-01-15 12:16:52 +01:00
Ken Thomases 7d6ebfa742 winemac: Implement window surface rendering. 2013-01-15 12:16:44 +01:00
Ken Thomases b3f71fdeb1 winemac: Implement the Mac "Window" menu. 2013-01-11 18:14:08 +01:00
Ken Thomases 15d4b2ab51 winemac: Translate presence in Windows task bar to participation in Exposé and window cycling. 2013-01-11 18:14:08 +01:00
Ken Thomases b6544d19dd winemac: Implement support for owned windows. 2013-01-11 18:14:07 +01:00
Ken Thomases 429732ce1a winemac: Implement support for WS_EX_TOPMOST windows. 2013-01-11 18:14:07 +01:00
Ken Thomases 9d29ea42e1 winemac: Implement support for no-activate windows. 2013-01-11 18:14:07 +01:00
Ken Thomases 064186e739 winemac: Implement support for WS_DISABLED windows. 2013-01-11 18:14:07 +01:00
Ken Thomases 8da2cb1698 winemac: Implement basic window functionality. 2013-01-09 17:39:38 +01:00