Michael Catanzaro [Wed, 27 Sep 2023 00:25:41 +0000 (19:25 -0500)]
printoperation: add some assertions
Let's assert that we schedule the idle callback exactly once.
These assertions are not perfect because if the callback executes before
we schedule it, then the assertion itself would be a use-after-free,
since I'm using the PrinterFinder to track whether the callback that
frees it has been scheduled. But in practice when using loupe's print
dialog, I was noticing the callback scheduled twice before it was
executed. The assertion would have caught this problem.
Michael Catanzaro [Tue, 26 Sep 2023 23:52:37 +0000 (18:52 -0500)]
printoperation: fix another case where operation may complete twice
This is a little tricky. At first, I thought we had a codepath where we
fail to schedule the idle that completes the print operation: if we take
the gtk_print_backend_printer_list_is_done path for each printer
backend, then printer_list_done_cb() is never executed and we never
schedule the idle. But in fact, in this case, then backends == NULL at
the bottom of find_printer(), and we'll schedule the idle there, so it's
OK. Except it's not really OK, because we'll schedule it even if a
printer was already found, resulting in the callback completing twice
and a double free.
Simplify this. Schedule the idle in find_printer() only if there are
*initially* no backends, not also if all backends are immediately ready
and already removed from consideration. Instead, always call
printer_list_done_cb() for every backend in find_printer_init(). After
the previous commit, printer_list_done_cb() will schedule the idle when
appropriate.
printer_list_done_cb() additionally disconnects signals that we did not
connect in this codepath, but it does so using
g_signal_handlers_disconnect_by_func, which is harmless. Otherwise, the
only extra work it's doing is scheduling the idle, and that's exactly
what find_printer_init() is missing.
Michael Catanzaro [Tue, 26 Sep 2023 23:47:01 +0000 (18:47 -0500)]
printoperation: fix case where operation may complete multiple twice
If we are the final backend, then after removing ourselves there is no
backend remaining. We will schedule the idle even if it has already been
scheduled. This idle is required to run exactly once and executing it
twices results in a double free that crashes loupe when printing. It
also causes the user callback to execute twice, which could cause
similar problems.
Fixes #6122
Christian Hergert [Tue, 26 Sep 2023 20:21:06 +0000 (13:21 -0700)]
gsk/gl: use GdkArrayImpl for tracking modelview
Like the previous change, this uses GdkArrayImpl instead of GArray for
tracking modelview changes. This is less important than clip tracking
simple due to being used less, but it keeps the implementation synchronous
with the Clip tracking code.
Christian Hergert [Tue, 26 Sep 2023 20:08:45 +0000 (13:08 -0700)]
gsk/gl: use GdkArrayImpl for Clip tracking
We can end up spending a lot of time in g_array_maybe_expand() through the
use of g_array_set_size() for clip tracking. That is somewhat due to the
simple nature of GArray being size-dynamic. Instead, we can use
GdkArrayImpl and let the compiler do what it does best to elide some
work and hoist other work into the calling function.
This also fixes a potential UAF in gsk_gl_render_job_push_contained_clip().
Christian Hergert [Tue, 26 Sep 2023 17:46:21 +0000 (10:46 -0700)]
gdk: add missing G_END_DECLS to gdkarrayimpl.c
Emmanuele Bassi [Tue, 26 Sep 2023 13:44:05 +0000 (14:44 +0100)]
broadway: Do not add an extra reference when caching textures
We just created a GdkTexture, so we don't need to acquire a reference if
we're transferring the ownership to the node cache.
Emmanuele Bassi [Tue, 26 Sep 2023 13:40:37 +0000 (14:40 +0100)]
broadway: Plug another leak
When getting a colorized texture we're downloading the texture as a
Cairo surface, and then feeding it to another texture, but we never drop
the reference of the new surface.
Emmanuele Bassi [Tue, 26 Sep 2023 11:57:52 +0000 (12:57 +0100)]
docs: Clarify the behaviour of gdk_texture_new_for_surface()
Cairo surfaces are not GObject instances, so we should be more explicit
in the behaviour of the memory management, to avoid leaks.
Emmanuele Bassi [Tue, 26 Sep 2023 11:49:32 +0000 (12:49 +0100)]
broadway: Plug a leak in the GSK renderer
We are leaking the Cairo image surface when creating a new node.
Fixes: #6120
Benjamin Otte [Wed, 20 Sep 2023 00:46:47 +0000 (02:46 +0200)]
array: Compute new size properly
Using "1 << x" means that we are shifting a signed 32bit integer, but we
want a gsize, which is an unsigned 64bit integer.
So now we don't overflow anymore if the array reaches a size of 2GB.
Benjamin Otte [Tue, 29 Aug 2023 17:34:38 +0000 (19:34 +0200)]
gdk: Fix compiler warning
gcc's -Wlto-type-mismatch found the hack, where we copied the wrong
prototype.
Benjamin Otte [Mon, 25 Sep 2023 20:10:53 +0000 (22:10 +0200)]
treeview: Fix crash in assertion
The fix in commit
a267dfac5d25d4ba5c1a95c82999d008fee07ac3 is wrong.
The function can return FALSE in normal operation.
Instead do a check for node == NULL that gracefully returns FALSE instead.
Fixes: #6114
Matthias Clasen [Sun, 24 Sep 2023 12:32:13 +0000 (08:32 -0400)]
Improve FOO_DEBUG=help output
Explain the all value a bit better.
Alice Mikhaylenko [Sun, 24 Sep 2023 11:22:36 +0000 (15:22 +0400)]
dialog: Check header bar type before calling track_default_decoration()
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/6116
Alice Mikhaylenko [Sun, 24 Sep 2023 11:21:43 +0000 (15:21 +0400)]
header-bar: Add a precondition to track_default_decoration()
Matthias Clasen [Sat, 23 Sep 2023 11:47:09 +0000 (07:47 -0400)]
gtk-demo: Fix a refcounting mishap
gtk_font_dialog_button_new's argument is
transfer full.
Fixes: #6113
Emmanuele Bassi [Thu, 21 Sep 2023 14:28:37 +0000 (15:28 +0100)]
docs: Mention for what GtkStringObject:string is useful
Emmanuele Bassi [Thu, 21 Sep 2023 14:27:35 +0000 (15:27 +0100)]
docs: Link GtkStringObject from GtkStringList
A frequently asked question is: "what is the object type inside a
GtkStringList", so let's make the answer more obvious.
Emmanuele Bassi [Tue, 15 Aug 2023 10:06:36 +0000 (11:06 +0100)]
docs: Add a link to the DropDown:selected property
The main description is a bit too coy, and some newcomers don't
understand the concept of properties and notification.
Jürgen Benvenuti [Tue, 26 Sep 2023 20:37:59 +0000 (20:37 +0000)]
Update German translation
Aurimas Černius [Mon, 25 Sep 2023 19:58:03 +0000 (19:58 +0000)]
Update Lithuanian translation
Rafael Fontenelle [Mon, 25 Sep 2023 12:58:37 +0000 (12:58 +0000)]
Update Brazilian Portuguese translation
Piotr Drąg [Sun, 24 Sep 2023 12:16:38 +0000 (14:16 +0200)]
Update Polish translation
Kristjan SCHMIDT [Sat, 23 Sep 2023 16:41:34 +0000 (16:41 +0000)]
Update Esperanto translation
Danial Behzadi [Sat, 23 Sep 2023 15:15:29 +0000 (15:15 +0000)]
Update Persian translation
Balázs Úr [Fri, 22 Sep 2023 22:25:30 +0000 (22:25 +0000)]
Update Hungarian translation
Asier Sarasua Garmendia [Thu, 21 Sep 2023 17:28:05 +0000 (17:28 +0000)]
Update Basque translation
Yuri Chornoivan [Thu, 21 Sep 2023 16:21:33 +0000 (16:21 +0000)]
Update Ukrainian translation
Baurzhan Muftakhidinov [Thu, 21 Sep 2023 15:28:54 +0000 (15:28 +0000)]
Update Kazakh translation
Luca Bacci [Thu, 21 Sep 2023 12:42:02 +0000 (12:42 +0000)]
Merge branch 'fix-issue-6080-gtk-4-12' into 'gtk-4-12'
GdkWin32: Unref GdkMonitor after calling gdk_monitor_invalidate () [4.12]
See merge request GNOME/gtk!6412
Daniel Rusek [Thu, 21 Sep 2023 12:40:07 +0000 (12:40 +0000)]
Update Czech translation
Fran Dieguez [Thu, 21 Sep 2023 10:14:55 +0000 (10:14 +0000)]
Update Galician translation
Daniel Mustieles [Thu, 21 Sep 2023 09:33:07 +0000 (11:33 +0200)]
Updated Spanish translation
Daniel Mustieles [Thu, 21 Sep 2023 09:32:58 +0000 (11:32 +0200)]
Updated Spanish translation
Ekaterine Papava [Thu, 21 Sep 2023 03:44:05 +0000 (03:44 +0000)]
Update Georgian translation
Emin Tufan Çetin [Wed, 20 Sep 2023 23:56:15 +0000 (23:56 +0000)]
Update Turkish translation
Anders Jonsson [Wed, 20 Sep 2023 20:58:08 +0000 (20:58 +0000)]
Update Swedish translation
Matthias Clasen [Wed, 20 Sep 2023 20:29:26 +0000 (16:29 -0400)]
Post-release version bump
Matthias Clasen [Wed, 20 Sep 2023 20:17:25 +0000 (16:17 -0400)]
4.12.2
Matthias Clasen [Tue, 19 Sep 2023 18:46:07 +0000 (14:46 -0400)]
gtk4-demo: Fix a crash
This conversion of GtkStatusbar was a bit too
quick.
Fixes: #6107
Carlos Garnacho [Mon, 18 Sep 2023 20:04:32 +0000 (22:04 +0200)]
gdk/wayland: Use toplevel surface for activation
At the moment of launching/activating an application, the
keyboard focus may be on a transient surface that quickly
disappears after activation. If this happens, and the
compositor handles surface destruction before the activated
application gets to reply, the activation request may be
deemed outdated, and the "demands attention" paths be taken.
Peek the toplevel from the focus surface, as that has larger
guarantees to remain valid for the whole duration of the
operation.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5820
Carlos Garnacho [Mon, 18 Sep 2023 17:42:41 +0000 (19:42 +0200)]
gtkwindow: Pick a suitable widget to continue the implicit grab
When a widget in the GtkPointerFocus stack becomes insensitive, we've
so far broken the implicit grab entirely. This has the side effect of
breaking accounting of the active state on the widgets that are
ancestors of the widget that became insensitive.
The easiest, and most consistent thing to do (i.e. giving widgets
in the GtkPointerFocus stack certain level of isolation wrt state
changes in other widgets) is to transfer the implicit grab to the
topmost actor of the GtkPointerFocus stack that can keep handling
events.
This fixes the unbalanced accounting of active state on ancestors
of widgets becoming insensitive, and avoids thorny questions about
how to handle implicit active state with broken implicit grabs.
Carlos Garnacho [Mon, 18 Sep 2023 17:40:05 +0000 (19:40 +0200)]
gtkwindow: Clear active state on sensitiveness changes
When altering the broken implicit grab due to sensitiveness changes,
also ensure to clear the active state from the affected actors. This
fixes unbalanced implicit active state accounting on the widgets going
insensitive.
Closes: https://gitlab.gnome.org/GNOME/gtk/-/issues/5529
Carlos Garnacho [Mon, 18 Sep 2023 14:55:54 +0000 (16:55 +0200)]
gtkmain: Drop redundant code
The common ancestor is already figured out at the beginning of the
function, no need to find it again.
Sergey Bugaev [Tue, 5 Sep 2023 05:39:35 +0000 (08:39 +0300)]
text: Respect focus-on-click property
It does make sense to have GtkText not focus on click in some cases,
such as when its editable property is set to false.
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Sergey Bugaev [Fri, 25 Aug 2023 16:13:43 +0000 (19:13 +0300)]
colorbutton, fontbutton: Propagate focus-on-click to inner buttons
These widgets wrap a GtkButton internally. Make it possible to prevent
the inner button from grabbing focus on click by propagating the value
of the focus-on-click property from the widget to the inner button.
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Benjamin Otte [Mon, 18 Sep 2023 05:48:10 +0000 (07:48 +0200)]
gsk: Fix clipping error when drawing shadows
When shadows were offset - in particular when offset so the original
source was out of bounds of the result - the drawing code would create a
pattern for it that didn't include enough of it to compose a shadow.
Fix that by not creating those patterns anymore, but instead drawing the
source (potentially multiple times) at the required offsets.
While that does more drawing, it simplifies the shadow node draw code,
and that's the primary goal of the Cairo rendering.
Test included.
Benjamin Otte [Sun, 17 Sep 2023 04:26:16 +0000 (06:26 +0200)]
gl: gradients should transition in unpremultiplied space
So make the gradient shaders do that.
Matthias Clasen [Sun, 17 Sep 2023 14:19:05 +0000 (10:19 -0400)]
inspector: Don't set a NULL fontdesc
The font dialog button does not like that.
Fixes: #5988
Benjamin Otte [Sat, 16 Sep 2023 16:18:58 +0000 (12:18 -0400)]
treeview: No gcc, node is not NULL
... so I'll add an assertion just for you.
Benjamin Otte [Sat, 16 Sep 2023 16:17:57 +0000 (12:17 -0400)]
treemodelfilter: Yes gcc, both if branches are empty
... if assertions are disabled.
Benjamin Otte [Wed, 13 Sep 2023 18:35:02 +0000 (20:35 +0200)]
render-node-tool: Actually load files properly
Benjamin Otte [Mon, 11 Sep 2023 03:17:56 +0000 (05:17 +0200)]
gl: Change rounded_rect_shrink()
The code now follows gsk_rounded_rect_shrink() and with it the behavior
of the Cairo renderer and Webkit.
The old code did what the GL renderer and Cairo do, but I consider that
wrong.
I did not test Chrome.
Test attached
Benjamin Otte [Fri, 8 Sep 2023 17:05:11 +0000 (19:05 +0200)]
css: Snapshot opacity filter as opacity node
We were using color-matrix because it was easier, but opacity can often
be optimized when color-matrix needs offscreens.
Benjamin Otte [Thu, 7 Sep 2023 21:02:37 +0000 (23:02 +0200)]
glrenderer: Shadows without offset do exist
Not for opaque contents, but stuff can be semi-transparent.
Testcase included.
Benjamin Otte [Thu, 7 Sep 2023 20:57:57 +0000 (22:57 +0200)]
rendernode: Shadow nodes need offscreen for opacity
Otherwise the shadow will not be properly computed as opaque regions
become translucent after applying opacity.
Testcase included.
Sergey Bugaev [Thu, 14 Sep 2023 16:09:20 +0000 (19:09 +0300)]
switch: Fix CSS nodes documentation
A switch contains two GtkImage's whose nodes are named 'image',
not 'label'.
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Sergey Bugaev [Thu, 14 Sep 2023 16:04:24 +0000 (19:04 +0300)]
switch: Respect text direction
In RTL, we want the active state to mean the handle is on the left.
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/1489
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Matthias Clasen [Wed, 13 Sep 2023 20:56:47 +0000 (16:56 -0400)]
gl renderer: Don't assume an atlas
The source uniform may or may not point
to a glyph atlas. The optimization we do
for color nodes is only possible if it does,
so check this.
Fixes: #6094
Matthias Clasen [Wed, 13 Sep 2023 20:55:01 +0000 (16:55 -0400)]
gl renderer: Keep track of source
We have an optimization that depends on having
the source be a glyph atlas, so keep track of
that information in the render job.
Matthias Clasen [Wed, 13 Sep 2023 17:33:07 +0000 (13:33 -0400)]
rendernode: Fix handling of color glyphs
The rendernode parser was mixing up its flags.
Test included.
Related: #6075
Luca Bacci [Wed, 13 Sep 2023 14:49:09 +0000 (16:49 +0200)]
macOS: Fix typos
Michael Catanzaro [Fri, 8 Sep 2023 21:21:33 +0000 (16:21 -0500)]
Fix documentation of gdk_display_put_event()
This function is deprecated, but we should still document it properly.
It appends, not prepends. This is clear enough from its implementation,
but also we have practical experience with WebKit in:
https://github.com/WebKit/WebKit/pull/8663
Matthias prefers to avoid the prepend, append, start, and end
terminology altogether.
Jonas Ådahl [Tue, 12 Sep 2023 13:51:59 +0000 (21:51 +0800)]
wayland: Bind correct xdg_wm_base version
Otherwise we won't get the suspend state.
Michael Catanzaro [Fri, 8 Sep 2023 16:46:26 +0000 (11:46 -0500)]
Fix typo
Benjamin Otte [Sun, 27 Aug 2023 19:02:03 +0000 (21:02 +0200)]
rendernode-tool: Fix array size
Also add an assertion, so things explode properly if we forget to
update the array size when adding new nodes, instead of writing random
memory.
Benjamin Otte [Thu, 7 Sep 2023 14:02:09 +0000 (16:02 +0200)]
rendernode: Fix Cairo rendering of repeating gradients
Cairo and the GL renderer have a different idea of how to handle
transitioning of colors outside the defined range.
Consider these stops:
black 50%, white 50%
What color is at 0%?
Cairo would transition between the last and first stop, ie it'd do a
white-to-black transition and end up at rgb(0.5,0.5,0.5) at 0%.
GL would behave as it would for non-repeating gradients and use black
for the range [0%..50%] and white for [50%..100%].
The web would rescale the range so the first stop would be at 0% and
the last stop would be at 100%, so this gradient would be illegal.
Considering that it's possible for code to transition between the
different behaviors by adding explicit stops at 0%/100%, I could choose
any method.
So I chose the simplest one, which is what the GL renderer does and
which treats repeating and non-repeating gradients the same.
Tests attached.
Sergey Bugaev [Sat, 2 Sep 2023 18:31:18 +0000 (21:31 +0300)]
entry, searchentry: Fix measuring baseline
If the entry has icons, we may end up increasing our minimum and natural
height compared to the values the text child returned. In that case, we
should also adjust the baseline values to account for the text being
shifted down.
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Sergey Bugaev [Sat, 2 Sep 2023 18:22:58 +0000 (21:22 +0300)]
centerlayout: Fix measuring in presence of baselines
The measure logic (unlike the allocation logic) was enforcing strict
baseline alignment of child widgets even if no child widget had valign
set to baseline. This was causing GtkCenterLayout to request more size
than it actually needed.
Instead, bring the logic closer to that of GtkBoxLayout by introducing
explicit have_baseline and align_baseline variables. We track and report
baseline if have_baseline gets set, but it only affects our reported
minimum and natural sizes if align_baseline ends up set, which happens
if there's a child widget that has valign set to either one of the two
baseline values, and itself reports a valid baseline.
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
G.Willems [Fri, 1 Sep 2023 22:04:54 +0000 (00:04 +0200)]
theme: use relative font sizes
This allows text to properly scale when changing the default font size.
Matthias Clasen [Tue, 29 Aug 2023 16:18:49 +0000 (12:18 -0400)]
composetable: Warn for things we can't handle
The compose table stores the keyvals to match against
in a guint16 array, so it can't handle directly encoded
Unicode codepoints (which have a high bit set). Warn
if we encounter those.
Matthias Clasen [Mon, 28 Aug 2023 20:38:47 +0000 (16:38 -0400)]
composetable: Accept short compose sequences
Followup to
8931169e0026b2db. That commit did
not do enough work to actually accept sequences
of lenth 1, as pointed by Mike Fabian.
Mike FABIAN [Tue, 8 Aug 2023 15:52:09 +0000 (17:52 +0200)]
Add test case for single char compose sequence
Matthias Clasen [Tue, 29 Aug 2023 16:56:25 +0000 (12:56 -0400)]
gsk: Clean up standalone headers
We require folks to include gskglrenderer.h in order
to create a GL renderer. So we be careful to only
include header in gskglrenderer.h that won't trigger
ugly warnings.
See !6363
Michael Orlitzky [Mon, 28 Aug 2023 19:27:46 +0000 (15:27 -0400)]
testsuite/gsk: add explicit dimensions to <svg> elements
Without an explicit width, height, and viewBox, there is no single
correct way to render an SVG. In the absense of said information,
librsvg is capable of making a guess by rendering the SVG to a Cairo
surface and then analyzing that surface; however, this process is
merely heuristic.
There are three GTK tests for SVG images that are missing dimensions.
While this is not a violation of the SVG specification, it does
implicitly couple the test to the librsvg rendering heuristic. In this
commit we add that dimension information so that the expected result
is unambiguous.
Sergey Bugaev [Wed, 23 Aug 2023 15:13:16 +0000 (18:13 +0300)]
snapshot, gsktransform: Mention that rotation happens around (0, 0)
...and not around the center of the render node, as one could expect
given that the render node syntax for rotation, transform: rotate(90);,
happens to match the CSS syntax for the same thing, and CSS does rotate
around the center by default.
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Sergey Bugaev [Wed, 23 Aug 2023 14:39:44 +0000 (17:39 +0300)]
snapshot: Fix push_repeat () with empty child bounds
The logic would confuse empty child bounds (in which case nothing should
get rendered) with NULL child bounds (in which case the child node's own
bounds should get used). In fact, if the child bounds are empty, we can
discard the descendant render nodes completely, getting a nice little
optimization.
Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Matthias Clasen [Fri, 25 Aug 2023 12:37:22 +0000 (08:37 -0400)]
demo: Fix a bug without GL
The gears widget was just not unrealizing properly
when GL is not available. Fix that.
Fixes: #6059
Luca Bacci [Tue, 19 Sep 2023 16:46:41 +0000 (18:46 +0200)]
GdkWin32: Unref GdkMonitor after calling gdk_monitor_invalidate ()
Ensure that we have a reference when calling gdk_monitor_invalidate ()
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/6080
Nathan Follens [Tue, 19 Sep 2023 12:31:33 +0000 (12:31 +0000)]
Update Dutch translation
Boyuan Yang [Tue, 19 Sep 2023 01:39:41 +0000 (01:39 +0000)]
Update Chinese (China) translation
Boyuan Yang [Tue, 19 Sep 2023 01:35:49 +0000 (01:35 +0000)]
Update Chinese (China) translation
Rūdolfs Mazurs [Mon, 18 Sep 2023 13:29:49 +0000 (13:29 +0000)]
Update Latvian translation
Martin [Sat, 16 Sep 2023 10:12:05 +0000 (10:12 +0000)]
Update Slovenian translation
Luca Bacci [Wed, 13 Sep 2023 16:46:41 +0000 (16:46 +0000)]
Merge branch 'macos-gtk-4-12' into 'gtk-4-12'
macOS: Clamp damage region to surface size [GTK 4.12]
See merge request GNOME/gtk!6389
Milo Casagrande [Wed, 13 Sep 2023 16:28:30 +0000 (16:28 +0000)]
Update Italian translation
Luca Bacci [Wed, 13 Sep 2023 14:50:08 +0000 (16:50 +0200)]
macOS: Clamp damage region to surface size
...in _gdk_macos_cairo_context_begin_frame ()
GdkMacosCairoContext needs regions that are clamped to the
actual surface size.
Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5812
Luca Bacci [Wed, 13 Sep 2023 13:37:39 +0000 (13:37 +0000)]
Merge branch 'gtk-4-12-ssd' into 'gtk-4-12'
[4.12] win32: Fix minimize and maximize buttons missing on ssd
See merge request GNOME/gtk!6367
Rafael Fontenelle [Tue, 12 Sep 2023 16:42:23 +0000 (16:42 +0000)]
Update Brazilian Portuguese translation
Daniel Mustieles [Mon, 11 Sep 2023 08:49:42 +0000 (10:49 +0200)]
Updated Spanish translation
Andika Triwidada [Sat, 9 Sep 2023 15:06:05 +0000 (15:06 +0000)]
Update Indonesian translation
Changwoo Ryu [Thu, 7 Sep 2023 16:59:43 +0000 (16:59 +0000)]
Update Korean translation
Daniel Rusek [Thu, 7 Sep 2023 13:38:39 +0000 (13:38 +0000)]
Update Czech translation
Balázs Úr [Tue, 5 Sep 2023 19:13:36 +0000 (19:13 +0000)]
Update Hungarian translation
Fran Dieguez [Sun, 3 Sep 2023 18:57:27 +0000 (18:57 +0000)]
Update Galician translation
Aurimas Černius [Sun, 3 Sep 2023 18:20:12 +0000 (18:20 +0000)]
Update Lithuanian translation
Ask Hjorth Larsen [Sun, 3 Sep 2023 14:33:55 +0000 (14:33 +0000)]
Update Danish translation
Philipp Kiemle [Fri, 1 Sep 2023 22:19:17 +0000 (22:19 +0000)]
Update German translation
dgsasha [Wed, 31 May 2023 01:51:42 +0000 (21:51 -0400)]
win32: Fix minimize and maximize buttons missing on ssd
Completely fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/5142