Benjamin Otte
090cd2238a
gdk: Replace prefers_high_depth with depth
...
Now that we track depth, we can also pass it into the GDK frame code.
For now it's just passed along, code acts the same as with
prefers_high_depth.
2023-06-18 14:28:39 +02:00
sumibi-yakitori
1fce2b1e06
Fix an issue where min_version
was not being used as the minimum version required by GTK
2023-06-01 23:05:44 +09:00
sumibi-yakitori
7b8a5235d4
Fix a bug in error checking conditions. This avoids unintentional Legacy
of the created OpenGL context
2023-06-01 16:46:24 +09:00
sumibi-yakitori
3c9b3ead6f
The GL version reported by epoxy seems to depend on the current GL context, so the GL context to create should be the one determined by gdk_gl_context_get_matching_version
2023-06-01 16:43:57 +09:00
Benjamin Otte
9f82d537b0
mac: Properly set GLContext.is_legacy()
2023-04-27 02:13:32 +02:00
Benjamin Otte
d33b82249b
mac: Try all different OpenGL profiles
...
.. and pick the best one that is supported.
Also make sure that the resulting context has at least the desired
version, otherwise bail.
2023-04-27 02:13:32 +02:00
Benjamin Otte
5f833f1d31
glcontext: Compute matching version the simple way
...
Do it all in one function instead of requiring two different ones.
2023-04-27 02:13:32 +02:00
Benjamin Otte
f86429177a
gdk: Introduce GdkGLVersion
...
... and use it.
Makes the code simpler.
2023-04-27 02:13:32 +02:00
Benjamin Otte
9d0448756f
display: Remove ::create_surface() vfunc
...
Instead, have a toplevel_type and popup_type in GdkDisplay and
call g_object_new() with those types.
2023-04-26 21:03:34 +02:00
Benjamin Otte
f2083d36a1
macos: Add surface from ::constructed()
2023-04-26 21:03:34 +02:00
Benjamin Otte
cb642bec25
gdk: Remove GDK_SURFACE_DRAG enum member
...
I want to remove the whole enum, but this value was used all over the
place. So removing it first ensures I didn't forget anything.
2023-04-26 21:03:34 +02:00
Benjamin Otte
42cea18f3e
macos: Set frame clock in ::constructed
2023-04-26 21:03:34 +02:00
Benjamin Otte
a306401023
macos: Move native window creation to ::constructed()
...
That way, it doesn't need a specific init function.
Also chain up last, so that the generic initialization code in
GdkSurface::constructed can access a fully initialized macos surface.
2023-04-26 21:03:34 +02:00
Benjamin Otte
7e18a1cea7
macos: Don't pass sizes to macos_surface_new()
...
They're 0, 0, 100, 100 always, so just use those values everywhere.
2023-04-26 21:03:34 +02:00
Benjamin Otte
9a6e6be785
macos: Create drag surface directly
...
Do not go via macos_surface_new().
2023-04-26 21:03:34 +02:00
Benjamin Otte
093a4e83d5
macos: Move construction stuff into ::constructed
2023-04-26 21:03:34 +02:00
Benjamin Otte
428798b53f
macos: toplevels have no parent
2023-04-26 21:03:34 +02:00
Benjamin Otte
7ef5f6ef1a
display: Remove x/y/w/h from create_surface()
2023-04-26 21:03:34 +02:00
Matthias Clasen
075bea788b
Add gdk_surface_get_scale
...
Add a scale property to GdkSurface and use the
fractional scale for it on Wayland.
2023-04-01 19:09:16 -04:00
Matthias Clasen
a1c5a806b3
Convert headers to #pragma once
...
The conversion was done by guard2one.
2023-03-31 15:11:10 -04:00
Matthias Clasen
15d73a1adb
macos: Stop using g_slice
2023-03-14 14:56:42 -04:00
Benjamin Otte
c17049c6d1
Merge branch 'wip/otte/gl-is-current' into 'main'
...
gdk: Add private GLContext::is_current() check
Closes #5392
See merge request GNOME/gtk!5463
2023-02-02 21:56:32 +00:00
Benjamin Otte
c6cef6db52
gdk: Add private GLContext::is_current() check
...
... and use this check in gdk_gl_context_make_current() and
gdk_gl_context_get_current() to make sure the context really is still
current.
The context no longer being current can happen when external GL
implementations make their own contexts current in the same threads GDK
contexts are used in.
And that can happen for example by WebKit.
Theoretically, this should also allow external EGL code to run in X11
applications when GDK chooses to use GLX, but I didn't try it.
Fixes #5392
2023-02-02 04:23:51 +01:00
Arjan Molenaar
6757a1b409
macos: Propagate events for child surfaces
...
Before, popup windows did not respond to mouse clicks.
This change fixes that.
Fixes #5528 .
2023-01-24 09:07:33 +01:00
Matthias Clasen
5caa66ffb7
Merge branch 'macos-native-dnd' into 'main'
...
macos: DnD Drag support
Closes #3423
See merge request GNOME/gtk!5416
2023-01-23 22:01:30 +00:00
Arjan Molenaar
d6ef39b9a2
macos: remove dead code
2023-01-21 15:22:13 +01:00
Arjan Molenaar
52f6acd398
macos: Send dragging events directly to the display
...
Instead of adding events to the application event queue, dispatch
them directly to the right display. We know this when the event is
to be dispatched.
This is the same as used for the `sendEvent` method in `GdkMacosWindow`.
To achieve this I factored out the generic NSEvent to GdkEvent translation.
We can send an event directly, when we receive it in the GdkMacosWindow
directly from the OS.
2023-01-21 14:54:12 +01:00
Arjan Molenaar
136c1ccd2c
macos: Update event source doc
...
Update the documentation with the interaction pattern we
need to support DnD.
2023-01-17 16:37:21 +01:00
Arjan Molenaar
16e23b3f9e
macos: align functions in gdkmacosdrag-private.h
2023-01-17 16:12:57 +01:00
Arjan Molenaar
628aeda7ee
macos: Provide the right drag action
...
We should use the drag action/operation provided by the
drag handlers, not rely on our internal bookkeeping.
2023-01-16 23:21:35 +01:00
Arjan Molenaar
2669dc269b
macos: Default kCFRunLoopAllActivities
...
It's actually a mask, but we'll keep it in to
avoid compiler warnings.
2023-01-16 20:28:38 +01:00
Arjan Molenaar
1bc63eeadb
macos: Queue events during drag
...
By passing the events during a (midal-ish) drag operation to the main loop,
we're able to keep up with what's happening. This allows the internal
drag state (GtkDragSource) to be updated and be done when the drag is
done.
2023-01-16 14:47:49 +01:00
Arjan Molenaar
1d8a23e97b
macos: Provide fallback pasteboard for gtype Dnd
...
The Drag data should pass through the macos pasteboard system.
We need to provide some pasteboard type. Let's make it a "URL",
which is a pretty generic type anyway.
2023-01-15 10:03:47 +01:00
Arjan Molenaar
422b4b6561
macos: No need to drag handle events
...
This is handled by the DraggingSource object.
2023-01-15 10:03:47 +01:00
Arjan Molenaar
27ee8b23fd
macos: No need to grab a seat
...
The macOS DnD logic will take over anyway.
2023-01-15 10:03:47 +01:00
Arjan Molenaar
b9847795a7
macos: Support dragging from GdkMacosWindow
...
The handling is done similar to drag targets.
Note that dragging is a modal action on macos: no events
are sent to the main window. This could cause trouble when
we finish the drag, and not finish the gesture in GTK.
2023-01-15 10:01:56 +01:00
Arjan Molenaar
420be8fb0f
macos: run glib idle functions when in nested run loop
...
It looks like DnD starts a nested run loop. We still have to run our
GLib handlers, so animations work.
2023-01-13 20:03:55 +01:00
Christian Hergert
9c3629653f
macos: abstract pasteboard for use in clipboard and drag
...
This will allow us to share a single NSPasteboardItem and data provider
implementation for both GdkClipboard and GdkDrag.
2023-01-13 20:03:55 +01:00
Christian Hergert
eb5cf831b1
macos: refactor pasteboard components into separate module
...
This will make it easier to reuse from drag integration so that we don't
require clipboards for everything.
We will need to subclass the pasteboard provider twice, however, both
for clipboard and dragging.
2023-01-13 20:03:55 +01:00
Christian Hergert
958ecf2855
gdk/macos: fix warning about _coreCursorType
2023-01-12 13:22:47 -08:00
Matthias Clasen
dd3cdc52f5
Fix code style
2023-01-08 14:41:11 +00:00
Arjan Molenaar
089d0caa5e
macos: Fix freeze on drag
...
A Drag surface does not have a parent surface. Therefore, if we initialize
it with one, it's inheriting the frame clock from the parent, but the
drag surface is not linked to the parent. Once the drag surface is destroyed,
it's disposing the frame clock, which results in a "frozen" application.
2022-12-13 15:19:04 +01:00
Arjan Molenaar
d0c4413033
macos: Explicitly ungrab seat when drag is done or finalized
...
This is an extra safeguard that avoids grabbing resources longer than
nessecary. It also ensures the resource is removed from the drag,
so it is not freed again.
2022-12-13 15:19:04 +01:00
Arjan Molenaar
410fa9871f
Remove old dragImage code
...
New code (macOS 10+ should support the NSDraggingSource protocol:
https://developer.apple.com/documentation/appkit/nsdraggingsource .
2022-12-13 15:19:04 +01:00
Arjan Molenaar
097d87e502
Cleanup: remove unused variables from macos code
...
Remove unused variables. In case if Cairo code it would
allocate memory, which would result in a memory leak.
2022-12-04 12:50:20 +01:00
Matthias Clasen
2bab8cca5f
gdk: Rename GDK_SURFACE_TEMP
...
We use this value only for drag surfaces, so call it that.
2022-11-17 22:49:56 -05:00
Luca Bacci
995f00d23f
Merge branch 'forward-port-mr-991-to-gtk4-2' into 'main'
...
Use native Windows API for converting keystrokes to characters
Closes #2944
See merge request GNOME/gtk!4986
2022-10-17 19:20:08 +00:00
Philip Zander
c84c469b78
Use native Windows API for converting keystrokes to characters
2022-10-17 19:36:48 +02:00
Matthias Clasen
6f5d18a9f5
macos: Fix clipboard data size handling
...
We were using the allocated memory size, not
the amount of data that has been written.
Fixes : #5261
2022-10-16 23:45:28 -04:00
Matthias Clasen
4aabc45685
Drop gdkintl.h
...
This header was merely including gi18n-lib.h.
Just do that directly.
2022-09-23 23:33:42 -04:00