The `gdk_window_ensure_native` call for window freeze and thaw
really is needed, but since it is incompatible with transparent
canvases, don't use freeze and thaw at all for those.
Meanwhile, repair the backing bitmap for both GTK+ 2 and 3
for a transparent canvas when a scale is in effect. And go
back to using X11 bitmaps for backing a canvas on GTK+ 3;
I'm not sure that's the right choice, but probably putting
the bitmap data on the X server instead of client is the
right thing.
Finally, restore GL bitmap support (partly by using X11 bitmaps
to back a canvas).
GL rendering to a canvas with a backing scale is not yet right,
either for GTK+ 2 or 3.
For GTK+ 2, we used `gdk_window_ensure_native` to make sure
that freeze and thaw work. For GTK+ 3, `gdk_window_ensure_native`
seems not to be needed and prevents a canvas from drawing over
its background.
The main advantage of GTK+ 3 is better support for HiDPI
displays. If GTK+ 3 libraries are not available or if the
`PLT_GTK2` environment variable is defined, GTK+ 2 is used
as before.
Support GUI scaling in much the same way as on Windows, where
the OS setting ("org.gnome.desktop.interface.scaling-factor"
times "...text-scaling-factor") determines the scale that is
used for both graphics and GUI sizing.
As I understand it, a complete solution requires porting to
Gtk3. With Gtk2, the graphical part of a widget doesn't scale.
Text and image labels should scale correctly, though.
From the ARB_create_context_profile standard:
On failure glXCreateContextAttribsARB returns NULL and generates an
X error with extended error information.
Some NVIDIA drivers on Linux won't return a core profile. When they don't,
they're supposed to return NULL as well as generate an X error, but they
only generate an X error and return a non-NULL, garbage context. This is
not only nonstandard behavior, but lame. It's a major pain to check for X
errors. But whatever, NVIDIA, you big old gorilla.
This may or may not fix segfaults some people are having with Pict3D. If
it does, they won't have to use (current-pict3d-legacy? #t) anymore.
Get data from a clipboard client before going into atomic mode. This
correction can avoid an "about to suspend in atomic mode" failure,
particularly if a snip fails to copy correctly.
In particular, restore key handling that makes Ctl-Space produce an
event with a Space character. Also, restore `special-option-key`
support, while correcting the documentation to say what
`special-option-key` and `special-control-key` actually do.
Closes PR 14934
Bindings for UCKeyTranslate.
UCKeyTranslate converts a combination of a key-code, a modifier key state, keyboard layout and dead key state to a unicode string.