Commit Graph

52832 Commits

Author SHA1 Message Date
7b1f9a3b08 gtkentry: Avoid early IM reset on updates
Resetting the IM on IM updates is too eager and indeed the simple
IM context doesn't like that this happens in the middle of dead
key handling.

We however want to reset the IM after actual text buffer changes
(say, a committed string) moved the cursor position, altered the
surrounding text, etc. So that the IM implementation does know to
update its state.
2022-10-06 17:29:36 +07:00
b0c4196f98 gtkentry: Shuffle the places doing IM reset
During entry widget manipulation (inserting or deleting text via keyboard)
the IM context is reset somewhat early, before the actual change took place.
This makes IM lag behind in terms of surrounding text and cursor position.

Shuffle these IM reset calls so that they happen after the changes, and
ensure that the IM is actually reset, since that is currently toggled on
a pretty narrow set of circumstances.
2022-10-06 17:28:25 +07:00
0a8b0025e3 gtktextview: Shuffle the places doing IM reset
During text widget manipulation (inserting or deleting text via keyboard)
the IM context is reset somewhat early, before the actual change took place.
This makes IM lag behind in terms of surrounding text and cursor position.

Shuffle these IM reset calls so that they happen after the changes, and
ensure that the IM is actually reset, since that is currently toggled on
a pretty narrow set of circumstances.

Also, fix a bug during GtkEventControllerKey::im-update where the condition
on cursor position editability to reset the IM context was inverted.
2022-10-06 17:16:39 +07:00
a2f579eca8 gtkimcontextwayland: Refactor handling of client updates
Currently, the wayland IM context sends zwp_text_input_v3.commit from
a number of places, and some of them with partial data. In order to
make client state updates "atomic" and complete, make the communication
happen over an unified notify_im_change() function that happens on
a narrower set of circumstances:

  - The GtkIMContext is reset
  - The GtkIMContext is just focused
  - The gesture to invoke the OSK is triggered
  - The IM context is reacting to changes coming from the compositor

Notably, setting the cursor location or the surrounding text do not try
to commit state on their own, and now will be flushed with the corresponding
IM update or reset. But also, these requests won't be prevented from
happening individually on serial mismatch, instead it will be the whole
state commit which is held off.

With these changes in place, all client-side updates are notified
atomically to the compositor under a single .commit request.
2022-10-06 17:16:33 +07:00
293cee1724 Merge branch 'wip/carlosg/flush-uncompressed-motion' into 'gtk-3-24'
gdk: Ensure GdkFrameClock::flush-events with uncompressed motion

See merge request GNOME/gtk!5075
2022-10-03 20:48:10 +00:00
5ea961ed93 gdk: Ensure GdkFrameClock::flush-events with uncompressed motion
Sometimes, there may be motion events left in the queue, because at the
time of handlign these motion events the GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS
phase is not requested.

Ensure that, when finding motion events on a window that does not disable
motion compression, the events are anyways flushed, so they can be processed
early by the window/widget event handlers.

Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4946
2022-10-03 16:42:40 +02:00
1ad49f238c Merge branch 'wip/carlosg/translate-string-selections' into 'gtk-3-24'
wayland: Translate STRING/UTF8_STRING selection atoms to mimetypes

See merge request GNOME/gtk!5072
2022-10-03 09:06:51 +00:00
725ae0c878 Update Friulian translation 2022-10-03 08:39:31 +00:00
0c1ea92219 wayland: Translate STRING/UTF8_STRING selection atoms to mimetypes
Since the GDK API layer in 3.x is considerably tied to X11 details,
it makes sense to provide this bit of translation in case the app
uses these exclusively and does not use actual mimetype strings.
Provide this bit of translation of X11 selection atoms to mimetypes.

While at it, use the right zwp_primary_selection_source_v1 API with
primary selection data sources. From the looks of it, this just
happened to work.

Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5217
2022-10-03 10:35:48 +02:00
67432fe3bc Update Croatian translation 2022-10-02 14:37:54 +00:00
0bd5cfb1ce Update Georgian translation 2022-10-02 10:38:04 +00:00
80d8970072 Merge branch 'wip/titlebar-gesture-gtk3' into 'gtk-3-24'
[3-24] wayland: Add support for gtk_surface1_titlebar_gesture()

See merge request GNOME/gtk!5070
2022-10-01 01:34:33 +00:00
45ba6e9329 wayland: Add support for gtk_surface1_titlebar_gesture()
This adds a private GDK API that GTK calls using GDK_PRIVATE_CALL(). It
is more or less a copy of the GdkSurface::titlebar_gesture() API, and
achieves the same. If the backend or compositor doesn't support titlebar
gestures, the existing path is used as a fallback.
2022-09-30 22:38:03 +02:00
1a745a6b35 Update Abkhazian translation 2022-09-29 15:16:17 +00:00
4c77925af6 Update Croatian translation 2022-09-29 12:16:17 +00:00
d388d65eb7 Update Croatian translation 2022-09-29 12:14:26 +00:00
812b3930d0 Merge branch 'gdk-win32-fix-subclassing-gdk-win32-selection' into 'gtk-3-24'
GdkWin32: Fix subclassing for GdkWin32Selection

See merge request GNOME/gtk!5054
2022-09-26 12:52:32 +00:00
8f0d580cf9 GdkWin32: Fix subclassing for GdkWin32Selection 2022-09-26 14:28:03 +02:00
56100ab49a Merge branch 'work/zzag/kde-dnd' into 'gtk-3-24'
gdk/wayland: Update selection's offer before updating dnd targets

See merge request GNOME/gtk!5045
2022-09-23 09:09:22 +00:00
965aa2e65f gdk/wayland: Update selection's offer before updating dnd targets
gdk_wayland_drop_context_update_targets gets targets from the
selection's offer. In order to ensure that the drop context has
up-to-date targets, update the selection's offer before updating
targets.

This fixes drag-and-drop not working reliably when running Firefox in
Plasma Wayland session.
2022-09-23 11:12:41 +03:00
4c991b8b39 Merge branch 'backport-mr-4776-to-gtk3' into 'gtk-3-24'
Recognize "stylus" devices as GDK_SOURCE_PEN

See merge request GNOME/gtk!5036
2022-09-20 10:57:20 +00:00
a533474dfe Update Turkish translation 2022-09-18 08:19:53 +00:00
9c9920e46e Update Turkish translation 2022-09-18 08:19:45 +00:00
8984b13d84 Recognize "stylus" devices as GDK_SOURCE_PEN
Add "stylus" to the list of substrings in a device name that cause it to be recognized
as a GDK_SOURCE_PEN device (previously "wacom", "pen" and "eraser").  Some devices
just use "stylus" in their name, and are otherwise recognized as
GDK_SOURCE_TOUCHSCREEN instead.

Fixes #4394.
2022-09-17 15:06:27 +02:00
5f8ab17a0c Update Hungarian translation 2022-09-14 00:36:30 +00:00
cbfec14df4 Merge branch 'gtk3-fontchooser-fix' into 'gtk-3-24'
Fix a critical in GtkFontChooserWidget

See merge request GNOME/gtk!5027
2022-09-13 13:19:57 +00:00
ea9aa8ed82 Fix a critical in GtkFontChooserWidget
When the level doesn't include the style, we need
to work a bit harder to really get a face object
here.

Fixes: #5173
2022-09-13 08:54:09 -04:00
4a93875bbb Update Catalan translation 2022-09-11 14:30:21 +02:00
b425e724ee Update Chinese (Taiwan) translation 2022-09-10 09:21:40 +00:00
9baae419f6 x11: Add a precondition
Trying to be helpful.
2022-09-09 14:50:39 -04:00
1c375f72bc Update Polish translation 2022-08-28 23:32:39 +02:00
1df4b908a8 Update Croatian translation 2022-08-28 14:43:05 +00:00
a02858a5e8 Fixes to Catalan translation 2022-08-26 20:49:42 +02:00
12325f2e0a Update Abkhazian translation 2022-08-25 10:27:20 +00:00
7a56fa276b [quartz] find_toplevel_under_pointer should not return _gdk_root
The macOS WM has no root window. We fake one with a 1x1 window at the
origin that has no associated NSWindow. If the pointer is not on a
realized GdkWindow the hierarchical search will place it in the root
window even if it's nowhere near it. That's not valid, but returning it
from find_toplevel_under_pointer prevents Gdk from discovering when the
pointer is really over a GdkWindow. Return NULL instead so that the window
discovery is re-performed.
2022-08-22 08:58:08 -07:00
784e93ba4a Merge branch 'wip/smcv/glib-2-74' into 'gtk-3-24'
[GTK 3] Avoid repeated g_log_set_writer_func in tests

See merge request GNOME/gtk!4968
2022-08-21 11:55:57 +00:00
a4f45483b1 Avoid repeated g_log_set_writer_func in tests
Since GLib 2.73.0 it can only be called once per process.

Based on commit 78c153ae in GTK 4, but combining the icontheme test's
two custom log writers into one log writer that serves both purposes,
to avoid the need for a subprocess.

Co-authored-by: Matthias Clasen <mclasen@redhat.com>
Resolves: https://gitlab.gnome.org/GNOME/gtk/-/issues/5119
2022-08-20 19:34:05 +01: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
498cb3754c Merge branch 'fix_signal_blocked_on_update_relative_to' into 'gtk-3-24'
Unblock signal on update_relative_to in Gtk.Popover

See merge request GNOME/gtk!4589
2022-08-17 11:17:28 +00:00
4892c8901b Further simplification 2022-08-16 23:14:44 +02:00
187093f2a1 Update Catalan translation 2022-08-16 00:05:48 +02:00
02ea88bba2 Remove unneeded unblock
When a signal handler is disconnected, it doesn't matter if it
was blocked or not, so there's no need to unlock it before
disconnection.
2022-08-15 15:35:06 +02:00
c9a3b42734 Unblock signal on update_relative_to in Gtk.Popover
When a Gtk.Popover loses the focus, it blocks the grab_notify
signal from the associated widget, and it unblocks it when it
regains the focus. To know whether the signal is or not blocked,
it uses the priv->grab_notify_blocked flag.

On the other hand, when the method update_relative_to() is
called, all the signals connected to the old associated widget
are disconnected, and connected to the new widget.

Unfortunately, the priv->grab_notify_blocked flag isn't updated,
which means that if update_relative_to() is called while the
Gtk.Popover doesn't have the focus (for example, because the
user switched into another application), when the focus is
regained, the code in window_focus_in() will see that
priv->grab_notify_blocked is TRUE and will unblock the handler;
but that handler wasn't blocked because the one that was blocked
was disconnected when update_relative_to() was called. This
shows a WARNING in the console:

GLib-GObject-WARNING **: ../../../gobject/gsignal.c:2692: handler '5146' of instance '0x556912f84f40' is not blocked

This patch fixes this.

Fix https://gitlab.gnome.org/GNOME/gtk/-/issues/4777
2022-08-15 09:31:24 +02:00
0fd4906bf8 Merge branch 'wip/carlosg/seat-grab-pointer-hint' into 'gtk-3-24'
gdk/wayland: Drop motion hint mask from seat grab event masks

See merge request GNOME/gtk!4948
2022-08-12 16:37:03 +00:00
2c65884a5e gdk/wayland: Drop motion hint mask from seat grab event masks
At best, it's just an awkward event mask sitting there for a backend
that does not need it. At worst, this may result in motion events being
eaten away in the right set of circumstances.

Avoid the pointer motion hint mask, and rely on events being further
than hints.

Related: https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/534#note_1526935
2022-08-12 01:54:08 +02:00
8137d2148c Merge branch 'more-vs-proj-updates' into 'gtk-3-24'
More imrpovements to Visual Studio projects (docs and PangoFT2 support, code generation flexibility)

See merge request GNOME/gtk!4934
2022-08-08 12:24:57 +00:00
5515bde10a README.win32.md: Improve Visual Studio build instructions
Make the options and variable clearer to people.  Sorry, this was
a bit long overdue.
2022-08-08 19:51:06 +08:00
89287d5500 win32/config-msvc.mak: Improve flexibility
Allow one to specify INCLUDEDIR and LIBDIR to locate the headers needed
for generating sources, if they are not under $(PREFIX)\include and
$(PREFIX)\lib, repsectively.
2022-08-08 19:51:00 +08:00
713fab7596 win32/generate-msvcprojs.mak: Simplify enabling PangoFT2
... in the gtk-3 Visual Studio project.  This will allow one who wishes to use
the font features items that uses the older PangoFT2-based APIs that is used
before Pango 1.44.0 and HarfBuzz-2.2.0 an easier way to do that, by
regenerating the gtk-3 project files with the necessary items enabled.

The font features demo still needs to be explicitly enabled, though, as
before.
2022-08-08 18:56:24 +08:00
e567d4a33a README.win32: Convert to MarkDown
Make it easier on the eye, and put together portions that are repetitive.
2022-08-08 17:28:22 +08:00