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
Benjamin Otte
fdea27c04d
win32: Remove unused variable
2023-02-02 04:23:51 +01:00
Ignazio Pillai
8ecb624934
clipboard: improve EOL conversion of plain text
...
Handle the case of clipboard text with CR line endings
2022-12-22 12:55:30 +01:00
Luca Bacci
48bcae99af
Merge branch 'gdk-win32-fix-native-decoration-resize' into 'main'
...
GdkWin32: Fix resizes with native decorations
Closes #5142 , #5088 , and #5090
See merge request GNOME/gtk!5096
2022-12-14 13:13:14 +00:00
Luca Bacci
0bdf30dfbf
Merge branch 'gdk-win32-modal-handling' into 'main'
...
GdkWin32: Do not use MA_NOACTIVATEANDEAT
Closes #5297 and #5326
See merge request GNOME/gtk!5208
2022-12-14 10:08:42 +00:00
Luca Bacci
acd7d739f5
GdkWin32: Fix resizes with native decorations
...
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5142
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5088
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5090
2022-12-08 11:41:05 +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
Marc-André Lureau
437a359f1b
gdk/win32: fix cursor hotspot
...
This seems to be a regression from commit c06b1cc103
"Win32: Re-work cursor handling".
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-11-16 11:50:56 +04:00
Luca Bacci
26c524a578
GdkWin32: Do not use MA_NOACTIVATEANDEAT
...
GTK knows when a surface is modally blocked and automatically drops
button press and release events, so do not block input in advance
from WM_MOUSEACTIVATE.
2022-11-10 09:27:24 +01:00
Marc-André Lureau
cf04a3c99d
gdk-win32: implement basic inhibit-system-shortcuts
...
This is largely adapted from commit 83027c68f1
("11: Implement
inhibit_system_shortcuts API"), with similar rationale:
To implement the inhibit_system_shortcuts API on X11, we emulate the
same behavior using grabs on the keyboard.
To avoid keeping active grabs on the keyboard that would affect
other X11 applications even when the surface isn't focused, the X11
implementation takes care of releasing the grabs as soon as the
toplevel loses focus.
Note that Windows has low-level keyboard hooks that could help achieve
the expected behaviour. This is implemented by spice-gtk & gtk-vnc for
example, but correctness isn't obvious. I left a TODO comment.
This patch helps implementing remote desktop widgets with GTK4, since
currently on win32 backend Alt-Tab and such are always left to the
system unless there is keyboard grab (which can't be requested by the
client API anymore, afaict).
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-11-09 19:29:03 +04:00
Marc-André Lureau
a92aea4c0e
gdk-win32: fix unused variable warnings
...
../gdk/win32/gdksurface-win32.c: In function 'gdk_win32_get_window_size_and_position_from_client_rect':
../gdk/win32/gdksurface-win32.c:3753:20: warning: unused variable 'impl' [-Wunused-variable]
3753 | GdkWin32Surface *impl = GDK_WIN32_SURFACE (window);
| ^~~~
../gdk/win32/gdksurface-win32.c: In function 'gdk_win32_surface_get_queued_window_rect':
../gdk/win32/gdksurface-win32.c:5129:20: warning: unused variable 'impl' [-Wunused-variable]
5129 | GdkWin32Surface *impl = GDK_WIN32_SURFACE (surface);
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-11-09 19:19:44 +04:00
Luca Bacci
440929daea
GdkWin32: Add more GDK_NOTE calls for settings
2022-11-04 16:11:27 +01:00
Luca Bacci
1506de5669
GdkWin32: Set the "gtk-hint-font-metrics" property
...
Helps for https://gitlab.gnome.org/GNOME/gtk/-/issues/5257
2022-11-04 16:03:11 +01:00
Luca Bacci
41f9f1d623
GdkWin32: Set the "gtk-cursor-blink" setting
2022-11-04 15:57:25 +01:00
Luca Bacci
24047d7f61
GdkWin32: Set the "gtk-cursor-theme-size" setting
...
Note that we have to set the logical value, that's why
we use GetSystemMetrics and not GetSystemMetricsForDpi.
2022-11-04 15:56:20 +01:00
Luca Bacci
45681c4fe5
GdkWin32: Detect the high contrast setting
...
And set the theme name accordingly ("Default-hc")
2022-11-04 15:54:02 +01:00
Luca Bacci
95c121b6d6
GdkWin32: Fix leak of screen HDC
2022-11-04 15:41:11 +01:00
Luca Bacci
6b569afdfe
GdkWin32: Remove special-casing for old Pango versions
...
We require Pango 1.50 now
2022-11-04 15:35:04 +01:00
Luca Bacci
429017ad16
GdkWin32: Remove old code
2022-11-04 15:31:40 +01:00
Luca Bacci
fe1d86f23c
GdkWin32: Sort settings alphabetically
2022-11-04 15:30:12 +01: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
Luca Bacci
d6f7449636
GdkWin32: Return TRUE when processing WM_XBUTTONDOWN/UP messages
...
As documented on MSDN:
> Unlike the WM_LBUTTONUP, WM_MBUTTONUP, and WM_RBUTTONUP messages, an
> application should return TRUE from this message if it processes it.
2022-10-07 19:05:29 +02:00
Luca Bacci
f4286e8f1a
GdkWin32: Use gdk_pixbuf_read_pixels () where applicable
...
This is an optimization in case of reading unmodifiable GdkPixbufs.
Also replace uses of GLib integral types with <stdlib.h> integral
types.
2022-10-07 19:05:29 +02:00
Luca Bacci
e2219858ae
GdkWin32: Fix subclassing for GdkWin32Clipdrop
...
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5207
2022-09-26 14:34:24 +02: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
Matthias Clasen
a8af7caae1
Rename gdk-private.h to gdkprivate.h
...
The extra - does not add any value.
2022-09-23 23:23:27 -04:00
Matthias Clasen
c24a69549d
Rename gdkdebug.h to gdkdebugprivate.h
...
This is the naming convention for private headers.
2022-09-23 23:12:01 -04:00
Matthias Clasen
bc159207bd
gdk: Drop old debug macros
...
Drop the old GDK_NOTE() and GDK_DISPLAY_NOTE()
macros from gdkdebug.h. Reintroduce them in the
win32 backend, where they are still used.
2022-09-23 18:11:48 -04:00
Matthias Clasen
01054c9c79
Make the gl-gles debug flag always available
...
No need to restrict this to debug builds.
2022-09-21 21:12:22 -04:00
Matthias Clasen
8bd3ec2ba1
Make the gl-legacy debug flag always available
...
No need to restrict this to debug builds.
2022-09-21 21:09:08 -04:00
Marc-André Lureau
4b08570727
gdk/win32: add missing Since tag for gdk_win32_display_get_egl_display
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-25 17:33:25 +04:00
Marc-André Lureau
52e3ed13e2
gdk/win32: deprecate gdk_win32_handle_table_lookup
...
This function is probably not generally useful for a Gtk+/win32 user,
and it's only used internally by gdk-win32. It's time to deprecate it, I
believe.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-24 21:02:57 +04:00
Marc-André Lureau
6cfb6e0c9c
gdk/win32: do not expose gdk_win32_*_libgtk_only in public headers
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-24 15:44:32 +04:00
Luca Bacci
ef831235fe
Merge branch 'win32-gir' into 'main'
...
win32: various GI annotations and fixes
See merge request GNOME/gtk!4977
2022-08-24 09:41:11 +00:00
Luca Bacci
c11ea42644
GdkWin32: Scale text with DPI like in GTK3 with SYSTEM_DPI_AWARENESS
...
Right now we only support system DPI awareness in GTK4. In that case
it makes sense to scale text with the DPI of the primary monitor, like
done in GTK3.
We plan to land support for proper fractional scaling in Gdk/Win32, so
in the future the "gtk-xft-dpi" setting will be gathered as intended,
i.e. for text magnification, as an a11y feature.
2022-08-23 19:53:44 +02:00
Marc-André Lureau
0d7a0132bb
gdk/win32: annotate gdk_win32_surface_lookup_for_display
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-23 17:20:39 +04:00
Marc-André Lureau
cad32636ce
gdk/win32: annotate gdk_win32_surface_set_urgency_hint
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-23 17:06:48 +04:00
Luca Bacci
d125fcd35a
GdkWin32: Position popups on the primary monitor if outside of the visible screen area
...
Fixes a crash caused by attempting to dereference a NULL GdkMonitor*
in GdkWin32.
See https://gitlab.gnome.org/GNOME/gtk/-/issues/5125
2022-08-23 14:54:01 +02:00
Marc-André Lureau
a6418d5028
gdk/win32: deprecate gdk_win32_surface_get_impl_hwnd
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-23 16:35:07 +04:00
Marc-André Lureau
3cbf6c9d6e
gdk/win32: annotate gdk_win32_surface_get_handle
...
And adjust the argument precondition check.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-23 16:25:33 +04:00
Marc-André Lureau
a75de5fb90
gdk/win32: correct gdk_win32_surface_get_handle return type
...
The associated surface window handle is a HWND, not a HGDIOBJ.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-23 16:17:19 +04:00
Marc-André Lureau
180dd5fb7f
gdk/win32: deprecate gdk_win32_surface_is_win32
...
The function isn't used by Gtk itself anymore, and does not help much.
It creates extra issues for bindings, as it doesn't fit well with code
doing the same job for other objects.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-23 15:34:50 +04:00
Marc-André Lureau
a53650d9da
gdk/win32: annotate filter callbacks
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-23 12:57:20 +04:00
Luca Bacci
0d4d52d322
Merge branch 'win32-gir' into 'main'
...
Generate gtk/GdkWin32-4.0.gir
Closes #5112
See merge request GNOME/gtk!4965
2022-08-22 22:26:09 +00:00
Luca Bacci
749425808d
Fix typo
...
And reword comment
2022-08-19 19:29:17 +02:00
Luca Bacci
5e299cd3d2
GdkWin32: Fix handling of WM_NCHITTEST
...
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5114
2022-08-19 19:21:17 +02:00
Marc-André Lureau
8ab57fc8ef
build-sys: generate GdkWin32.gir
...
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-19 17:42:30 +04:00
Marc-André Lureau
ff16446b0b
build-sys: do not install gdkwin32keys.h
...
Fixes: commit 89ad7893ad
("gdk: Make GdkKeymap a private api")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-19 11:58:12 +04:00
Marc-André Lureau
82bcebe3de
gdk/win32: remove old declaration
...
The function is gone since commit ea65abc7e2
("Rewrite
GdkWin32Keymap (load table directly from layout DLL)")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
2022-08-19 11:58:12 +04:00