Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dd06452b0f | |||
| 4e166f39fe | |||
| 5f79958716 | |||
| aee0af34af | |||
| 7e32eb2e98 | |||
| 7ea7d5c390 | |||
| e3e9dda429 | |||
| a3ab25bf1d | |||
| 095dec9238 | |||
| 0e34365139 | |||
| 88a62564f1 | |||
| 6ac94dc5c3 | |||
| 5a9a0874bd | |||
| 91992111c3 | |||
| 120d874805 | |||
| 9454bad891 | |||
| 9cb410fd9b | |||
| 0f3fbed13c | |||
| 43ee9746bd | |||
| 7283c5c22f | |||
| 8b71fe4af6 | |||
| b627fb5970 | |||
| be3ad1ef99 | |||
| 54264a9f78 | |||
| 65380c66bd | |||
| 8c96991ce0 | |||
| 07a44993ac | |||
| 60d2d25463 | |||
| 907f99b176 | |||
| ce6aa73c64 | |||
| 257bef85d0 | |||
| a48df87a85 | |||
| fe4cd7cf0f | |||
| 229b34d478 | |||
| 1985f2c9ad | |||
| 01d57a7566 | |||
| 7a4b2c10c7 | |||
| 208b2d37b6 | |||
| ef98912779 |
+3
-1
@@ -219,11 +219,13 @@ macos:
|
||||
- if: $RUNNER == "macosintel"
|
||||
variables:
|
||||
SDKROOT: /opt/sdks/MacOSX10.13.4.sdk
|
||||
NINJA_PKG: $CI_API_V4_URL/projects/30745/packages/generic/ninja_macos/v1.11.1.1+9/ninja-1.11.1.1-cp38-cp38-macosx_11_0_x86_64.whl
|
||||
when: manual
|
||||
allow_failure: true
|
||||
- if: $RUNNER == "macosarm"
|
||||
variables:
|
||||
SDKROOT: /opt/sdks/MacOSX11.3.sdk
|
||||
NINJA_PKG: ninja==1.11.1.1
|
||||
stage: build
|
||||
parallel:
|
||||
matrix:
|
||||
@@ -246,7 +248,7 @@ macos:
|
||||
- curl -L $CI_API_V4_URL/projects/30437/packages/generic/pkgconfig/v0.29.2+10/pkg-config-0.29.2+10_$(uname -m).tar.xz | tar -C .venv -xJ
|
||||
- curl -L $CI_API_V4_URL/projects/30438/packages/generic/bison/v3.8.2+3/bison-3.8.2+3_$(uname -m).tar.xz | tar -C .venv -xJ
|
||||
- source .venv/bin/activate
|
||||
- pip3 install meson==1.3.2 ninja==1.11.1.1
|
||||
- pip3 install meson==1.3.2 $NINJA_PKG
|
||||
# We're not setting up ccache here on purpose as it accelerates the build
|
||||
# so much that it triggers race conditions in the gobject-introspection
|
||||
# subproject.
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
Overview of Changes in 4.14.0, xx-xx-xxxx
|
||||
Overview of Changes in 4.14.1, xx-xx-xxxx
|
||||
=========================================
|
||||
|
||||
|
||||
Overview of Changes in 4.14.0, 12-03-2024
|
||||
=========================================
|
||||
|
||||
Note: The new renderers and dmabuf support are using graphics drivers
|
||||
@@ -9,6 +13,7 @@ recommended to use the latest mesa release (24.x) with the new renderers.
|
||||
|
||||
* GtkTextView:
|
||||
- Don't snapshot children twice
|
||||
- Don't blink the cursor when hidden
|
||||
|
||||
* GtkEmojiChooser:
|
||||
- Fix presentation selector handling
|
||||
@@ -16,6 +21,9 @@ recommended to use the latest mesa release (24.x) with the new renderers.
|
||||
* GtkSnapshot:
|
||||
- Fix wrong nodes with transformed shadows
|
||||
|
||||
* GtkIMContext:
|
||||
- Make gtk_im_context_activate_osk public
|
||||
|
||||
* Accessibility:
|
||||
- Implement get_contents_at for all our text widgets
|
||||
- Add GtkAccessibleText.get_default_attributes
|
||||
@@ -25,6 +33,8 @@ recommended to use the latest mesa release (24.x) with the new renderers.
|
||||
- Round vertical glyph position to a device pixel position if the font is hinted
|
||||
- Fix problems with clip handling
|
||||
- Make vulkan and ngl match their font handling
|
||||
- Fix some corner-cases with offloading and clips
|
||||
- Fix problem with rendering of missing glyphs in hinted fonts
|
||||
|
||||
* MacOs:
|
||||
- Implement cursor-from-texture
|
||||
@@ -39,8 +49,10 @@ recommended to use the latest mesa release (24.x) with the new renderers.
|
||||
Lithuanian
|
||||
Norwegian Bokmål
|
||||
Slovenian
|
||||
Spanish
|
||||
Turkish
|
||||
|
||||
|
||||
Overview of Changes in 4.13.9, 02-03-2024
|
||||
=========================================
|
||||
|
||||
|
||||
@@ -30,6 +30,14 @@ gsk_gpu_clip_init_rect (GskGpuClip *clip,
|
||||
gsk_rounded_rect_init_from_rect (&clip->rect, rect, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
gsk_gpu_clip_init_rounded_rect (GskGpuClip *self,
|
||||
const GskRoundedRect *rect)
|
||||
{
|
||||
self->type = GSK_GPU_CLIP_ROUNDED;
|
||||
gsk_rounded_rect_init_copy (&self->rect, rect);
|
||||
}
|
||||
|
||||
void
|
||||
gsk_gpu_clip_init_copy (GskGpuClip *self,
|
||||
const GskGpuClip *src)
|
||||
@@ -129,6 +137,13 @@ gsk_gpu_clip_intersect_rounded_rect (GskGpuClip *dest,
|
||||
break;
|
||||
|
||||
case GSK_GPU_CLIP_NONE:
|
||||
res = gsk_rounded_rect_intersect_with_rect (rounded, &src->rect.bounds, &dest->rect);
|
||||
if (gsk_gpu_clip_init_after_intersection (dest, res))
|
||||
break;
|
||||
/* XXX: This may grow the bounds quite substantially */
|
||||
gsk_gpu_clip_init_rounded_rect (dest, rounded);
|
||||
break;
|
||||
|
||||
case GSK_GPU_CLIP_CONTAINED:
|
||||
case GSK_GPU_CLIP_RECT:
|
||||
res = gsk_rounded_rect_intersect_with_rect (rounded, &src->rect.bounds, &dest->rect);
|
||||
|
||||
@@ -16,6 +16,7 @@ typedef enum {
|
||||
GSK_GPU_CLIP_ALL_CLIPPED,
|
||||
/* No clipping is necessary, but the clip rect is set
|
||||
* to the actual bounds of the underlying framebuffer
|
||||
* or handled via the scissor.
|
||||
*/
|
||||
GSK_GPU_CLIP_NONE,
|
||||
/* The clip exists outside the rect, so clipping must
|
||||
|
||||
@@ -918,7 +918,13 @@ gsk_gpu_device_lookup_glyph_image (GskGpuDevice *self,
|
||||
return cache->image;
|
||||
}
|
||||
|
||||
scaled_font = gsk_get_scaled_font (font, scale);
|
||||
/* Note: we want to scale the font to the required size *and* ensure that
|
||||
* metrics hinting is off. The latter is necessary since pango lets metrics
|
||||
* hinting influence the rendering of hexboxes, and we get bad outcomes if
|
||||
* that happens.
|
||||
*/
|
||||
scaled_font = gsk_reload_font (font, scale, CAIRO_HINT_METRICS_OFF, CAIRO_HINT_STYLE_DEFAULT, CAIRO_ANTIALIAS_DEFAULT);
|
||||
|
||||
subpixel_x = (flags & 3) / 4.f;
|
||||
subpixel_y = ((flags >> 2) & 3) / 4.f;
|
||||
pango_font_get_glyph_extents (scaled_font, glyph, &ink_rect, NULL);
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "gskdebugprivate.h"
|
||||
#include "gskpath.h"
|
||||
#include "gskrectprivate.h"
|
||||
#include "gskvec2private.h"
|
||||
#include "gskrendernodeprivate.h"
|
||||
#include "gskroundedrectprivate.h"
|
||||
#include "gskstrokeprivate.h"
|
||||
@@ -184,20 +185,20 @@ gsk_gpu_node_processor_init (GskGpuNodeProcessor *self,
|
||||
{
|
||||
float scale_x = viewport->size.width / width;
|
||||
float scale_y = viewport->size.height / height;
|
||||
gsk_gpu_clip_init_rect (&self->clip,
|
||||
&GRAPHENE_RECT_INIT (
|
||||
scale_x * clip->x,
|
||||
scale_y * clip->y,
|
||||
scale_x * clip->width,
|
||||
scale_y * clip->height
|
||||
));
|
||||
gsk_gpu_clip_init_empty (&self->clip,
|
||||
&GRAPHENE_RECT_INIT (
|
||||
scale_x * clip->x,
|
||||
scale_y * clip->y,
|
||||
scale_x * clip->width,
|
||||
scale_y * clip->height
|
||||
));
|
||||
}
|
||||
|
||||
self->modelview = NULL;
|
||||
gsk_gpu_image_get_projection_matrix (target, &self->projection);
|
||||
graphene_vec2_init (&self->scale,
|
||||
width / viewport->size.width,
|
||||
height / viewport->size.height);
|
||||
gsk_vec2_init (&self->scale,
|
||||
width / viewport->size.width,
|
||||
height / viewport->size.height);
|
||||
self->offset = GRAPHENE_POINT_INIT (-viewport->origin.x,
|
||||
-viewport->origin.y);
|
||||
self->opacity = 1.0;
|
||||
@@ -319,8 +320,8 @@ rect_round_to_pixels (const graphene_rect_t *src,
|
||||
{
|
||||
float x, y, xscale, yscale, inv_xscale, inv_yscale;
|
||||
|
||||
xscale = graphene_vec2_get_x (pixel_scale);
|
||||
yscale = graphene_vec2_get_y (pixel_scale);
|
||||
xscale = gsk_vec2_get_x (pixel_scale);
|
||||
yscale = gsk_vec2_get_y (pixel_scale);
|
||||
inv_xscale = 1.0f / xscale;
|
||||
inv_yscale = 1.0f / yscale;
|
||||
|
||||
@@ -345,8 +346,8 @@ gsk_gpu_node_processor_init_draw (GskGpuNodeProcessor *self,
|
||||
|
||||
area.x = 0;
|
||||
area.y = 0;
|
||||
area.width = ceilf (graphene_vec2_get_x (scale) * viewport->size.width - EPSILON);
|
||||
area.height = ceilf (graphene_vec2_get_y (scale) * viewport->size.height - EPSILON);
|
||||
area.width = ceilf (gsk_vec2_get_x (scale) * viewport->size.width - EPSILON);
|
||||
area.height = ceilf (gsk_vec2_get_y (scale) * viewport->size.height - EPSILON);
|
||||
|
||||
image = gsk_gpu_device_create_offscreen_image (gsk_gpu_frame_get_device (frame),
|
||||
FALSE,
|
||||
@@ -629,8 +630,8 @@ gsk_gpu_node_processor_rect_is_integer (GskGpuNodeProcessor *self,
|
||||
cairo_rectangle_int_t *int_rect)
|
||||
{
|
||||
graphene_rect_t transformed_rect;
|
||||
float scale_x = graphene_vec2_get_x (&self->scale);
|
||||
float scale_y = graphene_vec2_get_y (&self->scale);
|
||||
float scale_x = gsk_vec2_get_x (&self->scale);
|
||||
float scale_y = gsk_vec2_get_y (&self->scale);
|
||||
|
||||
switch (gsk_transform_get_category (self->modelview))
|
||||
{
|
||||
@@ -1030,7 +1031,7 @@ gsk_gpu_node_processor_blur_op (GskGpuNodeProcessor *self,
|
||||
|
||||
gsk_gpu_node_processor_sync_globals (&other, 0);
|
||||
|
||||
graphene_vec2_init (&direction, blur_radius, 0.0f);
|
||||
gsk_vec2_init (&direction, blur_radius, 0.0f);
|
||||
gsk_gpu_blur_op (other.frame,
|
||||
gsk_gpu_clip_get_shader_clip (&other.clip, &other.offset, &intermediate_rect),
|
||||
source_desc,
|
||||
@@ -1044,7 +1045,7 @@ gsk_gpu_node_processor_blur_op (GskGpuNodeProcessor *self,
|
||||
|
||||
real_offset = GRAPHENE_POINT_INIT (self->offset.x + shadow_offset->x,
|
||||
self->offset.y + shadow_offset->y);
|
||||
graphene_vec2_init (&direction, 0.0f, blur_radius);
|
||||
gsk_vec2_init (&direction, 0.0f, blur_radius);
|
||||
intermediate_descriptor = gsk_gpu_node_processor_add_image (self, intermediate, GSK_GPU_SAMPLER_TRANSPARENT);
|
||||
if (shadow_color)
|
||||
{
|
||||
@@ -1328,7 +1329,7 @@ gsk_gpu_node_processor_add_node_clipped (GskGpuNodeProcessor *self,
|
||||
gsk_gpu_clip_init_copy (&self->clip, &old_clip);
|
||||
return;
|
||||
}
|
||||
else if (self->clip.type == GSK_GPU_CLIP_RECT &&
|
||||
else if ((self->clip.type == GSK_GPU_CLIP_RECT || self->clip.type == GSK_GPU_CLIP_CONTAINED) &&
|
||||
gsk_rect_contains_rect (&self->clip.rect.bounds, &clip))
|
||||
{
|
||||
self->clip.type = GSK_GPU_CLIP_NONE;
|
||||
@@ -1581,8 +1582,8 @@ gsk_gpu_node_processor_add_transform_node (GskGpuNodeProcessor *self,
|
||||
gsk_gpu_clip_scale (&self->clip, &old_clip, scale_x, scale_y);
|
||||
self->offset.x = (self->offset.x + dx) / scale_x;
|
||||
self->offset.y = (self->offset.y + dy) / scale_y;
|
||||
graphene_vec2_init (&self->scale, fabs (scale_x), fabs (scale_y));
|
||||
graphene_vec2_multiply (&self->scale, &old_scale, &self->scale);
|
||||
gsk_vec2_init (&self->scale, fabs (scale_x), fabs (scale_y));
|
||||
gsk_vec2_multiply (&self->scale, &old_scale, &self->scale);
|
||||
self->modelview = gsk_transform_scale (self->modelview,
|
||||
scale_x / fabs (scale_x),
|
||||
scale_y / fabs (scale_y));
|
||||
@@ -1642,15 +1643,15 @@ gsk_gpu_node_processor_add_transform_node (GskGpuNodeProcessor *self,
|
||||
old_modelview = gsk_transform_ref (self->modelview);
|
||||
|
||||
self->modelview = gsk_transform_scale (self->modelview,
|
||||
graphene_vec2_get_x (&self->scale),
|
||||
graphene_vec2_get_y (&self->scale));
|
||||
gsk_vec2_get_x (&self->scale),
|
||||
gsk_vec2_get_y (&self->scale));
|
||||
self->modelview = gsk_transform_transform (self->modelview, clip_transform);
|
||||
gsk_transform_unref (clip_transform);
|
||||
|
||||
extract_scale_from_transform (self->modelview, &scale_x, &scale_y);
|
||||
|
||||
old_pixels = MAX (graphene_vec2_get_x (&old_scale) * old_clip.rect.bounds.size.width,
|
||||
graphene_vec2_get_y (&old_scale) * old_clip.rect.bounds.size.height);
|
||||
old_pixels = MAX (gsk_vec2_get_x (&old_scale) * old_clip.rect.bounds.size.width,
|
||||
gsk_vec2_get_y (&old_scale) * old_clip.rect.bounds.size.height);
|
||||
new_pixels = MAX (scale_x * self->clip.rect.bounds.size.width,
|
||||
scale_y * self->clip.rect.bounds.size.height);
|
||||
|
||||
@@ -1663,7 +1664,7 @@ gsk_gpu_node_processor_add_transform_node (GskGpuNodeProcessor *self,
|
||||
}
|
||||
|
||||
self->modelview = gsk_transform_scale (self->modelview, 1 / scale_x, 1 / scale_y);
|
||||
graphene_vec2_init (&self->scale, scale_x, scale_y);
|
||||
gsk_vec2_init (&self->scale, scale_x, scale_y);
|
||||
self->offset = *graphene_point_zero ();
|
||||
}
|
||||
break;
|
||||
@@ -1735,8 +1736,8 @@ gsk_gpu_node_processor_create_transform_pattern (GskGpuPatternWriter *self,
|
||||
self->bounds.size.width *= inv_sx;
|
||||
self->bounds.size.height *= inv_sy;
|
||||
self->offset = GRAPHENE_POINT_INIT (0, 0);
|
||||
graphene_vec2_init (&self->scale, fabs (sx), fabs (sy));
|
||||
graphene_vec2_multiply (&self->scale, &old_scale, &self->scale);
|
||||
gsk_vec2_init (&self->scale, fabs (sx), fabs (sy));
|
||||
gsk_vec2_multiply (&self->scale, &old_scale, &self->scale);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1820,8 +1821,8 @@ gsk_gpu_node_processor_add_color_node (GskGpuNodeProcessor *self,
|
||||
return;
|
||||
}
|
||||
|
||||
scale_x = graphene_vec2_get_x (&self->scale);
|
||||
scale_y = graphene_vec2_get_y (&self->scale);
|
||||
scale_x = gsk_vec2_get_x (&self->scale);
|
||||
scale_y = gsk_vec2_get_y (&self->scale);
|
||||
clipped = GRAPHENE_RECT_INIT (int_clipped.x / scale_x, int_clipped.y / scale_y,
|
||||
int_clipped.width / scale_x, int_clipped.height / scale_y);
|
||||
shader_clip = gsk_gpu_clip_get_shader_clip (&self->clip, graphene_point_zero(), &clipped);
|
||||
@@ -1948,8 +1949,8 @@ gsk_gpu_node_processor_add_texture_node (GskGpuNodeProcessor *self,
|
||||
}
|
||||
|
||||
if (gsk_gpu_frame_should_optimize (self->frame, GSK_GPU_OPTIMIZE_MIPMAP) &&
|
||||
(gdk_texture_get_width (texture) > 2 * node->bounds.size.width * graphene_vec2_get_x (&self->scale) ||
|
||||
gdk_texture_get_height (texture) > 2 * node->bounds.size.height * graphene_vec2_get_y (&self->scale)))
|
||||
(gdk_texture_get_width (texture) > 2 * node->bounds.size.width * gsk_vec2_get_x (&self->scale) ||
|
||||
gdk_texture_get_height (texture) > 2 * node->bounds.size.height * gsk_vec2_get_y (&self->scale)))
|
||||
{
|
||||
guint32 descriptor;
|
||||
|
||||
@@ -2015,8 +2016,8 @@ gsk_gpu_node_processor_create_texture_pattern (GskGpuPatternWriter *self,
|
||||
}
|
||||
|
||||
if (gsk_gpu_frame_should_optimize (self->frame, GSK_GPU_OPTIMIZE_MIPMAP) &&
|
||||
(gdk_texture_get_width (texture) > 2 * node->bounds.size.width * graphene_vec2_get_x (&self->scale) ||
|
||||
gdk_texture_get_height (texture) > 2 * node->bounds.size.height * graphene_vec2_get_y (&self->scale)))
|
||||
(gdk_texture_get_width (texture) > 2 * node->bounds.size.width * gsk_vec2_get_x (&self->scale) ||
|
||||
gdk_texture_get_height (texture) > 2 * node->bounds.size.height * gsk_vec2_get_y (&self->scale)))
|
||||
{
|
||||
image = gsk_gpu_node_processor_ensure_image (self->frame,
|
||||
image,
|
||||
@@ -2060,7 +2061,7 @@ gsk_gpu_node_processor_add_texture_scale_node (GskGpuNodeProcessor *self,
|
||||
gboolean need_mipmap, need_offscreen;
|
||||
|
||||
need_offscreen = self->modelview != NULL ||
|
||||
!graphene_vec2_equal (&self->scale, graphene_vec2_one ());
|
||||
gsk_vec2_equal (&self->scale, graphene_vec2_one ());
|
||||
if (need_offscreen)
|
||||
{
|
||||
GskGpuImage *offscreen;
|
||||
@@ -3021,7 +3022,7 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
offset.x += self->offset.x;
|
||||
offset.y += self->offset.y;
|
||||
|
||||
scale = MAX (graphene_vec2_get_x (&self->scale), graphene_vec2_get_y (&self->scale));
|
||||
scale = MAX (gsk_vec2_get_x (&self->scale), gsk_vec2_get_y (&self->scale));
|
||||
inv_scale = 1.f / scale;
|
||||
|
||||
glyph_align = gsk_gpu_frame_should_optimize (self->frame, GSK_GPU_OPTIMIZE_GLYPH_ALIGN);
|
||||
@@ -3043,15 +3044,15 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
/* Force glyph_origin.y to be device pixel aligned.
|
||||
* The hinter expects that.
|
||||
*/
|
||||
glyph_origin.x = roundf (glyph_origin.x * scale * 4);
|
||||
glyph_origin.x = floor (glyph_origin.x * scale * 4 + .5);
|
||||
flags = ((int) glyph_origin.x & 3);
|
||||
glyph_origin.x = 0.25 * inv_scale * glyph_origin.x;
|
||||
glyph_origin.y = roundf (glyph_origin.y * scale) * inv_scale;
|
||||
glyph_origin.y = floor (glyph_origin.y * scale + .5) * inv_scale;
|
||||
}
|
||||
else if (glyph_align)
|
||||
{
|
||||
glyph_origin.x = roundf (glyph_origin.x * scale * 4);
|
||||
glyph_origin.y = roundf (glyph_origin.y * scale * 4);
|
||||
glyph_origin.x = floor (glyph_origin.x * scale * 4 + .5);
|
||||
glyph_origin.y = floor (glyph_origin.y * scale * 4 + .5);
|
||||
flags = ((int) glyph_origin.x & 3) |
|
||||
(((int) glyph_origin.y & 3) << 2);
|
||||
glyph_origin.x = 0.25 * inv_scale * glyph_origin.x;
|
||||
@@ -3059,8 +3060,8 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
}
|
||||
else
|
||||
{
|
||||
glyph_origin.x = roundf (glyph_origin.x * scale) * inv_scale;
|
||||
glyph_origin.y = roundf (glyph_origin.y * scale) * inv_scale;
|
||||
glyph_origin.x = floor (glyph_origin.x * scale + .5) * inv_scale;
|
||||
glyph_origin.y = floor (glyph_origin.y * scale + .5) * inv_scale;
|
||||
flags = 0;
|
||||
}
|
||||
|
||||
@@ -3073,11 +3074,19 @@ gsk_gpu_node_processor_add_glyph_node (GskGpuNodeProcessor *self,
|
||||
&glyph_bounds,
|
||||
&glyph_offset);
|
||||
|
||||
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_tex_rect = GRAPHENE_RECT_INIT (-glyph_bounds.origin.x * inv_scale,
|
||||
-glyph_bounds.origin.y * inv_scale,
|
||||
gsk_gpu_image_get_width (image) * inv_scale,
|
||||
gsk_gpu_image_get_height (image) * inv_scale);
|
||||
glyph_bounds = GRAPHENE_RECT_INIT (0,
|
||||
0,
|
||||
glyph_bounds.size.width * inv_scale,
|
||||
glyph_bounds.size.height * inv_scale);
|
||||
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 (glyphs[i].attr.is_color)
|
||||
gsk_gpu_texture_op (self->frame,
|
||||
gsk_gpu_clip_get_shader_clip (&self->clip, &glyph_offset, &glyph_bounds),
|
||||
@@ -3127,7 +3136,7 @@ gsk_gpu_node_processor_create_glyph_pattern (GskGpuPatternWriter *self,
|
||||
offset.x += self->offset.x;
|
||||
offset.y += self->offset.y;
|
||||
|
||||
scale = MAX (graphene_vec2_get_x (&self->scale), graphene_vec2_get_y (&self->scale));
|
||||
scale = MAX (gsk_vec2_get_x (&self->scale), gsk_vec2_get_y (&self->scale));
|
||||
inv_scale = 1.f / scale;
|
||||
|
||||
gsk_gpu_pattern_writer_append_uint (self, GSK_GPU_PATTERN_GLYPHS);
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "gdk/gdkglcontextprivate.h"
|
||||
#include "gsk/gskdebugprivate.h"
|
||||
#include "gskvec2private.h"
|
||||
|
||||
static GskGpuOp *
|
||||
gsk_gpu_upload_op_gl_command_with_area (GskGpuOp *op,
|
||||
@@ -465,8 +466,8 @@ gsk_gpu_upload_cairo_op (GskGpuFrame *frame,
|
||||
self->image = gsk_gpu_device_create_upload_image (gsk_gpu_frame_get_device (frame),
|
||||
FALSE,
|
||||
GDK_MEMORY_DEFAULT,
|
||||
ceil (graphene_vec2_get_x (scale) * viewport->size.width),
|
||||
ceil (graphene_vec2_get_y (scale) * viewport->size.height));
|
||||
ceil (gsk_vec2_get_x (scale) * viewport->size.width),
|
||||
ceil (gsk_vec2_get_y (scale) * viewport->size.height));
|
||||
self->viewport = *viewport;
|
||||
self->func = func;
|
||||
self->user_data = user_data;
|
||||
|
||||
+9
-21
@@ -38,7 +38,7 @@ typedef struct
|
||||
guint is_rectilinear : 1;
|
||||
guint is_fully_contained : 1;
|
||||
guint is_empty : 1;
|
||||
guint is_complex : 1; /* Inside a non-representable clip, even if fully contained */
|
||||
guint is_complex : 1;
|
||||
} Clip;
|
||||
|
||||
struct _GskOffload
|
||||
@@ -225,13 +225,10 @@ static void
|
||||
push_rect_clip (GskOffload *self,
|
||||
const GskRoundedRect *rect)
|
||||
{
|
||||
Clip *current_clip = self->clips->data;
|
||||
Clip *clip = g_new0 (Clip, 1);
|
||||
|
||||
clip->rect = *rect;
|
||||
clip->is_rectilinear = gsk_rounded_rect_is_rectilinear (rect);
|
||||
clip->is_empty = (rect->bounds.size.width == 0 || rect->bounds.size.height == 0);
|
||||
clip->is_complex = current_clip && current_clip->is_complex;
|
||||
|
||||
self->clips = g_slist_prepend (self->clips, clip);
|
||||
self->current_clip = self->clips->data;
|
||||
@@ -252,7 +249,6 @@ push_contained_clip (GskOffload *self)
|
||||
clip->rect = current_clip->rect;
|
||||
clip->is_rectilinear = TRUE;
|
||||
clip->is_fully_contained = TRUE;
|
||||
clip->is_complex = current_clip && current_clip->is_complex;
|
||||
|
||||
self->clips = g_slist_prepend (self->clips, clip);
|
||||
self->current_clip = self->clips->data;
|
||||
@@ -282,8 +278,6 @@ pop_clip (GskOffload *self)
|
||||
self->clips = self->clips->next;
|
||||
if (self->clips)
|
||||
self->current_clip = self->clips->data;
|
||||
else
|
||||
self->current_clip = NULL;
|
||||
|
||||
g_slist_free_1 (l);
|
||||
g_free (clip);
|
||||
@@ -460,7 +454,7 @@ visit_node (GskOffload *self,
|
||||
case GSK_MASK_NODE:
|
||||
case GSK_FILL_NODE:
|
||||
case GSK_STROKE_NODE:
|
||||
break;
|
||||
break;
|
||||
|
||||
case GSK_CLIP_NODE:
|
||||
{
|
||||
@@ -521,21 +515,21 @@ visit_node (GskOffload *self,
|
||||
push_empty_clip (self);
|
||||
else if (result == GSK_INTERSECTION_NONEMPTY)
|
||||
push_rect_clip (self, &intersection);
|
||||
else if (gsk_rounded_rect_contains_rect (&self->current_clip->rect, &transformed_clip.bounds))
|
||||
push_rect_clip (self, &transformed_clip);
|
||||
else
|
||||
push_complex_clip (self);
|
||||
goto complex_clip;
|
||||
visit_node (self, gsk_rounded_clip_node_get_child (node));
|
||||
pop_clip (self);
|
||||
}
|
||||
else
|
||||
{
|
||||
complex_clip:
|
||||
if (gsk_rounded_rect_contains_rect (&self->current_clip->rect, &transformed_clip.bounds))
|
||||
push_rect_clip (self, &transformed_clip);
|
||||
else
|
||||
push_complex_clip (self);
|
||||
visit_node (self, gsk_rounded_clip_node_get_child (node));
|
||||
pop_clip (self);
|
||||
}
|
||||
|
||||
visit_node (self, gsk_rounded_clip_node_get_child (node));
|
||||
pop_clip (self);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -572,12 +566,6 @@ visit_node (GskOffload *self,
|
||||
"Can't offload subsurface %p: clipped",
|
||||
subsurface);
|
||||
}
|
||||
else if (self->current_clip->is_complex)
|
||||
{
|
||||
GDK_DISPLAY_DEBUG (gdk_surface_get_display (self->surface), OFFLOAD,
|
||||
"Can't offload subsurface %p: inside non-representable clip",
|
||||
subsurface);
|
||||
}
|
||||
else if (self->transforms &&
|
||||
gsk_transform_get_category ((GskTransform *)self->transforms->data) < GSK_TRANSFORM_CATEGORY_2D_AFFINE)
|
||||
{
|
||||
@@ -606,7 +594,7 @@ visit_node (GskOffload *self,
|
||||
case GSK_NOT_A_RENDER_NODE:
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
if (has_clip)
|
||||
|
||||
+38
-93
@@ -22,103 +22,27 @@ gsk_ensure_resources (void)
|
||||
}
|
||||
|
||||
/*< 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;
|
||||
FcPattern *pattern;
|
||||
double dpi;
|
||||
|
||||
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);
|
||||
|
||||
pattern = pango_fc_font_get_pattern (PANGO_FC_FONT (font));
|
||||
if (FcPatternGetDouble (pattern, FC_DPI, 0, &dpi) == FcResultMatch)
|
||||
pango_cairo_context_set_resolution (context, dpi);
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
/*< private >
|
||||
* gsk_get_hinted_font:
|
||||
* gsk_reload_font:
|
||||
* @font: a `PangoFont`
|
||||
* @scale: the scale to apply
|
||||
* @hint_metris: hint metrics to use or `CAIRO_HINT_METRICS_DEFAILT` to keep the
|
||||
* hint metrics of the font unchanged
|
||||
* @hint_style: hint style to use or `CAIRO_HINT_STYLE_DEFAULT` to keep the
|
||||
* hint style of @font unchanged
|
||||
* @antialias: antialiasing to use, or `CAIRO_ANTIALIAS_DEFAULT` to keep the
|
||||
* antialias option of @font unchanged
|
||||
*
|
||||
* Returns a font that is just like @font, but uses the
|
||||
* given hinting options for its glyphs and metrics.
|
||||
* given scale and hinting options for its glyphs and metrics.
|
||||
*
|
||||
* Returns: (transfer full): the modified `PangoFont`
|
||||
*/
|
||||
PangoFont *
|
||||
gsk_get_hinted_font (PangoFont *font,
|
||||
cairo_hint_style_t hint_style,
|
||||
cairo_antialias_t antialias)
|
||||
gsk_reload_font (PangoFont *font,
|
||||
float scale,
|
||||
cairo_hint_metrics_t hint_metrics,
|
||||
cairo_hint_style_t hint_style,
|
||||
cairo_antialias_t antialias)
|
||||
{
|
||||
cairo_font_options_t *options;
|
||||
cairo_scaled_font_t *sf;
|
||||
@@ -127,24 +51,32 @@ gsk_get_hinted_font (PangoFont *font,
|
||||
PangoFontDescription *desc;
|
||||
FcPattern *pattern;
|
||||
double dpi;
|
||||
int size;
|
||||
#endif
|
||||
|
||||
/* These requests often come in sequentially so keep the result
|
||||
* around and re-use it if everything matches.
|
||||
*/
|
||||
static PangoFont *last_font;
|
||||
static float last_scale;
|
||||
static cairo_hint_metrics_t last_hint_metrics;
|
||||
static cairo_hint_style_t last_hint_style;
|
||||
static cairo_antialias_t last_antialias;
|
||||
static PangoFont *last_result;
|
||||
|
||||
if (last_result != NULL &&
|
||||
last_font == font &&
|
||||
last_scale == scale &&
|
||||
last_hint_metrics == hint_metrics &&
|
||||
last_hint_style == hint_style &&
|
||||
last_antialias == antialias)
|
||||
return g_object_ref (last_result);
|
||||
|
||||
last_scale = scale;
|
||||
last_hint_metrics = hint_metrics;
|
||||
last_hint_style = hint_style;
|
||||
last_antialias = antialias;
|
||||
|
||||
g_set_object (&last_font, font);
|
||||
g_clear_object (&last_result);
|
||||
|
||||
@@ -152,15 +84,19 @@ gsk_get_hinted_font (PangoFont *font,
|
||||
sf = pango_cairo_font_get_scaled_font (PANGO_CAIRO_FONT (font));
|
||||
cairo_scaled_font_get_font_options (sf, options);
|
||||
|
||||
if (hint_metrics == CAIRO_HINT_METRICS_DEFAULT)
|
||||
hint_metrics = cairo_font_options_get_hint_metrics (options);
|
||||
|
||||
if (hint_style == CAIRO_HINT_STYLE_DEFAULT)
|
||||
hint_style = cairo_font_options_get_hint_style (options);
|
||||
|
||||
if (antialias == CAIRO_ANTIALIAS_DEFAULT)
|
||||
antialias = cairo_font_options_get_antialias (options);
|
||||
|
||||
if (cairo_font_options_get_hint_style (options) == hint_style &&
|
||||
if (1.0 == scale &&
|
||||
cairo_font_options_get_hint_metrics (options) == hint_metrics &&
|
||||
cairo_font_options_get_hint_style (options) == hint_style &&
|
||||
cairo_font_options_get_antialias (options) == antialias &&
|
||||
cairo_font_options_get_hint_metrics (options) == CAIRO_HINT_METRICS_OFF &&
|
||||
cairo_font_options_get_subpixel_order (options) == CAIRO_SUBPIXEL_ORDER_DEFAULT)
|
||||
{
|
||||
last_result = g_object_ref (font);
|
||||
@@ -168,9 +104,9 @@ gsk_get_hinted_font (PangoFont *font,
|
||||
return g_object_ref (font);
|
||||
}
|
||||
|
||||
cairo_font_options_set_hint_metrics (options, hint_metrics);
|
||||
cairo_font_options_set_hint_style (options, hint_style);
|
||||
cairo_font_options_set_antialias (options, antialias);
|
||||
cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_OFF);
|
||||
cairo_font_options_set_subpixel_order (options, CAIRO_SUBPIXEL_ORDER_DEFAULT);
|
||||
|
||||
if (!context)
|
||||
@@ -180,7 +116,7 @@ gsk_get_hinted_font (PangoFont *font,
|
||||
cairo_font_options_destroy (options);
|
||||
|
||||
#if PANGO_VERSION_CHECK (1, 52, 0)
|
||||
last_result = pango_font_map_reload_font (pango_font_get_font_map (font), font, 1.0, context, NULL);
|
||||
last_result = pango_font_map_reload_font (pango_font_get_font_map (font), font, scale, context, NULL);
|
||||
#else
|
||||
|
||||
pattern = pango_fc_font_get_pattern (PANGO_FC_FONT (font));
|
||||
@@ -188,6 +124,13 @@ gsk_get_hinted_font (PangoFont *font,
|
||||
pango_cairo_context_set_resolution (context, dpi);
|
||||
|
||||
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) floor (size * scale + .5));
|
||||
|
||||
last_result = pango_font_map_load_font (pango_font_get_font_map (font), context, desc);
|
||||
pango_font_description_free (desc);
|
||||
#endif
|
||||
@@ -213,9 +156,11 @@ gsk_get_unhinted_glyph_string_extents (PangoGlyphString *glyphs,
|
||||
{
|
||||
PangoFont *unhinted;
|
||||
|
||||
unhinted = gsk_get_hinted_font (font,
|
||||
CAIRO_HINT_STYLE_NONE,
|
||||
CAIRO_ANTIALIAS_DEFAULT);
|
||||
unhinted = gsk_reload_font (font,
|
||||
1.0,
|
||||
CAIRO_HINT_METRICS_OFF,
|
||||
CAIRO_HINT_STYLE_NONE,
|
||||
CAIRO_ANTIALIAS_DEFAULT);
|
||||
|
||||
pango_glyph_string_extents (glyphs, unhinted, ink_rect, NULL);
|
||||
|
||||
|
||||
+5
-6
@@ -8,12 +8,11 @@ G_BEGIN_DECLS
|
||||
|
||||
void gsk_ensure_resources (void);
|
||||
|
||||
PangoFont *gsk_get_scaled_font (PangoFont *font,
|
||||
float scale);
|
||||
|
||||
PangoFont *gsk_get_hinted_font (PangoFont *font,
|
||||
cairo_hint_style_t hint_style,
|
||||
cairo_antialias_t antialias);
|
||||
PangoFont *gsk_reload_font (PangoFont *font,
|
||||
float scale,
|
||||
cairo_hint_metrics_t hint_metrics,
|
||||
cairo_hint_style_t hint_style,
|
||||
cairo_antialias_t antialias);
|
||||
|
||||
void gsk_get_unhinted_glyph_string_extents (PangoGlyphString *glyphs,
|
||||
PangoFont *font,
|
||||
|
||||
@@ -2345,7 +2345,7 @@ parse_text_node (GtkCssParser *parser,
|
||||
g_assert (font);
|
||||
}
|
||||
|
||||
hinted = gsk_get_hinted_font (font, hint_style, antialias);
|
||||
hinted = gsk_reload_font (font, 1.0, CAIRO_HINT_METRICS_OFF, hint_style, antialias);
|
||||
g_object_unref (font);
|
||||
font = hinted;
|
||||
|
||||
@@ -4466,6 +4466,8 @@ render_node_print (Printer *p,
|
||||
start_node (p, "subsurface", node_name);
|
||||
|
||||
append_node_param (p, "child", gsk_subsurface_node_get_child (node));
|
||||
|
||||
end_node (p);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
#pragma once
|
||||
|
||||
#include <graphene.h>
|
||||
#include <math.h>
|
||||
|
||||
static inline float
|
||||
gsk_vec2_get_x (const graphene_vec2_t *v)
|
||||
{
|
||||
return graphene_simd4f_get_x (v->__graphene_private_value);
|
||||
}
|
||||
|
||||
static inline float
|
||||
gsk_vec2_get_y (const graphene_vec2_t *v)
|
||||
{
|
||||
return graphene_simd4f_get_y (v->__graphene_private_value);
|
||||
}
|
||||
|
||||
static inline graphene_vec2_t *
|
||||
gsk_vec2_init (graphene_vec2_t *v,
|
||||
float x,
|
||||
float y)
|
||||
{
|
||||
v->__graphene_private_value = graphene_simd4f_init (x, y, 0.f, 0.f);
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
static inline void
|
||||
gsk_vec2_multiply (const graphene_vec2_t *a,
|
||||
const graphene_vec2_t *b,
|
||||
graphene_vec2_t *res)
|
||||
{
|
||||
res->__graphene_private_value = graphene_simd4f_mul (a->__graphene_private_value,
|
||||
b->__graphene_private_value);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
gsk_vec2_equal (const graphene_vec2_t *v1,
|
||||
const graphene_vec2_t *v2)
|
||||
{
|
||||
return graphene_simd4f_cmp_eq (v1->__graphene_private_value, v2->__graphene_private_value);
|
||||
}
|
||||
|
||||
@@ -708,6 +708,7 @@ refresh_current_folder_and_file_part (GtkFileChooserEntry *chooser_entry)
|
||||
old_file_part = chooser_entry->file_part;
|
||||
|
||||
text = gtk_file_chooser_entry_get_completion_text (chooser_entry);
|
||||
g_return_if_fail (text != NULL);
|
||||
|
||||
last_slash = strrchr (text, G_DIR_SEPARATOR);
|
||||
if (last_slash)
|
||||
|
||||
+24
-6
@@ -18,7 +18,6 @@
|
||||
#include "config.h"
|
||||
#include <string.h>
|
||||
#include "gtkimcontext.h"
|
||||
#include "gtkimcontextprivate.h"
|
||||
#include "gtkprivate.h"
|
||||
#include "gtktypebuiltins.h"
|
||||
#include "gtkmarshalers.h"
|
||||
@@ -1007,11 +1006,30 @@ gtk_im_context_set_property (GObject *obj,
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
gtk_im_context_activate_osk (GtkIMContext *context)
|
||||
/**
|
||||
* gtk_im_context_activate_osk:
|
||||
* @context: a `GtkIMContext`
|
||||
* @event: (nullable): a [class@Gdk.Event]
|
||||
*
|
||||
* Requests the platform to show an on-screen keyboard for user input.
|
||||
*
|
||||
* This method will return %TRUE if this request was actually performed
|
||||
* to the platform, other environmental factors may result in an on-screen
|
||||
* keyboard effectively not showing up.
|
||||
*
|
||||
* Returns: %TRUE if an on-screen keyboard could be requested to the platform.
|
||||
*
|
||||
* Since: 4.14
|
||||
**/
|
||||
gboolean
|
||||
gtk_im_context_activate_osk (GtkIMContext *context,
|
||||
GdkEvent *event)
|
||||
{
|
||||
g_return_if_fail (GTK_IS_IM_CONTEXT (context));
|
||||
g_return_val_if_fail (GTK_IS_IM_CONTEXT (context), FALSE);
|
||||
g_return_val_if_fail (!event || GDK_IS_EVENT (event), FALSE);
|
||||
|
||||
if (GTK_IM_CONTEXT_GET_CLASS (context)->activate_osk)
|
||||
GTK_IM_CONTEXT_GET_CLASS (context)->activate_osk (context);
|
||||
if (!GTK_IM_CONTEXT_GET_CLASS (context)->activate_osk_with_event)
|
||||
return FALSE;
|
||||
|
||||
return GTK_IM_CONTEXT_GET_CLASS (context)->activate_osk_with_event (context, event);
|
||||
}
|
||||
|
||||
+6
-1
@@ -96,9 +96,10 @@ struct _GtkIMContextClass
|
||||
|
||||
/*< private >*/
|
||||
void (* activate_osk) (GtkIMContext *context);
|
||||
gboolean (* activate_osk_with_event) (GtkIMContext *context,
|
||||
GdkEvent *event);
|
||||
|
||||
/* Padding for future expansion */
|
||||
void (*_gtk_reserved1) (void);
|
||||
void (*_gtk_reserved2) (void);
|
||||
void (*_gtk_reserved3) (void);
|
||||
void (*_gtk_reserved4) (void);
|
||||
@@ -168,6 +169,10 @@ gboolean gtk_im_context_delete_surrounding (GtkIMContext *context,
|
||||
int offset,
|
||||
int n_chars);
|
||||
|
||||
GDK_AVAILABLE_IN_4_14
|
||||
gboolean gtk_im_context_activate_osk (GtkIMContext *context,
|
||||
GdkEvent *event);
|
||||
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkIMContext, g_object_unref)
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
/* GTK - The GIMP Toolkit
|
||||
* Copyright (C) 2022 Red Hat Inc.
|
||||
*
|
||||
* This library 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.
|
||||
*
|
||||
* This library 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 this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "gtkimcontext.h"
|
||||
|
||||
void gtk_im_context_activate_osk (GtkIMContext *context);
|
||||
|
||||
@@ -71,10 +71,6 @@ struct _GtkIMContextWayland
|
||||
GtkIMContextSimple parent_instance;
|
||||
GtkWidget *widget;
|
||||
|
||||
GtkGesture *gesture;
|
||||
double press_x;
|
||||
double press_y;
|
||||
|
||||
struct {
|
||||
char *text;
|
||||
int cursor_idx;
|
||||
@@ -521,7 +517,6 @@ gtk_im_context_wayland_finalize (GObject *object)
|
||||
gtk_im_context_wayland_focus_out (GTK_IM_CONTEXT (context));
|
||||
|
||||
g_clear_object (&context->widget);
|
||||
g_clear_object (&context->gesture);
|
||||
g_free (context->surrounding.text);
|
||||
g_free (context->current_preedit.text);
|
||||
g_free (context->pending_preedit.text);
|
||||
@@ -530,50 +525,6 @@ gtk_im_context_wayland_finalize (GObject *object)
|
||||
G_OBJECT_CLASS (gtk_im_context_wayland_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
static void
|
||||
pressed_cb (GtkGestureClick *gesture,
|
||||
int n_press,
|
||||
double x,
|
||||
double y,
|
||||
GtkIMContextWayland *context)
|
||||
{
|
||||
if (n_press == 1)
|
||||
{
|
||||
context->press_x = x;
|
||||
context->press_y = y;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
released_cb (GtkGestureClick *gesture,
|
||||
int n_press,
|
||||
double x,
|
||||
double y,
|
||||
GtkIMContextWayland *context)
|
||||
{
|
||||
GtkIMContextWaylandGlobal *global;
|
||||
GtkInputHints hints;
|
||||
|
||||
global = gtk_im_context_wayland_get_global (context);
|
||||
if (global == NULL)
|
||||
return;
|
||||
|
||||
g_object_get (context, "input-hints", &hints, NULL);
|
||||
|
||||
if (global->focused &&
|
||||
n_press == 1 &&
|
||||
(hints & GTK_INPUT_HINT_INHIBIT_OSK) == 0 &&
|
||||
!gtk_drag_check_threshold_double (context->widget,
|
||||
context->press_x,
|
||||
context->press_y,
|
||||
x, y))
|
||||
{
|
||||
zwp_text_input_v3_enable (global->text_input);
|
||||
notify_im_change (GTK_IM_CONTEXT_WAYLAND (context),
|
||||
ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_OTHER);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_im_context_wayland_set_client_widget (GtkIMContext *context,
|
||||
GtkWidget *widget)
|
||||
@@ -586,34 +537,7 @@ gtk_im_context_wayland_set_client_widget (GtkIMContext *context,
|
||||
if (context_wayland->widget)
|
||||
gtk_im_context_wayland_focus_out (context);
|
||||
|
||||
if (context_wayland->widget && context_wayland->gesture)
|
||||
{
|
||||
gtk_widget_remove_controller (context_wayland->widget,
|
||||
GTK_EVENT_CONTROLLER (context_wayland->gesture));
|
||||
context_wayland->gesture = NULL;
|
||||
}
|
||||
|
||||
g_set_object (&context_wayland->widget, widget);
|
||||
|
||||
if (widget &&
|
||||
!GTK_IS_TEXT (widget) &&
|
||||
!GTK_IS_TEXT_VIEW (widget))
|
||||
{
|
||||
GtkGesture *gesture;
|
||||
|
||||
gesture = gtk_gesture_click_new ();
|
||||
gtk_event_controller_set_static_name (GTK_EVENT_CONTROLLER (gesture), "wayland-im-context-click");
|
||||
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture),
|
||||
GTK_PHASE_CAPTURE);
|
||||
g_signal_connect (gesture, "pressed",
|
||||
G_CALLBACK (pressed_cb), context);
|
||||
g_signal_connect (gesture, "released",
|
||||
G_CALLBACK (released_cb), context);
|
||||
|
||||
gtk_widget_add_controller (context_wayland->widget,
|
||||
GTK_EVENT_CONTROLLER (gesture));
|
||||
context_wayland->gesture = gesture;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -847,9 +771,6 @@ gtk_im_context_wayland_focus_in (GtkIMContext *context)
|
||||
if (!global->text_input)
|
||||
return;
|
||||
|
||||
if (self->gesture)
|
||||
gtk_event_controller_reset (GTK_EVENT_CONTROLLER (self->gesture));
|
||||
|
||||
if (global->focused)
|
||||
enable (self, global);
|
||||
}
|
||||
@@ -884,7 +805,6 @@ gtk_im_context_wayland_set_cursor_location (GtkIMContext *context,
|
||||
GdkRectangle *rect)
|
||||
{
|
||||
GtkIMContextWayland *context_wayland;
|
||||
int side;
|
||||
|
||||
context_wayland = GTK_IM_CONTEXT_WAYLAND (context);
|
||||
|
||||
@@ -894,20 +814,6 @@ gtk_im_context_wayland_set_cursor_location (GtkIMContext *context,
|
||||
context_wayland->cursor_rect.height == rect->height)
|
||||
return;
|
||||
|
||||
/* Reset the gesture if the cursor changes too far (eg. clicking
|
||||
* between disjoint positions in the text).
|
||||
*
|
||||
* Still Allow some jittering (a square almost double the cursor rect height
|
||||
* on either side) as clicking on the exact same position between characters
|
||||
* is hard.
|
||||
*/
|
||||
side = context_wayland->cursor_rect.height;
|
||||
|
||||
if (context_wayland->gesture &&
|
||||
(ABS (rect->x - context_wayland->cursor_rect.x) >= side ||
|
||||
ABS (rect->y - context_wayland->cursor_rect.y) >= side))
|
||||
gtk_event_controller_reset (GTK_EVENT_CONTROLLER (context_wayland->gesture));
|
||||
|
||||
context_wayland->cursor_rect = *rect;
|
||||
}
|
||||
|
||||
@@ -974,18 +880,20 @@ gtk_im_context_wayland_commit (GtkIMContext *context,
|
||||
ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_INPUT_METHOD);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_im_context_wayland_activate_osk (GtkIMContext *context)
|
||||
static gboolean
|
||||
gtk_im_context_wayland_activate_osk_with_event (GtkIMContext *context,
|
||||
GdkEvent *event)
|
||||
{
|
||||
GtkIMContextWaylandGlobal *global;
|
||||
|
||||
global = gtk_im_context_wayland_get_global (GTK_IM_CONTEXT_WAYLAND (context));
|
||||
if (global == NULL)
|
||||
return;
|
||||
return FALSE;
|
||||
|
||||
zwp_text_input_v3_enable (global->text_input);
|
||||
notify_im_change (GTK_IM_CONTEXT_WAYLAND (context),
|
||||
ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_OTHER);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1007,7 +915,7 @@ gtk_im_context_wayland_class_init (GtkIMContextWaylandClass *klass)
|
||||
im_context_class->set_surrounding_with_selection = gtk_im_context_wayland_set_surrounding;
|
||||
im_context_class->get_surrounding_with_selection = gtk_im_context_wayland_get_surrounding;
|
||||
im_context_class->commit = gtk_im_context_wayland_commit;
|
||||
im_context_class->activate_osk = gtk_im_context_wayland_activate_osk;
|
||||
im_context_class->activate_osk_with_event = gtk_im_context_wayland_activate_osk_with_event;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
#include <string.h>
|
||||
#include <locale.h>
|
||||
|
||||
#include "gtkimcontextprivate.h"
|
||||
#include "gtkimmulticontext.h"
|
||||
#include "gtkimmoduleprivate.h"
|
||||
#include "gtklabel.h"
|
||||
@@ -106,7 +105,8 @@ static gboolean gtk_im_multicontext_delete_surrounding_cb (GtkIMContext *
|
||||
int offset,
|
||||
int n_chars,
|
||||
GtkIMMulticontext *multicontext);
|
||||
static void gtk_im_multicontext_activate_osk (GtkIMContext *context);
|
||||
static gboolean gtk_im_multicontext_activate_osk_with_event (GtkIMContext *context,
|
||||
GdkEvent *event);
|
||||
|
||||
static void propagate_purpose (GtkIMMulticontext *context);
|
||||
|
||||
@@ -130,7 +130,7 @@ gtk_im_multicontext_class_init (GtkIMMulticontextClass *class)
|
||||
im_context_class->set_use_preedit = gtk_im_multicontext_set_use_preedit;
|
||||
im_context_class->set_surrounding_with_selection = gtk_im_multicontext_set_surrounding_with_selection;
|
||||
im_context_class->get_surrounding_with_selection = gtk_im_multicontext_get_surrounding_with_selection;
|
||||
im_context_class->activate_osk = gtk_im_multicontext_activate_osk;
|
||||
im_context_class->activate_osk_with_event = gtk_im_multicontext_activate_osk_with_event;
|
||||
|
||||
gobject_class->finalize = gtk_im_multicontext_finalize;
|
||||
}
|
||||
@@ -516,14 +516,17 @@ gtk_im_multicontext_set_surrounding_with_selection (GtkIMContext *context,
|
||||
gtk_im_context_set_surrounding_with_selection (delegate, text, len, cursor_index, anchor_index);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_im_multicontext_activate_osk (GtkIMContext *context)
|
||||
static gboolean
|
||||
gtk_im_multicontext_activate_osk_with_event (GtkIMContext *context,
|
||||
GdkEvent *event)
|
||||
{
|
||||
GtkIMMulticontext *multicontext = GTK_IM_MULTICONTEXT (context);
|
||||
GtkIMContext *delegate = gtk_im_multicontext_get_delegate (multicontext);
|
||||
|
||||
if (delegate)
|
||||
gtk_im_context_activate_osk (delegate);
|
||||
return gtk_im_context_activate_osk (delegate, event);
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -1523,6 +1523,7 @@ gtk_label_dispose (GObject *object)
|
||||
GtkLabel *self = GTK_LABEL (object);
|
||||
|
||||
gtk_label_set_mnemonic_widget (self, NULL);
|
||||
gtk_label_clear_select_info (self);
|
||||
|
||||
G_OBJECT_CLASS (gtk_label_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
@@ -886,6 +886,14 @@ gesture_drag_begin_cb (GtkGestureDrag *gesture,
|
||||
GdkDevice *device;
|
||||
gboolean is_touch;
|
||||
|
||||
/* Only drag the handle when it's visible */
|
||||
if (!gtk_widget_get_child_visible (paned->handle_widget))
|
||||
{
|
||||
gtk_gesture_set_state (GTK_GESTURE (gesture),
|
||||
GTK_EVENT_SEQUENCE_DENIED);
|
||||
return;
|
||||
}
|
||||
|
||||
sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
|
||||
event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
|
||||
device = gdk_event_get_device (event);
|
||||
|
||||
+3
-2
@@ -44,7 +44,6 @@
|
||||
#include "gtkgestureclick.h"
|
||||
#include "gtkgesturesingle.h"
|
||||
#include "gtkimageprivate.h"
|
||||
#include "gtkimcontextprivate.h"
|
||||
#include "gtkimcontextsimple.h"
|
||||
#include "gtkimmulticontext.h"
|
||||
#include "gtkjoinedmenuprivate.h"
|
||||
@@ -2927,11 +2926,13 @@ gtk_text_click_gesture_released (GtkGestureClick *gesture,
|
||||
GtkText *self)
|
||||
{
|
||||
GtkTextPrivate *priv = gtk_text_get_instance_private (self);
|
||||
GdkEvent *event =
|
||||
gtk_event_controller_get_current_event (GTK_EVENT_CONTROLLER (gesture));
|
||||
|
||||
if (n_press == 1 &&
|
||||
!priv->in_drag &&
|
||||
priv->current_pos == priv->selection_bound)
|
||||
gtk_im_context_activate_osk (priv->im_context);
|
||||
gtk_im_context_activate_osk (priv->im_context, event);
|
||||
}
|
||||
|
||||
static char *
|
||||
|
||||
@@ -50,6 +50,9 @@ struct _GtkTextLineDisplayCache
|
||||
#endif
|
||||
};
|
||||
|
||||
static GQueue purge_in_idle;
|
||||
static guint purge_in_idle_source;
|
||||
|
||||
#if DEBUG_LINE_DISPLAY_CACHE
|
||||
# define STAT_ADD(val,n) ((val) += n)
|
||||
# define STAT_INC(val) STAT_ADD(val,1)
|
||||
@@ -78,7 +81,7 @@ gtk_text_line_display_cache_new (void)
|
||||
GtkTextLineDisplayCache *ret;
|
||||
|
||||
ret = g_new0 (GtkTextLineDisplayCache, 1);
|
||||
ret->sorted_by_line = g_sequence_new ((GDestroyNotify)gtk_text_line_display_unref);
|
||||
ret->sorted_by_line = g_sequence_new (NULL);
|
||||
ret->line_to_display = g_hash_table_new (NULL, NULL);
|
||||
ret->mru_size = DEFAULT_MRU_SIZE;
|
||||
|
||||
@@ -98,6 +101,8 @@ gtk_text_line_display_cache_free (GtkTextLineDisplayCache *cache)
|
||||
|
||||
gtk_text_line_display_cache_invalidate (cache);
|
||||
|
||||
g_assert (g_sequence_get_begin_iter (cache->sorted_by_line) == g_sequence_get_end_iter (cache->sorted_by_line));
|
||||
|
||||
g_clear_pointer (&cache->evict_source, g_source_destroy);
|
||||
g_clear_pointer (&cache->sorted_by_line, g_sequence_free);
|
||||
g_clear_pointer (&cache->line_to_display, g_hash_table_unref);
|
||||
@@ -211,6 +216,31 @@ gtk_text_line_display_cache_take_display (GtkTextLineDisplayCache *cache,
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean
|
||||
purge_text_line_display_in_idle (gpointer data)
|
||||
{
|
||||
GQueue q = purge_in_idle;
|
||||
|
||||
purge_in_idle.head = NULL;
|
||||
purge_in_idle.tail = NULL;
|
||||
purge_in_idle.length = 0;
|
||||
|
||||
while (q.head)
|
||||
{
|
||||
GtkTextLineDisplay *display = q.head->data;
|
||||
g_queue_unlink (&q, &display->mru_link);
|
||||
gtk_text_line_display_unref (display);
|
||||
}
|
||||
|
||||
if (purge_in_idle.head == NULL)
|
||||
{
|
||||
purge_in_idle_source = 0;
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
return G_SOURCE_CONTINUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* gtk_text_line_display_cache_invalidate_display:
|
||||
* @cache: a GtkTextLineDisplayCache
|
||||
@@ -250,7 +280,28 @@ gtk_text_line_display_cache_invalidate_display (GtkTextLineDisplayCache *cache,
|
||||
g_queue_unlink (&cache->mru, &display->mru_link);
|
||||
|
||||
if (iter != NULL)
|
||||
g_sequence_remove (iter);
|
||||
{
|
||||
g_sequence_remove (iter);
|
||||
|
||||
g_queue_push_head_link (&purge_in_idle, &display->mru_link);
|
||||
|
||||
/* Purging a lot of GtkTextLineDisplay while processing a frame
|
||||
* can increase the chances that we miss our frame deadline. Instead
|
||||
* defer that work to right after the frame has completed. This can
|
||||
* help situations where we have large, zoomed out TextView like
|
||||
* those used in an overview map.
|
||||
*/
|
||||
if G_UNLIKELY (purge_in_idle_source == 0)
|
||||
{
|
||||
GSource *source;
|
||||
|
||||
purge_in_idle_source = g_idle_add_full (G_PRIORITY_LOW,
|
||||
purge_text_line_display_in_idle,
|
||||
NULL, NULL);
|
||||
source = g_main_context_find_source_by_id (NULL, purge_in_idle_source);
|
||||
g_source_set_static_name (source, "[gtk+ line-display-cache-gc]");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
STAT_INC (cache->inval);
|
||||
|
||||
+36
-16
@@ -40,7 +40,6 @@
|
||||
#include "gtkdragsourceprivate.h"
|
||||
#include "gtkdropcontrollermotion.h"
|
||||
#include "gtkemojichooser.h"
|
||||
#include "gtkimcontextprivate.h"
|
||||
#include "gtkimmulticontext.h"
|
||||
#include "gtkjoinedmenuprivate.h"
|
||||
#include "gtkmagnifierprivate.h"
|
||||
@@ -830,6 +829,17 @@ add_move_binding (GtkWidgetClass *widget_class,
|
||||
"(iib)", step, count, TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_text_view_notify (GObject *object,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
if (pspec->name == I_("has-focus"))
|
||||
gtk_text_view_check_cursor_blink (GTK_TEXT_VIEW (object));
|
||||
|
||||
if (G_OBJECT_CLASS (gtk_text_view_parent_class)->notify)
|
||||
G_OBJECT_CLASS (gtk_text_view_parent_class)->notify (object, pspec);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_text_view_class_init (GtkTextViewClass *klass)
|
||||
{
|
||||
@@ -842,6 +852,7 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
|
||||
gobject_class->get_property = gtk_text_view_get_property;
|
||||
gobject_class->finalize = gtk_text_view_finalize;
|
||||
gobject_class->dispose = gtk_text_view_dispose;
|
||||
gobject_class->notify = gtk_text_view_notify;
|
||||
|
||||
widget_class->realize = gtk_text_view_realize;
|
||||
widget_class->unrealize = gtk_text_view_unrealize;
|
||||
@@ -5764,6 +5775,8 @@ gtk_text_view_click_gesture_released (GtkGestureClick *gesture,
|
||||
double y,
|
||||
GtkTextView *text_view)
|
||||
{
|
||||
GdkEvent *event =
|
||||
gtk_event_controller_get_current_event (GTK_EVENT_CONTROLLER (gesture));
|
||||
GtkTextViewPrivate *priv = text_view->priv;
|
||||
GtkTextBuffer *buffer;
|
||||
GtkTextIter start, end;
|
||||
@@ -5773,7 +5786,7 @@ gtk_text_view_click_gesture_released (GtkGestureClick *gesture,
|
||||
|
||||
if (gtk_text_iter_compare (&start, &end) == 0 &&
|
||||
gtk_text_iter_can_insert (&start, priv->editable))
|
||||
gtk_im_context_activate_osk (priv->im_context);
|
||||
gtk_im_context_activate_osk (priv->im_context, event);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -6069,28 +6082,35 @@ gtk_text_view_remove (GtkTextView *text_view,
|
||||
static gboolean
|
||||
cursor_blinks (GtkTextView *text_view)
|
||||
{
|
||||
GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (text_view));
|
||||
gboolean blink;
|
||||
GtkRoot *root = gtk_widget_get_root (GTK_WIDGET (text_view));
|
||||
|
||||
#ifdef DEBUG_VALIDATION_AND_SCROLLING
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
g_object_get (settings, "gtk-cursor-blink", &blink, NULL);
|
||||
|
||||
if (!blink)
|
||||
return FALSE;
|
||||
|
||||
if (text_view->priv->editable)
|
||||
if (gtk_widget_get_mapped (GTK_WIDGET (text_view)) &&
|
||||
gtk_window_is_active (GTK_WINDOW (root)) &&
|
||||
gtk_widget_has_focus (GTK_WIDGET (text_view)))
|
||||
{
|
||||
GtkTextMark *insert;
|
||||
GtkTextIter iter;
|
||||
GtkSettings *settings = gtk_widget_get_settings (GTK_WIDGET (text_view));
|
||||
gboolean blink;
|
||||
|
||||
insert = gtk_text_buffer_get_insert (get_buffer (text_view));
|
||||
gtk_text_buffer_get_iter_at_mark (get_buffer (text_view), &iter, insert);
|
||||
g_object_get (settings, "gtk-cursor-blink", &blink, NULL);
|
||||
|
||||
if (gtk_text_iter_editable (&iter, text_view->priv->editable))
|
||||
return blink;
|
||||
if (!blink)
|
||||
return FALSE;
|
||||
|
||||
if (text_view->priv->editable)
|
||||
{
|
||||
GtkTextMark *insert;
|
||||
GtkTextIter iter;
|
||||
|
||||
insert = gtk_text_buffer_get_insert (get_buffer (text_view));
|
||||
gtk_text_buffer_get_iter_at_mark (get_buffer (text_view), &iter, insert);
|
||||
|
||||
if (gtk_text_iter_editable (&iter, text_view->priv->editable))
|
||||
return blink;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
project('gtk', 'c',
|
||||
version: '4.14.0',
|
||||
version: '4.14.1',
|
||||
default_options: [
|
||||
'buildtype=debugoptimized',
|
||||
'warning_level=1',
|
||||
|
||||
@@ -19,8 +19,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-14 02:02+0100\n"
|
||||
"POT-Creation-Date: 2024-03-11 18:00+0000\n"
|
||||
"PO-Revision-Date: 2024-03-12 13:38+0100\n"
|
||||
"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
|
||||
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
|
||||
"Language: cs\n"
|
||||
@@ -59,11 +59,11 @@ msgstr "Nezdařilo se poskytnout obsah jako „%s“"
|
||||
msgid "Cannot provide contents as %s"
|
||||
msgstr "Nezdařilo se poskytnout obsah jako %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 "Aktuální podpůrná vrstva nepodporuje OpenGL"
|
||||
|
||||
#: gdk/gdkdisplay.c:1315 gdk/gdkvulkancontext.c:1596
|
||||
#: gdk/gdkdisplay.c:1315 gdk/gdkvulkancontext.c:1601
|
||||
msgid "Vulkan support disabled via GDK_DEBUG"
|
||||
msgstr "Podpora technologie Vulkan je zakázána skrz GDK_DEBUG"
|
||||
|
||||
@@ -124,32 +124,32 @@ msgstr "„Táhni a upusť“ z jiné aplikace není podporováno."
|
||||
msgid "No compatible formats to transfer contents."
|
||||
msgstr "Není k dispozici žádný kompatibilní formát pro přenos obsahu."
|
||||
|
||||
#: 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 "Není povolené žádné 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 "Nelze vytvořit kontext GL"
|
||||
|
||||
#: gdk/gdkglcontext.c:1306
|
||||
#: gdk/gdkglcontext.c:1304
|
||||
msgid "OpenGL ES disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL ES je zakázáno skrz GDK_DEBUG"
|
||||
|
||||
#: gdk/gdkglcontext.c:1318
|
||||
#: gdk/gdkglcontext.c:1316
|
||||
msgid "OpenGL disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL je zakázáno skrz GDK_DEBUG"
|
||||
|
||||
#: gdk/gdkglcontext.c:1329
|
||||
#: gdk/gdkglcontext.c:1327
|
||||
#, c-format
|
||||
msgid "Application does not support %s API"
|
||||
msgstr "Aplikace nepodporuje 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:2113
|
||||
#, c-format
|
||||
msgid "Trying to use %s, but %s is already in use"
|
||||
msgstr "Zkouší se použít %s, ale již se používá %s"
|
||||
@@ -744,21 +744,21 @@ msgstr "Selhalo volání IDataObject_GetData (0x%x), vrací se 0x%lx"
|
||||
msgid "Failed to transmute DnD data W32 format 0x%x to %p (%s)"
|
||||
msgstr "Selhala přeměna dat DnD ve formátu W32 0x%x na %p (%s)"
|
||||
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:320
|
||||
#: gdk/win32/gdkglcontext-win32-wgl.c:329
|
||||
msgid "No GL implementation is available"
|
||||
msgstr "Není k dispozici žádná implementace 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 "Verze WGL %d.%d je příliš stará, je třeba alespoň %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 "Implementace GL nemůže sdílet kontexty 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 "Není dostupné žádné nastavení pro daný pixelový fotmát"
|
||||
|
||||
@@ -870,10 +870,14 @@ msgstr ""
|
||||
"Implementace EGL %d.%d nepodporuje data vrcholů v plovoucí desetinné čárce s "
|
||||
"poloviční přesností"
|
||||
|
||||
#: gsk/gpu/gskgldevice.c:245
|
||||
#: gsk/gpu/gskgldevice.c:246
|
||||
#, c-format
|
||||
msgid "OpenGL ES 3.0 is not supported by this renderer."
|
||||
msgstr ""
|
||||
msgstr "OpenGL ES 3.0 není podporováno tímto vykreslováním."
|
||||
|
||||
#: gsk/gpu/gsknglrenderer.c:62
|
||||
msgid "OpenGL 3.3 required"
|
||||
msgstr "Vyžadováno OpenGL 3.3"
|
||||
|
||||
#: gtk/a11y/gtkatspiaction.c:239
|
||||
msgctxt "accessibility"
|
||||
@@ -1251,7 +1255,6 @@ msgid "Mozilla Public License 2.0"
|
||||
msgstr "Mozilla Public License 2.0"
|
||||
|
||||
#: gtk/gtkaboutdialog.c:137
|
||||
#| msgid "BSD 2-Clause License"
|
||||
msgid "BSD Zero-Clause License"
|
||||
msgstr "BSD Zero-Clause License"
|
||||
|
||||
@@ -1792,6 +1795,11 @@ msgctxt "accessibility"
|
||||
msgid "comment"
|
||||
msgstr "komentář"
|
||||
|
||||
#: gtk/gtkaccessible.c:874
|
||||
msgctxt "accessibility"
|
||||
msgid "terminal"
|
||||
msgstr "terminál"
|
||||
|
||||
#: gtk/gtkalertdialog.c:668 gtk/print/gtkcustompaperunixdialog.c:322
|
||||
#: gtk/gtkmessagedialog.c:166 gtk/ui/gtkassistant.ui:40
|
||||
msgid "_Close"
|
||||
@@ -2365,7 +2373,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "Pokud smažete položku, bude natrvalo ztracena."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5702 gtk/gtktext.c:6147 gtk/gtktextview.c:9018
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6194 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "_Smazat"
|
||||
|
||||
@@ -2575,7 +2583,7 @@ msgid "_Time"
|
||||
msgstr "Č_as"
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:7375 gtk/gtkplacessidebar.c:2306
|
||||
#: gtk/inspector/a11y.ui:43 gtk/inspector/actions.ui:19
|
||||
#: gtk/inspector/a11y.ui:43 gtk/inspector/actions.ui:18
|
||||
#: gtk/inspector/css-node-tree.ui:22 gtk/inspector/prop-list.ui:24
|
||||
#: gtk/ui/gtkfilechooserwidget.ui:385 gtk/print/ui/gtkprintunixdialog.ui:80
|
||||
msgid "Name"
|
||||
@@ -2659,35 +2667,35 @@ msgctxt "Font feature value"
|
||||
msgid "Enable"
|
||||
msgstr "Zapnuto"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2457
|
||||
#: gtk/gtkfontchooserwidget.c:2459
|
||||
msgid "Default"
|
||||
msgstr "Výchozí"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2519
|
||||
#: gtk/gtkfontchooserwidget.c:2521
|
||||
msgid "Ligatures"
|
||||
msgstr "Slitky"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2520
|
||||
#: gtk/gtkfontchooserwidget.c:2522
|
||||
msgid "Letter Case"
|
||||
msgstr "Velikost písmen"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2521
|
||||
#: gtk/gtkfontchooserwidget.c:2523
|
||||
msgid "Number Case"
|
||||
msgstr "Velikost číslic"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2522
|
||||
#: gtk/gtkfontchooserwidget.c:2524
|
||||
msgid "Number Spacing"
|
||||
msgstr "Rozestup číslic"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2523
|
||||
#: gtk/gtkfontchooserwidget.c:2525
|
||||
msgid "Fractions"
|
||||
msgstr "Zlomky"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2524
|
||||
#: gtk/gtkfontchooserwidget.c:2526
|
||||
msgid "Style Variations"
|
||||
msgstr "Vyrianty stylů"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2526
|
||||
#: gtk/gtkfontchooserwidget.c:2528
|
||||
msgid "Character Variations"
|
||||
msgstr "Varianty znaků"
|
||||
|
||||
@@ -2704,31 +2712,31 @@ msgstr "Zavřít"
|
||||
msgid "Close the infobar"
|
||||
msgstr "Zavřít informační lištu"
|
||||
|
||||
#: gtk/gtklabel.c:5699 gtk/gtktext.c:6135 gtk/gtktextview.c:9006
|
||||
#: gtk/gtklabel.c:5708 gtk/gtktext.c:6182 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "_Vyjmout"
|
||||
|
||||
#: gtk/gtklabel.c:5700 gtk/gtktext.c:6139 gtk/gtktextview.c:9010
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6186 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "_Kopírovat"
|
||||
|
||||
#: gtk/gtklabel.c:5701 gtk/gtktext.c:6143 gtk/gtktextview.c:9014
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6190 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "V_ložit"
|
||||
|
||||
#: gtk/gtklabel.c:5707 gtk/gtktext.c:6156 gtk/gtktextview.c:9039
|
||||
#: gtk/gtklabel.c:5716 gtk/gtktext.c:6203 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "Vybr_at vše"
|
||||
|
||||
#: gtk/gtklabel.c:5712
|
||||
#: gtk/gtklabel.c:5721
|
||||
msgid "_Open Link"
|
||||
msgstr "_Otevřít odkaz"
|
||||
|
||||
#: gtk/gtklabel.c:5716
|
||||
#: gtk/gtklabel.c:5725
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "Ko_pírovat adresu odkazu"
|
||||
|
||||
#: gtk/gtklabel.c:5760 gtk/gtktext.c:2716 gtk/gtktextview.c:9088
|
||||
#: gtk/gtklabel.c:5769 gtk/gtktext.c:2723 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "Kontextová nabídka"
|
||||
|
||||
@@ -3574,7 +3582,7 @@ msgid "No registered application with name “%s” for item with URI “%s” f
|
||||
msgstr ""
|
||||
"Nenalezena žádná registrovaná aplikace s názvem „%s“ pro položku s URI „%s“"
|
||||
|
||||
#: gtk/gtksearchentry.c:767
|
||||
#: gtk/gtksearchentry.c:814
|
||||
msgid "Clear Entry"
|
||||
msgstr "Vymazat položku"
|
||||
|
||||
@@ -3665,15 +3673,15 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "Postranní panel"
|
||||
|
||||
#: gtk/gtktext.c:6161 gtk/gtktextview.c:9044
|
||||
#: gtk/gtktext.c:6208 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "Vložit _Emodži"
|
||||
|
||||
#: gtk/gtktextview.c:9026
|
||||
#: gtk/gtktextview.c:9088
|
||||
msgid "_Undo"
|
||||
msgstr "_Zpět"
|
||||
|
||||
#: gtk/gtktextview.c:9030
|
||||
#: gtk/gtktextview.c:9092
|
||||
msgid "_Redo"
|
||||
msgstr "Zn_ovu"
|
||||
|
||||
@@ -3871,37 +3879,37 @@ msgstr "Třídy stylů"
|
||||
msgid "CSS Property"
|
||||
msgstr "Vlastnost CSS"
|
||||
|
||||
#: gtk/inspector/general.c:363
|
||||
#: gtk/inspector/general.c:370
|
||||
msgctxt "GL version"
|
||||
msgid "None"
|
||||
msgstr "žádná"
|
||||
|
||||
#: gtk/inspector/general.c:441
|
||||
#: gtk/inspector/general.c:461
|
||||
msgctxt "GL version"
|
||||
msgid "Unknown"
|
||||
msgstr "Neznámé"
|
||||
|
||||
#: gtk/inspector/general.c:503
|
||||
#: gtk/inspector/general.c:523
|
||||
msgctxt "Vulkan device"
|
||||
msgid "Disabled"
|
||||
msgstr "zakázáno"
|
||||
|
||||
#: 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 "zakázáno"
|
||||
|
||||
#: gtk/inspector/general.c:555
|
||||
#: gtk/inspector/general.c:576
|
||||
msgctxt "Vulkan device"
|
||||
msgid "None"
|
||||
msgstr "žádné"
|
||||
|
||||
#: 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 "žádná"
|
||||
|
||||
#: gtk/inspector/general.c:901
|
||||
#: gtk/inspector/general.c:923
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "Kontext IM je napevno nastaven pomocí GTK_IM_MODULE"
|
||||
|
||||
@@ -4272,27 +4280,27 @@ msgstr "Velikost:"
|
||||
msgid "Trigger"
|
||||
msgstr "Spouštěč"
|
||||
|
||||
#: gtk/inspector/size-groups.c:225
|
||||
#: gtk/inspector/size-groups.c:228
|
||||
msgctxt "sizegroup mode"
|
||||
msgid "None"
|
||||
msgstr "Žádný"
|
||||
|
||||
#: gtk/inspector/size-groups.c:226
|
||||
#: gtk/inspector/size-groups.c:229
|
||||
msgctxt "sizegroup mode"
|
||||
msgid "Horizontal"
|
||||
msgstr "Vodorovný"
|
||||
|
||||
#: gtk/inspector/size-groups.c:227
|
||||
#: gtk/inspector/size-groups.c:230
|
||||
msgctxt "sizegroup mode"
|
||||
msgid "Vertical"
|
||||
msgstr "Svislý"
|
||||
|
||||
#: gtk/inspector/size-groups.c:228
|
||||
#: gtk/inspector/size-groups.c:231
|
||||
msgctxt "sizegroup mode"
|
||||
msgid "Both"
|
||||
msgstr "Obojí"
|
||||
|
||||
#: gtk/inspector/size-groups.c:240
|
||||
#: gtk/inspector/size-groups.c:243
|
||||
msgid "Mode"
|
||||
msgstr "Režim"
|
||||
|
||||
@@ -4349,14 +4357,10 @@ msgstr "Hierarchie"
|
||||
msgid "Implements"
|
||||
msgstr "Implementuje"
|
||||
|
||||
#: gtk/inspector/visual.c:674 gtk/inspector/visual.c:693
|
||||
#: gtk/inspector/visual.c:672 gtk/inspector/visual.c:691
|
||||
msgid "Theme is hardcoded by GTK_THEME"
|
||||
msgstr "Motiv je napevno nastaven pomocí GTK_THEME"
|
||||
|
||||
#: gtk/inspector/visual.c:942
|
||||
msgid "Backend does not support window scaling"
|
||||
msgstr "Podpůrná vrstva nepodporuje škálování oken"
|
||||
|
||||
#: gtk/inspector/visual.ui:34
|
||||
msgid "GTK Theme"
|
||||
msgstr "Motiv GTK"
|
||||
@@ -4377,93 +4381,87 @@ msgstr "Velikost kurzoru"
|
||||
msgid "Icon Theme"
|
||||
msgstr "Motiv ikon"
|
||||
|
||||
#: gtk/inspector/visual.ui:194
|
||||
#: gtk/inspector/visual.ui:199
|
||||
msgid "Font Scale"
|
||||
msgstr "Škálování fontu"
|
||||
|
||||
#: gtk/inspector/visual.ui:239
|
||||
#: gtk/inspector/visual.ui:244
|
||||
msgid "Text Direction"
|
||||
msgstr "Směr textu"
|
||||
|
||||
#: gtk/inspector/visual.ui:254
|
||||
#: gtk/inspector/visual.ui:259
|
||||
msgid "Left-to-Right"
|
||||
msgstr "Zleva doprava"
|
||||
|
||||
#: gtk/inspector/visual.ui:255
|
||||
#: gtk/inspector/visual.ui:260
|
||||
msgid "Right-to-Left"
|
||||
msgstr "Zprava doleva"
|
||||
|
||||
#: gtk/inspector/visual.ui:273
|
||||
msgid "Window Scaling"
|
||||
msgstr "Škálování oken"
|
||||
|
||||
#: gtk/inspector/visual.ui:306
|
||||
#: gtk/inspector/visual.ui:277
|
||||
msgid "Animations"
|
||||
msgstr "Animace"
|
||||
|
||||
#: gtk/inspector/visual.ui:331
|
||||
#: gtk/inspector/visual.ui:302
|
||||
msgid "Slowdown"
|
||||
msgstr "Zpomalení"
|
||||
|
||||
#: gtk/inspector/visual.ui:385
|
||||
#: gtk/inspector/visual.ui:356
|
||||
msgid "Show Framerate"
|
||||
msgstr "Zobrazit snímkovou rychlost"
|
||||
|
||||
#: gtk/inspector/visual.ui:410
|
||||
#: gtk/inspector/visual.ui:381
|
||||
msgid "Show Graphic Updates"
|
||||
msgstr "Zobrazovat aktualizace grafiky"
|
||||
|
||||
#: gtk/inspector/visual.ui:430
|
||||
#: gtk/inspector/visual.ui:401
|
||||
msgid ""
|
||||
"Tints all the places where the current renderer uses Cairo instead of the "
|
||||
"GPU."
|
||||
msgstr ""
|
||||
|
||||
#: gtk/inspector/visual.ui:436
|
||||
#, fuzzy
|
||||
#| msgid "Show Fallback Rendering"
|
||||
#: gtk/inspector/visual.ui:407
|
||||
msgid "Show Cairo Rendering"
|
||||
msgstr "Zobrazovat záložní vykreslování"
|
||||
msgstr "Zobrazovat vykreslování Cairo"
|
||||
|
||||
#: gtk/inspector/visual.ui:461
|
||||
#: gtk/inspector/visual.ui:432
|
||||
msgid "Show Baselines"
|
||||
msgstr "Zobrazovat účaří"
|
||||
|
||||
#: gtk/inspector/visual.ui:489
|
||||
#: gtk/inspector/visual.ui:460
|
||||
msgid "Show Layout Borders"
|
||||
msgstr "Zobrazovat hranice rozvržení"
|
||||
|
||||
#: gtk/inspector/visual.ui:546
|
||||
#: gtk/inspector/visual.ui:517
|
||||
msgid "CSS Padding"
|
||||
msgstr "Odsazení CSS"
|
||||
|
||||
#: gtk/inspector/visual.ui:556
|
||||
#: gtk/inspector/visual.ui:527
|
||||
msgid "CSS Border"
|
||||
msgstr "Ohraničení CSS"
|
||||
|
||||
#: gtk/inspector/visual.ui:566
|
||||
#: gtk/inspector/visual.ui:537
|
||||
msgid "CSS Margin"
|
||||
msgstr "Okraje CSS"
|
||||
|
||||
#: gtk/inspector/visual.ui:576
|
||||
#: gtk/inspector/visual.ui:547
|
||||
msgid "Widget Margin"
|
||||
msgstr "Okraje widgetu"
|
||||
|
||||
#: gtk/inspector/visual.ui:611
|
||||
#: gtk/inspector/visual.ui:582
|
||||
msgid "Show Focus"
|
||||
msgstr "Zobrazovat zaměření"
|
||||
|
||||
#: gtk/inspector/visual.ui:636
|
||||
#: gtk/inspector/visual.ui:607
|
||||
msgid "Show Accessibility warnings"
|
||||
msgstr "Zobrazovat upozornění přístupnosti"
|
||||
|
||||
#: gtk/inspector/visual.ui:661
|
||||
#: gtk/inspector/visual.ui:632
|
||||
#, fuzzy
|
||||
#| msgid "Show Graphic Updates"
|
||||
msgid "Show Graphics Offload"
|
||||
msgstr "Zobrazovat aktualizace grafiky"
|
||||
|
||||
#: gtk/inspector/visual.ui:693
|
||||
#: gtk/inspector/visual.ui:664
|
||||
msgid "Inspect Inspector"
|
||||
msgstr "Prozkoumat inspektora"
|
||||
|
||||
@@ -7233,8 +7231,8 @@ msgstr ""
|
||||
#: tools/gtk-builder-tool-enumerate.c:56 tools/gtk-builder-tool-preview.c:179
|
||||
#: tools/gtk-builder-tool-preview.c:180 tools/gtk-builder-tool-screenshot.c:360
|
||||
#: tools/gtk-builder-tool-simplify.c:2529 tools/gtk-builder-tool-validate.c:261
|
||||
#: tools/gtk-path-tool-render.c:121 tools/gtk-rendernode-tool-info.c:214
|
||||
#: tools/gtk-rendernode-tool-show.c:106
|
||||
#: tools/gtk-path-tool-render.c:121 tools/gtk-rendernode-tool-compare.c:67
|
||||
#: tools/gtk-rendernode-tool-info.c:214 tools/gtk-rendernode-tool-show.c:106
|
||||
msgid "FILE"
|
||||
msgstr "SOUBOR"
|
||||
|
||||
@@ -7644,10 +7642,8 @@ msgid "Background color"
|
||||
msgstr "Barva pozadí"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:124 tools/gtk-path-tool-show.c:146
|
||||
#, fuzzy
|
||||
#| msgid "Pick a Color"
|
||||
msgid "Point color"
|
||||
msgstr "Vybrat barvu"
|
||||
msgstr "Barva bodu"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:129 tools/gtk-path-tool-show.c:151
|
||||
msgid "Fill rule (winding, even-odd)"
|
||||
@@ -7828,6 +7824,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"
|
||||
@@ -7851,6 +7848,7 @@ msgid "Add renderer to benchmark"
|
||||
msgstr "Jaké vykreslování použít"
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:94
|
||||
#: tools/gtk-rendernode-tool-compare.c:65
|
||||
#: tools/gtk-rendernode-tool-render.c:195
|
||||
msgid "RENDERER"
|
||||
msgstr "VYKRESLOVÁNÍ"
|
||||
@@ -7884,6 +7882,61 @@ msgstr "Není uveden žádný soubor .node\n"
|
||||
msgid "Can only benchmark a single .node file\n"
|
||||
msgstr "Je možné přijmout pouze jeden soubor .node\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:65
|
||||
#: tools/gtk-rendernode-tool-render.c:195
|
||||
msgid "Renderer to use"
|
||||
msgstr "Jaké vykreslování použít"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:67
|
||||
msgid "Output file"
|
||||
msgstr "Výstupní soubor"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:70
|
||||
msgid "FILE1 FILE2"
|
||||
msgstr "SOUBOR1 SOUBOR2"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:82
|
||||
msgid "Compare .node or .png files."
|
||||
msgstr "Porovnat soubory .node nebo .png."
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:95
|
||||
#, c-format
|
||||
msgid "Must specify two files\n"
|
||||
msgstr "Musí být určeny dva soubory\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:102
|
||||
#: tools/gtk-rendernode-tool-render.c:150
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Failed to rewrite header\n"
|
||||
msgid "Failed to create renderer: %s\n"
|
||||
msgstr "Nezdařil se přepis záhlaví\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:111
|
||||
#, c-format
|
||||
msgid "Failed to load %s: %s\n"
|
||||
msgstr "Nezdařilo se načtení %s: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:122
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Could not rename %s back to %s: %s.\n"
|
||||
msgid "Could not save diff image to %s\n"
|
||||
msgstr "%s nelze přejmenovat zpět na %s: %s.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:132
|
||||
#, c-format
|
||||
msgid "Differences witten to %s.\n"
|
||||
msgstr "Rozdíly zapsány do %s.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:134
|
||||
#, c-format
|
||||
msgid "The images are different.\n"
|
||||
msgstr "Obrázky se liší.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:137
|
||||
#, c-format
|
||||
msgid "No differences.\n"
|
||||
msgstr "Žádné rozdíly.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-info.c:191
|
||||
#, c-format
|
||||
msgid "Number of nodes: %u\n"
|
||||
@@ -7927,16 +7980,6 @@ msgstr ""
|
||||
msgid "Failed to generate SVG: %s\n"
|
||||
msgstr "Nepodařilo se vygenerovat SVG: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:150
|
||||
#, fuzzy, c-format
|
||||
#| msgid "Failed to rewrite header\n"
|
||||
msgid "Failed to create renderer: %s\n"
|
||||
msgstr "Nezdařil se přepis záhlaví\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:195
|
||||
msgid "Renderer to use"
|
||||
msgstr "Jaké vykreslování použít"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:211
|
||||
msgid "Render a .node file to an image."
|
||||
msgstr "Vykreslit soubor .node jako obrázek."
|
||||
@@ -8078,6 +8121,12 @@ msgstr ""
|
||||
"Pokud si zde opravdu přejete vytvořit mezipaměť ikon, použijte --ignore-"
|
||||
"theme-index.\n"
|
||||
|
||||
#~ msgid "Backend does not support window scaling"
|
||||
#~ msgstr "Podpůrná vrstva nepodporuje škálování oken"
|
||||
|
||||
#~ msgid "Window Scaling"
|
||||
#~ msgstr "Škálování oken"
|
||||
|
||||
#, c-format
|
||||
#~ msgid "Unspecified error decoding media"
|
||||
#~ msgstr "Blíže neurčená chyba dekódování multimédia"
|
||||
|
||||
@@ -11,20 +11,21 @@
|
||||
# Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2003 - 2006.
|
||||
# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011.
|
||||
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2021-2024.
|
||||
# Daniel Mustieles García <daniel.mustieles@gmail.com>, 2024.
|
||||
#
|
||||
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-23 01:06+0000\n"
|
||||
"PO-Revision-Date: 2024-02-26 16:25+0100\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"POT-Creation-Date: 2024-03-11 18:00+0000\n"
|
||||
"PO-Revision-Date: 2024-03-12 09:34+0100\n"
|
||||
"Last-Translator: Daniel Mustieles García <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
|
||||
"Language: es_ES\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Gtranslator 45.3\n"
|
||||
"X-Generator: Gtranslator 42.0\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: gdk/broadway/gdkbroadway-server.c:135
|
||||
@@ -60,7 +61,7 @@ msgstr "No se pudo proporcionar el contenido como %s"
|
||||
msgid "The current backend does not support OpenGL"
|
||||
msgstr "El «backend» actual no soporta OpenGL"
|
||||
|
||||
#: gdk/gdkdisplay.c:1315 gdk/gdkvulkancontext.c:1596
|
||||
#: gdk/gdkdisplay.c:1315 gdk/gdkvulkancontext.c:1601
|
||||
msgid "Vulkan support disabled via GDK_DEBUG"
|
||||
msgstr "Soporte de Vulkan desactivado mediante GDK_DEBUG"
|
||||
|
||||
@@ -132,22 +133,22 @@ msgstr "No se permite la API de GL"
|
||||
msgid "Unable to create a GL context"
|
||||
msgstr "No se pudo crear un contexto GL"
|
||||
|
||||
#: gdk/gdkglcontext.c:1303
|
||||
#: gdk/gdkglcontext.c:1304
|
||||
msgid "OpenGL ES disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL ES desactivado mediante GDK_DEBUG"
|
||||
|
||||
#: gdk/gdkglcontext.c:1315
|
||||
#: gdk/gdkglcontext.c:1316
|
||||
msgid "OpenGL disabled via GDK_DEBUG"
|
||||
msgstr "OpenGL mediante GDK_DEBUG"
|
||||
|
||||
#: gdk/gdkglcontext.c:1326
|
||||
#: gdk/gdkglcontext.c:1327
|
||||
#, c-format
|
||||
msgid "Application does not support %s API"
|
||||
msgstr "La aplicación no soporta la API %s"
|
||||
|
||||
#. translators: This is about OpenGL backend names, like
|
||||
#. * "Trying to use X11 GLX, but EGL is already in use"
|
||||
#: gdk/gdkglcontext.c:2112
|
||||
#: gdk/gdkglcontext.c:2113
|
||||
#, c-format
|
||||
msgid "Trying to use %s, but %s is already in use"
|
||||
msgstr "Intentando usar %s pero %s ya está en uso"
|
||||
@@ -640,22 +641,22 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "Cannot set clipboard data. OpenClipboard() failed: 0x%lx."
|
||||
msgstr ""
|
||||
"No se pueden obtener los datos del portapapeles. OpenClipboard() falló: "
|
||||
"0x%lx."
|
||||
"No se pueden obtener los datos del portapapeles. OpenClipboard() falló: 0x"
|
||||
"%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:874
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. GlobalLock(0x%p) failed: 0x%lx."
|
||||
msgstr ""
|
||||
"No se pueden obtener los datos del portapapeles. GlobalLock(0x%p) falló: "
|
||||
"0x%lx."
|
||||
"No se pueden obtener los datos del portapapeles. GlobalLock(0x%p) falló: 0x"
|
||||
"%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:885
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. GlobalSize(0x%p) failed: 0x%lx."
|
||||
msgstr ""
|
||||
"No se pueden obtener los datos del portapapeles. GlobalSize(0x%p) falló: "
|
||||
"0x%lx."
|
||||
"No se pueden obtener los datos del portapapeles. GlobalSize(0x%p) falló: 0x"
|
||||
"%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:898
|
||||
#, c-format
|
||||
@@ -690,8 +691,8 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. OpenClipboard() failed: 0x%lx."
|
||||
msgstr ""
|
||||
"No se pueden obtener los datos del portapapeles. OpenClipboard() falló: "
|
||||
"0x%lx."
|
||||
"No se pueden obtener los datos del portapapeles. OpenClipboard() falló: 0x"
|
||||
"%lx."
|
||||
|
||||
#: gdk/win32/gdkclipdrop-win32.c:992
|
||||
#, c-format
|
||||
@@ -704,8 +705,8 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "Cannot get clipboard data. GetClipboardData() failed: 0x%lx."
|
||||
msgstr ""
|
||||
"No se pueden obtener los datos del portapapeles. GetClipboardData() falló: "
|
||||
"0x%lx."
|
||||
"No se pueden obtener los datos del portapapeles. GetClipboardData() falló: 0x"
|
||||
"%lx."
|
||||
|
||||
#: gdk/win32/gdkdrop-win32.c:949
|
||||
#, c-format
|
||||
@@ -871,11 +872,15 @@ msgid "This GLES %d.%d implementation does not support half-float vertex data"
|
||||
msgstr ""
|
||||
"Esta implementación de GLES %d.%d no soporta datos de vértices semi-flotantes"
|
||||
|
||||
#: gsk/gpu/gskgldevice.c:245
|
||||
#: gsk/gpu/gskgldevice.c:246
|
||||
#, c-format
|
||||
msgid "OpenGL ES 3.0 is not supported by this renderer."
|
||||
msgstr "OpenGL ES 3.0 no está soportado por este renderizador."
|
||||
|
||||
#: gsk/gpu/gsknglrenderer.c:62
|
||||
msgid "OpenGL 3.3 required"
|
||||
msgstr "Se necesita OpenGL 3.3"
|
||||
|
||||
#: gtk/a11y/gtkatspiaction.c:239
|
||||
msgctxt "accessibility"
|
||||
msgid "Click"
|
||||
@@ -2375,7 +2380,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "Si elimina un elemento, se perderña definitivamente."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5712 gtk/gtktext.c:6193 gtk/gtktextview.c:9080
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6194 gtk/gtktextview.c:9080
|
||||
msgid "_Delete"
|
||||
msgstr "_Eliminar"
|
||||
|
||||
@@ -2585,7 +2590,7 @@ msgid "_Time"
|
||||
msgstr "_Hora"
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:7375 gtk/gtkplacessidebar.c:2306
|
||||
#: gtk/inspector/a11y.ui:43 gtk/inspector/actions.ui:19
|
||||
#: gtk/inspector/a11y.ui:43 gtk/inspector/actions.ui:18
|
||||
#: gtk/inspector/css-node-tree.ui:22 gtk/inspector/prop-list.ui:24
|
||||
#: gtk/ui/gtkfilechooserwidget.ui:385 gtk/print/ui/gtkprintunixdialog.ui:80
|
||||
msgid "Name"
|
||||
@@ -2669,35 +2674,35 @@ msgctxt "Font feature value"
|
||||
msgid "Enable"
|
||||
msgstr "Activar"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2457
|
||||
#: gtk/gtkfontchooserwidget.c:2459
|
||||
msgid "Default"
|
||||
msgstr "Predeterminada"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2519
|
||||
#: gtk/gtkfontchooserwidget.c:2521
|
||||
msgid "Ligatures"
|
||||
msgstr "Ligaduras"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2520
|
||||
#: gtk/gtkfontchooserwidget.c:2522
|
||||
msgid "Letter Case"
|
||||
msgstr "Letter Case"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2521
|
||||
#: gtk/gtkfontchooserwidget.c:2523
|
||||
msgid "Number Case"
|
||||
msgstr "Mayúsculas y minúsculas de números"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2522
|
||||
#: gtk/gtkfontchooserwidget.c:2524
|
||||
msgid "Number Spacing"
|
||||
msgstr "Espaciado de números"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2523
|
||||
#: gtk/gtkfontchooserwidget.c:2525
|
||||
msgid "Fractions"
|
||||
msgstr "Fracciones"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2524
|
||||
#: gtk/gtkfontchooserwidget.c:2526
|
||||
msgid "Style Variations"
|
||||
msgstr "Variantes del estilo"
|
||||
|
||||
#: gtk/gtkfontchooserwidget.c:2526
|
||||
#: gtk/gtkfontchooserwidget.c:2528
|
||||
msgid "Character Variations"
|
||||
msgstr "Variantes del carácter"
|
||||
|
||||
@@ -2714,31 +2719,31 @@ msgstr "Cerrar"
|
||||
msgid "Close the infobar"
|
||||
msgstr "Cerrar la barra de información"
|
||||
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6181 gtk/gtktextview.c:9068
|
||||
#: gtk/gtklabel.c:5708 gtk/gtktext.c:6182 gtk/gtktextview.c:9068
|
||||
msgid "Cu_t"
|
||||
msgstr "Cor_tar"
|
||||
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6185 gtk/gtktextview.c:9072
|
||||
#: gtk/gtklabel.c:5709 gtk/gtktext.c:6186 gtk/gtktextview.c:9072
|
||||
msgid "_Copy"
|
||||
msgstr "_Copiar"
|
||||
|
||||
#: gtk/gtklabel.c:5711 gtk/gtktext.c:6189 gtk/gtktextview.c:9076
|
||||
#: gtk/gtklabel.c:5710 gtk/gtktext.c:6190 gtk/gtktextview.c:9076
|
||||
msgid "_Paste"
|
||||
msgstr "_Pegar"
|
||||
|
||||
#: gtk/gtklabel.c:5717 gtk/gtktext.c:6202 gtk/gtktextview.c:9101
|
||||
#: gtk/gtklabel.c:5716 gtk/gtktext.c:6203 gtk/gtktextview.c:9101
|
||||
msgid "Select _All"
|
||||
msgstr "Seleccionar _todo"
|
||||
|
||||
#: gtk/gtklabel.c:5722
|
||||
#: gtk/gtklabel.c:5721
|
||||
msgid "_Open Link"
|
||||
msgstr "_Abrir enlace"
|
||||
|
||||
#: gtk/gtklabel.c:5726
|
||||
#: gtk/gtklabel.c:5725
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "Copiar la dirección del _enlace"
|
||||
|
||||
#: gtk/gtklabel.c:5770 gtk/gtktext.c:2724 gtk/gtktextview.c:9150
|
||||
#: gtk/gtklabel.c:5769 gtk/gtktext.c:2723 gtk/gtktextview.c:9150
|
||||
msgid "Context menu"
|
||||
msgstr "Menú contextual"
|
||||
|
||||
@@ -3584,7 +3589,7 @@ msgstr ""
|
||||
"No se encontró ninguna aplicación registrada con el nombre «%s» para el "
|
||||
"elemento con el URI «%s»"
|
||||
|
||||
#: gtk/gtksearchentry.c:810
|
||||
#: gtk/gtksearchentry.c:814
|
||||
msgid "Clear Entry"
|
||||
msgstr "Limpiar entrada"
|
||||
|
||||
@@ -3675,7 +3680,7 @@ msgctxt "accessibility"
|
||||
msgid "Sidebar"
|
||||
msgstr "Barra lateral"
|
||||
|
||||
#: gtk/gtktext.c:6207 gtk/gtktextview.c:9106
|
||||
#: gtk/gtktext.c:6208 gtk/gtktextview.c:9106
|
||||
msgid "Insert _Emoji"
|
||||
msgstr "Insertar _emoticono"
|
||||
|
||||
@@ -3916,7 +3921,7 @@ msgctxt "Vulkan version"
|
||||
msgid "None"
|
||||
msgstr "Ninguna"
|
||||
|
||||
#: gtk/inspector/general.c:922
|
||||
#: gtk/inspector/general.c:923
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "El contesto IM está codificado por GTK_IM_MODULE"
|
||||
|
||||
@@ -3986,19 +3991,19 @@ msgstr "Fabricante del «backend» GL"
|
||||
|
||||
#: gtk/inspector/general.ui:698
|
||||
msgid "GL_VENDOR"
|
||||
msgstr "FABRICANTE_GL"
|
||||
msgstr "GL_VENDOR"
|
||||
|
||||
#: gtk/inspector/general.ui:727
|
||||
msgid "GL_RENDERER"
|
||||
msgstr "GL_RENDERIZADOR"
|
||||
msgstr "GL_RENDERER"
|
||||
|
||||
#: gtk/inspector/general.ui:756
|
||||
msgid "GL_VERSION"
|
||||
msgstr "VERSION_GL"
|
||||
msgstr "GL_VERSION"
|
||||
|
||||
#: gtk/inspector/general.ui:785
|
||||
msgid "GL_SHADING_LANGUAGE_VERSION"
|
||||
msgstr ""
|
||||
msgstr "GL_SHADING_LANGUAGE_VERSION"
|
||||
|
||||
#: gtk/inspector/general.ui:813 gtk/inspector/general.ui:929
|
||||
msgid "Extensions"
|
||||
@@ -4289,27 +4294,27 @@ msgid "Trigger"
|
||||
msgstr "Disparador"
|
||||
|
||||
# src/file-manager/fm-icon-text-window.c:85
|
||||
#: gtk/inspector/size-groups.c:225
|
||||
#: gtk/inspector/size-groups.c:228
|
||||
msgctxt "sizegroup mode"
|
||||
msgid "None"
|
||||
msgstr "Ninguno"
|
||||
|
||||
#: gtk/inspector/size-groups.c:226
|
||||
#: gtk/inspector/size-groups.c:229
|
||||
msgctxt "sizegroup mode"
|
||||
msgid "Horizontal"
|
||||
msgstr "Horizontal"
|
||||
|
||||
#: gtk/inspector/size-groups.c:227
|
||||
#: gtk/inspector/size-groups.c:230
|
||||
msgctxt "sizegroup mode"
|
||||
msgid "Vertical"
|
||||
msgstr "Vertical"
|
||||
|
||||
#: gtk/inspector/size-groups.c:228
|
||||
#: gtk/inspector/size-groups.c:231
|
||||
msgctxt "sizegroup mode"
|
||||
msgid "Both"
|
||||
msgstr "Ambas"
|
||||
|
||||
#: gtk/inspector/size-groups.c:240
|
||||
#: gtk/inspector/size-groups.c:243
|
||||
msgid "Mode"
|
||||
msgstr "Modo"
|
||||
|
||||
@@ -4366,14 +4371,10 @@ msgstr "Jerarquía"
|
||||
msgid "Implements"
|
||||
msgstr "Implementa"
|
||||
|
||||
#: gtk/inspector/visual.c:674 gtk/inspector/visual.c:693
|
||||
#: gtk/inspector/visual.c:672 gtk/inspector/visual.c:691
|
||||
msgid "Theme is hardcoded by GTK_THEME"
|
||||
msgstr "El tema está codificado en GTK_THEME"
|
||||
|
||||
#: gtk/inspector/visual.c:942
|
||||
msgid "Backend does not support window scaling"
|
||||
msgstr "El «backend» no soporta el escalado de ventanas"
|
||||
|
||||
#: gtk/inspector/visual.ui:34
|
||||
msgid "GTK Theme"
|
||||
msgstr "Tema de GTK"
|
||||
@@ -4394,43 +4395,39 @@ msgstr "Tamaño del cursor"
|
||||
msgid "Icon Theme"
|
||||
msgstr "Tema de iconos"
|
||||
|
||||
#: gtk/inspector/visual.ui:194
|
||||
#: gtk/inspector/visual.ui:199
|
||||
msgid "Font Scale"
|
||||
msgstr "Escalado de tipografías"
|
||||
|
||||
#: gtk/inspector/visual.ui:239
|
||||
#: gtk/inspector/visual.ui:244
|
||||
msgid "Text Direction"
|
||||
msgstr "Dirección del texto"
|
||||
|
||||
#: gtk/inspector/visual.ui:254
|
||||
#: gtk/inspector/visual.ui:259
|
||||
msgid "Left-to-Right"
|
||||
msgstr "Izquierda a derecha"
|
||||
|
||||
#: gtk/inspector/visual.ui:255
|
||||
#: gtk/inspector/visual.ui:260
|
||||
msgid "Right-to-Left"
|
||||
msgstr "Derecha a izquierda"
|
||||
|
||||
#: gtk/inspector/visual.ui:273
|
||||
msgid "Window Scaling"
|
||||
msgstr "Escalado de la ventana"
|
||||
|
||||
#: gtk/inspector/visual.ui:306
|
||||
#: gtk/inspector/visual.ui:277
|
||||
msgid "Animations"
|
||||
msgstr "Animaciones"
|
||||
|
||||
#: gtk/inspector/visual.ui:331
|
||||
#: gtk/inspector/visual.ui:302
|
||||
msgid "Slowdown"
|
||||
msgstr "Ralentizar"
|
||||
|
||||
#: gtk/inspector/visual.ui:385
|
||||
#: gtk/inspector/visual.ui:356
|
||||
msgid "Show Framerate"
|
||||
msgstr "Mostrar tasa de fotogramas"
|
||||
|
||||
#: gtk/inspector/visual.ui:410
|
||||
#: gtk/inspector/visual.ui:381
|
||||
msgid "Show Graphic Updates"
|
||||
msgstr "Mostrar actualizaciones de gráficos"
|
||||
|
||||
#: gtk/inspector/visual.ui:430
|
||||
#: gtk/inspector/visual.ui:401
|
||||
msgid ""
|
||||
"Tints all the places where the current renderer uses Cairo instead of the "
|
||||
"GPU."
|
||||
@@ -4438,47 +4435,47 @@ msgstr ""
|
||||
"Colorea todas las partes en las que el renderizador actual usa Cairo en "
|
||||
"lugar de GPU."
|
||||
|
||||
#: gtk/inspector/visual.ui:436
|
||||
#: gtk/inspector/visual.ui:407
|
||||
msgid "Show Cairo Rendering"
|
||||
msgstr "Mostrar renderizado Cairo"
|
||||
|
||||
#: gtk/inspector/visual.ui:461
|
||||
#: gtk/inspector/visual.ui:432
|
||||
msgid "Show Baselines"
|
||||
msgstr "Mostrar líneas base"
|
||||
|
||||
#: gtk/inspector/visual.ui:489
|
||||
#: gtk/inspector/visual.ui:460
|
||||
msgid "Show Layout Borders"
|
||||
msgstr "Mostrar bordes de la distribución"
|
||||
|
||||
#: gtk/inspector/visual.ui:546
|
||||
#: gtk/inspector/visual.ui:517
|
||||
msgid "CSS Padding"
|
||||
msgstr "Espaciado CSS"
|
||||
|
||||
#: gtk/inspector/visual.ui:556
|
||||
#: gtk/inspector/visual.ui:527
|
||||
msgid "CSS Border"
|
||||
msgstr "Borde CSS"
|
||||
|
||||
#: gtk/inspector/visual.ui:566
|
||||
#: gtk/inspector/visual.ui:537
|
||||
msgid "CSS Margin"
|
||||
msgstr "Margen CSS"
|
||||
|
||||
#: gtk/inspector/visual.ui:576
|
||||
#: gtk/inspector/visual.ui:547
|
||||
msgid "Widget Margin"
|
||||
msgstr "Anchura del widget"
|
||||
|
||||
#: gtk/inspector/visual.ui:611
|
||||
#: gtk/inspector/visual.ui:582
|
||||
msgid "Show Focus"
|
||||
msgstr "Mostrar foco"
|
||||
|
||||
#: gtk/inspector/visual.ui:636
|
||||
#: gtk/inspector/visual.ui:607
|
||||
msgid "Show Accessibility warnings"
|
||||
msgstr "Mostrar advertencias de accesibilidad"
|
||||
|
||||
#: gtk/inspector/visual.ui:661
|
||||
#: gtk/inspector/visual.ui:632
|
||||
msgid "Show Graphics Offload"
|
||||
msgstr "Mostrar descarga de gráficos"
|
||||
|
||||
#: gtk/inspector/visual.ui:693
|
||||
#: gtk/inspector/visual.ui:664
|
||||
msgid "Inspect Inspector"
|
||||
msgstr "Inspeccionar inspector"
|
||||
|
||||
@@ -7253,8 +7250,8 @@ msgstr ""
|
||||
#: tools/gtk-builder-tool-enumerate.c:56 tools/gtk-builder-tool-preview.c:179
|
||||
#: tools/gtk-builder-tool-preview.c:180 tools/gtk-builder-tool-screenshot.c:360
|
||||
#: tools/gtk-builder-tool-simplify.c:2529 tools/gtk-builder-tool-validate.c:261
|
||||
#: tools/gtk-path-tool-render.c:121 tools/gtk-rendernode-tool-info.c:214
|
||||
#: tools/gtk-rendernode-tool-show.c:106
|
||||
#: tools/gtk-path-tool-render.c:121 tools/gtk-rendernode-tool-compare.c:67
|
||||
#: tools/gtk-rendernode-tool-info.c:214 tools/gtk-rendernode-tool-show.c:106
|
||||
msgid "FILE"
|
||||
msgstr "ARCHIVO"
|
||||
|
||||
@@ -7682,23 +7679,23 @@ msgstr "Anchura de línea (número)"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:134 tools/gtk-path-tool-show.c:156
|
||||
msgid "Line cap (butt, round, square)"
|
||||
msgstr ""
|
||||
msgstr "Límite de línea de línea (extremo, redonda, cuadrada)"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:135 tools/gtk-path-tool-show.c:157
|
||||
msgid "Line join (miter, miter-clip, round, bevel, arcs)"
|
||||
msgstr ""
|
||||
msgstr "Unión de líneas (inglete, clip de inglete, redondo, biselado, arcos)"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:136 tools/gtk-path-tool-show.c:158
|
||||
msgid "Miter limit (number)"
|
||||
msgstr ""
|
||||
msgstr "Límite de inglete (número)"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:137 tools/gtk-path-tool-show.c:159
|
||||
msgid "Dash pattern (comma-separated numbers)"
|
||||
msgstr ""
|
||||
msgstr "Patrón del tablero (números separados por comas)"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:138 tools/gtk-path-tool-show.c:160
|
||||
msgid "Dash offset (number)"
|
||||
msgstr ""
|
||||
msgstr "Desplazamiento del tablero (número)"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:161 tools/gtk-path-tool-show.c:172
|
||||
msgid "Could not initialize windowing system"
|
||||
@@ -7738,11 +7735,11 @@ msgstr "regla de llenado"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:255 tools/gtk-path-tool-show.c:226
|
||||
msgid "line cap"
|
||||
msgstr ""
|
||||
msgstr "límite de línea"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:256 tools/gtk-path-tool-show.c:227
|
||||
msgid "line join"
|
||||
msgstr ""
|
||||
msgstr "unión de línea"
|
||||
|
||||
#: tools/gtk-path-tool-render.c:310
|
||||
#, c-format
|
||||
@@ -7853,6 +7850,7 @@ msgid "Add renderer to benchmark"
|
||||
msgstr "Añadir renderizador al banco de pruebas"
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:94
|
||||
#: tools/gtk-rendernode-tool-compare.c:65
|
||||
#: tools/gtk-rendernode-tool-render.c:195
|
||||
msgid "RENDERER"
|
||||
msgstr "RENDERIZADOR"
|
||||
@@ -7867,11 +7865,11 @@ msgstr "EJECUTA"
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:96
|
||||
msgid "Don’t download result/wait for GPU to finish"
|
||||
msgstr ""
|
||||
msgstr "No descargar resultado/esperar a que termine la GPU"
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:114
|
||||
msgid "Benchmark rendering of a .node file."
|
||||
msgstr ""
|
||||
msgstr "Representación comparativa de un archivo .node."
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:127
|
||||
#: tools/gtk-rendernode-tool-info.c:236 tools/gtk-rendernode-tool-render.c:224
|
||||
@@ -7885,6 +7883,59 @@ msgstr "No se ha especificado ningún archivo .node\n"
|
||||
msgid "Can only benchmark a single .node file\n"
|
||||
msgstr "Sólo se puede probar un único archivo .node\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:65
|
||||
#: tools/gtk-rendernode-tool-render.c:195
|
||||
msgid "Renderer to use"
|
||||
msgstr "Renderizador que usar"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:67
|
||||
msgid "Output file"
|
||||
msgstr "Archivo de salida"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:70
|
||||
msgid "FILE1 FILE2"
|
||||
msgstr "ARCHIVO1 ARCHIVO2"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:82
|
||||
msgid "Compare .node or .png files."
|
||||
msgstr "Comparar archivos .node o .png"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:95
|
||||
#, c-format
|
||||
msgid "Must specify two files\n"
|
||||
msgstr "Debe especificar dos archivos\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:102
|
||||
#: tools/gtk-rendernode-tool-render.c:150
|
||||
#, c-format
|
||||
msgid "Failed to create renderer: %s\n"
|
||||
msgstr "Falló al crear el renderizador: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:111
|
||||
#, c-format
|
||||
msgid "Failed to load %s: %s\n"
|
||||
msgstr "Falló al cargar %s: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:122
|
||||
#, c-format
|
||||
msgid "Could not save diff image to %s\n"
|
||||
msgstr "No se pudieron guardar las diferencias de la imagen %s.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:132
|
||||
#, c-format
|
||||
msgid "Differences witten to %s.\n"
|
||||
msgstr "Diferencias escritas en %s.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:134
|
||||
#, c-format
|
||||
msgid "The images are different.\n"
|
||||
msgstr "Las imágenes son diferentes.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:137
|
||||
#, c-format
|
||||
msgid "No differences.\n"
|
||||
msgstr "No hay diferencias.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-info.c:191
|
||||
#, c-format
|
||||
msgid "Number of nodes: %u\n"
|
||||
@@ -7928,15 +7979,6 @@ msgstr ""
|
||||
msgid "Failed to generate SVG: %s\n"
|
||||
msgstr "Falló al generar el SVG: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:150
|
||||
#, c-format
|
||||
msgid "Failed to create renderer: %s\n"
|
||||
msgstr "Falló al crear el renderizador: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:195
|
||||
msgid "Renderer to use"
|
||||
msgstr "Renderizador que usar"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:211
|
||||
msgid "Render a .node file to an image."
|
||||
msgstr "Renderizar un archivo .node a una imagen."
|
||||
@@ -8079,6 +8121,12 @@ msgstr ""
|
||||
"Si realmente quiere crear un caché de iconos aquí, use --ignore-theme-"
|
||||
"index.\n"
|
||||
|
||||
#~ msgid "Backend does not support window scaling"
|
||||
#~ msgstr "El «backend» no soporta el escalado de ventanas"
|
||||
|
||||
#~ msgid "Window Scaling"
|
||||
#~ msgstr "Escalado de la ventana"
|
||||
|
||||
#~ msgid "Show _Size Column"
|
||||
#~ msgstr "Mostrar columna de _tamaño"
|
||||
|
||||
|
||||
@@ -22,8 +22,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-03-02 15:19+0000\n"
|
||||
"PO-Revision-Date: 2024-03-02 20:40+0300\n"
|
||||
"POT-Creation-Date: 2024-03-02 19:55+0000\n"
|
||||
"PO-Revision-Date: 2024-03-03 19:39+0300\n"
|
||||
"Last-Translator: Artur So <arturios2005@mail.ru>\n"
|
||||
"Language-Team: Русский <gnome-cyr@gnome.org>\n"
|
||||
"Language: ru\n"
|
||||
@@ -2567,7 +2567,7 @@ msgstr "Не удалось послать запрос на поиск"
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:5986
|
||||
msgid "Accessed"
|
||||
msgstr "Доступ"
|
||||
msgstr "Использовано"
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:7361
|
||||
msgid "_Size"
|
||||
|
||||
@@ -224,6 +224,7 @@ compare_xfails = {
|
||||
'radial-gradient-with-64-colorstops': ['clipped', 'colorflipped'],
|
||||
'conic-gradient-with-64-colorstops': ['clipped', 'colorflipped'],
|
||||
'blur-child-bounds-oversize-nogl': ['clipped'], # 6450
|
||||
'rounded-clip-with-huge-bounds-nogl': ['plain','flipped','rotated','repeated','masked','replayed','clipped','colorflipped'], # 6532
|
||||
},
|
||||
'vulkan': {
|
||||
'radial-gradient-with-64-colorstops': ['clipped', 'colorflipped'],
|
||||
@@ -231,6 +232,7 @@ compare_xfails = {
|
||||
'blur-child-bounds-oversize-nogl': ['clipped'], # 6450
|
||||
'repeat-repeats-nested-nogl': ['clipped'], # 6522
|
||||
'repeating-radial-gradient-edge-colors': ['colorflipped'],
|
||||
'rounded-clip-with-huge-bounds-nogl': ['plain','flipped','rotated','repeated','masked','replayed','clipped','colorflipped'], # 6532
|
||||
},
|
||||
'gl': {
|
||||
# 6525
|
||||
@@ -359,6 +361,8 @@ node_parser_tests = [
|
||||
'empty-shadow.ref.node',
|
||||
'empty-stroke.node',
|
||||
'empty-stroke.ref.node',
|
||||
'empty-subsurface.node',
|
||||
'empty-subsurface.ref.node',
|
||||
'empty-text.node',
|
||||
'empty-text.ref.node',
|
||||
'empty-texture.node',
|
||||
@@ -466,6 +470,9 @@ if os_linux
|
||||
'stop_offloading.node',
|
||||
'source.node',
|
||||
'nested.node',
|
||||
'clipped.node',
|
||||
'not-clipped.node',
|
||||
'complex-clip.node',
|
||||
]
|
||||
|
||||
foreach test : offload_tests
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
subsurface {
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
subsurface {
|
||||
child: color {
|
||||
bounds: 0 0 50 50;
|
||||
color: rgb(255,0,204);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
clip {
|
||||
clip: 10 10 10 10;
|
||||
child: subsurface {
|
||||
child: texture {
|
||||
bounds: 0 0 20 20;
|
||||
texture: url('data:image/svg+xml;utf-8,<svg width="20" height="20"></svg>');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
0: not offloaded
|
||||
@@ -0,0 +1,18 @@
|
||||
rounded-clip {
|
||||
clip: 0 0 50 50 / 20;
|
||||
child: clip {
|
||||
clip: 2 2 40 40;
|
||||
child: container {
|
||||
color {
|
||||
color: white;
|
||||
bounds: 0 0 50 50;
|
||||
}
|
||||
subsurface {
|
||||
child: texture {
|
||||
bounds: 10 10 20 20;
|
||||
texture: url('data:image/svg+xml;utf-8,<svg width="20" height="20"></svg>');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
0: not offloaded
|
||||
@@ -0,0 +1,9 @@
|
||||
clip {
|
||||
clip: 0 0 50 50;
|
||||
child: subsurface {
|
||||
child: texture {
|
||||
bounds: 0 0 20 20;
|
||||
texture: url('data:image/svg+xml;utf-8,<svg width="20" height="20"></svg>');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
0: offloaded, raised, above: -, texture: 20x20, source: 0 0 20 20, dest: 0 0 20 20
|
||||
@@ -306,6 +306,42 @@ test_delete (void)
|
||||
g_object_unref (entry);
|
||||
}
|
||||
|
||||
static void
|
||||
test_editable (void)
|
||||
{
|
||||
GtkWidget *entry;
|
||||
int start, end;
|
||||
gboolean res;
|
||||
char *text;
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
g_object_ref_sink (entry);
|
||||
|
||||
res = gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start, &end);
|
||||
g_assert_false (res);
|
||||
g_assert_cmpint (start, ==, end);
|
||||
|
||||
text = gtk_editable_get_chars (GTK_EDITABLE (entry), start, end);
|
||||
g_assert_nonnull (text);
|
||||
g_assert_cmpstr (text, ==, "");
|
||||
g_free (text);
|
||||
|
||||
gtk_editable_set_text (GTK_EDITABLE (entry), "ABC");
|
||||
gtk_editable_select_region (GTK_EDITABLE (entry), 1, 2);
|
||||
|
||||
res = gtk_editable_get_selection_bounds (GTK_EDITABLE (entry), &start, &end);
|
||||
g_assert_true (res);
|
||||
g_assert_cmpint (start, ==, 1);
|
||||
g_assert_cmpint (end, ==, 2);
|
||||
|
||||
text = gtk_editable_get_chars (GTK_EDITABLE (entry), start, end);
|
||||
g_assert_nonnull (text);
|
||||
g_assert_cmpstr (text, ==, "B");
|
||||
g_free (text);
|
||||
|
||||
g_object_unref (entry);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc,
|
||||
char *argv[])
|
||||
@@ -314,6 +350,7 @@ main (int argc,
|
||||
|
||||
g_test_add_func ("/entry/delete", test_delete);
|
||||
g_test_add_func ("/entry/insert", test_insert);
|
||||
g_test_add_func ("/entry/editable", test_editable);
|
||||
|
||||
return g_test_run();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user