Commit Graph

310 Commits

Author SHA1 Message Date
Frédéric Delanoy f2e1589b34 winemac.drv: Constify a character string. 2013-12-19 17:09:08 +01:00
Ken Thomases 77f0a63b4f winemac: When ClipCursor() is called redundantly, don't warp the cursor or discard mouse move events.
Fixes a problem in some games which repeatedly (re)establish the same cursor
clipping rect, making it exceedingly difficult to move the camera with the
mouse.
2013-12-17 16:53:44 +01:00
Ken Thomases b877885400 winemac: When dragging an undecorated window, keep the title bar vertically within the work area.
In particular, keep the title bar from moving behind the menu bar or Dock (when
it's on the bottom).
2013-12-17 16:53:36 +01:00
Frédéric Delanoy e0b68129fa winemac.drv: Use BOOL type where appropriate. 2013-12-13 12:36:10 +01:00
Ken Thomases f068e329c1 winemac: Send WM_{ENTER, EXIT}SIZEMOVE before/after window dragging and run an internal event loop during.
This simulates some of what would happen if user32 were managing the drag.  The
click in the caption would cause WM_SYSCOMMAND/SC_MOVE.  The processing of that
message is synchronous and doesn't return until the move is complete.

Some games require that "blocking" in the internal event loop to prevent them
from misbehaving during the drag.
2013-12-12 12:06:47 +01:00
Ken Thomases b3cc34e5b0 winemac: While a window is being dragged, suppress mouse events and disable cursor clipping and warping. 2013-12-12 12:06:39 +01:00
Ken Thomases cd10a0df5e winemac: Consolidate the logic for deciding if cursor clipping should be active. 2013-12-12 12:06:38 +01:00
Ken Thomases e3dd277586 winemac: Don't change window order for SetFocus().
This fixes a problem where some apps move their window to the front after
the user switches away to another app.  OS X prevents the background app
from actually coming in front of the active app's front window, but the
window gets ordered in second place, possibly obscuring other windows of the
active app.
2013-12-12 12:06:35 +01:00
Ken Thomases f0c4354a6b winemac: Include the OpenGL headers to fix building on OS X 10.9. 2013-12-03 12:33:44 +01:00
Frédéric Delanoy 69d35a01cf winemac.drv: Use BOOL type where appropriate. 2013-11-29 13:32:44 +01:00
Ken Thomases 4124478b85 winemac: Clear OpenGL views to black the first time a context is attached.
This prevents VRAM garbage from being displayed before the program draws.
2013-11-28 11:16:17 +01:00
Ken Thomases fd04552fe3 winemac: Move test for valid GL drawable into -[WineContentView addGLContext:].
Improves encapsulation.  Avoids a round trip to the main thread.
2013-11-28 11:16:12 +01:00
Ken Thomases eac789c6da winemac: Put clipboard formats synthesized from other standard clipboard formats at the end of the list. 2013-11-22 13:59:33 +01:00
Ken Thomases f2640745b3 winemac: Make macdrv_EnumClipboardFormats() always use macdrv_copy_pasteboard_formats().
This makes sure that the formats are enumerated in a consistent order.
2013-11-22 13:59:08 +01:00
Ken Thomases b28a014c44 winemac: Cache the "natural" clipboard format entry associated with synthesized built-in entries at startup. 2013-11-22 13:59:03 +01:00
Ken Thomases ee53ea4b93 winemac: Add a function to find the "natural" clipboard format entry for a format ID. 2013-11-22 13:58:48 +01:00
Ken Thomases a0061e0a30 winemac: Synthesize text clipboard formats in CF_TEXT, CF_OEMTEXT, CF_UNICODETEXT order. 2013-11-22 13:58:42 +01:00
Ken Thomases d98dbf8fbd winemac: Synthesize CF_METAFILEPICT from CF_ENHMETAFILE. 2013-11-22 13:58:33 +01:00
Ken Thomases 53089bff2e winemac: Synthesize CF_ENHMETAFILE from CF_METAFILEPICT. 2013-11-22 13:58:28 +01:00
Ken Thomases 29236cce4c winemac: Add support for the CF_ENHMETAFILE clipboard format. 2013-11-22 13:58:20 +01:00
Ken Thomases cdad61369c winemac: Add support for the CF_METAFILEPICT clipboard format. 2013-11-22 13:58:12 +01:00
Ken Thomases a983cfb01d winemac: Ignore Mac-originating pasteboard types which aren't mapped to standard clipboard formats.
New clipboard formats had been registered for them, but that was pointless.
No Windows app would ever expect or make use of such clipboard formats or the
associated pasteboard data.
2013-11-22 13:58:02 +01:00
Ken Thomases 788e2034f6 winemac: Add support for a "Decorated" registry setting to control whether windows get Mac-style decorations. 2013-11-22 13:57:28 +01:00
Ken Thomases f6a8c5b50e winemac: Take WS_EX_TOOLWINDOW into account when computing how much of a window is replaced by the Mac decorations. 2013-11-21 19:39:01 +01:00
Ken Thomases 682ed91017 winemac: Defer attaching OpenGL context to a view which is zero-sized or outside its window's bounds.
That fails with the dread "invalid drawable" message.
2013-11-21 13:31:33 +01:00
Ken Thomases 19862b4138 winemac: Make macdrv_set_cocoa_window_frame() synchronous again.
It has a non-object pointer from the caller, so it can't allow the caller
to continue until it's finished with it.  Also, it discards events from the
event queue and we don't want the caller to process them first.

Fixes brokenness introduced by 784a9139.
2013-11-21 13:31:14 +01:00
Huw Davies c4761d8002 winemac: Actually set the system's keyboard layout. 2013-11-20 19:39:05 +01:00
Huw Davies f6e2af6843 winemac: Retrieve the real keyboard layout where appropriate. 2013-11-20 19:39:03 +01:00
Huw Davies 22008f7fd9 winemac: Update the thread's active_keyboard_layout on keyboard change. 2013-11-20 19:39:01 +01:00
Huw Davies f344d7a213 winemac: Update the layout list if the enabled input sources change. 2013-11-20 19:38:59 +01:00
Huw Davies fecaab9cfd winemac: Implement GetKeyboardLayoutList. 2013-11-20 19:38:56 +01:00
Ken Thomases 3a03dcf097 winemac: Avoid moving owned windows when programmatically moving the owner.
Cocoa normally maintains the relative position of owned windows with respect
to the owner, which differs from Windows.
2013-11-15 12:00:12 +01:00
Ken Thomases 784a91390e winemac: Allow ordering a window into Cocoa's window list even if it's positioned outside of the desktop.
Some programs minimize windows which are outside of the desktop.  The Mac
driver had been leaving such windows ordered out, which prevented them from
minimizing and appearing on the Dock.  That, in turn, made it difficult for
the user to restore them.
2013-11-15 11:59:47 +01:00
Ken Thomases aa53603135 winemac: Reduce duplicated code by consolidating exit paths from format_for_type(). 2013-11-06 15:52:48 +01:00
Ken Thomases 7c0c30b4d6 winemac: Fix search for clipboard format matching a pasteboard type so it can fail when it should.
It had been acting as though the last registered clipboard format always
matched any pasteboard type.
2013-11-06 15:52:45 +01:00
Rico Schüller 2fa9b7ebb5 opengl32: Use opengl xml registry files. 2013-11-05 20:38:21 +01:00
Ken Thomases 8e1fdb845e winemac: Trace flags of WINDOW_FRAME_CHANGED events. 2013-11-01 10:51:27 +01:00
Ken Thomases 83f6470c0e winemac: Convert the QUERY_RESIZE_END query to an event, WINDOW_RESIZE_ENDED.
Queries can be run out of order because the main thread is waiting on the
response.  The main thread didn't really need a response from QUERY_RESIZE_END.
It was only a query for symmetry with QUERY_RESIZE_START.
2013-11-01 10:51:23 +01:00
Ken Thomases de3fb34af7 winemac: Send WM_{ENTER, EXIT}SIZEMOVE around window frame changes initiated by Cocoa.
The Mac driver was already sending these events when the user resizes the
window by dragging its corner/edges, but there are other occasions when the
window frame changes.  For example, when the user zooms the window.
2013-11-01 10:51:11 +01:00
Ken Thomases b11d6850f2 winemac: Tell Cocoa that we don't draw a focus ring for our views.
This seems to eliminate a lot of house-keeping work inside Cocoa.
2013-11-01 10:51:01 +01:00
Ken Thomases 6b9f81271b winemac: Hide cursor when first requested even if we don't know it's over a window.
The tracking of whether it is over a window or not is only updated when the
mouse moves.  If a window was created or moved under it, then the state can be
stale.  That caused us to defer hiding the cursor until the mouse was moved.
This happens at the start of games pretty often.
2013-10-30 15:29:42 +01:00
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