Compare commits

..

59 Commits

Author SHA1 Message Date
Matthias Clasen c476c45007 gsk: Maintain clip info for glyph nodes
We can determine once whether we are contained, instead of doing
it again for every glyph.

The performance impact of this is hard to measure.
2024-02-25 18:26:00 -05:00
Matthias Clasen 5d05270ca7 gsk: Don't add images needlessly
Most likely, the image for all glyphs will be the same atlas,
so check first before calling the add_image function, which
will loop over all images.

This matches what the pattern code does for glyph nodes.

The performance impact of this is hard to measure.
2024-02-25 18:25:42 -05:00
Matthias Clasen 34fb85afd1 gsk: Split the glyph cache
Do the glyph cache lookup in two steps: First find a cache for
the given font+scale, then look up the glyph+flags. Since
font+scale change much less frequently (in particular, they are
the same for all glyphs in a text node), it makes sense to keep
the result of the last lookup around and check if it still fits.

Here are changes in running widget-factory with no-vsync:

                                      before    after
gsk_gpu_device_lookup_glyph_image     1.43%     1.02%
g_hash_table_lookup                   0.76%     0.43%
gsk_gpu_cached_glyph_equal            0.28%     0.21%
2024-02-25 13:47:32 -05:00
Matthias Clasen 05bc4a86c7 gsk: Keep scaled fonts around
Create the scaled font on demand, only when we need to render a glyph,
and keep it around while processing the remaining glyphs in the text
node, rather than recreating it over and over.
2024-02-25 09:35:56 -05:00
Matthias Clasen 93302cc42d gsk: Stop passing scale to glyph upload op
It is always 1.0 now, so there is no point. Instead of the scale,
print the font when doing verbose logging.
2024-02-25 09:35:56 -05:00
Matthias Clasen 976f45e614 gsk: Use a scaled font for glyph rendering
This changes the approach we take to rendering glyphs in the
presence of a scale transform: Instead of scaling the extents
and rendering to an image surface with device scale, simply
create a scaled font and use it for extents and rendering.

This avoids clipping problems with scaling of extents in
the presence of hinting.
2024-02-25 09:35:56 -05:00
Matthias Clasen befccc943a gsk: Add a way to get a scaled font
Add a function to change the size of a font while keeping everything
else the same. We use pango api for this if available.
2024-02-25 09:35:55 -05:00
Matthias Clasen ee5afdf919 Merge branch 'fix-inhibit-idle-warning' into 'main'
application: Prevent a warning

Closes #6470

See merge request GNOME/gtk!6942
2024-02-25 14:05:11 +00:00
Rūdolfs Mazurs 49a6b5d50a Update Latvian translation 2024-02-25 13:36:27 +00:00
Matthias Clasen dd7a0cbeb7 application: Prevent a warning
When we've handled a inhibit idle request via Wayland, there is
no need to call into the D-Bus inhibit api unless there's other
inhibit flags to handle.

Fixes: #6470
2024-02-25 08:21:05 -05:00
Sabri Ünal 38d808f3e2 Update Turkish translation 2024-02-25 13:08:46 +00:00
Andika Triwidada 16a608b9e5 Update Indonesian translation 2024-02-25 09:18:45 +00:00
Asier Sarasua Garmendia f1ff37e970 Update Basque translation 2024-02-25 06:41:43 +00:00
Baurzhan Muftakhidinov 71c68f5f36 Update Kazakh translation 2024-02-25 04:41:15 +00:00
Matthias Clasen 0d3265edc7 Merge branch 'more-monitor-madness' into 'main'
wayland: Fix handling of output scales more

Closes #6472

See merge request GNOME/gtk!6941
2024-02-25 02:19:08 +00:00
Matthias Clasen 854e40c60c wayland: Fix handling of output scales more
It turns out that the workaround in 7b380b2ffc was insufficient.
During initialization, we end up calling apply_monitor_changes()
while xdg_output is set, but xdg_output_geometry isn't. Be more
careful and prevent that from wreaking havoc with negative scales.

Fixes: #6472
2024-02-24 20:56:19 -05:00
Yaron Shahrabani 06f3b5dfd4 Update Hebrew translation 2024-02-24 16:37:47 +00:00
Matthias Clasen 05acb70d1c Merge branch 'matthiasc/for-main' into 'main'
wayland: Fix handling of output scales

See merge request GNOME/gtk!6940
2024-02-24 12:00:16 +00:00
Matthias Clasen 7b380b2ffc wayland: Fix handling of output scales
Wayland protocols, in their wisdom, replaced xdg_output_done
with wl_output_done, just to make it more fun to handle multiple
protocol versions.
2024-02-23 22:50:58 -05:00
Matthias Clasen f6e4b964b7 Merge branch 'gdkenums-formats' into 'main'
gdk: Improve docs for GdkMemoryFormat

See merge request GNOME/gtk!6939
2024-02-24 01:18:11 +00:00
Matthias Clasen 0b2d08f076 Merge branch 'fix-since-flag' into 'main'
gtkenums: Set since tag on POPOVER_MENU_SLIDING

See merge request GNOME/gtk!6938
2024-02-24 01:10:15 +00:00
Maximiliano Sandoval 1ad1a9fe4a gdkenums: Backtick the formats in docs 2024-02-24 01:12:59 +01:00
Maximiliano Sandoval fe15db92bd gdkenums: Add docs for missing formats 2024-02-24 01:12:57 +01:00
Maximiliano Sandoval 682b7773fc gdkenums: Document Since tags for memory formats 2024-02-24 00:43:21 +01:00
Maximiliano Sandoval 9055b6c6e5 gtkenums: Set since tag on POPOVER_MENU_SLIDING
See https://gitlab.gnome.org/GNOME/gtk/-/commit/d05f47a695f450ee81e4daae40de8a953283a273#note_2024930.
2024-02-24 00:19:18 +01:00
Danial Behzadi 9fd56dc5ad Update Persian translation 2024-02-23 20:50:54 +00:00
Matthias Clasen 1ec7f2bbcd Merge branch 'bilelmoussaoui/icons' into 'main'
icons: Set is_symbolic in IconPaintable.new_for_file

See merge request GNOME/gtk!6937
2024-02-23 20:42:45 +00:00
Bilal Elmoussaoui 4eb7208e35 icons: Set is_symbolic in IconPaintable.new_for_file
Otherwise symbolic icons won't be recognized as such.
Currently, in apps like Icon Library / App Icon Preview. Trying to
render the generated on-fly symbolic icons, require caching them in a
directory that mimics an icon theme and updating the search path of the
default gtk::IconTheme. That is mostly because
Gtk.IconPaintable.new_for_file wouldn't set is-symbolic even if the
passed file is a symbolic icon.
This would allow us to remove all the hacks in our apps
2024-02-23 18:43:06 +01:00
Andi Chandler 1ad88f7662 Update British English translation 2024-02-23 17:09:53 +00:00
Yuri Chornoivan 96b30073cf Update Ukrainian translation 2024-02-23 07:48:03 +00:00
Matthias Clasen 456956a2bd Merge branch 'matthiasc/for-main' into 'main'
entrybuffer: Fix some ubsan warnings

See merge request GNOME/gtk!6934
2024-02-23 01:47:25 +00:00
Matthias Clasen 4c794505da Merge branch 'michaelweghorn/a11y_report_empty_string' into 'main'
a11y: Report empty string as such

See merge request GNOME/gtk!6933
2024-02-23 01:06:10 +00:00
Matthias Clasen f627c9443e wayland: Quiet an ubsan complaint
unsigned char is promoted to int, which lacks the 32nd bit to
make 0xff << 24 work. Explicitly cast to unsigned int to make
it clear what we want to happen.
2024-02-22 19:57:02 -05:00
Matthias Clasen 06fa9befe0 tree model: Fix some ubsan warnings
memcpy() does not accept NULL as arguments.
2024-02-22 19:27:33 -05:00
Matthias Clasen a95dc5d609 entrybuffer: Fix some ubsan warnings
memcpy() does not accept NULL as argument.
2024-02-22 19:27:07 -05:00
Ekaterine Papava 2abe588e91 Update Georgian translation 2024-02-22 18:50:15 +00:00
Fran Dieguez ecdee288a7 Update Galician translation 2024-02-22 18:20:06 +00:00
Michael Weghorn e363fcca3c a11y: Report empty string as such
While the text data returned by the `get_contents`
function from the `GtkAccessibleTextInterface` does not
have to be NUL-terminated,
`gtk_accessible_text_get_contents` returns the
text contents as NUL-terminated UTF-8 data.

An empty string (returned as empty, i.e. size = 0,
but not NULL GBytes* data by `get_contents`) is valid, and
therefore also needs to be NUL-terminated, so do this.

Without this, e.g. querying the text of an empty paragraph
in the Gtk 4 variant of LibreOffice with the newly added
GtkAccessibleInterface implementation [1] gives an incorrect
result.

Previous sample use in Accerciser's IPython console:

    In [24]: acc.queryText().getText(0, -1)
    Out[24]: '[Invalid UTF-8]'

With this change in place, it now returns an empty
string as expected:

    In [25]: acc.queryText().getText(0, -1)
    Out[25]: ''

[1] https://git.libreoffice.org/core/commit/e268efd612d12ae9a459d6b9d0cb23220f025163
2024-02-22 18:16:37 +01:00
Matthias Clasen f46fb7c6fc Merge branch 'multilanguage-searching' into 'main'
Multilanguage searching for GtkEmojiChooser

This makes the Emoji chooser search look for strings in both
the current locale (if available), and in English. Each resource
file now contains the locale+English data. To accommodate the
changed dataset and schema, the recent-emoji settings key has
been renamed to recently-used-emoji.

See merge request GNOME/gtk!6804
2024-02-22 17:09:23 +00:00
Sudip Shil 985d964a34 Multilanguage searching for GtkEmojiChooser 2024-02-22 17:09:23 +00:00
Matthias Clasen 2a0286c19c Merge branch 'ebassi/issue-6462' into 'main'
a11y: Add "terminal" role

Closes #6462

See merge request GNOME/gtk!6932
2024-02-22 15:33:33 +00:00
Emmanuele Bassi 9a05af61e8 a11y: Map GTK terminal role to AT-SPI
AT-SPI has a terminal role for virtual terminals.

Fixes: #6462
2024-02-22 14:46:11 +00:00
Emmanuele Bassi 68d2e9c068 a11y: Add "terminal" role
Not in the WAI-ARIA spec, but UI toolkits have terminal widgets.
2024-02-22 14:46:11 +00:00
Ekaterine Papava 89ba937fd3 Update Georgian translation 2024-02-22 13:57:24 +00:00
Emmanuele Bassi 840cd6f10f Merge branch 'michaelweghorn/a11y_fix_atspi_getcharacteratoffset' into 'main'
a11y: Fix offset handling for AT-SPI GetCharacterAtOffset

See merge request GNOME/gtk!6931
2024-02-22 13:16:42 +00:00
Yuri Chornoivan cccfc1a38d Update Ukrainian translation 2024-02-22 12:53:09 +00:00
Michael Weghorn ff26aa2fa7 a11y: Fix offset handling for AT-SPI GetCharacterAtOffset
The text retrieved using `gtk_accessible_text_get_contents`
already contains only the character at the given offset,
and so the character is at index 0 in `str`, rather than at
the same offset again, so adjust this accordingly.

With this in place, querying the character in a
LibreOffice paragraph consisting of the text
"Hello world." now gives the expected results
with a pending LibreOffice change [1] to support
the new GtkAccessibleText interface:

    In [1]: text  = acc.queryText()
    In [2]: text.getCharacterAtOffset(0)
    Out[2]: 72
    In [3]: text.getCharacterAtOffset(1)
    Out[3]: 101
    In [4]: text.getCharacterAtOffset(2)
    Out[4]: 108
    In [5]: text.getCharacterAtOffset(3)
    Out[5]: 108
    In [6]: text.getCharacterAtOffset(4)
    Out[6]: 111

Previously, this would only work correctly
for an index of 0:

    In [1]: text = acc.queryText()
    In [2]: text.getCharacterAtOffset(0)
    Out[2]: 72
    In [3]: text.getCharacterAtOffset(1)
    Out[3]: 0
    In [4]: text.getCharacterAtOffset(2)
    Out[4]: 0
    In [5]: text.getCharacterAtOffset(3)
    Out[5]: 0
    In [6]: text.getCharacterAtOffset(4)
    Out[6]: 0

[1] https://gerrit.libreoffice.org/c/core/+/163733
2024-02-22 13:11:01 +01:00
Danial Behzadi 7192e67a6f Update Persian translation 2024-02-22 11:49:08 +00:00
Matthias Clasen 5354b91e64 Merge branch 'rendernode-tool-compare' into 'main'
rendernode tool: Add a compare command

See merge request GNOME/gtk!6930
2024-02-22 11:34:51 +00:00
Matthias Clasen c9c6b7bb2a rendernode tool: Add a compare command
This command can be used to compare the rendering of a node
to a reference image. It can also be used to compare the
renderings of two nodes, or to compare two images.
2024-02-21 22:27:32 -05:00
Matthias Clasen c93fa922dc Merge branch 'x11-shadow-fix' into 'main'
x11: Shadows require compositing

Closes #6464

See merge request GNOME/gtk!6928
2024-02-21 22:58:41 +00:00
Jordi Mas 8d7bfa2628 Update Catalan translation 2024-02-21 21:16:32 +01:00
Matthias Clasen e6a4cc8ba2 x11: Shadows require compositing
We can only do client-side shadows if we have an rgba visual
and a compositing wm.

Fallout from 6e7893d5.

Fixes: #6464
2024-02-21 12:35:02 -05:00
Matthias Clasen 7926ee68b8 Merge branch 'matthiasc/for-main' into 'main'
editable: Less draconian preconditions

Closes #6463

See merge request GNOME/gtk!6927
2024-02-21 12:37:04 +00:00
Matthias Clasen 239d47791d editable: Less draconian preconditions
Getting or deleting an empty string should be ok, and we do it
ourselves, e.g. in the file chooser.

Fixes: #6463
2024-02-21 07:14:44 -05:00
Daniel Mustieles 33f210bc85 Update Spanish translation 2024-02-21 11:38:09 +00:00
Matthias Clasen 021aae84dd Post-release version bump 2024-02-20 15:02:39 -05:00
Matthias Clasen e8508762f5 4.13.8 2024-02-20 15:02:39 -05:00
Matej Urbančič a0bbdfbeee Update Slovenian translation 2024-02-20 19:42:53 +00:00
69 changed files with 9409 additions and 4456 deletions
+5 -1
View File
@@ -1,4 +1,4 @@
Overview of Changes in 4.13.8, 20-02-2024
Overview of Changes in 4.13.9, xx-xx-xxxx
=========================================
Note: The new renderers and dmabuf support are using graphics drivers
@@ -7,6 +7,10 @@ in different ways than the old gl renderer, and trigger new driver bugs,
https://gitlab.gnome.org/GNOME/gtk/-/issues/6388). Therefore, it is
recommended to use the latest mesa release (24.0) with the new renderers.
Overview of Changes in 4.13.8, 20-02-2024
=========================================
* Accessibility:
- Add a GtkAccessibleText interface for allowing 3rd party
text widgets (notably vte) to be accessible
@@ -13,6 +13,7 @@ SYNOPSIS
| **gtk4-rendernode-tool** <COMMAND> [OPTIONS...] <FILE>
|
| **gtk4-rendernode-tool** benchmark [OPTIONS...] <FILE>
| **gtk4-rendernode-tool** compare [OPTIONS...] <FILE1> <FILE2>
| **gtk4-rendernode-tool** info [OPTIONS...] <FILE>
| **gtk4-rendernode-tool** render [OPTIONS...] <FILE> [<FILE>]
| **gtk4-rendernode-tool** show [OPTIONS...] <FILE>
@@ -75,7 +76,21 @@ and prints the runtimes.
the execution of the commands on the GPU. It can be useful to use this flag to test
command submission performance.
Compare
^^^^^^^
The ``compare`` command compares the rendering of a node with a reference image,
or the renderings of two nodes, or two images. If any differences are found, the
exit code is 1. If the images are identical, it is 0.
``--renderer=RENDERER``
Use the given renderer.
``--output=FILE``
Save the differences as a png image in ``FILE``.
``--quiet``
Don't write results to stdout.`
+177 -42
View File
@@ -309,67 +309,202 @@ typedef enum
* The color values are premultiplied with the alpha value.
* @GDK_MEMORY_R8G8B8A8_PREMULTIPLIED: 4 bytes; for red, green, blue, alpha
* The color values are premultiplied with the alpha value.
* @GDK_MEMORY_A8B8G8R8_PREMULTIPLIED: 4 bytes; for alpha, blue, green, red,
* The color values are premultiplied with the alpha value. Since 4.14
* @GDK_MEMORY_B8G8R8A8: 4 bytes; for blue, green, red, alpha.
* @GDK_MEMORY_A8R8G8B8: 4 bytes; for alpha, red, green, blue.
* @GDK_MEMORY_R8G8B8A8: 4 bytes; for red, green, blue, alpha.
* @GDK_MEMORY_A8B8G8R8: 4 bytes; for alpha, blue, green, red.
* @GDK_MEMORY_B8G8R8X8: 4 bytes; for blue, green, red, unused. Since 4.14
* @GDK_MEMORY_X8R8G8B8: 4 bytes; for unused, red, green, blue. Since 4.14
* @GDK_MEMORY_R8G8B8X8: 4 bytes; for red, green, blue, unused. Since 4.14
* @GDK_MEMORY_X8B8G8R8: 4 bytes; for unused, blue, green, red. Since 4.14
* @GDK_MEMORY_R8G8B8: 3 bytes; for red, green, blue. The data is opaque.
* @GDK_MEMORY_B8G8R8: 3 bytes; for blue, green, red. The data is opaque.
* @GDK_MEMORY_R16G16B16: 3 guint16 values; for red, green, blue. Since: 4.6
* @GDK_MEMORY_R16G16B16A16_PREMULTIPLIED: 4 guint16 values; for red, green,
* blue, alpha. The color values are premultiplied with the alpha value.
* Since: 4.6
* @GDK_MEMORY_R16G16B16A16: 4 guint16 values; for red, green, blue, alpha.
* Since: 4.6
* @GDK_MEMORY_R16G16B16_FLOAT: 3 half-float values; for red, green, blue.
* The data is opaque. Since: 4.6
* @GDK_MEMORY_R16G16B16A16_FLOAT_PREMULTIPLIED: 4 half-float values; for
* red, green, blue and alpha. The color values are premultiplied with
* the alpha value. Since: 4.6
* @GDK_MEMORY_R16G16B16A16_FLOAT: 4 half-float values; for red, green,
* blue and alpha. Since: 4.6
* @GDK_MEMORY_B32G32R32_FLOAT: 3 float values; for blue, green, red.
* The data is opaque. Since: 4.6
* @GDK_MEMORY_R32G32B32A32_FLOAT_PREMULTIPLIED: 4 float values; for
* red, green, blue and alpha. The color values are premultiplied with
* the alpha value. Since: 4.6
* @GDK_MEMORY_R32G32B32A32_FLOAT: 4 float values; for red, green, blue and
* alpha. Since: 4.6
* @GDK_MEMORY_G8A8_PREMULTIPLIED: 2 bytes; for grayscale, alpha. The color
* values are premultiplied with the alpha value. Since: 4.12
* @GDK_MEMORY_G8A8: 2 bytes; for grayscale, alpha. Since: 4.12
* @GDK_MEMORY_G8: One byte; for grayscale. The data is opaque.
* Since: 4.12
* @GDK_MEMORY_G16A16_PREMULTIPLIED: 2 guint16 values; for grayscale, alpha.
* The color values are premultiplied with the alpha value. Since: 4.12
* @GDK_MEMORY_G16A16: 2 guint16 values; for grayscale, alpha. Since: 4.12
* @GDK_MEMORY_G16: One guint16 value; for grayscale. The data is opaque.
* Since: 4.12
* @GDK_MEMORY_A8: One byte; for alpha.
* Since: 4.12
* @GDK_MEMORY_A16: One guint16 value; for alpha.
* Since: 4.12
* @GDK_MEMORY_N_FORMATS: The number of formats. This value will change as
* more formats get added, so do not rely on its concrete integer.
* @GDK_MEMORY_R32G32B32_FLOAT: 3 float values; for red, green, blue.
*
* `GdkMemoryFormat` describes formats that image data can have in memory.
*
* It describes formats by listing the contents of the memory passed to it.
* So GDK_MEMORY_A8R8G8B8 will be 1 byte (8 bits) of alpha, followed by a
* So `GDK_MEMORY_A8R8G8B8` will be 1 byte (8 bits) of alpha, followed by a
* byte each of red, green and blue. It is not endian-dependent, so
* CAIRO_FORMAT_ARGB32 is represented by different `GdkMemoryFormats`
* `CAIRO_FORMAT_ARGB32` is represented by different `GdkMemoryFormats`
* on architectures with different endiannesses.
*
* Its naming is modelled after
* [VkFormat](https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VkFormat)
* for details).
*/
/**
* GDK_MEMORY_A8B8G8R8_PREMULTIPLIED:
*
* 4 bytes; for alpha, blue, green, red, The color values are premultiplied with
* the alpha value.
*
* Since: 4.14
*/
/**
* GDK_MEMORY_B8G8R8X8:
*
* 4 bytes; for blue, green, red, unused.
*
* Since: 4.14
*/
/**
* GDK_MEMORY_X8R8G8B8:
*
* 4 bytes; for unused, red, green, blue.
*
* Since: 4.14
*/
/**
* GDK_MEMORY_R8G8B8X8:
*
* 4 bytes; for red, green, blue, unused.
*
* Since: 4.14
*/
/**
* GDK_MEMORY_X8B8G8R8:
*
* 4 bytes; for unused, blue, green, red.
*
* Since: 4.14
*/
/**
* GDK_MEMORY_R16G16B16:
*
* 3 guint16 values; for red, green, blue.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_R16G16B16A16_PREMULTIPLIED:
*
* 4 guint16 values; for red, green, blue, alpha. The color values are
* premultiplied with the alpha value.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_R16G16B16A16:
*
* 4 guint16 values; for red, green, blue, alpha.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_R16G16B16_FLOAT:
*
* 3 half-float values; for red, green, blue. The data is opaque.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_R16G16B16A16_FLOAT_PREMULTIPLIED:
*
* 4 half-float values; for red, green, blue and alpha. The color values are
* premultiplied with the alpha value.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_R16G16B16A16_FLOAT:
*
* 4 half-float values; for red, green, blue and alpha.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_B32G32R32_FLOAT:
*
* 3 float values; for blue, green, red. The data is opaque.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_R32G32B32A32_FLOAT_PREMULTIPLIED:
*
* 4 float values; for red, green, blue and alpha. The color values are
* premultiplied with the alpha value.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_R32G32B32A32_FLOAT:
*
* 4 float values; for red, green, blue and alpha.
*
* Since: 4.6
*/
/**
* GDK_MEMORY_G8A8_PREMULTIPLIED:
*
* 2 bytes; for grayscale, alpha. The color values are premultiplied with the
* alpha value.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_G8A8:
*
* 2 bytes; for grayscale, alpha.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_G8:
*
* One byte; for grayscale. The data is opaque.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_G16A16_PREMULTIPLIED:
*
* 2 guint16 values; for grayscale, alpha. The color values are premultiplied
* with the alpha value.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_G16A16:
*
* 2 guint16 values; for grayscale, alpha.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_G16:
*
* One guint16 value; for grayscale. The data is opaque.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_A8:
*
* One byte; for alpha.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_A16:
*
* One guint16 value; for alpha.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_A16_FLOAT:
*
* One half-float value; for alpha.
*
* Since: 4.12
*/
/**
* GDK_MEMORY_A32_FLOAT:
*
* One float value; for alpha.
*
* Since: 4.12
*/
typedef enum {
GDK_MEMORY_B8G8R8A8_PREMULTIPLIED,
GDK_MEMORY_A8R8G8B8_PREMULTIPLIED,
+4 -4
View File
@@ -266,10 +266,10 @@ _XcursorReadUInt (XcursorFile *file, XcursorUInt *u)
if ((*file->read) (file, bytes, 4) != 4)
return XcursorFalse;
*u = ((bytes[0] << 0) |
(bytes[1] << 8) |
(bytes[2] << 16) |
(bytes[3] << 24));
*u = ((((unsigned int)(bytes[0])) << 0) |
(((unsigned int)(bytes[1])) << 8) |
(((unsigned int)(bytes[2])) << 16) |
(((unsigned int)(bytes[3])) << 24));
return XcursorTrue;
}
+6 -4
View File
@@ -2437,12 +2437,13 @@ apply_monitor_change (GdkWaylandMonitor *monitor)
gboolean needs_scaling = FALSE;
double scale;
if (monitor->xdg_output_done)
if (monitor_has_xdg_output (monitor) &&
monitor->xdg_output_geometry.width != 0 &&
monitor->xdg_output_geometry.height != 0)
{
logical_geometry = monitor->xdg_output_geometry;
needs_scaling =
logical_geometry.width == monitor->output_geometry.width ||
logical_geometry.height == monitor->output_geometry.height;
needs_scaling = logical_geometry.width == monitor->output_geometry.width &&
logical_geometry.height == monitor->output_geometry.height;
}
else
{
@@ -2453,6 +2454,7 @@ apply_monitor_change (GdkWaylandMonitor *monitor)
if (needs_scaling)
{
int scale_factor = gdk_monitor_get_scale_factor (GDK_MONITOR (monitor));
logical_geometry.y /= scale_factor;
logical_geometry.x /= scale_factor;
logical_geometry.width /= scale_factor;
+6 -1
View File
@@ -1430,6 +1430,8 @@ gdk_x11_display_open (const char *display_name)
int maj, min;
char *cm_name;
gboolean frame_extents;
gboolean rgba;
gboolean composited;
XInitThreads ();
@@ -1646,7 +1648,10 @@ gdk_x11_display_open (const char *display_name)
frame_extents = gdk_x11_screen_supports_net_wm_hint (gdk_x11_display_get_screen (display),
g_intern_static_string ("_GTK_FRAME_EXTENTS"));
gdk_display_set_shadow_width (display, frame_extents);
rgba = gdk_display_is_rgba (display);
composited = gdk_display_is_composited (display);
gdk_display_set_shadow_width (display, frame_extents && rgba && composited);
gdk_display_emit_opened (display);
+137 -44
View File
@@ -11,6 +11,7 @@
#include "gdk/gdkprofilerprivate.h"
#include "gsk/gskdebugprivate.h"
#include "gsk/gskprivate.h"
#define MAX_SLICES_PER_ATLAS 64
@@ -32,6 +33,37 @@ typedef struct _GskGpuCachedGlyph GskGpuCachedGlyph;
typedef struct _GskGpuCachedTexture GskGpuCachedTexture;
typedef struct _GskGpuDevicePrivate GskGpuDevicePrivate;
typedef struct {
PangoFont *font;
float scale;
} FontCacheKey;
typedef struct {
PangoGlyph glyph;
GskGpuGlyphLookupFlags flags;
} GlyphCacheKey;
typedef struct {
FontCacheKey key;
GHashTable *cache;
} FontGlyphCache;
static void
font_glyph_cache_free (gpointer data)
{
FontGlyphCache *cache = data;
g_object_unref (cache->key.font);
g_hash_table_unref (cache->cache);
g_free (cache);
}
static FontGlyphCache no_font_cache = {
.key = { .font = NULL, .scale = -1 },
.cache = NULL
};
struct _GskGpuDevicePrivate
{
GdkDisplay *display;
@@ -44,6 +76,7 @@ struct _GskGpuDevicePrivate
GHashTable *texture_cache;
GHashTable *glyph_cache;
FontGlyphCache *last_font_cache;
GskGpuCachedAtlas *current_atlas;
@@ -68,14 +101,15 @@ struct _GskGpuCachedClass
struct _GskGpuCached
{
const GskGpuCachedClass *class;
GskGpuCachedAtlas *atlas;
GskGpuCached *next;
GskGpuCached *prev;
gint64 timestamp;
gboolean stale;
guint pixels; /* For glyphs and textures, pixels. For atlases, dead pixels */
unsigned int stale : 1;
unsigned int pixels : 31; /* For glyphs and textures, pixels. For atlases, dead pixels */
};
static inline void
@@ -360,10 +394,8 @@ struct _GskGpuCachedGlyph
{
GskGpuCached parent;
PangoFont *font;
PangoGlyph glyph;
GskGpuGlyphLookupFlags flags;
float scale;
FontGlyphCache *font_cache;
GlyphCacheKey glyph_key;
GskGpuImage *image;
graphene_rect_t bounds;
@@ -376,10 +408,17 @@ gsk_gpu_cached_glyph_free (GskGpuDevice *device,
{
GskGpuDevicePrivate *priv = gsk_gpu_device_get_instance_private (device);
GskGpuCachedGlyph *self = (GskGpuCachedGlyph *) cached;
FontGlyphCache *font_cache;
g_hash_table_remove (priv->glyph_cache, self);
font_cache = self->font_cache;
g_hash_table_remove (font_cache->cache, self);
if (g_hash_table_size (font_cache->cache) == 0)
{
if (priv->last_font_cache == font_cache)
priv->last_font_cache = &no_font_cache;
g_hash_table_remove (priv->glyph_cache, font_cache);
}
g_object_unref (self->font);
g_object_unref (self->image);
g_free (self);
@@ -402,15 +441,35 @@ gsk_gpu_cached_glyph_should_collect (GskGpuDevice *device,
return FALSE;
}
static guint
gsk_gpu_cached_font_hash (gconstpointer data)
{
const FontGlyphCache *cache = data;
const FontCacheKey *key = &cache->key;
return GPOINTER_TO_UINT (key->font) ^ ((guint) key->scale * PANGO_SCALE);
}
static gboolean
gsk_gpu_cached_font_equal (gconstpointer v1,
gconstpointer v2)
{
const FontGlyphCache *c1 = v1;
const FontCacheKey *key1 = &c1->key;
const FontGlyphCache *c2 = v2;
const FontCacheKey *key2 = &c2->key;
return key1->font == key2->font &&
key1->scale == key2->scale;
}
static guint
gsk_gpu_cached_glyph_hash (gconstpointer data)
{
const GskGpuCachedGlyph *glyph = data;
const GlyphCacheKey *key = &glyph->glyph_key;
return GPOINTER_TO_UINT (glyph->font) ^
glyph->glyph ^
(glyph->flags << 24) ^
((guint) glyph->scale * PANGO_SCALE);
return key->glyph ^ (key->flags << 24);
}
static gboolean
@@ -419,11 +478,11 @@ gsk_gpu_cached_glyph_equal (gconstpointer v1,
{
const GskGpuCachedGlyph *glyph1 = v1;
const GskGpuCachedGlyph *glyph2 = v2;
const GlyphCacheKey *key1 = &glyph1->glyph_key;
const GlyphCacheKey *key2 = &glyph2->glyph_key;
return glyph1->font == glyph2->font
&& glyph1->glyph == glyph2->glyph
&& glyph1->flags == glyph2->flags
&& glyph1->scale == glyph2->scale;
return key1->glyph == key2->glyph &&
key1->flags == key2->flags;
}
static const GskGpuCachedClass GSK_GPU_CACHED_GLYPH_CLASS =
@@ -622,10 +681,13 @@ gsk_gpu_device_init (GskGpuDevice *self)
{
GskGpuDevicePrivate *priv = gsk_gpu_device_get_instance_private (self);
priv->glyph_cache = g_hash_table_new (gsk_gpu_cached_glyph_hash,
gsk_gpu_cached_glyph_equal);
priv->glyph_cache = g_hash_table_new_full (gsk_gpu_cached_font_hash,
gsk_gpu_cached_font_equal,
NULL,
font_glyph_cache_free);
priv->texture_cache = g_hash_table_new (g_direct_hash,
g_direct_equal);
priv->last_font_cache = &no_font_cache;
}
void
@@ -889,40 +951,71 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
GskGpuGlyphLookupFlags flags,
float scale,
graphene_rect_t *out_bounds,
graphene_point_t *out_origin)
graphene_point_t *out_origin,
PangoFont **out_scaled_font)
{
GskGpuDevicePrivate *priv = gsk_gpu_device_get_instance_private (self);
GskGpuCachedGlyph lookup = {
.font = font,
.glyph = glyph,
.flags = flags,
.scale = scale
FontGlyphCache font_lookup = {
.key = { .font = font, .scale = scale }
};
GskGpuCachedGlyph *cache;
GskGpuCachedGlyph glyph_lookup = {
.glyph_key = { .glyph = glyph, .flags = flags }
};
FontGlyphCache *font_cache = NULL;
GskGpuCachedGlyph *cache = NULL;
PangoRectangle ink_rect;
graphene_rect_t rect;
graphene_point_t origin;
GskGpuImage *image;
gsize atlas_x, atlas_y, padding;
float subpixel_x, subpixel_y;
PangoFont *scaled_font;
cache = g_hash_table_lookup (priv->glyph_cache, &lookup);
if (cache)
if (priv->last_font_cache->key.font == font &&
priv->last_font_cache->key.scale == scale)
font_cache = priv->last_font_cache;
else
font_cache = g_hash_table_lookup (priv->glyph_cache, &font_lookup);
if (font_cache)
{
gsk_gpu_cached_use (self, (GskGpuCached *) cache, gsk_gpu_frame_get_timestamp (frame));
cache = g_hash_table_lookup (font_cache->cache, &glyph_lookup);
if (cache)
{
gsk_gpu_cached_use (self, (GskGpuCached *) cache, gsk_gpu_frame_get_timestamp (frame));
*out_bounds = cache->bounds;
*out_origin = cache->origin;
return cache->image;
*out_bounds = cache->bounds;
*out_origin = cache->origin;
priv->last_font_cache = font_cache;
return cache->image;
}
}
else
{
font_cache = g_new (FontGlyphCache, 1);
font_cache->key.font = g_object_ref (font);
font_cache->key.scale = scale;
font_cache->cache = g_hash_table_new (gsk_gpu_cached_glyph_hash,
gsk_gpu_cached_glyph_equal);
g_hash_table_insert (priv->glyph_cache, font_cache, font_cache);
}
priv->last_font_cache = font_cache;
if (*out_scaled_font)
scaled_font = *out_scaled_font;
else
scaled_font = gsk_get_scaled_font (font, scale);
subpixel_x = (flags & 3) / 4.f;
subpixel_y = ((flags >> 2) & 3) / 4.f;
pango_font_get_glyph_extents (font, glyph, &ink_rect, NULL);
origin.x = floor (ink_rect.x * scale / PANGO_SCALE + subpixel_x);
origin.y = floor (ink_rect.y * scale / PANGO_SCALE + subpixel_y);
rect.size.width = ceil ((ink_rect.x + ink_rect.width) * scale / PANGO_SCALE + subpixel_x) - origin.x;
rect.size.height = ceil ((ink_rect.y + ink_rect.height) * scale / PANGO_SCALE + subpixel_y) - origin.y;
pango_font_get_glyph_extents (scaled_font, glyph, &ink_rect, NULL);
origin.x = floor (ink_rect.x * 1.0 / PANGO_SCALE + subpixel_x);
origin.y = floor (ink_rect.y * 1.0 / PANGO_SCALE + subpixel_y);
rect.size.width = ceil ((ink_rect.x + ink_rect.width) * 1.0 / PANGO_SCALE + subpixel_x) - origin.x;
rect.size.height = ceil ((ink_rect.y + ink_rect.height) * 1.0 / PANGO_SCALE + subpixel_y) - origin.y;
padding = 1;
image = gsk_gpu_device_add_atlas_image (self,
@@ -944,10 +1037,9 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
cache = gsk_gpu_cached_new (self, &GSK_GPU_CACHED_GLYPH_CLASS, NULL);
}
cache->font = g_object_ref (font);
cache->glyph = glyph;
cache->flags = flags;
cache->scale = scale;
cache->font_cache = font_cache;
cache->glyph_key.glyph = glyph;
cache->glyph_key.flags = flags;
cache->bounds = rect;
cache->image = image;
cache->origin = GRAPHENE_POINT_INIT (- origin.x + subpixel_x,
@@ -956,7 +1048,7 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
gsk_gpu_upload_glyph_op (frame,
cache->image,
font,
scaled_font,
glyph,
&(cairo_rectangle_int_t) {
.x = rect.origin.x - padding,
@@ -964,15 +1056,16 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
.width = rect.size.width + 2 * padding,
.height = rect.size.height + 2 * padding,
},
scale,
&GRAPHENE_POINT_INIT (cache->origin.x + padding,
cache->origin.y + padding));
g_hash_table_insert (priv->glyph_cache, cache, cache);
g_hash_table_insert (font_cache->cache, cache, cache);
gsk_gpu_cached_use (self, (GskGpuCached *) cache, gsk_gpu_frame_get_timestamp (frame));
*out_bounds = cache->bounds;
*out_origin = cache->origin;
*out_scaled_font = scaled_font;
return cache->image;
}
+2 -1
View File
@@ -96,7 +96,8 @@ GskGpuImage * gsk_gpu_device_lookup_glyph_image (GskGpuD
GskGpuGlyphLookupFlags flags,
float scale,
graphene_rect_t *out_bounds,
graphene_point_t *out_origin);
graphene_point_t *out_origin,
PangoFont **out_scaled_font);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GskGpuDevice, g_object_unref)
+29 -6
View File
@@ -2992,11 +2992,15 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
GskGpuDevice *device;
const PangoGlyphInfo *glyphs;
PangoFont *font;
PangoFont *scaled_font = NULL;
graphene_point_t offset;
guint i, num_glyphs;
float scale, inv_scale;
GdkRGBA color;
gboolean glyph_align;
GskGpuImage *last_image;
guint32 descriptor = 0;
GskGpuClip old_clip;
if (self->opacity < 1.0 &&
gsk_text_node_has_color_glyphs (node))
@@ -3005,6 +3009,10 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
return;
}
gsk_gpu_clip_init_copy (&old_clip, &self->clip);
if (gsk_gpu_clip_contains_rect (&self->clip, &self->offset, &node->bounds))
gsk_gpu_clip_init_contained (&self->clip, &node->bounds);
glyph_align = gsk_gpu_frame_should_optimize (self->frame, GSK_GPU_OPTIMIZE_GLYPH_ALIGN) &&
gsk_transform_get_category (self->modelview) >= GSK_TRANSFORM_CATEGORY_2D;
device = gsk_gpu_frame_get_device (self->frame);
@@ -3020,12 +3028,12 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
scale = MAX (graphene_vec2_get_x (&self->scale), graphene_vec2_get_y (&self->scale));
inv_scale = 1.f / scale;
last_image = NULL;
for (i = 0; i < num_glyphs; i++)
{
GskGpuImage *image;
graphene_rect_t glyph_bounds, glyph_tex_rect;
graphene_point_t glyph_offset, glyph_origin;
guint32 descriptor;
GskGpuGlyphLookupFlags flags;
glyph_origin = GRAPHENE_POINT_INIT (offset.x + (float) glyphs[i].geometry.x_offset / PANGO_SCALE,
@@ -3051,13 +3059,20 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
flags,
scale,
&glyph_bounds,
&glyph_offset);
&glyph_offset,
&scaled_font);
gsk_rect_scale (&GRAPHENE_RECT_INIT (-glyph_bounds.origin.x, -glyph_bounds.origin.y, gsk_gpu_image_get_width (image), gsk_gpu_image_get_height (image)), inv_scale, inv_scale, &glyph_tex_rect);
gsk_rect_scale (&GRAPHENE_RECT_INIT(0, 0, glyph_bounds.size.width, glyph_bounds.size.height), inv_scale, inv_scale, &glyph_bounds);
glyph_origin = GRAPHENE_POINT_INIT (glyph_origin.x - glyph_offset.x * inv_scale,
glyph_origin.y - glyph_offset.y * inv_scale);
descriptor = gsk_gpu_node_processor_add_image (self, image, GSK_GPU_SAMPLER_DEFAULT);
if (image != last_image)
{
descriptor = gsk_gpu_node_processor_add_image (self, image, GSK_GPU_SAMPLER_DEFAULT);
last_image = image;
}
if (glyphs[i].attr.is_color)
gsk_gpu_texture_op (self->frame,
gsk_gpu_clip_get_shader_clip (&self->clip, &glyph_offset, &glyph_bounds),
@@ -3078,6 +3093,10 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
offset.x += (float) glyphs[i].geometry.width / PANGO_SCALE;
}
g_clear_object (&scaled_font);
gsk_gpu_clip_init_copy (&self->clip, &old_clip);
}
static gboolean
@@ -3087,6 +3106,7 @@ gsk_gpu_node_processor_create_glyph_pattern (GskGpuPatternWriter *self,
GskGpuDevice *device;
const PangoGlyphInfo *glyphs;
PangoFont *font;
PangoFont *scaled_font = NULL;
guint num_glyphs;
gsize i;
float scale, inv_scale;
@@ -3126,12 +3146,13 @@ gsk_gpu_node_processor_create_glyph_pattern (GskGpuPatternWriter *self,
0,
scale,
&glyph_bounds,
&glyph_offset);
&glyph_offset,
&scaled_font);
if (image != last_image)
{
if (!gsk_gpu_pattern_writer_add_image (self, image, GSK_GPU_SAMPLER_DEFAULT, &tex_id))
return FALSE;
break;
last_image = image;
}
@@ -3160,7 +3181,9 @@ gsk_gpu_node_processor_create_glyph_pattern (GskGpuPatternWriter *self,
offset.x += (float) glyphs[i].geometry.width / PANGO_SCALE;
}
return TRUE;
g_clear_object (&scaled_font);
return i == num_glyphs;
}
static gboolean
+9 -5
View File
@@ -485,7 +485,6 @@ struct _GskGpuUploadGlyphOp
cairo_rectangle_int_t area;
PangoFont *font;
PangoGlyph glyph;
float scale;
graphene_point_t origin;
GskGpuBuffer *buffer;
@@ -509,11 +508,19 @@ gsk_gpu_upload_glyph_op_print (GskGpuOp *op,
guint indent)
{
GskGpuUploadGlyphOp *self = (GskGpuUploadGlyphOp *) op;
PangoFontDescription *desc;
char *str;
desc = pango_font_describe_with_absolute_size (self->font);
str = pango_font_description_to_string (desc);
gsk_gpu_print_op (string, indent, "upload-glyph");
gsk_gpu_print_int_rect (string, &self->area);
g_string_append_printf (string, "glyph %u @ %g ", self->glyph, self->scale);
g_string_append_printf (string, "glyph %u font %s ", self->glyph, str);
gsk_gpu_print_newline (string);
g_free (str);
pango_font_description_free (desc);
}
static void
@@ -531,7 +538,6 @@ gsk_gpu_upload_glyph_op_draw (GskGpuOp *op,
self->area.height,
stride);
cairo_surface_set_device_offset (surface, self->origin.x, self->origin.y);
cairo_surface_set_device_scale (surface, self->scale, self->scale);
cr = cairo_create (surface);
cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
@@ -610,7 +616,6 @@ gsk_gpu_upload_glyph_op (GskGpuFrame *frame,
PangoFont *font,
const PangoGlyph glyph,
const cairo_rectangle_int_t *area,
float scale,
const graphene_point_t *origin)
{
GskGpuUploadGlyphOp *self;
@@ -621,6 +626,5 @@ gsk_gpu_upload_glyph_op (GskGpuFrame *frame,
self->area = *area;
self->font = g_object_ref (font);
self->glyph = glyph;
self->scale = scale;
self->origin = *origin;
}
-1
View File
@@ -25,7 +25,6 @@ void gsk_gpu_upload_glyph_op (GskGpuF
PangoFont *font,
PangoGlyph glyph,
const cairo_rectangle_int_t *area,
float scale,
const graphene_point_t *origin);
G_END_DECLS
+79
View File
@@ -1,6 +1,10 @@
#include "gskresources.h"
#include "gskprivate.h"
#include <cairo.h>
#include <pango/pangocairo.h>
#include <math.h>
static gpointer
register_resources (gpointer data)
{
@@ -15,3 +19,78 @@ gsk_ensure_resources (void)
g_once (&register_resources_once, register_resources, NULL);
}
/*< private >
* gsk_get_scaled_font:
* @font: a `PangoFont`
* @scale: the scale
*
* Returns a font that is just like @font, at a size that
* is multiplied by @scale.
*
* Returns: (transfer full): a scaled version of @font
*/
PangoFont *
gsk_get_scaled_font (PangoFont *font,
float scale)
{
if (scale == 1.0)
return g_object_ref (font);
#if PANGO_VERSION_CHECK (1, 52, 0)
return pango_font_map_reload_font (pango_font_get_font_map (font), font, scale, NULL, NULL);
#else
GHashTable *fonts;
int key;
PangoFont *font2;
PangoFontDescription *desc;
int size;
PangoFontMap *fontmap;
PangoContext *context;
cairo_scaled_font_t *sf;
cairo_font_options_t *options;
key = (int) roundf (scale * PANGO_SCALE);
fonts = (GHashTable *) g_object_get_data (G_OBJECT (font), "gsk-scaled-fonts");
if (fonts)
{
font2 = g_hash_table_lookup (fonts, GINT_TO_POINTER (key));
if (font2)
return g_object_ref (font2);
}
else
{
fonts = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_object_unref);
g_object_set_data_full (G_OBJECT (font), "gsk-scaled-fonts",
fonts, (GDestroyNotify) g_hash_table_unref);
}
desc = pango_font_describe (font);
size = pango_font_description_get_size (desc);
if (pango_font_description_get_size_is_absolute (desc))
pango_font_description_set_absolute_size (desc, size * scale);
else
pango_font_description_set_size (desc, (int) roundf (size * scale));
fontmap = pango_font_get_font_map (font);
context = pango_font_map_create_context (fontmap);
sf = pango_cairo_font_get_scaled_font (PANGO_CAIRO_FONT (font));
options = cairo_font_options_create ();
cairo_scaled_font_get_font_options (sf, options);
pango_cairo_context_set_font_options (context, options);
cairo_font_options_destroy (options);
font2 = pango_font_map_load_font (fontmap, context, desc);
pango_font_description_free (desc);
g_object_unref (context);
g_hash_table_insert (fonts, GINT_TO_POINTER (key), font2);
return g_object_ref (font2);
#endif
}
+4 -1
View File
@@ -5,7 +5,10 @@
G_BEGIN_DECLS
void gsk_ensure_resources (void);
void gsk_ensure_resources (void);
PangoFont *gsk_get_scaled_font (PangoFont *font,
float scale);
G_END_DECLS
+2 -3
View File
@@ -130,9 +130,8 @@ accessible_text_handle_method (GDBusConnection *connection,
if (text != NULL)
{
const char *str = g_bytes_get_data (text, NULL);
if (0 <= offset && offset < g_utf8_strlen (str, -1))
ch = g_utf8_get_char (g_utf8_offset_to_pointer (str, offset));
if (g_utf8_strlen (str, -1) > 0)
ch = g_utf8_get_char (str);
}
g_dbus_method_invocation_return_value (invocation, g_variant_new ("(i)", ch));
+3
View File
@@ -291,6 +291,9 @@ gtk_accessible_role_to_atspi_role (GtkAccessibleRole role)
case GTK_ACCESSIBLE_ROLE_TOGGLE_BUTTON:
return ATSPI_ROLE_TOGGLE_BUTTON;
case GTK_ACCESSIBLE_ROLE_TERMINAL:
return ATSPI_ROLE_TERMINAL;
default:
break;
}
+4 -2
View File
@@ -852,7 +852,8 @@ gtk_tree_path_prepend_index (GtkTreePath *path,
int *indices;
path->alloc = MAX (path->alloc * 2, 1);
indices = g_new (int, path->alloc);
memcpy (indices + 1, path->indices, path->depth * sizeof (int));
if (path->depth > 0)
memcpy (indices + 1, path->indices, path->depth * sizeof (int));
g_free (path->indices);
path->indices = indices;
}
@@ -972,7 +973,8 @@ gtk_tree_path_copy (const GtkTreePath *path)
retval->depth = path->depth;
retval->alloc = retval->depth;
retval->indices = g_new (int, path->alloc);
memcpy (retval->indices, path->indices, path->depth * sizeof (int));
if (path->depth > 0)
memcpy (retval->indices, path->indices, path->depth * sizeof (int));
return retval;
}
BIN
View File
Binary file not shown.
+74 -49
View File
@@ -22,13 +22,15 @@
* language-specific data.raw.json as input
*/
/* The format of the generated data is: a(ausasu).
/* The format of the generated data is: a(aussasasu).
* Each member of the array has the following fields:
* au - sequence of unicode codepoints. If the
* sequence contains a 0, it marks the point
* where skin tone modifiers should be inserted
* s - name, e.g. "man worker"
* as - keywords, e.g. "man", "worker"
* s - name in english, e.g. "man worker"
* s - name in locale
* as - keywords in english, e.g. "man", "worker"
* as - keywords in locale
* u - the group that this item belongs to:
* 0: smileys-emotion
* 1: people-body
@@ -77,90 +79,113 @@ main (int argc, char *argv[])
{
JsonParser *parser;
JsonNode *root;
JsonParser *parser_en;
JsonNode *root_en;
JsonObject *ro;
JsonArray *array;
JsonArray *array_en;
JsonNode *node;
const char *unicode;
JsonObjectIter iter;
GError *error = NULL;
guint length, i;
guint length, length_en, i;
GVariantBuilder builder;
GVariant *v;
GString *s;
GHashTable *names;
GString *name_key;
if (argc != 3)
if (argc != 4) //0 -> compiled file, 1 -> en/data.raw.json, 2 -> de/data.raw.json, 3 -> de.data
{
g_print ("Usage: emoji-convert INPUT OUTPUT\n");
g_print ("Usage: emoji-convert INPUT1 INPUT2 OUTPUT\nINPUT1 should be raw json data for English\nINPUT2 should be raw json data for the locale\n");
return 1;
}
parser = json_parser_new ();
parser_en = json_parser_new ();
if (!json_parser_load_from_file (parser, argv[1], &error))
if (!json_parser_load_from_file (parser_en, argv[1], &error))
{
g_error ("%s", error->message);
return 1;
}
if (!json_parser_load_from_file (parser, argv[2], &error))
{
g_error ("%s", error->message);
return 1;
}
root = json_parser_get_root (parser);
array = json_node_get_array (root);
length = json_array_get_length (array);
root_en = json_parser_get_root (parser_en);
array_en = json_node_get_array (root_en);
length_en = json_array_get_length (array_en);
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ausasu)"));
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(aussasasu)"));
for (i = 0; i < length; i++)
{
JsonObject *obj = json_array_get_object_element (array, i);
GVariantBuilder b1;
GVariantBuilder b2;
guint group;
const char *name;
char *code;
{
JsonObject *obj = json_array_get_object_element (array, i);
JsonObject *obj_en = json_array_get_object_element (array_en, i);
GVariantBuilder b1;
GVariantBuilder b2;
GVariantBuilder b3;
guint group;
const char *name;
const char *name_en;
char *code;
if (!json_object_has_member (obj, "group"))
continue;
if (!json_object_has_member (obj_en, "group"))
continue;
group = json_object_get_int_member (obj, "group");
name = json_object_get_string_member (obj, "label");
name_en = json_object_get_string_member (obj_en, "label");
if (json_object_has_member (obj, "skins") && json_object_has_member (obj_en, "skins"))
{
JsonArray *a2 = json_object_get_array_member (obj, "skins");
JsonNode *n2 = json_array_get_element (a2, 0);
JsonObject *o2 = json_node_get_object (n2);
code = g_strdup (json_object_get_string_member (o2, "hexcode"));
}
else
{
code = g_strdup (json_object_get_string_member (obj, "hexcode"));
}
g_variant_builder_init (&b1, G_VARIANT_TYPE ("au"));
if (!json_object_has_member (obj, "group"))
continue;
if (!parse_code (&b1, code))
return 1;
group = json_object_get_int_member (obj, "group");
name = json_object_get_string_member (obj, "label");
if (json_object_has_member (obj, "skins"))
g_variant_builder_init (&b2, G_VARIANT_TYPE ("as"));
if (json_object_has_member (obj_en, "tags"))
{
JsonArray *tags_en = json_object_get_array_member (obj_en, "tags");
for (int j = 0; j < json_array_get_length (tags_en); j++)
{
JsonArray *a2 = json_object_get_array_member (obj, "skins");
JsonNode *n2 = json_array_get_element (a2, 0);
JsonObject *o2 = json_node_get_object (n2);
code = g_strdup (json_object_get_string_member (o2, "hexcode"));
g_variant_builder_add (&b2, "s", json_array_get_string_element (tags_en, j));
}
else
}
g_variant_builder_init (&b3, G_VARIANT_TYPE ("as"));
if (json_object_has_member (obj, "tags"))
{
JsonArray *tags = json_object_get_array_member (obj, "tags");
for (int j = 0; j < json_array_get_length (tags); j++)
{
code = g_strdup (json_object_get_string_member (obj, "hexcode"));
g_variant_builder_add (&b3, "s", json_array_get_string_element (tags, j));
}
g_variant_builder_init (&b1, G_VARIANT_TYPE ("au"));
if (!parse_code (&b1, code))
return 1;
g_variant_builder_init (&b2, G_VARIANT_TYPE ("as"));
if (json_object_has_member (obj, "tags"))
{
JsonArray *tags = json_object_get_array_member (obj, "tags");
for (int j = 0; j < json_array_get_length (tags); j++)
g_variant_builder_add (&b2, "s", json_array_get_string_element (tags, j));
}
g_variant_builder_add (&builder, "(ausasu)", &b1, name, &b2, group);
}
}
g_variant_builder_add (&builder, "(aussasasu)", &b1, name_en, name, &b2, &b3, group);
}
v = g_variant_builder_end (&builder);
if (g_str_has_suffix (argv[2], ".json"))
if (g_str_has_suffix (argv[3], ".json"))
{
JsonNode *node;
char *out;
node = json_gvariant_serialize (v);
out = json_to_string (node, TRUE);
if (!g_file_set_contents (argv[2], out, -1, &error))
if (!g_file_set_contents (argv[3], out, -1, &error))
{
g_error ("%s", error->message);
return 1;
@@ -171,7 +196,7 @@ main (int argc, char *argv[])
GBytes *bytes;
bytes = g_variant_get_data_as_bytes (v);
if (!g_file_set_contents (argv[2], g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), &error))
if (!g_file_set_contents (argv[3], g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), &error))
{
g_error ("%s", error->message);
return 1;
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+2
View File
@@ -871,6 +871,7 @@ static const char *role_names[] = {
[GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE] = NC_("accessibility", "block quote"),
[GTK_ACCESSIBLE_ROLE_ARTICLE] = NC_("accessibility", "article"),
[GTK_ACCESSIBLE_ROLE_COMMENT] = NC_("accessibility", "comment"),
[GTK_ACCESSIBLE_ROLE_TERMINAL] = NC_("accessibility", "terminal"),
};
/*< private >
@@ -989,6 +990,7 @@ static struct {
{ GTK_ACCESSIBLE_ROLE_DIALOG, GTK_ACCESSIBLE_ROLE_ALERT_DIALOG },
{ GTK_ACCESSIBLE_ROLE_DOCUMENT, GTK_ACCESSIBLE_ROLE_ARTICLE },
{ GTK_ACCESSIBLE_ROLE_ARTICLE, GTK_ACCESSIBLE_ROLE_COMMENT },
{ GTK_ACCESSIBLE_ROLE_TERMINAL, GTK_ACCESSIBLE_ROLE_WIDGET },
};
gboolean
+3 -2
View File
@@ -80,12 +80,13 @@ nul_terminate_contents (GBytes *bytes)
gsize size;
data = g_bytes_get_data (bytes, &size);
if (size > 0 && data[size - 1] != '\0')
if (size == 0 || (size > 0 && data[size - 1] != '\0'))
{
guchar *copy;
copy = g_new (guchar, size + 1);
memcpy (copy, data, size);
if (size > 0)
memcpy (copy, data, size);
copy[size] = '\0';
g_bytes_unref (bytes);
+2 -1
View File
@@ -146,7 +146,8 @@ gtk_application_impl_wayland_inhibit (GtkApplicationImpl *impl,
}
}
inhibitor->dbus_cookie = ((GtkApplicationImplWaylandClass *) G_OBJECT_GET_CLASS (wayland))->dbus_inhibit (impl, window, flags, reason);
if (flags)
inhibitor->dbus_cookie = ((GtkApplicationImplWaylandClass *) G_OBJECT_GET_CLASS (wayland))->dbus_inhibit (impl, window, flags, reason);
return inhibitor->cookie;
}
+2 -2
View File
@@ -517,7 +517,7 @@ gtk_editable_delete_text (GtkEditable *editable,
{
g_return_if_fail (GTK_IS_EDITABLE (editable));
g_return_if_fail (start_pos >= 0);
g_return_if_fail (end_pos == -1 || end_pos > start_pos);
g_return_if_fail (end_pos == -1 || end_pos >= start_pos);
GTK_EDITABLE_GET_IFACE (editable)->do_delete_text (editable, start_pos, end_pos);
}
@@ -552,7 +552,7 @@ gtk_editable_get_chars (GtkEditable *editable,
g_return_val_if_fail (GTK_IS_EDITABLE (editable), NULL);
g_return_val_if_fail (start_pos >= 0, NULL);
g_return_val_if_fail (end_pos == -1 || end_pos > start_pos, NULL);
g_return_val_if_fail (end_pos == -1 || end_pos >= start_pos, NULL);
text = GTK_EDITABLE_GET_IFACE (editable)->get_text (editable);
length = g_utf8_strlen (text, -1);
+21 -13
View File
@@ -321,7 +321,7 @@ populate_recent_section (GtkEmojiChooser *chooser)
GVariantIter iter;
gboolean empty = TRUE;
variant = g_settings_get_value (chooser->settings, "recent-emoji");
variant = g_settings_get_value (chooser->settings, "recently-used-emoji");
g_variant_iter_init (&iter, variant);
while ((item = g_variant_iter_next_value (&iter)))
{
@@ -354,8 +354,8 @@ add_recent_item (GtkEmojiChooser *chooser,
g_variant_ref (item);
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a((ausasu)u)"));
g_variant_builder_add (&builder, "(@(ausasu)u)", item, modifier);
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a((aussasasu)u)"));
g_variant_builder_add (&builder, "(@(aussasasu)u)", item, modifier);
children = NULL;
for (child = gtk_widget_get_last_child (chooser->recent.box);
@@ -380,7 +380,7 @@ add_recent_item (GtkEmojiChooser *chooser,
continue;
}
g_variant_builder_add (&builder, "(@(ausasu)u)", item2, modifier2);
g_variant_builder_add (&builder, "(@(aussasasu)u)", item2, modifier2);
}
g_list_free (children);
@@ -390,7 +390,7 @@ add_recent_item (GtkEmojiChooser *chooser,
gtk_widget_set_visible (chooser->recent.box, TRUE);
gtk_widget_set_sensitive (chooser->recent.button, TRUE);
g_settings_set_value (chooser->settings, "recent-emoji", g_variant_builder_end (&builder));
g_settings_set_value (chooser->settings, "recently-used-emoji", g_variant_builder_end (&builder));
g_variant_unref (item);
}
@@ -720,7 +720,7 @@ populate_emoji_chooser (gpointer data)
bytes = get_emoji_data ();
chooser->data = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(ausasu)"), bytes, TRUE));
chooser->data = g_variant_ref_sink (g_variant_new_from_bytes (G_VARIANT_TYPE ("a(aussasasu)"), bytes, TRUE));
g_bytes_unref (bytes);
}
@@ -734,7 +734,7 @@ populate_emoji_chooser (gpointer data)
{
guint group;
g_variant_get_child (item, 3, "u", &group);
g_variant_get_child (item, 5, "u", &group);
if (group == chooser->people.group)
chooser->box = chooser->people.box;
@@ -866,9 +866,12 @@ filter_func (GtkFlowBoxChild *child,
GtkEmojiChooser *chooser;
GVariant *emoji_data;
const char *text;
const char *name_en;
const char *name;
const char **keywords_en;
const char **keywords;
char **term_tokens;
char **name_tokens_en;
char **name_tokens;
gboolean res;
@@ -885,16 +888,21 @@ filter_func (GtkFlowBoxChild *child,
goto out;
term_tokens = g_str_tokenize_and_fold (text, "en", NULL);
g_variant_get_child (emoji_data, 1, "&s", &name);
name_tokens = g_str_tokenize_and_fold (name, "en", NULL);
g_variant_get_child (emoji_data, 2, "^a&s", &keywords);
g_variant_get_child (emoji_data, 1, "&s", &name_en);
name_tokens = g_str_tokenize_and_fold (name_en, "en", NULL);
g_variant_get_child (emoji_data, 2, "&s", &name);
name_tokens_en = g_str_tokenize_and_fold (name, "en", NULL);
g_variant_get_child (emoji_data, 3, "^a&s", &keywords_en);
g_variant_get_child (emoji_data, 4, "^a&s", &keywords);
res = match_tokens ((const char **)term_tokens, (const char **)name_tokens) ||
match_tokens ((const char **)term_tokens, keywords);
match_tokens ((const char **)term_tokens, (const char **)name_tokens_en) ||
match_tokens ((const char **)term_tokens, keywords) ||
match_tokens ((const char **)term_tokens, keywords_en);
g_strfreev (term_tokens);
g_strfreev (name_tokens);
g_strfreev (name_tokens_en);
out:
if (res)
@@ -978,7 +986,7 @@ setup_section (GtkEmojiChooser *chooser,
section->group = group;
gtk_button_set_icon_name (GTK_BUTTON (section->button), icon);
gtk_flow_box_disable_move_cursor (GTK_FLOW_BOX (section->box));
gtk_flow_box_set_filter_func (GTK_FLOW_BOX (section->box), filter_func, section, NULL);
g_signal_connect_swapped (section->button, "clicked", G_CALLBACK (scroll_to_section), section);
+6 -3
View File
@@ -162,9 +162,12 @@ gtk_entry_buffer_normal_insert_text (GtkEntryBuffer *buffer,
/* Could be a password, so can't leave stuff in memory. */
et_new = g_malloc (pv->normal_text_size);
memcpy (et_new, pv->normal_text, MIN (prev_size, pv->normal_text_size));
trash_area (pv->normal_text, prev_size);
g_free (pv->normal_text);
if (pv->normal_text)
{
memcpy (et_new, pv->normal_text, MIN (prev_size, pv->normal_text_size));
trash_area (pv->normal_text, prev_size);
g_free (pv->normal_text);
}
pv->normal_text = et_new;
}
+14 -3
View File
@@ -1432,6 +1432,13 @@ typedef enum {
* Since: 4.14
*/
/**
* GTK_ACCESSIBLE_ROLE_TERMINAL:
*
* A virtual terminal.
*
* Since: 4.14
*/
typedef enum {
GTK_ACCESSIBLE_ROLE_ALERT,
GTK_ACCESSIBLE_ROLE_ALERT_DIALOG,
@@ -1516,7 +1523,8 @@ typedef enum {
GTK_ACCESSIBLE_ROLE_PARAGRAPH GDK_AVAILABLE_ENUMERATOR_IN_4_14,
GTK_ACCESSIBLE_ROLE_BLOCK_QUOTE GDK_AVAILABLE_ENUMERATOR_IN_4_14,
GTK_ACCESSIBLE_ROLE_ARTICLE GDK_AVAILABLE_ENUMERATOR_IN_4_14,
GTK_ACCESSIBLE_ROLE_COMMENT GDK_AVAILABLE_ENUMERATOR_IN_4_14
GTK_ACCESSIBLE_ROLE_COMMENT GDK_AVAILABLE_ENUMERATOR_IN_4_14,
GTK_ACCESSIBLE_ROLE_TERMINAL GDK_AVAILABLE_ENUMERATOR_IN_4_14
} GtkAccessibleRole;
/**
@@ -1826,13 +1834,16 @@ typedef enum {
/**
* GtkPopoverMenuFlags:
* @GTK_POPOVER_MENU_SLIDING: Submenus are presented as sliding submenus that
* replace the main menu.
* @GTK_POPOVER_MENU_NESTED: Submenus are presented as traditional, nested
* popovers.
*
* Flags that affect how [class@Gtk.PopoverMenu] widgets built from
* a [class@Gio.MenuModel] are created and displayed.
*/
/**
* GTK_POPOVER_MENU_SLIDING:
*
* Submenus are presented as sliding submenus that replace the main menu.
*
* Since: 4.14
*/
+1
View File
@@ -4013,6 +4013,7 @@ gtk_icon_paintable_new_for_file (GFile *file,
}
icon->is_svg = suffix_from_name (icon->filename) == ICON_CACHE_FLAG_SVG_SUFFIX;
icon->is_symbolic = icon_uri_is_symbolic (icon->filename, -1);
return icon;
}
@@ -2,7 +2,7 @@
<schemalist>
<schema id='org.gtk.gtk4.Settings.EmojiChooser' path='/org/gtk/gtk4/settings/emoji-chooser/'>
<key name='recent-emoji' type='a((ausasu)u)'>
<key name='recently-used-emoji' type='a((aussasasu)u)'>
<default>[]</default>
<summary>Recently used Emoji</summary>
<description>
+1 -1
View File
@@ -1,5 +1,5 @@
project('gtk', 'c',
version: '4.13.8',
version: '4.13.9',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',
+5 -52
View File
@@ -35,7 +35,7 @@ msgstr ""
"Project-Id-Version: gtk+ 2.8.2\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
"PO-Revision-Date: 2024-02-14 22:28+0100\n"
"PO-Revision-Date: 2024-02-21 22:28+0100\n"
"Last-Translator: Jordi Mas i Hernàndez <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca\n"
@@ -3933,7 +3933,7 @@ msgstr "Cap"
#: gtk/inspector/general.c:901
msgid "IM Context is hardcoded by GTK_IM_MODULE"
msgstr "El content IM està definit manualment per GTK_IM_MODULE"
msgstr "El context IM està definit manualment per GTK_IM_MODULE"
#: gtk/inspector/general.ui:31
msgid "GTK Version"
@@ -7590,12 +7590,12 @@ msgstr "CAMÍ"
#: tools/gtk-path-tool-decompose.c:99
msgid "Decompose a path."
msgstr "Descomposa un camí"
msgstr "Descompon un camí."
#: tools/gtk-path-tool-decompose.c:112 tools/gtk-path-tool-info.c:113
#: tools/gtk-path-tool-restrict.c:64 tools/gtk-path-tool-reverse.c:58
msgid "No paths given."
msgstr "No s'ha proporcionat cap camí"
msgstr "No s'ha proporcionat cap camí."
#: tools/gtk-path-tool-decompose.c:140 tools/gtk-path-tool-restrict.c:94
#: tools/gtk-path-tool-reverse.c:78
@@ -7809,7 +7809,7 @@ msgstr "Previsualització del camí"
#: tools/gtk-path-tool-show.c:180
msgid "Display the path."
msgstr "Visualitza el camí"
msgstr "Visualitza el camí."
#: tools/gtk-path-tool-show.c:215
msgid "Can only show a single path"
@@ -8105,50 +8105,3 @@ msgstr ""
"No hi ha el fitxer índex de tema a «%s».\n"
"Si realment voleu crear una memòria cau d'icones aquí, utilitzeu --ignore-theme-index.\n"
#~ msgctxt "GL version"
#~ msgid "Disabled"
#~ msgstr "Inhabilitat"
#~ msgctxt "GL vendor"
#~ msgid "Disabled"
#~ msgstr "Inhabilitat"
#~ msgctxt "GL vendor"
#~ msgid "None"
#~ msgstr "Cap"
#, c-format
#~ msgid "Unspecified error decoding media"
#~ msgstr "S'ha produït un error no especificat descodificant un mitjà"
#, c-format
#~ msgid "Cannot find decoder: %s"
#~ msgstr "No s'ha pogut trobar el descodificador: %s"
#~ msgid "Failed to allocate a codec context"
#~ msgstr "No s'ha pogut assignar un context de còdec"
#, c-format
#~ msgid "Cannot find encoder: %s"
#~ msgstr "No s'ha pogut trobar el codificador: %s"
#~ msgid "Cannot add new stream"
#~ msgstr "No es pot afegir un flux nou"
#~ msgid "Failed to allocate an audio frame"
#~ msgstr "No s'ha pogut assignar una trama d'àudio"
#~ msgid "Not enough memory"
#~ msgstr "No hi ha prou memòria"
#~ msgid "Could not allocate resampler context"
#~ msgstr "No s'ha pogut assignar el context del remostreig"
#~ msgid "No audio output found"
#~ msgstr "No s'ha trobat cap sortida d'àudio"
#~ msgid "Show _Size Column"
#~ msgstr "Mostra la columna de la _mida"
#~ msgid "Show T_ype Column"
#~ msgstr "Mos_tra la columna tipus"
+1731 -1103
View File
File diff suppressed because it is too large Load Diff
+782 -563
View File
File diff suppressed because it is too large Load Diff
+41 -34
View File
@@ -9,8 +9,8 @@
msgid ""
msgstr "Project-Id-Version: gtk+ master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
"PO-Revision-Date: 2024-02-18 10:00+0100\n"
"POT-Creation-Date: 2024-02-23 01:06+0000\n"
"PO-Revision-Date: 2024-02-25 10:00+0100\n"
"Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
"Language-Team: Basque <librezale@librezale.eus>\n"
"Language: eu\n"
@@ -47,7 +47,7 @@ msgstr "Ezin dira edukiak “%s” gisa hornitu"
msgid "Cannot provide contents as %s"
msgstr "Ezin dira edukiak %s gisa hornitu"
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
msgid "The current backend does not support OpenGL"
msgstr "Uneko motorrak ez du OpenGL onartzen"
@@ -111,32 +111,32 @@ msgstr "Ez da onartzen beste aplikazio batzuetatik arrastatu eta jaregitea."
msgid "No compatible formats to transfer contents."
msgstr "Ez dago formatu bateragarririk edukiak transferitzeko."
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
msgid "No GL API allowed."
msgstr "Ez da onartzen GL APIrik."
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
#: gdk/win32/gdkglcontext-win32-wgl.c:529
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:538
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
msgid "Unable to create a GL context"
msgstr "Ezin da GL testuingurua sortu"
#: gdk/gdkglcontext.c:1306
#: gdk/gdkglcontext.c:1303
msgid "OpenGL ES disabled via GDK_DEBUG"
msgstr "OpenGL ES desgaituta GDK_DEBUG bidez"
#: gdk/gdkglcontext.c:1318
#: gdk/gdkglcontext.c:1315
msgid "OpenGL disabled via GDK_DEBUG"
msgstr "OpenGL desgaituta GDK_DEBUG bidez"
#: gdk/gdkglcontext.c:1329
#: gdk/gdkglcontext.c:1326
#, c-format
msgid "Application does not support %s API"
msgstr "Aplikazioak ez du %s APIa onartzen"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:2115
#: gdk/gdkglcontext.c:2112
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "%s erabiltzen saiatzen, baina %s jadanik erabiltzen ari da"
@@ -699,21 +699,21 @@ msgstr "IDataObject_GetData (0x%x) prozesuak huts egin du, 0x%lx itzultzen"
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
msgstr "Huts egin du DnD datuen 0x%x W32 formatua %p formatura bihurtzeak (%s)"
#: gdk/win32/gdkglcontext-win32-wgl.c:320
#: gdk/win32/gdkglcontext-win32-wgl.c:329
msgid "No GL implementation is available"
msgstr "Ez dago GL inplementaziorik erabilgarri"
#: gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:404
#, c-format
msgid "WGL version %d.%d is too low, need at least %d.%d"
msgstr "WGL %d.%d bertsioa zaharregia da, gutxienez %d.%d behar da"
#: gdk/win32/gdkglcontext-win32-wgl.c:413
#: gdk/win32/gdkglcontext-win32-wgl.c:422
#, c-format
msgid "GL implementation cannot share GL contexts"
msgstr "GL inplementazioak ezin ditu GL testuinguruak partekatu"
#: gdk/win32/gdkglcontext-win32-wgl.c:693
#: gdk/win32/gdkglcontext-win32-wgl.c:702
msgid "No available configurations for the given pixel format"
msgstr "Ez dago emandako pixel formatuaren konfiguraziorik erabilgarri"
@@ -1737,6 +1737,11 @@ msgctxt "accessibility"
msgid "comment"
msgstr "iruzkina"
#: gtk/gtkaccessible.c:874
msgctxt "accessibility"
msgid "terminal"
msgstr "terminala"
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
msgid "_Close"
@@ -2310,7 +2315,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Elementu bat ezabatzen baduzu, betirako galduko duzu."
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
msgid "_Delete"
msgstr "Ez_abatu"
@@ -2648,31 +2653,31 @@ msgstr "Itxi"
msgid "Close the infobar"
msgstr "Itxi informazio-barra"
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
msgid "Cu_t"
msgstr "_Ebaki"
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
msgid "_Copy"
msgstr "_Kopiatu"
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
msgid "_Paste"
msgstr "_Itsatsi"
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
msgid "Select _All"
msgstr "Hautatu _dena"
#: gtk/gtklabel.c:5712
#: gtk/gtklabel.c:5722
msgid "_Open Link"
msgstr "_Ireki esteka"
#: gtk/gtklabel.c:5716
#: gtk/gtklabel.c:5726
msgid "Copy _Link Address"
msgstr "Kopiatu _estekaren helbidea"
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
msgid "Context menu"
msgstr "Testuinguru-menua"
@@ -3514,7 +3519,7 @@ msgstr "Ezin da “%s” URIa duen elementua “%s”(e)ra eraman"
msgid "No registered application with name “%s” for item with URI “%s” found"
msgstr "Ez da “%s” izenarekin erregistratutako aplikaziorik aurkitu “%s” URIa duen elementuarentzako"
#: gtk/gtksearchentry.c:767
#: gtk/gtksearchentry.c:810
msgid "Clear Entry"
msgstr "Garbitu sarrera"
@@ -3605,15 +3610,15 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "Alboko barra"
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
msgid "Insert _Emoji"
msgstr "Txertatu _emojia"
#: gtk/gtktextview.c:9026
#: gtk/gtktextview.c:9088
msgid "_Undo"
msgstr "_Desegin"
#: gtk/gtktextview.c:9030
#: gtk/gtktextview.c:9092
msgid "_Redo"
msgstr "_Berregin"
@@ -3806,37 +3811,37 @@ msgstr "Estiloaren klaseak"
msgid "CSS Property"
msgstr "CSSren propietatea"
#: gtk/inspector/general.c:363
#: gtk/inspector/general.c:370
msgctxt "GL version"
msgid "None"
msgstr "Bat ere ez"
#: gtk/inspector/general.c:441
#: gtk/inspector/general.c:461
msgctxt "GL version"
msgid "Unknown"
msgstr "Ezezaguna"
#: gtk/inspector/general.c:503
#: gtk/inspector/general.c:523
msgctxt "Vulkan device"
msgid "Disabled"
msgstr "Desgaituta"
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
msgctxt "Vulkan version"
msgid "Disabled"
msgstr "Desgaituta"
#: gtk/inspector/general.c:555
#: gtk/inspector/general.c:576
msgctxt "Vulkan device"
msgid "None"
msgstr "Bat ere ez"
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
msgctxt "Vulkan version"
msgid "None"
msgstr "Bat ere ez"
#: gtk/inspector/general.c:901
#: gtk/inspector/general.c:922
msgid "IM Context is hardcoded by GTK_IM_MODULE"
msgstr "IM testuingurua GTK_IM_MODULE kodean txertatuta dago"
@@ -7731,6 +7736,7 @@ msgid ""
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" compare Compare nodes or images\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
@@ -7742,6 +7748,7 @@ msgstr "Erabilera:\n"
"\n"
"Komandoak:\n"
" benchmark Nodo baten errendatze-proba\n"
" compare Konparatu nodoak edo irudiak\n"
" info Erakutsi nodoari buruzko informazioa\n"
" show Erakutsi nodoa\n"
" render Egin nodoaren pantaila-argazki bat\n"
+40 -33
View File
@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+ 2.6\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
"PO-Revision-Date: 2024-02-12 19:26+0330\n"
"POT-Creation-Date: 2024-02-23 01:06+0000\n"
"PO-Revision-Date: 2024-02-24 00:20+0330\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <>\n"
"Language: fa\n"
@@ -53,7 +53,7 @@ msgstr "نمی‌توان محتوا را به شکل «%s» فراهم کرد"
msgid "Cannot provide contents as %s"
msgstr "نمی‌توان محتوا را به شکل %s فراهم کرد"
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
msgid "The current backend does not support OpenGL"
msgstr "پسانه در حال حاضر از OpenGL پشتیبانی نمی‌کند"
@@ -116,32 +116,32 @@ msgstr "کشیدن و رها کردن از دیگر برنامه‌ها پشتی
msgid "No compatible formats to transfer contents."
msgstr "هیچ قالب سازگاری برای انتقال محتویات وجود ندارد."
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
msgid "No GL API allowed."
msgstr "هیچ رابط برنامه‌نویسی GLای مجاز نیست."
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
#: gdk/win32/gdkglcontext-win32-wgl.c:529 gdk/win32/gdkglcontext-win32-wgl.c:573
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:538 gdk/win32/gdkglcontext-win32-wgl.c:582
#: gdk/x11/gdkglcontext-glx.c:691
msgid "Unable to create a GL context"
msgstr "امکان ساخت زمینه مناسب برای GL نبود"
#: gdk/gdkglcontext.c:1306
#: gdk/gdkglcontext.c:1303
msgid "OpenGL ES disabled via GDK_DEBUG"
msgstr "OpenGL ES به دست GDK_DEBUG از کار افتاد"
#: gdk/gdkglcontext.c:1318
#: gdk/gdkglcontext.c:1315
msgid "OpenGL disabled via GDK_DEBUG"
msgstr "OpenGL به دست GDK_DEBUG از کار افتاد"
#: gdk/gdkglcontext.c:1329
#: gdk/gdkglcontext.c:1326
#, c-format
msgid "Application does not support %s API"
msgstr "برنامه از API مربوط به %s پشتبانی نمی‌کند"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:2115
#: gdk/gdkglcontext.c:2112
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "تلاش شد از %s استفاده شود، ولی %s از پیش در حال استفاده است"
@@ -704,21 +704,21 @@ msgstr "IDataObject_GetData (0x%x) شکست خورد. 0x%lx را برگردان
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
msgstr "شکست در تغییر شکل قالب W32 دادهٔ ک‌ور 0x%x به %p (%s)"
#: gdk/win32/gdkglcontext-win32-wgl.c:320
#: gdk/win32/gdkglcontext-win32-wgl.c:329
msgid "No GL implementation is available"
msgstr "هیچ پیاده سازی GLای پیدا نشد"
#: gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:404
#, c-format
msgid "WGL version %d.%d is too low, need at least %d.%d"
msgstr "WGL نگارش %Id. %Id بیش از حد قدیمی است. کمینه به %Id.%Id نیاز است"
#: gdk/win32/gdkglcontext-win32-wgl.c:413
#: gdk/win32/gdkglcontext-win32-wgl.c:422
#, c-format
msgid "GL implementation cannot share GL contexts"
msgstr "پیاده‌سازی GL نمی‌تواند بافتارهای GL را هم‌رساند"
#: gdk/win32/gdkglcontext-win32-wgl.c:693
#: gdk/win32/gdkglcontext-win32-wgl.c:702
msgid "No available configurations for the given pixel format"
msgstr "هیچ پیکربندی برای قالب نقطه‌ای ارائه شده موجود نیست"
@@ -1738,6 +1738,11 @@ msgctxt "accessibility"
msgid "comment"
msgstr "نظر"
#: gtk/gtkaccessible.c:874
msgctxt "accessibility"
msgid "terminal"
msgstr "پایانه"
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
msgid "_Close"
@@ -2308,7 +2313,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "اگر موردی را پاک کنید، برای همیشه از دست خواهد رفت."
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
msgid "_Delete"
msgstr "_حذف"
@@ -2646,31 +2651,31 @@ msgstr "بستن"
msgid "Close the infobar"
msgstr "بستن نوار اطّلاعات"
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
msgid "Cu_t"
msgstr "_برش"
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
msgid "_Copy"
msgstr "_رونوشت"
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
msgid "_Paste"
msgstr "_چسباندن"
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
msgid "Select _All"
msgstr "انتخاب _همه"
#: gtk/gtklabel.c:5712
#: gtk/gtklabel.c:5722
msgid "_Open Link"
msgstr "_گشودن پیوند"
#: gtk/gtklabel.c:5716
#: gtk/gtklabel.c:5726
msgid "Copy _Link Address"
msgstr "_رونوشت از نشانی پیوند"
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
msgid "Context menu"
msgstr "فهرست بافتاری"
@@ -3504,7 +3509,7 @@ msgstr "نمی‌توان مورد با نشانی «%s» را به %s منتق
msgid "No registered application with name “%s” for item with URI “%s” found"
msgstr "هیچ برنامهٔ ثبت شده‌ای با نام «%s» برای موردی با آدرس «%s» یافت نشد"
#: gtk/gtksearchentry.c:767
#: gtk/gtksearchentry.c:810
msgid "Clear Entry"
msgstr "پاک‌سازی ورودی"
@@ -3595,15 +3600,15 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "نوار کناری"
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
msgid "Insert _Emoji"
msgstr "درج _ایموجی"
#: gtk/gtktextview.c:9026
#: gtk/gtktextview.c:9088
msgid "_Undo"
msgstr "بر_گردان"
#: gtk/gtktextview.c:9030
#: gtk/gtktextview.c:9092
msgid "_Redo"
msgstr "_انجام دوباره"
@@ -3801,39 +3806,39 @@ msgid "CSS Property"
msgstr "مشخصه CSS"
# farmaan
#: gtk/inspector/general.c:363
#: gtk/inspector/general.c:370
msgctxt "GL version"
msgid "None"
msgstr "هیچ‌کدام"
#: gtk/inspector/general.c:441
#: gtk/inspector/general.c:461
msgctxt "GL version"
msgid "Unknown"
msgstr "ناشناخته"
#: gtk/inspector/general.c:503
#: gtk/inspector/general.c:523
msgctxt "Vulkan device"
msgid "Disabled"
msgstr "از کار افتاده"
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
msgctxt "Vulkan version"
msgid "Disabled"
msgstr "از کار افتاده"
# farmaan
#: gtk/inspector/general.c:555
#: gtk/inspector/general.c:576
msgctxt "Vulkan device"
msgid "None"
msgstr "هیچ‌کدام"
# farmaan
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
msgctxt "Vulkan version"
msgid "None"
msgstr "هیچ‌کدام"
#: gtk/inspector/general.c:901
#: gtk/inspector/general.c:922
msgid "IM Context is hardcoded by GTK_IM_MODULE"
msgstr "بافتار IM به دست GTK_IM_MODULE به صورت سخت رمز شده است"
@@ -7724,6 +7729,7 @@ msgid ""
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" compare Compare nodes or images\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
@@ -7737,6 +7743,7 @@ msgstr ""
"دستورها:\n"
"\n"
" benchmark محک پرداخت یک گره\n"
" compare مقایسهٔ گره‌ها یا تصویرها\n"
" info فراهم کردن اطَلاعات دربارهٔ گره\n"
" show نمایش گره\n"
" render نماگرفت از گره\n"
+44 -36
View File
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+-master-po-gl-77922___.merged\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
"PO-Revision-Date: 2024-02-15 03:26+0100\n"
"POT-Creation-Date: 2024-02-22 15:33+0000\n"
"PO-Revision-Date: 2024-02-22 19:18+0100\n"
"Last-Translator: Fran Dieguez <fran.dieguez@gnome.org>\n"
"Language-Team: Galician <proxecto@trasno.gal>\n"
"Language: gl\n"
@@ -65,7 +65,7 @@ msgstr "Non foi posíbel fornecer contidos como «%s»"
msgid "Cannot provide contents as %s"
msgstr "Non foi posíbel fornecer contidos como %s"
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
msgid "The current backend does not support OpenGL"
msgstr "O backend actual non admite o OpenGL"
@@ -129,32 +129,32 @@ msgstr "Arrastrar e soltar desde outras aplicacións non está admitido."
msgid "No compatible formats to transfer contents."
msgstr "Formatos non compatíbeis para transferir contidos."
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
msgid "No GL API allowed."
msgstr "Non se permite a API GL."
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
#: gdk/win32/gdkglcontext-win32-wgl.c:529
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:538
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
msgid "Unable to create a GL context"
msgstr "Non é posíbel crear un contexto GL"
#: gdk/gdkglcontext.c:1306
#: gdk/gdkglcontext.c:1303
msgid "OpenGL ES disabled via GDK_DEBUG"
msgstr "OpenGL ES está desactivado mediante GDK_DEBUG"
#: gdk/gdkglcontext.c:1318
#: gdk/gdkglcontext.c:1315
msgid "OpenGL disabled via GDK_DEBUG"
msgstr "OpenGL desactivado mediante GDK_DEBUG"
#: gdk/gdkglcontext.c:1329
#: gdk/gdkglcontext.c:1326
#, c-format
msgid "Application does not support %s API"
msgstr "A aplicación non admite a API de %s"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:2115
#: gdk/gdkglcontext.c:2112
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "Tentando usar %s, pero %s xa está en uso"
@@ -746,22 +746,22 @@ msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
msgstr ""
"Produciuse un fallo ao transmutar os datos DnD W32 ao formato 0x%x to %p (%s)"
#: gdk/win32/gdkglcontext-win32-wgl.c:320
#: gdk/win32/gdkglcontext-win32-wgl.c:329
msgid "No GL implementation is available"
msgstr "Non hai unha implementación de GL dispoñíbel"
#: gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:404
#, c-format
msgid "WGL version %d.%d is too low, need at least %d.%d"
msgstr ""
"A versión de WGL %d.%d é demasiado antiga, requírese cando menos a %d.%d"
#: gdk/win32/gdkglcontext-win32-wgl.c:413
#: gdk/win32/gdkglcontext-win32-wgl.c:422
#, c-format
msgid "GL implementation cannot share GL contexts"
msgstr "A implementación de GL non pode compartir os contextos de GL"
#: gdk/win32/gdkglcontext-win32-wgl.c:693
#: gdk/win32/gdkglcontext-win32-wgl.c:702
msgid "No available configurations for the given pixel format"
msgstr "Non hai configuracións dispoñíbeis para o formato de píxel fornecido"
@@ -1793,6 +1793,11 @@ msgctxt "accessibility"
msgid "comment"
msgstr "comentario"
#: gtk/gtkaccessible.c:874
msgctxt "accessibility"
msgid "terminal"
msgstr "terminal"
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
msgid "_Close"
@@ -2369,7 +2374,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Se elimina un elemento perderase para sempre."
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
msgid "_Delete"
msgstr "E_liminar"
@@ -2708,31 +2713,31 @@ msgstr "Pechar"
msgid "Close the infobar"
msgstr "Pecha a barra de información"
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
msgid "Cu_t"
msgstr "Cor_tar"
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
msgid "_Copy"
msgstr "_Copiar"
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
msgid "_Paste"
msgstr "_Pegar"
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
msgid "Select _All"
msgstr "Seleccionar _todo"
#: gtk/gtklabel.c:5712
#: gtk/gtklabel.c:5722
msgid "_Open Link"
msgstr "_Abrir ligazón"
#: gtk/gtklabel.c:5716
#: gtk/gtklabel.c:5726
msgid "Copy _Link Address"
msgstr "Copiar enderezo da _ligazón"
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
msgid "Context menu"
msgstr "Menú contextual"
@@ -3579,7 +3584,7 @@ msgstr ""
"Non foi posíbel atopar ningunha aplicación rexistrada co nome «%s» para o "
"elemento co URI «%s»"
#: gtk/gtksearchentry.c:767
#: gtk/gtksearchentry.c:810
msgid "Clear Entry"
msgstr "Limpar entrada"
@@ -3670,15 +3675,15 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "Barra lateral"
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
msgid "Insert _Emoji"
msgstr "Inserir _emoticono"
#: gtk/gtktextview.c:9026
#: gtk/gtktextview.c:9088
msgid "_Undo"
msgstr "_Desfacer"
#: gtk/gtktextview.c:9030
#: gtk/gtktextview.c:9092
msgid "_Redo"
msgstr "_Refacer"
@@ -3877,37 +3882,37 @@ msgstr "Clases de estilo"
msgid "CSS Property"
msgstr "Propiedade CSS"
#: gtk/inspector/general.c:363
#: gtk/inspector/general.c:370
msgctxt "GL version"
msgid "None"
msgstr "Ningún"
#: gtk/inspector/general.c:441
#: gtk/inspector/general.c:461
msgctxt "GL version"
msgid "Unknown"
msgstr "Descoñecido"
#: gtk/inspector/general.c:503
#: gtk/inspector/general.c:523
msgctxt "Vulkan device"
msgid "Disabled"
msgstr "Desactivado"
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
msgctxt "Vulkan version"
msgid "Disabled"
msgstr "Desactivada"
#: gtk/inspector/general.c:555
#: gtk/inspector/general.c:576
msgctxt "Vulkan device"
msgid "None"
msgstr "Ningún"
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
msgctxt "Vulkan version"
msgid "None"
msgstr "Ningunha"
#: gtk/inspector/general.c:901
#: gtk/inspector/general.c:922
msgid "IM Context is hardcoded by GTK_IM_MODULE"
msgstr "O contexto de IM está incrustado á man por GTK_IM_MODULE"
@@ -7819,18 +7824,21 @@ msgid ""
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" compare Compare nodes or images\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
"\n"
msgstr ""
"Usage:\n"
" gtk4-rendernode-tool [COMMAND] [OPCIÓN…] FILE\n"
"Uso:\n"
" gtk4-rendernode-tool [ORDE] [OPCIÓN…] FICHEIRO\n"
"\n"
"Leva a cabo varias tarefas nos nodos do renderizador de GTK.\n"
"\n"
"Ordes:\n"
" benchmark Proba de rendemento do renderizado dun nodo\n"
"\n"
" compare Comparar nodos ou imaxes\n"
" info Fornecer unha información sobre un nodo\n"
" show Mostrar un nodo\n"
" render Sacar unha captura dun nodo\n"
+78 -61
View File
@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+.HEAD.he\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2024-02-17 12:16+0000\n"
"PO-Revision-Date: 2024-02-17 23:05+0200\n"
"POT-Creation-Date: 2024-02-23 01:06+0000\n"
"PO-Revision-Date: 2024-02-24 18:36+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew\n"
"Language: he\n"
@@ -22,7 +22,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? "
"2 : 3);\n"
"X-Generator: Poedit 3.4.1\n"
"X-Generator: Poedit 3.4.2\n"
"X-Project-Style: default\n"
#: gdk/broadway/gdkbroadway-server.c:135
@@ -123,9 +123,9 @@ msgstr "אין תצורות תואמות להעברת תכנים."
msgid "No GL API allowed."
msgstr "אין GL API מאופשר."
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:386
#: gdk/win32/gdkglcontext-win32-wgl.c:529
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:538
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
msgid "Unable to create a GL context"
msgstr "Unable to create a GL context"
@@ -595,141 +595,140 @@ msgstr "פענוח התוכן מסוג MIME‏ ‚%s’ נכשל"
#: gdk/win32/gdkclipdrop-win32.c:719
#, c-format
msgid "Cannot claim clipboard ownership. OpenClipboard() timed out."
msgstr "Cannot claim clipboard ownership. OpenClipboard() timed out."
msgstr ""
"לא ניתן לטעון לבעלות על לוח הגזירים. הזמן שהוקצב ל־OpenClipboard() הסתיים."
#: gdk/win32/gdkclipdrop-win32.c:729
#, c-format
msgid "Cannot claim clipboard ownership. Another process claimed it before us."
msgstr ""
"Cannot claim clipboard ownership. Another process claimed it before us."
msgstr "לא ניתן לטעון לבעלות על לוח הגזירים. תהליך אחר טען אותה לפנינו."
#: gdk/win32/gdkclipdrop-win32.c:743
#, c-format
msgid "Cannot claim clipboard ownership. OpenClipboard() failed: 0x%lx."
msgstr "Cannot claim clipboard ownership. OpenClipboard() failed: 0x%lx."
msgstr "לא ניתן לטעון לבעלות על לוח הגזירים. OpenClipboard() נכשלה: 0x%lx."
#: gdk/win32/gdkclipdrop-win32.c:755
#, c-format
msgid "Cannot claim clipboard ownership. EmptyClipboard() failed: 0x%lx."
msgstr "Cannot claim clipboard ownership. EmptyClipboard() failed: 0x%lx."
msgstr "לא ניתן לטעון לבעלות על לוח הגזירים. EmptyClipboard() נכשלה: 0x%lx."
#: gdk/win32/gdkclipdrop-win32.c:798
#, c-format
msgid "Cannot set clipboard data. OpenClipboard() timed out."
msgstr "Cannot set clipboard data. OpenClipboard() timed out."
msgstr "לא ניתן להגדיר נתוני לוח גזירים. הזמן שהוקצב ל־OpenClipboard() הסתיים."
#: gdk/win32/gdkclipdrop-win32.c:808 gdk/win32/gdkclipdrop-win32.c:839
#, c-format
msgid "Cannot set clipboard data. Another process claimed clipboard ownership."
msgstr ""
"Cannot set clipboard data. Another process claimed clipboard ownership."
msgstr "לא ניתן להגדיר נתוני לוח גזירים. תהליך אחר טען בעלות על לוח הגזירים."
#: gdk/win32/gdkclipdrop-win32.c:822
#, c-format
msgid "Cannot set clipboard data. OpenClipboard() failed: 0x%lx."
msgstr "Cannot set clipboard data. OpenClipboard() failed: 0x%lx."
msgstr "לא ניתן להגדיר נתוני לוח גזירים. OpenClipboard() נכשלה: 0x%lx."
#: gdk/win32/gdkclipdrop-win32.c:874
#, c-format
msgid "Cannot get clipboard data. GlobalLock(0x%p) failed: 0x%lx."
msgstr "Cannot get clipboard data. GlobalLock(0x%p) failed: 0x%lx."
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. GlobalLock(0x%p) נכשלה: 0x%lx."
#: gdk/win32/gdkclipdrop-win32.c:885
#, c-format
msgid "Cannot get clipboard data. GlobalSize(0x%p) failed: 0x%lx."
msgstr "Cannot get clipboard data. GlobalSize(0x%p) failed: 0x%lx."
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. GlobalSize(0x%p) נכשלה: 0x%lx."
#: gdk/win32/gdkclipdrop-win32.c:898
#, c-format
msgid ""
"Cannot get clipboard data. Failed to allocate %s bytes to store the data."
msgstr ""
"Cannot get clipboard data. Failed to allocate %s bytes to store the data."
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. הקצאת %s בתים לאחסון הנתונים נכשלה."
#: gdk/win32/gdkclipdrop-win32.c:930
#, c-format
msgid "Cannot get clipboard data. OpenClipboard() timed out."
msgstr "Cannot get clipboard data. OpenClipboard() timed out."
msgstr ""
"לא ניתן לקבל נתונים מלוח הגזירים. הזמן שהוקצב ל־OpenClipboard() הסתיים."
#: gdk/win32/gdkclipdrop-win32.c:940
#, c-format
msgid "Cannot get clipboard data. Clipboard ownership changed."
msgstr "Cannot get clipboard data. Clipboard ownership changed."
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. הבעלות על לוח הגזירים הועברה."
#: gdk/win32/gdkclipdrop-win32.c:950
#, c-format
msgid ""
"Cannot get clipboard data. Clipboard data changed before we could get it."
msgstr ""
"Cannot get clipboard data. Clipboard data changed before we could get it."
"לא ניתן לקבל נתונים מלוח הגזירים. לוח הגזירים השתנה לפני שהצלחנו לקבל אותם."
#: gdk/win32/gdkclipdrop-win32.c:967
#, c-format
msgid "Cannot get clipboard data. OpenClipboard() failed: 0x%lx."
msgstr "Cannot get clipboard data. OpenClipboard() failed: 0x%lx."
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. OpenClipboard() נכשלה: 0x%lx."
#: gdk/win32/gdkclipdrop-win32.c:992
#, c-format
msgid "Cannot get clipboard data. No compatible transfer format found."
msgstr "Cannot get clipboard data. No compatible transfer format found."
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. לא נמצאה תבנית העברה תואמת."
#: gdk/win32/gdkclipdrop-win32.c:1002
#, c-format
msgid "Cannot get clipboard data. GetClipboardData() failed: 0x%lx."
msgstr "Cannot get clipboard data. GetClipboardData() failed: 0x%lx."
msgstr "לא ניתן לקבל נתונים מלוח הגזירים. GetClipboardData() נכשלה: 0x%lx."
#: gdk/win32/gdkdrop-win32.c:949
#, c-format
msgid "Cannot get DnD data. GlobalLock(0x%p) failed: 0x%lx."
msgstr "Cannot get DnD data. GlobalLock(0x%p) failed: 0x%lx."
msgstr "לא ניתן לקבל נתוני „לא להפריע”. GlobalLock(0x%p) נכשלה: 0x%lx."
#: gdk/win32/gdkdrop-win32.c:958
#, c-format
msgid "Cannot get DnD data. GlobalSize(0x%p) failed: 0x%lx."
msgstr "Cannot get DnD data. GlobalSize(0x%p) failed: 0x%lx."
msgstr "לא ניתן לקבל נתוני „לא להפריע”. GlobalSize(0x%p) נכשלה: 0x%lx."
#: gdk/win32/gdkdrop-win32.c:969
#, c-format
msgid "Cannot get DnD data. Failed to allocate %s bytes to store the data."
msgstr "Cannot get DnD data. Failed to allocate %s bytes to store the data."
msgstr "לא ניתן לקבל נתוני „לא להפריע”. הקצאת %s בתים לאחסון הנתונים נכשלה."
#: gdk/win32/gdkdrop-win32.c:1037
#, c-format
msgid "GDK surface 0x%p is not registered as a drop target"
msgstr "GDK surface 0x%p is not registered as a drop target"
msgstr "משטח GDK‏ 0x%p לא רשום כיעד השלכה בגרירה"
#: gdk/win32/gdkdrop-win32.c:1044
#, c-format
msgid "Target context record 0x%p has no data object"
msgstr "Target context record 0x%p has no data object"
msgstr "לרשומת ההקשר המיועדת 0x%p אין עצם נתונים"
#: gdk/win32/gdkdrop-win32.c:1082
#, c-format
msgid "IDataObject_GetData (0x%x) failed, returning 0x%lx"
msgstr "IDataObject_GetData (0x%x) failed, returning 0x%lx"
msgstr "IDataObject_GetData (0x%x) נכשלה, הוחזר 0x%lx"
#: gdk/win32/gdkdrop-win32.c:1114
#, c-format
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
msgstr "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
#: gdk/win32/gdkglcontext-win32-wgl.c:320
#: gdk/win32/gdkglcontext-win32-wgl.c:329
msgid "No GL implementation is available"
msgstr "אין מימוש GL זמין"
#: gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:404
#, c-format
msgid "WGL version %d.%d is too low, need at least %d.%d"
msgstr "גרסת ה־WGL %d.%d ישנה מדי. צריך לפחות %d.%d"
#: gdk/win32/gdkglcontext-win32-wgl.c:413
#: gdk/win32/gdkglcontext-win32-wgl.c:422
#, c-format
msgid "GL implementation cannot share GL contexts"
msgstr "מימוש GL לא יכול לשתף הקשרי GL"
#: gdk/win32/gdkglcontext-win32-wgl.c:693
#: gdk/win32/gdkglcontext-win32-wgl.c:702
msgid "No available configurations for the given pixel format"
msgstr "No available configurations for the given pixel format"
msgstr "לא סופקו הגדרות לתצורת הפיקסלים שסופקה"
#: gdk/win32/gdkhdataoutputstream-win32.c:63
msgid "writing a closed stream"
@@ -746,7 +745,7 @@ msgstr "GlobalReAlloc() נכשלה: "
#: gdk/win32/gdkhdataoutputstream-win32.c:105
msgid "Ran out of buffer space (buffer size is fixed)"
msgstr "Ran out of buffer space (buffer size is fixed)"
msgstr "נגמר המקום בזיכרון החוצץ (גודל הזיכרון החוצץ קבוע)"
#: gdk/win32/gdkhdataoutputstream-win32.c:203
msgid "Cant transmute a single handle"
@@ -790,7 +789,7 @@ msgstr "מנהל לוח הגזירים לא יכול לאחסן את הבחיר
#: gdk/x11/gdkclipboard-x11.c:649
msgid "Cannot store clipboard. No clipboard manager is active."
msgstr "Cannot store clipboard. No clipboard manager is active."
msgstr "אי אפשר לאחסן את לוח גזירים. אין מנהל לוח גזירים פעיל."
#: gdk/x11/gdkglcontext-glx.c:810
msgid "No GLX configurations available"
@@ -807,7 +806,7 @@ msgstr "אין תמיכה ב־GLX"
#: gdk/x11/gdkselectioninputstream-x11.c:465
#, c-format
msgid "Format %s not supported"
msgstr "Format %s not supported"
msgstr "אין תמיכה בתצורה %s"
#: gdk/x11/gdktextlistconverter-x11.c:65 gdk/x11/gdktextlistconverter-x11.c:105
msgid "Not enough space in destination"
@@ -1811,6 +1810,11 @@ msgctxt "accessibility"
msgid "comment"
msgstr "הערה"
#: gtk/gtkaccessible.c:874
msgctxt "accessibility"
msgid "terminal"
msgstr "מסוף"
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
msgid "_Close"
@@ -2384,7 +2388,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "אם פריט ימחק, הוא יאבד לצמיתות."
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
msgid "_Delete"
msgstr "מ_חיקה"
@@ -2726,32 +2730,32 @@ msgstr "סגירה"
msgid "Close the infobar"
msgstr "סגירת פס המידע"
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
msgid "Cu_t"
msgstr "_גזירה"
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
msgid "_Copy"
msgstr "ה_עתקה"
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
msgid "_Paste"
msgstr "ה_דבקה"
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
msgid "Select _All"
msgstr "בחירה בה_כול"
#: gtk/gtklabel.c:5712
#: gtk/gtklabel.c:5722
msgid "_Open Link"
msgstr "_פתיחת קישור"
#: gtk/gtklabel.c:5716
#: gtk/gtklabel.c:5726
msgid "Copy _Link Address"
msgstr "העתקת כתובת ה_קישור"
# msgctxt "OpenType layout"
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
msgid "Context menu"
msgstr "תפריט הקשר"
@@ -3599,7 +3603,7 @@ msgstr "לא נתן להעביר את הפריט עם הכתובת „%s” אל
msgid "No registered application with name “%s” for item with URI “%s” found"
msgstr "לא נמצא יישום הרשום בשם „%s” עבור הפריט בעל הכתובת „%s”"
#: gtk/gtksearchentry.c:767
#: gtk/gtksearchentry.c:810
msgid "Clear Entry"
msgstr "פינוי הרשומה"
@@ -3690,15 +3694,15 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "סרגל צד"
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
msgid "Insert _Emoji"
msgstr "הוספת _רגשון"
#: gtk/gtktextview.c:9026
#: gtk/gtktextview.c:9088
msgid "_Undo"
msgstr "_ביטול"
#: gtk/gtktextview.c:9030
#: gtk/gtktextview.c:9092
msgid "_Redo"
msgstr "ביצוע _שוב"
@@ -7831,6 +7835,18 @@ msgstr "פענוח %s כמספר נכשל"
#: tools/gtk-rendernode-tool.c:35
#, c-format
#| msgid ""
#| "Usage:\n"
#| " gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
#| "\n"
#| "Perform various tasks on GTK render nodes.\n"
#| "\n"
#| "Commands:\n"
#| " benchmark Benchmark rendering of a node\n"
#| " info Provide information about the node\n"
#| " show Show the node\n"
#| " render Take a screenshot of the node\n"
#| "\n"
msgid ""
"Usage:\n"
" gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
@@ -7839,21 +7855,23 @@ msgid ""
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" compare Compare nodes or images\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
"\n"
msgstr ""
"Usage:\n"
"שימוש:\n"
" gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
"\n"
"Perform various tasks on GTK render nodes.\n"
"ביצוע מגוון פעולות על צומתי עיבוד של GTK.\n"
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
"פקודות:\n"
" benchmark מדידת ביצועי העיבוד של צומת\n"
" compare השוואת צמתים או תמונות\n"
" info אספקת מידע על הצומת\n"
" show הצגת הצומת\n"
" render צילום הצומת\n"
"\n"
#: tools/gtk-rendernode-tool-benchmark.c:94
@@ -7938,7 +7956,6 @@ msgstr "יצירת SVG נכשלה: %s\n"
#: tools/gtk-rendernode-tool-render.c:150
#, c-format
#| msgid "Failed to rewrite header\n"
msgid "Failed to create renderer: %s\n"
msgstr "יצירת מנגנון עיבוד נכשלה: %s\n"
@@ -8174,8 +8191,8 @@ msgstr ""
#~ msgid "Switch to list view"
#~ msgstr "החלפה לתצוגת רשימה"
#~ msgid "default:LTR"
#~ msgstr "default:RTL"
msgid "default:LTR"
msgstr "default:RTL"
#~ msgid "Other application…"
#~ msgstr "יישום אחר…"
+949 -488
View File
File diff suppressed because it is too large Load Diff
+41 -34
View File
@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
"PO-Revision-Date: 2024-02-12 12:39+0100\n"
"POT-Creation-Date: 2024-02-22 15:33+0000\n"
"PO-Revision-Date: 2024-02-22 19:48+0100\n"
"Last-Translator: Ekaterine Papava <papava.e@gtu.ge>\n"
"Language-Team: Georgian <http://mail.gnome.org/mailman/listinfo/gnome-ge-"
"list>\n"
@@ -51,7 +51,7 @@ msgstr "შემცველობის \"%s\"-ად გამოტანა
msgid "Cannot provide contents as %s"
msgstr "შემცველობის %s-ად გამოტანა შეუძლებელია"
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
msgid "The current backend does not support OpenGL"
msgstr "მიმდინარე უკანაბოლოს OpenGL-ის მხარდაჭერა არ გააჩნია"
@@ -114,32 +114,32 @@ msgstr "სხვა აპლიკაციებიდან DnD მხარ
msgid "No compatible formats to transfer contents."
msgstr "შემცველობის გადატანის თავსებადი ფორმატების გარეშე."
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
msgid "No GL API allowed."
msgstr "GL API არ არის დაშვებული."
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
#: gdk/win32/gdkglcontext-win32-wgl.c:529
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:538
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
msgid "Unable to create a GL context"
msgstr "GL-ის კონტექსტის შექმნა შეუძლებელია"
#: gdk/gdkglcontext.c:1306
#: gdk/gdkglcontext.c:1303
msgid "OpenGL ES disabled via GDK_DEBUG"
msgstr "OpenGL ES გამორთულია GDK_DEBUG საშუალებით"
#: gdk/gdkglcontext.c:1318
#: gdk/gdkglcontext.c:1315
msgid "OpenGL disabled via GDK_DEBUG"
msgstr "OpenGL გამორთულია GDK_DEBUG საშუალებით"
#: gdk/gdkglcontext.c:1329
#: gdk/gdkglcontext.c:1326
#, c-format
msgid "Application does not support %s API"
msgstr "აპლიკაციას %s-ის API-ის მხარდაჭერა არ გააცნია"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:2115
#: gdk/gdkglcontext.c:2112
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "%s გამოყენების მცდელობა, მაგრამ %s უკვე გამოიყენება"
@@ -736,21 +736,21 @@ msgstr "IDataObject_GetData (0x%x) -ის შეცდომა, დააბ
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
msgstr "DnD-ის W32 მონაცემების ფორმატის 0x%x-დან %p-ში (%s) გადაყვანის შეცდომა"
#: gdk/win32/gdkglcontext-win32-wgl.c:320
#: gdk/win32/gdkglcontext-win32-wgl.c:329
msgid "No GL implementation is available"
msgstr "GL-ის იმპლემენტაცია არ არსებობს"
#: gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:404
#, c-format
msgid "WGL version %d.%d is too low, need at least %d.%d"
msgstr "WGL-ის ვერსია %d.%d ძალიან ძველია. საჭიროა მინიმუმ %d.%d"
#: gdk/win32/gdkglcontext-win32-wgl.c:413
#: gdk/win32/gdkglcontext-win32-wgl.c:422
#, c-format
msgid "GL implementation cannot share GL contexts"
msgstr "GL-ის განხორციელებებს GL-ის კონტექსტების გაზიარება არ შეუძლიათ"
#: gdk/win32/gdkglcontext-win32-wgl.c:693
#: gdk/win32/gdkglcontext-win32-wgl.c:702
msgid "No available configurations for the given pixel format"
msgstr "მითითებული პიქსელის ფორმატისთვის ხელმისაწვდომი კონფიგურაციების გარეშე"
@@ -1780,6 +1780,11 @@ msgctxt "accessibility"
msgid "comment"
msgstr "კომენტარი"
#: gtk/gtkaccessible.c:874
msgctxt "accessibility"
msgid "terminal"
msgstr "ტერმინალი"
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
msgid "_Close"
@@ -2353,7 +2358,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "თუ წაშლით ელემენტს, ის სამუდამოდ დაიკარგება."
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
msgid "_Delete"
msgstr "წაშლა"
@@ -2692,31 +2697,31 @@ msgstr "დახურვა"
msgid "Close the infobar"
msgstr "საინფორმაციო ზოლის დახურვა"
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
msgid "Cu_t"
msgstr "ამოჭრა"
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
msgid "_Copy"
msgstr "ასლი"
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
msgid "_Paste"
msgstr "ჩასმა"
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
msgid "Select _All"
msgstr "ყველაფრის _მონიშვნა"
#: gtk/gtklabel.c:5712
#: gtk/gtklabel.c:5722
msgid "_Open Link"
msgstr "_ბმულის გახსნა"
#: gtk/gtklabel.c:5716
#: gtk/gtklabel.c:5726
msgid "Copy _Link Address"
msgstr "დაა_კოპირე ბმულის მისამართი"
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
msgid "Context menu"
msgstr "კონტექსტური მენიუ"
@@ -3560,7 +3565,7 @@ msgstr ""
"რეგისტრირებული აპლიკაცია სახელით \"%s\" ჩანაწერისთვის ბმულით \"%s\" "
"აღმოჩენილი არაა"
#: gtk/gtksearchentry.c:767
#: gtk/gtksearchentry.c:810
msgid "Clear Entry"
msgstr "ჩანაწერის გასუფთავება"
@@ -3651,15 +3656,15 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "გვერდითა ზოლი"
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
msgid "Insert _Emoji"
msgstr "ემოჯის _ჩასმა"
#: gtk/gtktextview.c:9026
#: gtk/gtktextview.c:9088
msgid "_Undo"
msgstr "_დაბრუნება"
#: gtk/gtktextview.c:9030
#: gtk/gtktextview.c:9092
msgid "_Redo"
msgstr "_გამეორება"
@@ -3857,37 +3862,37 @@ msgstr "სტილის კლასები"
msgid "CSS Property"
msgstr "CSS-ის თვისება"
#: gtk/inspector/general.c:363
#: gtk/inspector/general.c:370
msgctxt "GL version"
msgid "None"
msgstr "არცერთი"
#: gtk/inspector/general.c:441
#: gtk/inspector/general.c:461
msgctxt "GL version"
msgid "Unknown"
msgstr "უცნობი"
#: gtk/inspector/general.c:503
#: gtk/inspector/general.c:523
msgctxt "Vulkan device"
msgid "Disabled"
msgstr "გამორთულია"
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
msgctxt "Vulkan version"
msgid "Disabled"
msgstr "გამორთულია"
#: gtk/inspector/general.c:555
#: gtk/inspector/general.c:576
msgctxt "Vulkan device"
msgid "None"
msgstr "არცერთი"
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
msgctxt "Vulkan version"
msgid "None"
msgstr "არცერთი"
#: gtk/inspector/general.c:901
#: gtk/inspector/general.c:922
msgid "IM Context is hardcoded by GTK_IM_MODULE"
msgstr "IM-ის კონტექსტი GTK_IM_MODULE-ში ხელითაა ჩაწერილი"
@@ -7789,6 +7794,7 @@ msgid ""
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" compare Compare nodes or images\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
@@ -7801,6 +7807,7 @@ msgstr ""
"\n"
"ბრძანებები:\n"
" benchmark კვანძის რენდერის წარმადობის გაზომვა\n"
" compare კვანძების ან გამოსახულებების შედარება\n"
" info ამ კვანძის შესახებ ინფორმაციის გამოტანა\n"
" show ამ კვანძის ჩვენება\n"
" render კვანძის ეკრანის ანაბეჭდის აღება\n"
+778 -601
View File
File diff suppressed because it is too large Load Diff
+963 -575
View File
File diff suppressed because it is too large Load Diff
+3114 -567
View File
File diff suppressed because it is too large Load Diff
+36 -29
View File
@@ -22,9 +22,9 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2024-02-12 22:55+0000\n"
"PO-Revision-Date: 2024-02-13 15:09+0300\n"
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
"POT-Creation-Date: 2024-02-22 18:50+0000\n"
"PO-Revision-Date: 2024-02-22 21:54+0300\n"
"Last-Translator: Sabri Ünal <libreajans@gmail.com>\n"
"Language-Team: Türkçe <takim@gnome.org.tr>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
@@ -61,7 +61,7 @@ msgstr "İçerikler “%s” olarak sağlanamıyor"
msgid "Cannot provide contents as %s"
msgstr "İçerikler %s olarak sağlanamıyor"
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
msgid "The current backend does not support OpenGL"
msgstr "Şimdiki arka uç OpenGLi desteklemiyor"
@@ -125,32 +125,32 @@ msgstr "Diğer uygulamalardan sürükle ve bırak desteklenmemektedir."
msgid "No compatible formats to transfer contents."
msgstr "İçerikleri aktarmak için uyumlu biçim yok."
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
msgid "No GL API allowed."
msgstr "İzin verilen GP API yok."
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
#: gdk/win32/gdkglcontext-win32-wgl.c:529
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:538
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
msgid "Unable to create a GL context"
msgstr "GL bağlamı oluşturulamadı"
#: gdk/gdkglcontext.c:1306
#: gdk/gdkglcontext.c:1303
msgid "OpenGL ES disabled via GDK_DEBUG"
msgstr "OpenGL ES, GDK_DEBUG aracılığıyla devre dışı bırakılmış"
#: gdk/gdkglcontext.c:1318
#: gdk/gdkglcontext.c:1315
msgid "OpenGL disabled via GDK_DEBUG"
msgstr "OpenGL, GDK_DEBUG aracılığıyla devre dışı bırakılmış"
#: gdk/gdkglcontext.c:1329
#: gdk/gdkglcontext.c:1326
#, c-format
msgid "Application does not support %s API"
msgstr "Uygulama %s APIsini desteklemiyor"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:2115
#: gdk/gdkglcontext.c:2112
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "%s kullanılmaya çalışılıyor ancak şu anda %s kullanılıyor"
@@ -715,21 +715,21 @@ msgstr "IDataObject_GetData (0x%x) başarısız, 0x%lx döndürüyor"
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
msgstr "W32 biçimli 0x%x DnD verisi, %p hedefine dönüştürülemedi (%s)"
#: gdk/win32/gdkglcontext-win32-wgl.c:320
#: gdk/win32/gdkglcontext-win32-wgl.c:329
msgid "No GL implementation is available"
msgstr "Kullanılabilir GL uygulaması yok"
#: gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:404
#, c-format
msgid "WGL version %d.%d is too low, need at least %d.%d"
msgstr "WGL sürümü %d.%d çok düşük, en az %d.%d gerekiyor"
#: gdk/win32/gdkglcontext-win32-wgl.c:413
#: gdk/win32/gdkglcontext-win32-wgl.c:422
#, c-format
msgid "GL implementation cannot share GL contexts"
msgstr "GL uygulaması GL bağlamlarını paylaşamaz"
#: gdk/win32/gdkglcontext-win32-wgl.c:693
#: gdk/win32/gdkglcontext-win32-wgl.c:702
msgid "No available configurations for the given pixel format"
msgstr "Verilen piksel biçimi için kullanılabilir yapılandırma yok"
@@ -1756,6 +1756,11 @@ msgctxt "accessibility"
msgid "comment"
msgstr "yorum"
#: gtk/gtkaccessible.c:874
msgctxt "accessibility"
msgid "terminal"
msgstr "uçbirim"
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
msgid "_Close"
@@ -2329,7 +2334,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Eğer bir öge silerseniz kalıcı olarak kaybolur."
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
msgid "_Delete"
msgstr "_Sil"
@@ -2670,31 +2675,31 @@ msgstr "Kapat"
msgid "Close the infobar"
msgstr "Bilgi çubuğunu kapat"
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
msgid "Cu_t"
msgstr "Ke_s"
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
msgid "_Copy"
msgstr "_Kopyala"
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
msgid "_Paste"
msgstr "_Yapıştır"
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
msgid "Select _All"
msgstr "_Tümünü Seç"
#: gtk/gtklabel.c:5712
#: gtk/gtklabel.c:5722
msgid "_Open Link"
msgstr "Bağlantı _Aç"
#: gtk/gtklabel.c:5716
#: gtk/gtklabel.c:5726
msgid "Copy _Link Address"
msgstr "_Bağlantı Adresini Kopyala"
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
msgid "Context menu"
msgstr "Bağlamsal menü"
@@ -3536,7 +3541,7 @@ msgstr "“%s” URIli öge “%s”e taşınamadı"
msgid "No registered application with name “%s” for item with URI “%s” found"
msgstr "“%2$s” URIʼli öge için “%1$s” adında kayıtlı uygulama bulunamadı"
#: gtk/gtksearchentry.c:767
#: gtk/gtksearchentry.c:810
msgid "Clear Entry"
msgstr "Girdiyi Temizle"
@@ -3627,15 +3632,15 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "Kenar Çubuğu"
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
msgid "Insert _Emoji"
msgstr "_Emoji Ekle"
#: gtk/gtktextview.c:9026
#: gtk/gtktextview.c:9088
msgid "_Undo"
msgstr "_Geri Al"
#: gtk/gtktextview.c:9030
#: gtk/gtktextview.c:9092
msgid "_Redo"
msgstr "_Yinele"
@@ -7774,6 +7779,7 @@ msgid ""
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" compare Compare nodes or images\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
@@ -7782,10 +7788,11 @@ msgstr ""
"Kullanım:\n"
" gtk4-rendernode-tool [KOMUT] [SEÇENEK…] DOSYA\n"
"\n"
"GTK gerçekleme düğümleri üzerinde türlü görevler gerçekleştirin.\n"
"GTK gerçekleme düğümleri üzerinde türlü görevler gerçekleştir.\n"
"\n"
"Komutlar:\n"
" benchmark Düğümlerin gerçeklemesini kıyasla\n"
" compare Düğümleri ya da görüntüleri karşılaştır\n"
" info Düğümle ilgili bilgi sağla\n"
" show Düğümü göster\n"
" render Düğümün ekran görüntüsünü al\n"
+44 -89
View File
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
"POT-Creation-Date: 2024-02-12 01:46+0000\n"
"PO-Revision-Date: 2024-02-12 22:09+0200\n"
"POT-Creation-Date: 2024-02-23 01:06+0000\n"
"PO-Revision-Date: 2024-02-23 09:47+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -50,7 +50,7 @@ msgstr "Не вдалося надати дані як «%s»"
msgid "Cannot provide contents as %s"
msgstr "Не вдалося надати дані як %s"
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:462
#: gdk/gdkdisplay.c:176 gdk/gdkglcontext.c:459
msgid "The current backend does not support OpenGL"
msgstr "Цей модуль не підтримує OpenGL"
@@ -118,34 +118,32 @@ msgstr ""
msgid "No compatible formats to transfer contents."
msgstr "Немає сумісних форматів для передавання даних."
#: gdk/gdkglcontext.c:422 gdk/x11/gdkglcontext-glx.c:645
#: gdk/gdkglcontext.c:419 gdk/x11/gdkglcontext-glx.c:645
msgid "No GL API allowed."
msgstr "Програмний інтерфейс GL заборонено."
#: gdk/gdkglcontext.c:445 gdk/win32/gdkglcontext-win32-wgl.c:386
#: gdk/win32/gdkglcontext-win32-wgl.c:529
#: gdk/win32/gdkglcontext-win32-wgl.c:573 gdk/x11/gdkglcontext-glx.c:691
#: gdk/gdkglcontext.c:442 gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:538
#: gdk/win32/gdkglcontext-win32-wgl.c:582 gdk/x11/gdkglcontext-glx.c:691
msgid "Unable to create a GL context"
msgstr "Неможливо створити вміст GL"
#: gdk/gdkglcontext.c:1306
#| msgid "Anything but OpenGL ES disabled via GDK_DEBUG"
#: gdk/gdkglcontext.c:1303
msgid "OpenGL ES disabled via GDK_DEBUG"
msgstr "За допомогою GDK_DEBUG вимкнено OpenGL ES"
#: gdk/gdkglcontext.c:1318
#| msgid "GL support disabled via GDK_DEBUG"
#: gdk/gdkglcontext.c:1315
msgid "OpenGL disabled via GDK_DEBUG"
msgstr "OpenGL вимкнено за допомогою GDK_DEBUG"
#: gdk/gdkglcontext.c:1329
#: gdk/gdkglcontext.c:1326
#, c-format
msgid "Application does not support %s API"
msgstr "У програмі не передбачено підтримки програмного інтерфейсу %s"
#. translators: This is about OpenGL backend names, like
#. * "Trying to use X11 GLX, but EGL is already in use"
#: gdk/gdkglcontext.c:2115
#: gdk/gdkglcontext.c:2112
#, c-format
msgid "Trying to use %s, but %s is already in use"
msgstr "Намагаємося скористатися %s, але %s вже використано"
@@ -563,7 +561,6 @@ msgstr "Непідтримуваний тип кольору, %u, у зобра
#: gdk/loaders/gdkpng.c:272
#, c-format
#| msgid "Not enough memory for image size %ux%u"
msgid "Image stride too large for image size %ux%u"
msgstr "Зображення поширюється надто далеко для розміру зображення %ux%u"
@@ -744,21 +741,21 @@ msgstr ""
"Не вдалося перетворити формат W32 даних перетягування зі скиданням 0x%x до "
"%p (%s)"
#: gdk/win32/gdkglcontext-win32-wgl.c:320
#: gdk/win32/gdkglcontext-win32-wgl.c:329
msgid "No GL implementation is available"
msgstr "Немає жодної реалізації GL"
#: gdk/win32/gdkglcontext-win32-wgl.c:395
#: gdk/win32/gdkglcontext-win32-wgl.c:404
#, c-format
msgid "WGL version %d.%d is too low, need at least %d.%d"
msgstr "Версія WGL %d.%d є надто давньою. Потрібна версія принаймні %d.%d"
#: gdk/win32/gdkglcontext-win32-wgl.c:413
#: gdk/win32/gdkglcontext-win32-wgl.c:422
#, c-format
msgid "GL implementation cannot share GL contexts"
msgstr "Реалізація GL не може оприлюднювати контексти GL"
#: gdk/win32/gdkglcontext-win32-wgl.c:693
#: gdk/win32/gdkglcontext-win32-wgl.c:702
msgid "No available configurations for the given pixel format"
msgstr "Немає доступних налаштувань для заданого формату точок"
@@ -1254,7 +1251,6 @@ msgid "Mozilla Public License 2.0"
msgstr "Громадська ліцензія Mozilla 2.0"
#: gtk/gtkaboutdialog.c:137
#| msgid "BSD 2-Clause License"
msgid "BSD Zero-Clause License"
msgstr "Zero-Clause ліцензія BSD"
@@ -1786,19 +1782,21 @@ msgid "block quote"
msgstr "цитата"
#: gtk/gtkaccessible.c:872
#| msgctxt "sizegroup mode"
#| msgid "Vertical"
msgctxt "accessibility"
msgid "article"
msgstr "стаття"
#: gtk/gtkaccessible.c:873
#| msgctxt "accessibility"
#| msgid "command"
msgctxt "accessibility"
msgid "comment"
msgstr "коментар"
#: gtk/gtkaccessible.c:874
#| msgid "Terminal Pager"
msgctxt "accessibility"
msgid "terminal"
msgstr "термінал"
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
msgid "_Close"
@@ -2372,7 +2370,7 @@ msgid "If you delete an item, it will be permanently lost."
msgstr "Якщо вилучити об'єкт, його буде втрачено назавжди."
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
msgid "_Delete"
msgstr "В_илучити"
@@ -2569,7 +2567,6 @@ msgid "Accessed"
msgstr "Дозволено"
#: gtk/gtkfilechooserwidget.c:7361
#| msgid "Size"
msgid "_Size"
msgstr "_Розмір"
@@ -2578,7 +2575,6 @@ msgid "T_ype"
msgstr "Т_ип"
#: gtk/gtkfilechooserwidget.c:7369
#| msgid "Show _Time"
msgid "_Time"
msgstr "_Час"
@@ -2712,31 +2708,31 @@ msgstr "Закрити"
msgid "Close the infobar"
msgstr "Закрити панель відомостей"
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
msgid "Cu_t"
msgstr "Ви_різати"
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
msgid "_Copy"
msgstr "_Копіювати"
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
msgid "_Paste"
msgstr "Вст_авити"
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
msgid "Select _All"
msgstr "Виді_лити все"
#: gtk/gtklabel.c:5712
#: gtk/gtklabel.c:5722
msgid "_Open Link"
msgstr "_Відкрити посилання"
#: gtk/gtklabel.c:5716
#: gtk/gtklabel.c:5726
msgid "Copy _Link Address"
msgstr "Копіювати _адресу посилання"
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
msgid "Context menu"
msgstr "Контекстне меню"
@@ -3585,7 +3581,7 @@ msgid "No registered application with name “%s” for item with URI “%s” f
msgstr ""
"Не знайдено зареєстрованої програми з назвою «%s» для пункту з URI «%s»"
#: gtk/gtksearchentry.c:767
#: gtk/gtksearchentry.c:810
msgid "Clear Entry"
msgstr "Спорожнити запис"
@@ -3676,15 +3672,15 @@ msgctxt "accessibility"
msgid "Sidebar"
msgstr "Бічна панель"
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
msgid "Insert _Emoji"
msgstr "Вставити _емодзі"
#: gtk/gtktextview.c:9026
#: gtk/gtktextview.c:9088
msgid "_Undo"
msgstr "_Скасувати"
#: gtk/gtktextview.c:9030
#: gtk/gtktextview.c:9092
msgid "_Redo"
msgstr "Пов_торити"
@@ -3881,38 +3877,37 @@ msgstr "Класи стилів"
msgid "CSS Property"
msgstr "Властивість CSS"
#: gtk/inspector/general.c:363
#: gtk/inspector/general.c:370
msgctxt "GL version"
msgid "None"
msgstr "Немає"
#: gtk/inspector/general.c:441
#| msgid "Unknown"
#: gtk/inspector/general.c:461
msgctxt "GL version"
msgid "Unknown"
msgstr "Невідомо"
#: gtk/inspector/general.c:503
#: gtk/inspector/general.c:523
msgctxt "Vulkan device"
msgid "Disabled"
msgstr "Вимкнено"
#: gtk/inspector/general.c:504 gtk/inspector/general.c:505
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
msgctxt "Vulkan version"
msgid "Disabled"
msgstr "Вимкнено"
#: gtk/inspector/general.c:555
#: gtk/inspector/general.c:576
msgctxt "Vulkan device"
msgid "None"
msgstr "Немає"
#: gtk/inspector/general.c:556 gtk/inspector/general.c:557
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
msgctxt "Vulkan version"
msgid "None"
msgstr "Немає"
#: gtk/inspector/general.c:901
#: gtk/inspector/general.c:922
msgid "IM Context is hardcoded by GTK_IM_MODULE"
msgstr "Контекст способу введення жорстко встановлено у GTK_IM_MODULE"
@@ -3965,7 +3960,6 @@ msgid "Composited"
msgstr "Складений"
#: gtk/inspector/general.ui:538
#| msgid "Available Protocols"
msgid "Protocols"
msgstr "Протоколи"
@@ -3974,12 +3968,10 @@ msgid "GL Version"
msgstr "Версія GL"
#: gtk/inspector/general.ui:621
#| msgid "GL Version"
msgid "GL Backend Version"
msgstr "Версія модуля GL"
#: gtk/inspector/general.ui:671
#| msgid "GL Vendor"
msgid "GL Backend Vendor"
msgstr "Постачальник модуля GL"
@@ -3988,7 +3980,6 @@ msgid "GL_VENDOR"
msgstr "GL_VENDOR"
#: gtk/inspector/general.ui:727
#| msgid "RENDERER"
msgid "GL_RENDERER"
msgstr "GL_RENDERER"
@@ -4433,11 +4424,10 @@ msgid ""
"Tints all the places where the current renderer uses Cairo instead of the "
"GPU."
msgstr ""
"Підсвітити усі місця, де поточний засіб обробки використовує Cairo замість"
" графічного процесора."
"Підсвітити усі місця, де поточний засіб обробки використовує Cairo замість "
"графічного процесора."
#: gtk/inspector/visual.ui:436
#| msgid "Show Fallback Rendering"
msgid "Show Cairo Rendering"
msgstr "Показати обробку Cairo"
@@ -4474,7 +4464,6 @@ msgid "Show Accessibility warnings"
msgstr "Показати попередження щодо доступності"
#: gtk/inspector/visual.ui:661
#| msgid "Show Graphic Updates"
msgid "Show Graphics Offload"
msgstr "Показувати графічне вивантаження"
@@ -7515,18 +7504,6 @@ msgstr "%s: помилка запускання програми: %s\n"
#: tools/gtk-path-tool.c:35
#, c-format
#| msgid ""
#| "Usage:\n"
#| " gtk4-path-tool [COMMAND] [OPTION…] PATH\n"
#| "\n"
#| "Perform various tasks on paths.\n"
#| "\n"
#| "Commands:\n"
#| " decompose Decompose the path\n"
#| " show Display the path in a window\n"
#| " render Render the path as an image\n"
#| " info Print information about the path\n"
#| "\n"
msgid ""
"Usage:\n"
" gtk4-path-tool [COMMAND] [OPTION…] PATH\n"
@@ -7565,7 +7542,6 @@ msgid "Allow cubic Bézier curves"
msgstr "Дозволити кубічні криві Безьє"
#: tools/gtk-path-tool-decompose.c:86
#| msgid "Allow cubic Bézier curves"
msgid "Allow conic Bézier curves"
msgstr "Дозволити конічні криві Безьє"
@@ -7632,7 +7608,6 @@ msgstr "%d кубічних апроксимацій"
#: tools/gtk-path-tool-info.c:159
#, c-format
#| msgid "%d cubics"
msgid "%d conics"
msgstr "%d конічних перерізів"
@@ -7645,12 +7620,10 @@ msgid "Stroke the path"
msgstr "Заштрихувати контур"
#: tools/gtk-path-tool-render.c:119 tools/gtk-path-tool-show.c:142
#| msgid "Show other locations"
msgid "Show path points"
msgstr "Показати точки контура"
#: tools/gtk-path-tool-render.c:120 tools/gtk-path-tool-show.c:143
#| msgid "Show other locations"
msgid "Show control points"
msgstr "Показати контрольні точки"
@@ -7673,7 +7646,6 @@ msgid "Background color"
msgstr "Колір тла"
#: tools/gtk-path-tool-render.c:124 tools/gtk-path-tool-show.c:146
#| msgid "Pick a Color"
msgid "Point color"
msgstr "Колір точки"
@@ -7730,7 +7702,6 @@ msgid "Options related to filling"
msgstr "Параметри, які пов'язано із заповненням"
#: tools/gtk-path-tool-render.c:174 tools/gtk-path-tool-show.c:184
#| msgid "Show other locations"
msgid "Show help for fill options"
msgstr "Показати довідку щодо варіантів заповнення"
@@ -7739,7 +7710,6 @@ msgid "Options related to stroking"
msgstr "Параметри, які пов'язано зі штрихуванням"
#: tools/gtk-path-tool-render.c:182 tools/gtk-path-tool-show.c:192
#| msgid "Show other locations"
msgid "Show help for stroke options"
msgstr "Показати довідку щодо варіантів штрихування"
@@ -7786,12 +7756,10 @@ msgid "End of segment"
msgstr "Кінець сегмента"
#: tools/gtk-path-tool-restrict.c:51
#| msgid "Render the path to a png image."
msgid "Restrict a path to a segment."
msgstr "Обмежити контур до сегмента."
#: tools/gtk-path-tool-reverse.c:45
#| msgid "Reverse portrait"
msgid "Reverse a path."
msgstr "Обернути контур."
@@ -7843,17 +7811,6 @@ msgstr "Не вдалося обробити «%s» як число"
#: tools/gtk-rendernode-tool.c:35
#, c-format
#| msgid ""
#| "Usage:\n"
#| " gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
#| "\n"
#| "Perform various tasks on GTK render nodes.\n"
#| "\n"
#| "Commands:\n"
#| " info Provide information about the node\n"
#| " show Show the node\n"
#| " render Take a screenshot of the node\n"
#| "\n"
msgid ""
"Usage:\n"
" gtk4-rendernode-tool [COMMAND] [OPTION…] FILE\n"
@@ -7862,6 +7819,7 @@ msgid ""
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" compare Compare nodes or images\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
@@ -7874,13 +7832,13 @@ msgstr ""
"\n"
"Команди:\n"
" benchmark Тестувати обробку вузла\n"
" compare Порівняти вузли або зображення\n"
" info Надати дані щодо вузла\n"
" show Показати вузол\n"
" render Створити знімок вікна вузла\n"
"\n"
#: tools/gtk-rendernode-tool-benchmark.c:94
#| msgid "Renderer to use"
msgid "Add renderer to benchmark"
msgstr "Додати обробник до тестування"
@@ -7915,7 +7873,6 @@ msgstr "Не вказано файл .node\n"
#: tools/gtk-rendernode-tool-benchmark.c:133
#, c-format
#| msgid "Can only accept a single .node file\n"
msgid "Can only benchmark a single .node file\n"
msgstr "Можлива одночасне тестування лише за допомогою одного файла .node\n"
@@ -7964,7 +7921,6 @@ msgstr "Не вдалося створити SVG: %s\n"
#: tools/gtk-rendernode-tool-render.c:150
#, c-format
#| msgid "Failed to rewrite header\n"
msgid "Failed to create renderer: %s\n"
msgstr "Не вдалося створити засіб обробки: %s\n"
@@ -8003,7 +7959,6 @@ msgstr "Помилка у %s: %s\n"
#: tools/gtk-rendernode-tool-utils.c:72
#, c-format
#| msgid "Failed to open file %s : %s\n"
msgid "Failed to load node file: %s\n"
msgstr "Не вдалося завантажити файл вузла: %s\n"
+147
View File
@@ -0,0 +1,147 @@
/* Copyright 2024 Red Hat, Inc.
*
* GTK is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* GTK is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with GTK; see the file COPYING. If not,
* see <http://www.gnu.org/licenses/>.
*
* Author: Matthias Clasen
*/
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <glib/gi18n-lib.h>
#include <glib/gprintf.h>
#include <glib/gstdio.h>
#include <gtk/gtk.h>
#include "gtk-rendernode-tool.h"
#include "testsuite/reftests/reftest-compare.h"
static GdkTexture *
texture_from_file (const char *filename,
GskRenderer *renderer,
GError **error)
{
GdkTexture *texture;
if (g_str_has_suffix (filename, ".node"))
{
GskRenderNode *node = load_node_file (filename);
texture = gsk_renderer_render_texture (renderer, node, NULL);
gsk_render_node_unref (node);
}
else
{
texture = gdk_texture_new_from_filename (filename, error);
}
return texture;
}
void
do_compare (int *argc,
const char ***argv)
{
GOptionContext *context;
char *opt_filename = NULL;
gboolean opt_quiet = FALSE;
char **filenames = NULL;
char *renderer_name = NULL;
const GOptionEntry entries[] = {
{ "renderer", 0, 0, G_OPTION_ARG_STRING, &renderer_name, N_("Renderer to use"), N_("RENDERER") },
{ "output", 'o', 0, G_OPTION_ARG_FILENAME, &opt_filename, N_("Output file"), N_("FILE") },
{ "quiet", 'q', 0, G_OPTION_ARG_NONE, &opt_quiet, "Don't talk", NULL },
{ G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames, NULL, N_("FILE1 FILE2") },
{ NULL, }
};
GskRenderer *renderer;
GdkTexture *texture[2];
GdkTexture *diff;
GError *error = NULL;
g_set_prgname ("gtk4-rendernode-tool compare");
context = g_option_context_new (NULL);
g_option_context_set_translation_domain (context, GETTEXT_PACKAGE);
g_option_context_add_main_entries (context, entries, NULL);
g_option_context_set_summary (context, _("Compare .node or .png files."));
if (!g_option_context_parse (context, argc, (char ***)argv, &error))
{
g_printerr ("%s\n", error->message);
g_error_free (error);
exit (1);
}
g_option_context_free (context);
if (filenames == NULL || g_strv_length (filenames) != 2)
{
g_printerr (_("Must specify two files\n"));
exit (1);
}
renderer = create_renderer (renderer_name, &error);
if (renderer == NULL)
{
g_printerr (_("Failed to create renderer: %s\n"), error->message);
exit (1);
}
for (int i = 0; i < 2; i++)
{
texture[i] = texture_from_file (filenames[i], renderer, &error);
if (texture[i] == NULL)
{
g_printerr (_("Failed to load %s: %s\n"), filenames[i], error->message);
exit (1);
}
}
diff = reftest_compare_textures (texture[0], texture[1]);
if (opt_filename && diff)
{
if (!gdk_texture_save_to_png (diff, opt_filename))
{
g_printerr (_("Could not save diff image to %s\n"), opt_filename);
exit (1);
}
}
if (!opt_quiet)
{
if (diff)
{
if (opt_filename)
g_print (_("Differences witten to %s.\n"), opt_filename);
else
g_print (_("The images are different.\n"));
}
else
g_print (_("No differences.\n"));
}
if (diff)
exit (1);
g_strfreev (filenames);
g_object_unref (texture[0]);
g_object_unref (texture[1]);
g_object_unref (renderer);
}
+3
View File
@@ -39,6 +39,7 @@ usage (void)
"\n"
"Commands:\n"
" benchmark Benchmark rendering of a node\n"
" compare Compare nodes or images\n"
" info Provide information about the node\n"
" show Show the node\n"
" render Take a screenshot of the node\n"
@@ -116,6 +117,8 @@ main (int argc, const char *argv[])
do_info (&argc, &argv);
else if (strcmp (argv[0], "benchmark") == 0)
do_benchmark (&argc, &argv);
else if (strcmp (argv[0], "compare") == 0)
do_compare (&argc, &argv);
else
usage ();
+1
View File
@@ -2,6 +2,7 @@
#pragma once
void do_benchmark (int *argc, const char ***argv);
void do_compare (int *argc, const char ***argv);
void do_info (int *argc, const char ***argv);
void do_show (int *argc, const char ***argv);
void do_render (int *argc, const char ***argv);
+3 -1
View File
@@ -42,10 +42,12 @@ gtk_tools = [
'fake-scope.c'], [libgtk_dep] ],
['gtk4-rendernode-tool', ['gtk-rendernode-tool.c',
'gtk-rendernode-tool-benchmark.c',
'gtk-rendernode-tool-compare.c',
'gtk-rendernode-tool-info.c',
'gtk-rendernode-tool-render.c',
'gtk-rendernode-tool-show.c',
'gtk-rendernode-tool-utils.c'], [libgtk_dep] ],
'gtk-rendernode-tool-utils.c',
'../testsuite/reftests/reftest-compare.c'], [libgtk_dep] ],
['gtk4-update-icon-cache', ['updateiconcache.c', '../gtk/gtkiconcachevalidator.c' ] + extra_update_icon_cache_objs, [ libgtk_dep ] ],
['gtk4-encode-symbolic-svg', ['encodesymbolic.c'], [ libgtk_static_dep ] ],
]