Tablets require a tool in proximity to have an active surface
to send pointer events to. Avoid the grab-induced crossing events
on tablets that don't have a tool in proximity at the time of
creating the grab.
Fixes#1188, Fixes#3116
(cherry picked from commit d8919311b18bb0b89121c88405f757d6cee2e7cb)
Add a Ctrl+Shift+T shortcut to toggle the widgets direction,
to give the user control in the rare cases where a different
direction is appropriate.
This is a backport of 0b33abe44b4f42cba (without the context
menu item, since that needs new strings).
Now that we are no longer relying on keyboard direction to
determine the direction of empty entries, there's no need
for a direction-changed signal handler.
Instead of trying to derive a direction from content and
keyboard layout, just let the widgets direction prevail.
This avoids irritating jumping text on focus in, in situations
where the directions are mixed.
See discussion in !7971
This is a backport of d0bfed5195be99c21e.
The new default GNOME font already does the right thing for
colon in numeric context, and this replacement can show up
as a missing glyph on other platforms. So, just rely on
smart fonts, going forward.
Fixes: #7279
(cherry picked from commit e4d919a2df73f0fe5ccb1657fed97ce5673aa542)
See crash reliably reproduced on GIMP when a popup is destroyed on a
drag-begin callback and Wayland data listener callbacks calls the
enter() callback with a NULL surface.
Cf. https://gitlab.gnome.org/GNOME/gimp/-/issues/10515
The Gtk.EventMotionController implementation in Gtk3 doesn't
emit the enter or leave signals when the mouse cursor enters
or leaves the associated widget.
After doing several tests, I discovered that the
gtk_event_controller_handle_event() method never receives any
of the events from the Gtk core, although they are generated
inside the core and enter-notify-event and leave-notify-event
signals are correctly emited.
This patch fixes it by adding the missing
gtk_widget_real_XXXXX_event handlers for enter and leave
event notifications.
Fix#7225
On Quartz the drawing region must be padded out to a multiple of 4 px
on regular displays and 8 px on Retina ones. Failing to do so used to
cause smearing on multi-monitor mixed-DPI systems but that seems to
have been fixed. There remains a visible flicker in animations.
Padding the GdkWindow width as well as the content frame and cairo
surface causes the frame clock to get frozen if multiple calls to
gtk_window_resize use the same size because
gdk_window_move_resize_internal sees a difference between the window
size and the requested size (the latter isn't padded out) and freezes updates. GdkQuartzNSWindow
windowDidResize is supposed to thaw them, but because the padded-out
width set for the frame doesn't change the window isn't resized and
the frame clock is never thawed.
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/7188