Matthias Clasen [Wed, 6 Apr 2022 15:44:43 +0000 (15:44 +0000)]
Merge branch 'wip/carlosg/osk-activation' into 'main'
imwayland: Connect OSK activating gesture to parent widget on editables
Closes #4795
See merge request GNOME/gtk!4624
Carlos Garnacho [Wed, 6 Apr 2022 11:08:00 +0000 (13:08 +0200)]
imwayland: Do not defer commit() after set_surrounding_text()
For reasons that only apply to the old serial handling, asking for
the surrounding after IM changes resulted in lazy handling of
commit() afterwards.
With the recent interpretation of serials, this problem became more
apparent, since it is in fact very likely that the last interaction
step after an IM change is notifying of the changed surrounding
text after the IM change was applied.
Make handling of surrounding text similar to caret position changes,
always commit() after the state change, but skip through non-changes.
This makes the compositor state fully up-to-date after an IM change.
Carlos Garnacho [Wed, 6 Apr 2022 09:01:01 +0000 (11:01 +0200)]
imwayland: Connect OSK activating gesture to parent widget on editables
The gesture as connected currently on the child GtkText is easily overridden
by the parent editables (and gently done so in the attempt to consume all
clicks).
Connect this gesture to the parent editable widget in these cases, so the
gesture can cohabit with the click-consuming one. It's not part of the same
group, but it won't be abruptly cancelled.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4795
Matthias Clasen [Tue, 5 Apr 2022 12:25:59 +0000 (12:25 +0000)]
Merge branch 'blurry-offscreen' into 'main'
gsk/gl: Always align offscreen rendering with the pixel grid
Closes #3833
See merge request GNOME/gtk!4621
Matthias Clasen [Tue, 5 Apr 2022 03:15:53 +0000 (03:15 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
gl: Don't leak big glyphs
See merge request GNOME/gtk!4622
Matthias Clasen [Mon, 4 Apr 2022 00:25:22 +0000 (20:25 -0400)]
gl: Don't leak big glyphs
We were never resetting the accessed bit of
glyphs that are big enough to be stored individually,
so these would just accumulate and never be dropped.
Sebastian Keller [Mon, 4 Apr 2022 20:55:16 +0000 (22:55 +0200)]
testsuite: Add unaligned-offscreen test
Tests whether text rendered to an offscreen node unaligned with the
pixel grid introduces blurriness.
Sebastian Keller [Thu, 31 Mar 2022 14:44:34 +0000 (16:44 +0200)]
gsk/gl: Always align offscreen rendering with the pixel grid
This fixes two issues with the offscreen rendering code for nodes with
bounds not aligned with the pixel grid:
1.) When drawing to an offscreen buffer the size of the offscreen buffer
was rounded up, but then later when used as texture the vertices
correspond to the original bounds with the unrounded size. This could
then result in the offscreen texture being drawn onscreen at a slightly
smaller size, which then lead to it being visually shifted and blurry.
This is fixed by adjusting the u/v coordinates to ignore the padding
region in the offscreen texture that got added by the size increase from
rounding.
2.) The viewport used when rendering to the offscreen buffer was not
aligned with the pixel grid for nodes at coordinates not aligned with
the pixel grid. Then because the content of the offscreen buffer is not
aligned with the pixel grid and later when used as textures sampling
from it will result in interpolated values for an onscreen pixel. This
could also result in shifting and blurriness, especially for nested
offscreen rendering at different offsets.
This is fixed by adding similar padding at the beginning of the
texture and also adjusting the u/v coordinates to ignore this region.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3833
Christian Hergert [Mon, 4 Apr 2022 18:53:19 +0000 (18:53 +0000)]
Merge branch 'sumibi-yakitori/fix-minimize-window-macos' into 'main'
macos: Fix problem that window cannot be minimized by user operation
Closes #4811
See merge request GNOME/gtk!4613
sumibi-yakitori [Sat, 2 Apr 2022 12:29:27 +0000 (21:29 +0900)]
macos: Skip running `showAndMakeKey` when a window is minimized by user action
When a window is minimized by user action, the `showAndMakeKey` method is not executed when idle. This prevents the window from being un-minimized immediately.
And allow programmatic minimization of a window by un-minimizing them in `_gdk_macos_toplevel_surface_present`
Closes #4811
Christian Hergert [Sun, 3 Apr 2022 22:14:52 +0000 (22:14 +0000)]
Merge branch 'sumibi-yakitori/fix-maximize-window-macos' into 'main'
macos: prohibit fullscreen transition if in transtion
This prevents performing additional fullscreen transitions while
a transition is already in progress.
Closes #4808
See merge request GNOME/gtk!4612
sumibi-yakitori [Sun, 3 Apr 2022 22:14:52 +0000 (22:14 +0000)]
macos: prohibit fullscreen transition if in transtion
This prevents performing additional fullscreen transitions while
a transition is already in progress.
Matthias Clasen [Sun, 3 Apr 2022 20:11:29 +0000 (20:11 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
inspector: Avoid a crash
See merge request GNOME/gtk!4617
Matthias Clasen [Sun, 3 Apr 2022 19:53:52 +0000 (15:53 -0400)]
inspector: Avoid another crash
We need to handle all event types here.
This was tripping over GDK_TOUCHPAD_HOLD events.
Matthias Clasen [Sun, 3 Apr 2022 19:53:34 +0000 (15:53 -0400)]
inspector: Avoid a crash
Attribute lists can be NULL, it turns out.
Matthias Clasen [Sun, 3 Apr 2022 14:21:13 +0000 (14:21 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
gsk: Plug a memory leak
See merge request GNOME/gtk!4616
Matthias Clasen [Sun, 3 Apr 2022 12:41:14 +0000 (12:41 +0000)]
Merge branch 'meson_fixes' into 'main'
meson: Use proper type for bools
See merge request GNOME/gtk!4615
Matthias Clasen [Sun, 3 Apr 2022 12:04:35 +0000 (08:04 -0400)]
css: Plug a memory leak
We were leaking the terms of calc values. Oops.
illiliti [Sun, 3 Apr 2022 11:55:33 +0000 (14:55 +0300)]
meson: Use proper type for bools
Fix invalid usage of bools which violates official meson specification and thus
breaks muon, an implementation of meson written in C.
Matthias Clasen [Sun, 3 Apr 2022 11:34:09 +0000 (07:34 -0400)]
gsk: Plug a memory leak
This was introduced in
9defc7fc647.
Matthias Clasen [Sat, 2 Apr 2022 19:47:03 +0000 (19:47 +0000)]
Merge branch 'matthiasc/for-main' into 'main'
imcontextsimple: Plug a memory leak
See merge request GNOME/gtk!4614
Matthias Clasen [Sat, 2 Apr 2022 19:22:12 +0000 (15:22 -0400)]
imcontextsimple: Plug a memory leak
Emmanuele Bassi [Fri, 1 Apr 2022 11:20:11 +0000 (11:20 +0000)]
Merge branch 'selection-model-docs' into 'main'
docs: Fix links in selection models
See merge request GNOME/gtk!4609
Maximiliano Sandoval R [Fri, 1 Apr 2022 11:04:14 +0000 (13:04 +0200)]
docs: Fix links in selection models
Andika Triwidada [Fri, 1 Apr 2022 03:56:36 +0000 (03:56 +0000)]
Update Indonesian translation
Matthias Clasen [Fri, 1 Apr 2022 00:56:32 +0000 (00:56 +0000)]
Merge branch 'clipboard-seg' into 'main'
x11: Check return of gdk_x11_get_xatom_name_for_display
See merge request GNOME/gtk!4607
Matthias Clasen [Fri, 1 Apr 2022 00:56:02 +0000 (00:56 +0000)]
Merge branch 'fix-win32-empty-clipboard' into 'main'
gdkclipboard-win32.c: Fix call to gdk_clipboard_claim_remote() (check GdkContentFormat is not NULL
Closes #4796
See merge request GNOME/gtk!4604
Matthias Clasen [Thu, 31 Mar 2022 17:07:37 +0000 (17:07 +0000)]
Merge branch 'nls' into 'main'
Remove #ifdef ENABLE_NLS
See merge request GNOME/gtk!4606
Matthias Clasen [Thu, 31 Mar 2022 16:29:38 +0000 (16:29 +0000)]
Merge branch 'wip/carlosg/immulticontext-display-switch' into 'main'
gtkimmulticontext: Handle switches between displays
Closes #4805
See merge request GNOME/gtk!4605
Christoph Reiter [Thu, 31 Mar 2022 15:46:54 +0000 (15:46 +0000)]
Merge branch 'msys2-ci-cleanup' into 'main'
CI: clean up MSYS2 build dependencies
See merge request GNOME/gtk!4600
Xavier Claessens [Thu, 31 Mar 2022 15:41:34 +0000 (11:41 -0400)]
Remove #ifdef ENABLE_NLS
libintl API is guaranteed to always be available, glib will fallback to
proxy-libintl in case gettext is not found.
Dr. David Alan Gilbert [Thu, 31 Mar 2022 14:56:09 +0000 (15:56 +0100)]
x11: Check return of gdk_x11_get_xatom_name_for_display
When given an invalid atom, gdk_x11_get_xatom_name_for_display can
return NULL and trigger a seg in gdk_x11_clipboard_formats_from_atoms.
Check for NULL.
Why I'm seeing a bad atom there is probably a separate question.
https://bugzilla.redhat.com/show_bug.cgi?id=
2037786
Carlos Garnacho [Thu, 31 Mar 2022 14:29:34 +0000 (16:29 +0200)]
gtkimmulticontext: Handle switches between displays
Currently the GtkIMMultiContext may stick to a delegate GtkIMContext
that no longer applies after the multicontext is dissociated from
any widget.
Handle set_client_widget() so that it can handle changes between
widgets from 2 different display, but also so the delegate is made
NULL whenever the context has a NULL widget.
Doing so, any new client widget results in a new delegate IM context
lookup from the right GdkDisplay and GtkSettings, which avoids any
mix up.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4805
Chun-wei Fan [Thu, 31 Mar 2022 02:36:45 +0000 (10:36 +0800)]
gdkclipboard-win32.c: Fix call to gdk_clipboard_claim_remote()
The call to gdk_win32_clipboard_request_contentformats() can return NULL even
without an error condition being hit (such as when the system clipboard is
empty), so check whether the returned GdkContentFormat pointer is not NULL
before calling gdk_clipboard_claim_remote(), which expects it to be not NULL,
otherwise we face a warning from that funtion and the subsequent
g_object_unref().
This at least partially fixes issue #4796.
Carlos Garnacho [Mon, 28 Mar 2022 14:27:55 +0000 (14:27 +0000)]
Merge branch 'wip/exalm/scroll-hold' into 'main'
eventcontrollerscroll: Always propagate hold events
See merge request GNOME/gtk!4599
Alexander Mikhaylenko [Sun, 27 Mar 2022 21:05:23 +0000 (01:05 +0400)]
eventcontrollerscroll: Always propagate hold events
Otherwise a stray scroll controller may prevent others from getting hold
events, even if it always propagates scroll events and does absolutely
nothing.
Rūdolfs Mazurs [Sun, 27 Mar 2022 20:19:10 +0000 (20:19 +0000)]
Update Latvian translation
(cherry picked from commit
3b50f2e8b996f92f49d2974ccff2b160905e8e73)
Rūdolfs Mazurs [Sun, 27 Mar 2022 19:53:51 +0000 (19:53 +0000)]
Update Latvian translation
(cherry picked from commit
d4dd7969d64c85984d6dd1e3535347b1669ecfff)
Christoph Reiter [Sun, 27 Mar 2022 17:08:36 +0000 (19:08 +0200)]
CI: clean up MSYS2 build dependencies
We only need a C compiler and not the whole toolchain,
and gst-plugins-bad was split into libraries and plugins.
pkg-config -> pkgconf.
This should speed the CI setup up a bit.
Emmanuele Bassi [Sun, 27 Mar 2022 16:25:50 +0000 (16:25 +0000)]
Merge branch 'antoniof-main-patch-34986' into 'main'
overlaylayout: Set position style class on child
Closes nautilus#2099
See merge request GNOME/gtk!4597
António Fernandes [Sun, 27 Mar 2022 14:59:10 +0000 (14:59 +0000)]
overlaylayout: Set position style class on child
As documented:
> Overlay children whose alignments cause them to be positioned
> at an edge get the style classes “.left”, “.right”, “.top”,
> and/or “.bottom” according to their position.
Likely accidental regression in
b7ee2cbc289b4ab8a950cd77bdcd69a6f13932a7
Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2099
Matthias Clasen [Fri, 25 Mar 2022 13:03:00 +0000 (13:03 +0000)]
Merge branch 'inspector-attributes' into 'main'
inspector: Allow viewing PangoAttrList properties
See merge request GNOME/gtk!4596
Matthias Clasen [Fri, 25 Mar 2022 12:35:16 +0000 (08:35 -0400)]
inspector: Allow viewing PangoAttrList properties
We have pango_attr_list_to/from_string, so this is
easy. The editing UI isn't ideal, but it solves my
immediate need to see attributes.
Matthias Clasen [Fri, 25 Mar 2022 11:48:28 +0000 (11:48 +0000)]
Merge branch 'main' into 'main'
Check for 'rst2man' misses installed 'rst2man.py' (#4728)
See merge request GNOME/gtk!4586
Benjamin Otte [Fri, 25 Mar 2022 01:34:15 +0000 (01:34 +0000)]
Merge branch 'wip/chergert/fix-gl-rgba' into 'main'
gdk/gl: handle GL_RGBA/GL_UNSIGNED_NORMALIZED
Closes #4783
See merge request GNOME/gtk!4594
Christian Hergert [Thu, 24 Mar 2022 03:20:02 +0000 (20:20 -0700)]
gdk/gl: handle GL_RGBA/GL_UNSIGNED_NORMALIZED
WebKit's GTK 4 port can give us textures with an internal format of
GL_RGBA with GL_UNSIGNED_NORMALIZED and a bit-depth of 8. This fixes
warnings for every GdkGLTexture created/delivered to the GskGLRenderer.
The format is essentially the same as GL_RGBA8 since it is normalized
between 0.0..1.0 for 8-bit components.
Fixes #4783
Matthias Clasen [Thu, 24 Mar 2022 19:19:01 +0000 (19:19 +0000)]
Merge branch 'want_prepare_without_play_for_size' into 'main'
GtkMediaStream with gstreamer backend isn't 'prepared' until media is played
See merge request GNOME/gtk!4560
Matthias Clasen [Thu, 24 Mar 2022 17:16:11 +0000 (17:16 +0000)]
Apply 1 suggestion(s) to 1 file(s)
Bruce Cowan [Thu, 24 Mar 2022 13:19:20 +0000 (13:19 +0000)]
Update British English translation
(cherry picked from commit
dd198cfc065f616d0729e1e02bf5773085dcd014)
Kukuh Syafaat [Wed, 23 Mar 2022 15:39:17 +0000 (15:39 +0000)]
Update Indonesian translation
Kukuh Syafaat [Wed, 23 Mar 2022 13:46:25 +0000 (13:46 +0000)]
Update Indonesian translation
Matthias Clasen [Wed, 23 Mar 2022 02:16:41 +0000 (02:16 +0000)]
Merge branch 'fix-popover-menu-rtl-position' into 'main'
popover-menu: Fix buttons' position in RTL
See merge request GNOME/gtk!4587
Cheng-Chia Tseng [Tue, 22 Mar 2022 14:47:50 +0000 (14:47 +0000)]
Update Chinese (Taiwan) translation
Matthias Clasen [Tue, 22 Mar 2022 13:27:54 +0000 (13:27 +0000)]
Merge branch 'wip/chergert/reduce-overlay-overhead' into 'main'
Default: avoid use of opacity for overlay scrollbars
See merge request GNOME/gtk!4590
Matthias Clasen [Tue, 22 Mar 2022 12:58:07 +0000 (12:58 +0000)]
Merge branch 'fix-high-depth-switch' into 'main'
surface: Use correct display when destroying a surface for depth switch
Closes #4773
See merge request GNOME/gtk!4591
Sebastian Keller [Tue, 22 Mar 2022 07:11:18 +0000 (08:11 +0100)]
surface: Use correct display when destroying a surface for depth switch
When surface depth switches from non-high-depth to high-depth (or vice
versa) the current surface has to be destroyed before a new one can be
created for this window. eglDestroySurface however was getting passed a
GdkDisplay, rather than the EGLDisplay it expects. As a result the old
surface did not get destroyed and the new surface could not be created
causing rendering to freeze.
Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4773
Christian Hergert [Tue, 22 Mar 2022 01:54:09 +0000 (18:54 -0700)]
Default: avoid use of opacity for overlay scrollbars
If using the opacity CSS property the renderer cannot optimize these
handles without the use of offscreens due to the use of both a border
and rgb render node.
Instead, we can apply the alpha to the color values and get the same
effect in a way that the GL renderer can optimize without the use of
offscreen textures for a sizeable reduction in runtime overhead.
Marek Černocký [Mon, 21 Mar 2022 13:57:35 +0000 (14:57 +0100)]
Updated Czech translation
Marek Černocký [Mon, 21 Mar 2022 11:14:36 +0000 (12:14 +0100)]
Updated Czech translation
Yosef Or Boczko [Sat, 19 Mar 2022 22:43:57 +0000 (00:43 +0200)]
popover-menu: Fix buttons' position in RTL
The radio/check/previous buttons shows in
the wrong place in RTL. Fix it.
#4641
Signed-off-by: Yosef Or Boczko <yoseforb@gmail.com>
aneejit1 [Sat, 19 Mar 2022 10:41:32 +0000 (10:41 +0000)]
Check for 'rst2man' misses installed 'rst2man.py' (#4728)
By default, 'docutils' installs 'rst2man' as 'rst2man.py'. Amend the
check for 'rst2man' to look for 'rst2man.py' as well if 'rst2man' is
not found.
Philipp Kiemle [Sat, 19 Mar 2022 12:32:20 +0000 (12:32 +0000)]
Update German translation
(cherry picked from commit
d9c39f67954921eb2dab4cb5d044eacd4ee4297d)
Carlos Garnacho [Sat, 19 Mar 2022 12:02:56 +0000 (12:02 +0000)]
Merge branch 'wip/carlosg/fix-accumulated-velocity' into 'main'
kinetic scroll fixes
See merge request GNOME/gtk!4572
Carlos Garnacho [Tue, 15 Mar 2022 21:42:13 +0000 (22:42 +0100)]
gtkkineticscrolling: Do not take distance based shortcuts
The pixel distance could be small enough between tick() calls that
this kind of checks might potentially become a problem. Rely only on
the calculated velocity to trigger the STOPPED phase, and use a lower
threshold to avoid cutting the animation too early.
Related: https://gitlab.gnome.org/GNOME/gtk/-/issues/4725
Carlos Garnacho [Tue, 15 Mar 2022 21:41:27 +0000 (22:41 +0100)]
gtkscrolledwindow: Do not trigger kinetic helpers on 0 velocity
Doing this is pointless, so it could be skipped.
Carlos Garnacho [Tue, 15 Mar 2022 21:01:36 +0000 (22:01 +0100)]
gtkscrolledwindow: Change lifetime of kinetic scroll helpers
In order to properly accumulate scroll velocities, we need to keep
the kinetic scroll helpers after we have possibly stopped them
in the process of initiating a further scroll flick.
So, instead of stopping (and destroying) those helpers on scroll-begin,
keep them until the next scroll-end if a scroll was initiated before
kinetic scroll finished. This way we can fetch the last velocity when
calculating the extra kick.
In order to ensure the helpers don't live beyond what it is expected,
we now also remove them after a finished hold event.
Fixes the accumulation of scrolling velocity on consecutive scroll
sequences.
Carlos Garnacho [Tue, 15 Mar 2022 20:59:12 +0000 (21:59 +0100)]
gtkscrolledwindow: Refactor kinetic scroll animation
Do not depend on the kinetic scroll helpers existing or not before
exiting the animation, as we may want to keep those a little bit
longer after stopped.
Carlos Garnacho [Tue, 15 Mar 2022 20:52:35 +0000 (21:52 +0100)]
gtkkineticscroll: Do not reset velocity after stop()
We may want to fetch the last velocity obtained, even though we
preemptively called stop() on a kinetic scroll helper. Keep this
velocity so it can be queried later on.
Emmanuele Bassi [Sat, 19 Mar 2022 10:14:04 +0000 (10:14 +0000)]
Merge branch 'search-delay-versions' into 'main'
Fix GtkSearchEntry:search-delay docs
See merge request GNOME/gtk!4585
Sebastian Dröge [Sat, 19 Mar 2022 09:56:05 +0000 (11:56 +0200)]
Add version marker to GtkSearchEntry:search-delay property
Sebastian Dröge [Sat, 19 Mar 2022 09:55:03 +0000 (11:55 +0200)]
Fix typo in gtk_search_entry_set_search_delay() docs causing it to not show up
Matthias Clasen [Sat, 19 Mar 2022 03:57:48 +0000 (03:57 +0000)]
Merge branch 'macos-fix-scroll-unit-build' into 'main'
macos: fix scroll-unit build
See merge request GNOME/gtk!4584
panoplie [Sat, 19 Mar 2022 01:55:02 +0000 (02:55 +0100)]
macos: fix scroll-unit build
Carlos Garnacho [Sat, 19 Mar 2022 00:47:08 +0000 (00:47 +0000)]
Merge branch 'scroll-unit' into 'main'
GdkScrollEvent: indicate the delta unit with a new GdkScrollUnit enum
See merge request GNOME/gtk!4508
Matthias Clasen [Sat, 19 Mar 2022 00:34:17 +0000 (00:34 +0000)]
Merge branch 'wip/carlosg/rewritten-events-from-other-toplevels' into 'main'
gtk/main: Make coords out of surface when rewriting events for grabs
Closes #4760
See merge request GNOME/gtk!4566
Matthias Clasen [Fri, 18 Mar 2022 23:46:17 +0000 (23:46 +0000)]
Merge branch 'wip/chergert/gsk-gl-texture-library' into 'main'
gsk/gl: texture libraries, shader creation
See merge request GNOME/gtk!4583
panoplie [Thu, 24 Feb 2022 22:36:58 +0000 (23:36 +0100)]
gtkeventcontrollerscroll: Map surface scroll unit in discrete steps
panoplie [Tue, 22 Feb 2022 13:12:44 +0000 (14:12 +0100)]
recorder: Show scroll events deltas unit
panoplie [Mon, 28 Feb 2022 20:45:06 +0000 (21:45 +0100)]
gtkrange: Add scroll unit handling
panoplie [Mon, 21 Feb 2022 15:24:00 +0000 (16:24 +0100)]
gtkscrolledwindow: Add scroll unit handling
On the "scroll" signal, the widget uses
gtk_event_controller_scroll_get_unit() to get the
scroll unit.
When the unit is GDK_SCROLL_UNIT_WHEEL, the
behavior is unchanged: the widget scrolls a
certain number of pixels at each wheel detent
click. This number of pixels is determined by the
window dimensions in get_wheel_detent_scroll_step().
When the delta unit is GDK_SCROLL_UNIT_SURFACE, the
widget directly adds the delta to the number of
scrolled pixels no matter the window dimensions.
panoplie [Mon, 21 Feb 2022 15:23:24 +0000 (16:23 +0100)]
gtkeventcontrollerscroll: Add scroll unit getter
The scroll unit is accessible through
gtk_event_controller_scroll_get_unit() after the
"scroll" signal reception.
panoplie [Mon, 21 Feb 2022 15:22:57 +0000 (16:22 +0100)]
gdk: Add enum to indicate the unit of scroll deltas
Add a new GdkScrollUnit enum that represent the
unit of scroll deltas provided by GdkScrollEvent.
The unit is accessible through
gdk_scroll_event_get_unit().
Christian Hergert [Fri, 18 Mar 2022 21:55:13 +0000 (14:55 -0700)]
gsk/gl: use consistent library naming
Christian Hergert [Fri, 18 Mar 2022 21:51:41 +0000 (14:51 -0700)]
gsk/gl: make texture libraries more autonomous
This moves a lot of the texture atlas control out of the driver and into
the various texture libraries through their base GskGLTextureLibrary class.
Additionally, this gives more control to libraries on allocating which can
be necessary for some tooling such as future Glyphy integration.
As part of this, the 1x1 pixel initialization is moved to the Glyph library
which is the only place where it is actually needed.
The compact vfunc now is responsible for compaction and it allows for us
to iterate the atlas hashtable a single time instead of twice as we were
doing previously.
The init_atlas vfunc is used to do per-library initialization such as
adding a 1x1 pixel in the Glyph cache used for coloring lines.
The allocate vfunc purely allocates but does no upload. This can be useful
for situations where a library wants to reuse the allocator from the
base class but does not want to actually insert a key/value entry. The
glyph library uses this for it's 1x1 pixel.
In the future, we will also likely want to decouple the rectangle packing
implementation from the atlas structure, or at least move it into a union
so that we do not allocate unused memory for alternate allocators.
Christian Hergert [Fri, 18 Mar 2022 19:48:43 +0000 (12:48 -0700)]
gsk/gl: pin atlases to single texture library
This removes the sharing of atlases across various texture libraries. Doing
so is necessary so that atlases can have different semantics for how they
allocate within the texture as well as potentially allowing for different
formats of texture data.
For example, in the future we might store non-pixel data in the textures
such as Glyphy or even keep glyphs with color content separate from glyphs
which do not and can use alpha channel only.
Christian Hergert [Thu, 17 Mar 2022 23:50:51 +0000 (16:50 -0700)]
gsk/gl: add more control over shader generation
This allows the gskglprograms.defs a bit more control over how a shader
will get generated and if it needs to combine sources. Currently, none of
the built-in shaders do that, but upcoming shaders which come from external
libraries will need the ability to inject additional sources in-between
layers.
Christian Hergert [Thu, 17 Mar 2022 23:48:54 +0000 (16:48 -0700)]
gsk/gl: rename glyphs to glyphs_library
This naming style is less likely to collide with shader naming and makes
it clear where it is consumed what it is.
Christian Hergert [Thu, 17 Mar 2022 23:43:58 +0000 (16:43 -0700)]
gsk/gl: allow configuring atlas size
Christian Hergert [Mon, 14 Mar 2022 23:22:52 +0000 (16:22 -0700)]
gsk/gl: check for format as well
This could potentially happen if a uniform had never been set.
Christian Hergert [Tue, 15 Mar 2022 22:55:30 +0000 (15:55 -0700)]
gsk/gl: only clear glyph cache durign reclaimation
We don't need to clear the front cache on every frame as we can clear it
specifically when we do reclaimation to avoid unnecessary memset() calls.
Christian Hergert [Tue, 15 Mar 2022 22:53:47 +0000 (15:53 -0700)]
gsk/gl: ignore max_entry_size when zero
If the max_entry_size is zero, then assume we can add anything to the
atlas. This allows for situations where we might be uploading an arc list
to the atlas instead of pixel data for GPU font rendering.
Christian Hergert [Tue, 15 Mar 2022 22:52:44 +0000 (15:52 -0700)]
gsk/gl: make max-frame-age configurable
This is nice for some texture libraries that we might want to keep around
for longer than say 60 frames such as a glyph cache.
Matthias Clasen [Fri, 18 Mar 2022 04:59:57 +0000 (00:59 -0400)]
gtk-demo: Don't hardcode a title font
We want a large font size, but we don't have to
hardcode Sans.
Matthias Clasen [Thu, 17 Mar 2022 16:57:09 +0000 (16:57 +0000)]
Merge branch 'filefilter-suffixes' into 'main'
filefilter: Fix <suffixes> in buildable
See merge request GNOME/gtk!4581
James Westman [Thu, 17 Mar 2022 15:49:39 +0000 (10:49 -0500)]
filefilter: Fix <suffixes> in buildable
A bug in GtkFileFilter's GtkBuildable implementation caused the
<suffixes> tag not to be recognized.
Milo Casagrande [Thu, 17 Mar 2022 08:35:42 +0000 (08:35 +0000)]
Update Italian translation
(cherry picked from commit
3e4bfa2bae9c6e90005b57d9f9fe47d2301f0e0e)
Milo Casagrande [Thu, 17 Mar 2022 08:34:04 +0000 (08:34 +0000)]
Update Italian translation
(cherry picked from commit
9bbf09fb0a9dbd8ae2c9e64a842138f182681d14)
Мирослав Николић [Thu, 17 Mar 2022 06:04:15 +0000 (06:04 +0000)]
Update Serbian translation
(cherry picked from commit
c874f65d95beef98c99297f05bbed64e7e932f02)
Carlos Garnacho [Wed, 16 Mar 2022 18:52:24 +0000 (18:52 +0000)]
Merge branch 'wip/carlosg/im-wayland-serials' into 'main'
gtk/imwayland: Use serial to control outbound messages
Closes #3641
See merge request GNOME/gtk!4398
Carlos Garnacho [Tue, 18 Jan 2022 22:31:09 +0000 (23:31 +0100)]
gtk/imwayland: Use serial to control outbound messages
Following the text-input protocol changes at
https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/115,
use the serial number to have the client push changes to the
zwp_text_input_v3 object only after compositor/client states match.
This specifically is more lenient to compositors pushing multiple
.done events ahead of the client replying to them.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3641