Commit Graph

1269 Commits

Author SHA1 Message Date
a8a03a4852 Merge branch 'wgl-usage-across-threads-324' into 'gtk-3-24'
3.24: GDK-Win32: Use wrapper functions for calling core wgl* functions (backport from GTK-4.x)

See merge request GNOME/gtk!7284
2024-05-23 15:34:40 +00:00
71de45cb83 win32: Fix invisible dnd-move cursor
The cursor currently disappears while in DnD "move" action.
Fix by assigning a standard arrow cursor.
2024-05-22 20:41:57 +02:00
a0306f758f GDK-Win32: Add wrapper functions for calling core wgl* functions
This is a backport from the GTK-4.x update, so that we can aim to
support gtkglsink in gst-plugins-good even on Windows, beyond using
just Cairo in gstsink for rendering.

From the commit message in GTK-4.x, in commit 627ee674:

We might be dealing with GL contexts from different threads, which have more
gotchas when we are using libepoxy, so in case the function pointers for
these are invalidated by wglMakeCurrent() calls outside of GTK/GDK, such as
in GstGL, we want to use these functions that are directly linked to
opengl32.dll provided by the system/ICD, by linking to opengl32.lib.

This will ensure that we will indeed call the "correct" wgl* functions that
we need.
2024-05-22 19:26:31 +08:00
99a816c361 gdkkeys-win32c: change registry key not found g_warning to g_debug
On Windows with certain keyboard layout combinations you can get a
benign terminal warning like this:
Could not open registry key 'SYSTEM\CurrentControlSet\Control\Keyboard
Layouts\D0010413'
When using a lot of plug-ins, like GIMP does, this warning can show up
a lot of times.
The code after this warning, still has another last check, that, when it
fails, will show a warning.

We change the first g_warning to a g_debug statement, to reduce the
amount of warning messages.

Closes #5109
2023-12-18 11:35:43 -05:00
6f12c9c5de GdkWin32: Fix warning due to changed device count 2023-06-27 15:53:14 +02:00
04b0cc70c1 WinPointer: Actually destroy GdkDeviceTools 2023-06-27 15:48:35 +02:00
6d0f34103d GdkWin32: Use scaled coordinates for move_resize_drag()
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5877
2023-06-21 17:00:00 +02:00
71fcbce0d7 OLE2 DND: Check if move is supported 2023-04-06 14:18:30 +02:00
22b091047f GdkWin32: Zero-out memory of an allocated struct
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5678
2023-03-21 10:50:09 +01:00
7776052c46 Merge branch 'check-egl-support-at-runtime' into 'gtk-3-24'
GdkWin32GLContext: Check availability of EGL at runtime

See merge request GNOME/gtk!5629
2023-03-13 17:51:03 +00:00
cf3e037e64 GdkWin32GLContext: check for EGL support at runtime 2023-03-10 15:48:05 +01:00
2ebf7c29e1 gdkglcontext-win32.c: Fix running under GLES
...when GDK_DEBUG=opengl is enabled.  There was an extraneous "legacy: %s" in
the GDK_NOTE (OPENGL, g_message("...")) line that should not have been there,
due to a copy-and-paste mishap.  Get rid of it.
2023-03-09 11:14:58 +08:00
53f8a2ef93 GdkWin32: Generate crossing event after button release
This is a backport of commit cb0c1b3f to gtk-3-24
2023-02-13 16:15:04 +01:00
783af2e3bf GdkWin32: Correct generation of crossing events when holding an implicit grab
This is a backport of commit 91f20016 to gtk-3-24
2023-02-13 16:14:54 +01:00
82e8605627 clipboard: improve EOL conversion of plain text
Handle the case of clipboard text with CR line endings
2022-12-22 10:26:34 +01:00
2b0a605c5d build: Remove the Autotools build
CI and downstream packagers have been using the Meson build for a while
now, and we checked that it's idempotent to the Autotools build.

Having two build systems in tree doesn't make maintaining and releasing
GTK any easier, even if it's the stable/frozen branch.
2022-12-08 11:57:39 +00:00
8f0d580cf9 GdkWin32: Fix subclassing for GdkWin32Selection 2022-09-26 14:28:03 +02:00
84db04e6e1 Merge branch 'static-builds-hinstance' into 'gtk-3-24'
GdkWin32: Add support for static builds

See merge request GNOME/gtk!4538
2022-08-18 18:05:36 +00:00
b121fe8d51 GdkWin32: Add code for gtk-overlay-scrolling setting
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/4899
2022-06-17 11:04:54 +02:00
f4811ea1f1 build: Drop gtk3-install.[vsprops|props]
They are not used anymore, and are removed at this point.
2022-05-19 09:41:48 +08:00
cb494e0ad8 gdk/win32: Split out sources listing
This way, we can reuse this list in other non-autotools Makefile-based
build systems.
2022-05-19 09:41:47 +08:00
d5ce63508f GdkWin32: Retrieve module HINSTANCE in static builds 2022-03-02 16:25:09 +01:00
d13e05be93 Fix dllMain win32 2022-03-01 06:03:36 +00:00
b85e60524f gdkkeys-win32: Only perform substitution as last-resort
Instead of performing keyboard layout substitution whenever we find a matching
entry in the registry, first try to load the original layout and only attempt
substitution when that fails.

See #4724
2022-02-27 16:32:59 +01:00
f19897e71f Fix last error reporting when calling GetClipboardOwner
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/1402
2022-02-25 17:02:26 +01:00
4a8d96b95b GdkWin32: Fix gdk_win32_window_get_frame_extents
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/4690
2022-02-14 16:16:47 +01:00
a40f9261e9 gdkkeys-win32: Also ignore Ctrl + Shift (etc.)
Some Windows keymaps have bogus mappings for the Ctrl modifier. !4423 attempted
to fix this by ignoring the Ctrl layer, but that was not enough. We also need to
ignore combinations of Ctrl with other modifiers, i.e. Ctrl + Shift. For example,
Ctrl + Shift + 6 is mapped to the character 0x1E on a US keyboard (but it should
be treated as Ctrl + ^). Basically, always ignore Ctrl unless it is used in
conjunction with Alt, i.e. as part of AltGr.

Related issue: #4667
2022-02-08 20:44:35 +01:00
cfc6d6ddb7 gdkkeys-win32: Ignore CTRL bit for key translation
Some keymaps on Windows contain bogus mappings for Ctrl+key for certain
keys, e.g. Ctrl+Backspace = Delete, or Ctrl+[ = 0x1B. These are never
used on Windows, so we should ignore them.

Fixes #4667
2022-01-29 22:36:40 +01:00
cc47262ccb gdkkeys-win32: Perform keyboard layout substitution
For some users, GetKeyboardLayoutNameA() returns an alias instead of the
fully resolved keyboard layout identifier. In that case, we have to
query the registry to resolve the alias before we can look up the DLL
path.

See comments under #4610
2022-01-10 03:34:59 +01:00
4e9ddaf086 gdkkeys-win32: Fix handling of SGCAPS
Contrary to what you can read on the internet, SGCAPS keys don't work
by having capslock toggle the KBDCTRL bit, they actually have two
consecutive table entries, the first of which is for the normal
version and the second of which is for the capslocked version.

Background: SGCAPS is short for Swiss German caps because Swiss German
was the first layout to use this feature. For keys with the SGCAPS flag,
capslock has a different effect than pressing shift. For example:
Shift + ü = è,  CapsLock + ü = Ü,  CapsLock + Shift + ü = È
2022-01-09 12:36:47 +01:00
8b1c334c4a gdkkeys-win32: Fix crash when keyboard DLL failed to load
DLL loading failures should not happen under normal circumstances, but
we should at least try not to crash and and print better diagnostic
messages if they do happen.

See #4610
2022-01-09 12:36:47 +01:00
404229ad75 gdkkeys-win32: Add keysym mapping for capslock key
Add missing mapping between VK_CAPITAL and GDK_KEY_Caps_Lock, so
applications get a meaningful keyval rather than ffffff.
2022-01-09 12:36:47 +01:00
acf5db32f1 gdkkeys-win32: Fix capslock handling
Previously, we treated CapsLock and KanaLock as part of the global
keyboard state, much like NumLock and ScrollLock, rather than using
the supplied modifier mask. This was because GDK does not have a
modifier mask for KanaLock, only for CapsLock, so it would not have been
possible to properly support it.

However, this approach ended up causing problems, with certain keyboard
shortcuts not registering when capslock was active. This was first
observed in Inkscape [0] and appears to affect shortcuts consisting of a
single key (like 'a') with no additional modifiers (wheareas shortcuts
like 'ctrl+a' work).

So now we are using the supplied GDK_LOCK_MASK instead, and dropped
support for KanaLock, which we probably don't need anyway (since regular
text input should be handled by the IME input module -- the keymap is
mainly for shortcuts and keybindings, where you don't really want
KanaLock).

[0] https://gitlab.com/inkscape/inkscape/-/issues/3082
2022-01-09 12:36:32 +01:00
f81da43b00 gdkkeys-win32: Fix uninitialized value
gdk_win32_keymap_get_entries_for_keycode() did not initialize n_entries,
which led to a wrong number of items being returned in some cases.

/fixes #4610
2022-01-07 20:48:50 +01:00
46c12b2c92 Winpointer: Fix keyboard state
The dwKeyStates field of the POINTER_INFO structure is
always set to 0 no matter what.

Use GetKeyState instead.

Fixes https://gitlab.com/inkscape/inbox/-/issues/5946
2022-01-03 15:08:58 +01:00
37f9af5805 Add define for GC_ALLGESTURES, in-case WINVER is not set. 2021-12-28 00:50:17 +01:00
4090306fd7 Lowercaps Windows.h -> windows.h 2021-12-28 00:47:28 +01:00
1a73728e04 gdk/win32/Makefile.am: Dist gdkkeys-win32.h
This was missing from the tarball.
2021-12-21 16:38:17 +08:00
e658e3c449 gdk/win32: Fix modifiers sometimes being consumed for special keys
Windows keymaps contain some bogus mappings, e.g. Ctrl+Backspace=Delete.
Previously, we correctly identified the key as Backspace, but the Ctrl
was still consumed, so the Ctrl+Backspace keybinding did not work.
2021-12-10 01:14:47 +01:00
b3fcfa4bbc gdk/win32: Fix group parameter not being used by translate_keyboard_state
gdk_win32_keymap_translate_keyboard_state erroneously used the active
group rather than the specified group, which caused shortcuts not to
work in Inkscape when using a Cyrillic layout.
2021-12-09 12:29:19 +01:00
4601d3aee4 gdk/win32: Add licensing boilerplate to gdkkeys-win32 2021-12-09 12:29:15 +01:00
64eedbfaf4 gdk/win32: Remove unneeded struct _GdkWin32KernelCPUFuncs
It only had a single member and was only used internally by one
function.
2021-12-08 22:46:52 +01:00
4a55c527d7 gdk/win32: Consolidate CPU detection in one place
This consolidates the check for the running CPU in one single location,
to make things a bit cleaner, as:

* We can make use of IsWow64Process2(), if available, to check both
  whether we are running on an ARM64 CPU, and whether we are running as
  a WOW64 process.  This is also the function to use to properly check
  whether we are running as a WOW64 process on ARM64 systems, as
  IsWow64Process() does not work as we want on ARM64 systems.

* If we don't have IsWow64Process2() (which is absent from Windows prior
  to Windows 10 1511, where ARM64 Windows is introduced), we can fall
  back to  IsWow64Process(), which will tell us whether we are running
  as an WOW64 process (but clearly not on an ARM64 system).

Also clean up things a bit so that we can reduce reliance on global
variables.
2021-12-08 22:46:49 +01:00
aa3e6bb0a3 GdkWin32Keymap: Be more robust against DLL loading failures
Fixes failure on the CI servers when generating GIR files
2021-12-08 22:44:20 +01:00
4039153ca7 Rewrite GdkWin32Keymap (load table directly from layout DLL)
The old code used repeated calls to `ToUnicodeEx` to populate
the translation table, which is slow and buggy. The new code
directly loads the layout driver DLLs from Windows.

Associated issues: #2055 #1033
Merge request: !1051

GdkWin32Keymap cleanup

Conform to C89, improve comments, whitespace
2021-12-08 22:44:17 +01:00
4d40300d8a GdkWin32: Make OLE2 DND work in monitors with different OS scales
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/3734
2021-11-13 19:41:58 +01:00
a174568ef9 Merge branch 'gtk3-dnd-find-dest-window-fix' into 'gtk-3-24'
GdkWin32: Fix DND destination window search

See merge request GNOME/gtk!3885
2021-11-13 14:51:49 +00:00
ae8fde9630 Merge branch 'win32-gl-reorg-3' into 'gtk-3-24'
GDK-Win32: Reorganize backend GL code and add fallback mode

See merge request GNOME/gtk!3859
2021-11-06 11:21:43 +00:00
d34f4416bd Merge branch 'gdk-win32-ensure-correct-order-of-operations-when-handling-dpi-scale-and-gdk-screen-offset' into 'gtk-3-24'
GdkWin32: Ensure consistent order of operations when handling DPI scale and GDK screen offset

See merge request GNOME/gtk!3931
2021-10-18 11:36:47 +00:00
26d61e2abc GDK/Win32: Fix MinGW autotools build
MinGW-w64 CRT provides no 'hid.lib' file. Instead, it has 'libhid.a'
which can be linked with '-lhid' linker argument.

Also, we have to declare the '_LIBADD' variable and add 'LDADDS' to it,
or 'LDADDS' won't do anything for the build.
2021-09-24 00:06:51 +08:00