Compare commits
48 Commits
shader-too
...
wip-vulkan
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f502743621 | ||
|
|
de5b6764bc | ||
|
|
bc17dfa83d | ||
|
|
84a98f74c1 | ||
|
|
50facedc47 | ||
|
|
200cacc3ad | ||
|
|
eed3cab29f | ||
|
|
76b0687467 | ||
|
|
5039dc40f8 | ||
|
|
7c3de4a2da | ||
|
|
b486e9b760 | ||
|
|
ce2fd8a0d0 | ||
|
|
99b1b26fdb | ||
|
|
b7e4bbaf74 | ||
|
|
f579b171a9 | ||
|
|
f9929d15eb | ||
|
|
c45a6ad52d | ||
|
|
7233e38aa8 | ||
|
|
73ba97acd9 | ||
|
|
7d2ad604d2 | ||
|
|
45e64b915c | ||
|
|
ebaef9f18b | ||
|
|
c73fe8ac4a | ||
|
|
8ed8f883d1 | ||
|
|
032a5afc20 | ||
|
|
0064500146 | ||
|
|
4582ddcad9 | ||
|
|
8bb2720494 | ||
|
|
3b8218a99e | ||
|
|
9a8fa8dd82 | ||
|
|
d6892c85dc | ||
|
|
d3c20c3269 | ||
|
|
9904259661 | ||
|
|
a8fcde11de | ||
|
|
d2d4cd64cd | ||
|
|
2c7e68d98f | ||
|
|
6f42f8ef2c | ||
|
|
152dd70cde | ||
|
|
8ec1045c87 | ||
|
|
ad8613876c | ||
|
|
f537a55b71 | ||
|
|
b0450d4b1b | ||
|
|
91ff8bf336 | ||
|
|
7b145f72dc | ||
|
|
0dcc21b605 | ||
|
|
bd43a9e868 | ||
|
|
9bf23d80a1 | ||
|
|
38fd66dc04 |
48
NEWS
48
NEWS
@@ -1,6 +1,54 @@
|
||||
Overview of Changes in 4.15.1, xx-xx-xxxx
|
||||
=========================================
|
||||
|
||||
* GtkGraphicsOffload:
|
||||
- Don't crash without a child
|
||||
|
||||
* CSS:
|
||||
- Support the :root selector
|
||||
|
||||
* Icontheme:
|
||||
- Make symbolic svg loading more efficient
|
||||
- Handle color-free symbolics more efficiently
|
||||
|
||||
* Accessibility:
|
||||
- Make the gtk-demo sidebar search more accessible
|
||||
- Stop emitting focus events
|
||||
|
||||
* GDK:
|
||||
- Support XDG_ACTIVATION_TOKEN
|
||||
- dmabuf: Be more defensive when importing unknown formats to GL
|
||||
- dmabuf: Use narrow range for YUV
|
||||
|
||||
* GSK:
|
||||
- Improve logging for GDK_DEBUG=offload
|
||||
- Improve logging for GSK_DEBUG=renderer
|
||||
- gpu: Warn about inefficient texture import
|
||||
- gpu: Handle tiny offscreens correctly
|
||||
- vulkan: Add profiler marks in various places
|
||||
- vulkan: Fix a problem with imported dmabufs showing up black
|
||||
|
||||
* Wayland:
|
||||
- Use wl_compositor version 6
|
||||
|
||||
* X11:
|
||||
- Implement a missing method
|
||||
|
||||
* Build:
|
||||
- Fix many ubsan warnings
|
||||
|
||||
* Debugging:
|
||||
- Show more texture details in the recorder
|
||||
|
||||
* macOS:
|
||||
- Fix problems with events handed back to the OS
|
||||
- Respect GDK_DEBUG=default-settings
|
||||
|
||||
* Translation updates:
|
||||
Korean
|
||||
Turkish
|
||||
|
||||
|
||||
Overview of Changes in 4.15.0, 21-04-2024
|
||||
=========================================
|
||||
|
||||
|
||||
@@ -363,7 +363,9 @@ insert_markup_idle (gpointer data)
|
||||
|
||||
if (g_get_monotonic_time () - begin > G_TIME_SPAN_MILLISECOND)
|
||||
{
|
||||
g_idle_add (insert_markup_idle, data);
|
||||
guint id;
|
||||
id = g_idle_add (insert_markup_idle, data);
|
||||
g_source_set_name_by_id (id, "[gtk-demo] insert_markup_idle");
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
@@ -398,7 +400,9 @@ parse_markup_idle (gpointer data)
|
||||
do {
|
||||
if (g_get_monotonic_time () - begin > G_TIME_SPAN_MILLISECOND)
|
||||
{
|
||||
g_idle_add (parse_markup_idle, data);
|
||||
guint id;
|
||||
id = g_idle_add (parse_markup_idle, data);
|
||||
g_source_set_name_by_id (id, "[gtk-demo] parse_markup_idle");
|
||||
return G_SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ get_win32_all_locales_scripts (LPWSTR locale_w, DWORD flags, LPARAM param)
|
||||
{
|
||||
wchar_t *langname_w = NULL;
|
||||
wchar_t locale_abbrev_w[9];
|
||||
gchar *langname, *locale_abbrev, *locale, *p;
|
||||
gchar *langname, *locale_abbrev, *locale;
|
||||
gint i;
|
||||
const LCTYPE iso639_lctypes[] = { LOCALE_SISO639LANGNAME, LOCALE_SISO639LANGNAME2 };
|
||||
GHashTable *ht_scripts_langs = (GHashTable *) param;
|
||||
@@ -59,7 +59,6 @@ get_win32_all_locales_scripts (LPWSTR locale_w, DWORD flags, LPARAM param)
|
||||
GetLocaleInfoEx (locale_w, LOCALE_SLOCALIZEDDISPLAYNAME, langname_w, langname_size);
|
||||
langname = g_utf16_to_utf8 (langname_w, -1, NULL, NULL, NULL);
|
||||
locale = g_utf16_to_utf8 (locale_w, -1, NULL, NULL, NULL);
|
||||
p = strchr (locale, '-');
|
||||
lang = pango_language_from_string (locale);
|
||||
if (g_hash_table_lookup (ht_scripts_langs, lang) == NULL)
|
||||
g_hash_table_insert (ht_scripts_langs, lang, langname);
|
||||
|
||||
@@ -330,6 +330,7 @@ stroke bounds of the path.
|
||||
| offset | `<point>` | 0 0 | non-default |
|
||||
| hint-style | `<hint style>` | slight | non-default |
|
||||
| antialias | `<antialias>` | gray | non-default |
|
||||
| hint-metrics | `<hint metrics>` | off | non-default |
|
||||
|
||||
Creates a node like `gsk_text_node_new()` with the given properties.
|
||||
|
||||
@@ -346,6 +347,7 @@ font, an error node will be returned.
|
||||
|
||||
Possible values for hint-style are none, slight or full.
|
||||
Possible value for antialias are none or gray.
|
||||
Possible value for hint-metrics are on or off.
|
||||
|
||||
### texture
|
||||
|
||||
|
||||
@@ -155,6 +155,7 @@ Each property name is part of the `GtkAccessibleProperty` enumeration.
|
||||
| %GTK_ACCESSIBLE_PROPERTY_VALUE_MIN | “aria-valuemin” | double |
|
||||
| %GTK_ACCESSIBLE_PROPERTY_VALUE_NOW | “aria-valuenow” | double |
|
||||
| %GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT | “aria-valuetext” | translatable string |
|
||||
| %GTK_ACCESSIBLE_PROPERTY_HELP_TEXT | N/A | translatable string |
|
||||
|
||||
#### List of accessible relations
|
||||
|
||||
@@ -216,6 +217,10 @@ are accessible as part of the development process. The GTK Inspector shows
|
||||
the accessible attributes of each widget, and also provides an overlay that
|
||||
can highlight accessibility issues.
|
||||
|
||||
If you support some non-standard keyboard interactions for a widget, you
|
||||
**should** set an appropriate `GTK_ACCESSIBLE_PROPERTY_HELP_TEXT` to help
|
||||
discoverability of the behavior.
|
||||
|
||||
It is possible to set accessible attributes in UI files as well:
|
||||
```xml
|
||||
<object class="GtkButton" id="button1">
|
||||
|
||||
@@ -163,6 +163,8 @@ gdk_dmabuf_get_egl_downloader (GdkDisplay *display,
|
||||
return NULL;
|
||||
|
||||
previous = gdk_gl_context_get_current ();
|
||||
if (previous)
|
||||
g_object_ref (previous);
|
||||
formats = gdk_dmabuf_formats_builder_new ();
|
||||
external = gdk_dmabuf_formats_builder_new ();
|
||||
|
||||
@@ -194,7 +196,10 @@ gdk_dmabuf_get_egl_downloader (GdkDisplay *display,
|
||||
}
|
||||
|
||||
if (previous)
|
||||
gdk_gl_context_make_current (previous);
|
||||
{
|
||||
gdk_gl_context_make_current (previous);
|
||||
g_object_unref (previous);
|
||||
}
|
||||
|
||||
return GDK_DMABUF_DOWNLOADER (renderer);
|
||||
}
|
||||
|
||||
@@ -192,13 +192,6 @@ compute_smooth_frame_time (GdkFrameClock *clock,
|
||||
* and new_frame_time >= old_frame_time. */
|
||||
frames_passed = (new_frame_time - smoothed_frame_time_base + frame_interval / 2) / frame_interval;
|
||||
|
||||
if (frames_passed > 1)
|
||||
gdk_profiler_add_markf ((smoothed_frame_time_base - (frame_interval * (frames_passed-1))) * 1000L,
|
||||
frame_interval * (frames_passed-1) * 1000L,
|
||||
"Dropped Frames",
|
||||
"%u frames may have been dropped",
|
||||
frames_passed-1);
|
||||
|
||||
/* We use an approximately whole number of frames in the future from
|
||||
* last smoothed frame time. This way we avoid minor jitter in the
|
||||
* frame times making the animation speed uneven, but still animate
|
||||
|
||||
@@ -1956,8 +1956,6 @@ gdk_gl_context_get_glsl_version_string (GdkGLContext *self)
|
||||
return "#version 310 es";
|
||||
else if (gdk_gl_version_greater_equal (&priv->gl_version, &GDK_GL_VERSION_INIT (3, 0)))
|
||||
return "#version 300 es";
|
||||
else if (gdk_gl_version_greater_equal (&priv->gl_version, &GDK_GL_VERSION_INIT (3, 0)))
|
||||
return "#version 300 es";
|
||||
else
|
||||
return "#version 100";
|
||||
}
|
||||
|
||||
@@ -632,6 +632,7 @@ gdk_vulkan_context_begin_frame (GdkDrawContext *draw_context,
|
||||
{
|
||||
GdkVulkanContext *context = GDK_VULKAN_CONTEXT (draw_context);
|
||||
GdkVulkanContextPrivate *priv = gdk_vulkan_context_get_instance_private (context);
|
||||
VkResult acquire_result;
|
||||
guint i;
|
||||
|
||||
if (depth != priv->current_format)
|
||||
@@ -653,12 +654,29 @@ gdk_vulkan_context_begin_frame (GdkDrawContext *draw_context,
|
||||
cairo_region_union (priv->regions[i], region);
|
||||
}
|
||||
|
||||
GDK_VK_CHECK (vkAcquireNextImageKHR, gdk_vulkan_context_get_device (context),
|
||||
priv->swapchain,
|
||||
UINT64_MAX,
|
||||
priv->draw_semaphore,
|
||||
VK_NULL_HANDLE,
|
||||
&priv->draw_index);
|
||||
acquire_next_image:
|
||||
acquire_result = GDK_VK_CHECK (vkAcquireNextImageKHR, gdk_vulkan_context_get_device (context),
|
||||
priv->swapchain,
|
||||
UINT64_MAX,
|
||||
priv->draw_semaphore,
|
||||
VK_NULL_HANDLE,
|
||||
&priv->draw_index);
|
||||
if ((acquire_result == VK_ERROR_OUT_OF_DATE_KHR) ||
|
||||
(acquire_result == VK_SUBOPTIMAL_KHR))
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
GDK_DEBUG (VULKAN, "Recreating the swapchain");
|
||||
|
||||
if (!gdk_vulkan_context_check_swapchain (context, &error))
|
||||
{
|
||||
g_warning ("%s", error->message);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
goto acquire_next_image;
|
||||
}
|
||||
|
||||
cairo_region_union (region, priv->regions[priv->draw_index]);
|
||||
}
|
||||
|
||||
@@ -908,7 +908,9 @@ _gdk_win32_create_hicon_for_texture (GdkTexture *texture,
|
||||
width = cairo_image_surface_get_width (surface);
|
||||
height = cairo_image_surface_get_height (surface);
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
||||
pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, width, height);
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
||||
|
||||
icon = pixbuf_to_hicon (pixbuf, is_icon, x, y);
|
||||
|
||||
|
||||
@@ -267,7 +267,7 @@ create_dummy_gl_window (void)
|
||||
{
|
||||
WNDCLASS wclass = { 0, };
|
||||
ATOM klass;
|
||||
HWND hwnd;
|
||||
HWND hwnd = NULL;
|
||||
|
||||
wclass.lpszClassName = "GdkGLDummyWindow";
|
||||
wclass.lpfnWndProc = DefWindowProc;
|
||||
|
||||
@@ -38,7 +38,6 @@ gdk_win32_vulkan_context_create_surface (GdkVulkanContext *context,
|
||||
{
|
||||
GdkSurface *window = gdk_draw_context_get_surface (GDK_DRAW_CONTEXT (context));
|
||||
GdkDisplay *display = gdk_draw_context_get_display (GDK_DRAW_CONTEXT (context));
|
||||
GdkWin32Surface *win32_surface = GDK_WIN32_SURFACE (window);
|
||||
VkWin32SurfaceCreateInfoKHR info;
|
||||
VkResult result;
|
||||
|
||||
|
||||
@@ -546,7 +546,7 @@ gsk_gpu_device_maybe_gc (GskGpuDevice *self)
|
||||
|
||||
if (priv->cache_timeout == 0 || dead_texture_pixels > 1000000)
|
||||
{
|
||||
GSK_DEBUG (GLYPH_CACHE, "Pre-frame GC (%lu dead pixels)", dead_texture_pixels);
|
||||
GSK_DEBUG (GLYPH_CACHE, "Pre-frame GC (%" G_GSIZE_FORMAT " dead pixels)", dead_texture_pixels);
|
||||
gsk_gpu_device_gc (self, g_get_monotonic_time ());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -311,7 +311,7 @@ gsk_gpu_node_processor_add_images (GskGpuNodeProcessor *self,
|
||||
while (desc != self->desc);
|
||||
}
|
||||
|
||||
static void
|
||||
static gboolean G_GNUC_WARN_UNUSED_RESULT
|
||||
rect_round_to_pixels (const graphene_rect_t *src,
|
||||
const graphene_vec2_t *pixel_scale,
|
||||
const graphene_point_t *pixel_offset,
|
||||
@@ -331,6 +331,8 @@ rect_round_to_pixels (const graphene_rect_t *src,
|
||||
y * inv_yscale - pixel_offset->y,
|
||||
(ceilf ((src->origin.x + pixel_offset->x + src->size.width) * xscale) - x) * inv_xscale,
|
||||
(ceilf ((src->origin.y + pixel_offset->y + src->size.height) * yscale) - y) * inv_yscale);
|
||||
|
||||
return ceilf (xscale * dest->size.width) > 0 && ceilf (yscale * dest->size.height) > 0;
|
||||
}
|
||||
|
||||
static GskGpuImage *
|
||||
@@ -963,7 +965,9 @@ gsk_gpu_node_processor_get_node_as_image (GskGpuNodeProcessor *self,
|
||||
if (!gsk_rect_intersection (clip_bounds, &node->bounds, &clip))
|
||||
return NULL;
|
||||
}
|
||||
rect_round_to_pixels (&clip, &self->scale, &self->offset, &clip);
|
||||
|
||||
if (!rect_round_to_pixels (&clip, &self->scale, &self->offset, &clip))
|
||||
return NULL;
|
||||
|
||||
image = gsk_gpu_get_node_as_image (self->frame,
|
||||
&clip,
|
||||
@@ -1020,7 +1024,8 @@ gsk_gpu_node_processor_blur_op (GskGpuNodeProcessor *self,
|
||||
if (!gsk_rect_intersection (rect, &clip_rect, &intermediate_rect))
|
||||
return;
|
||||
|
||||
rect_round_to_pixels (&intermediate_rect, &self->scale, &self->offset, &intermediate_rect);
|
||||
if (!rect_round_to_pixels (&intermediate_rect, &self->scale, &self->offset, &intermediate_rect))
|
||||
return;
|
||||
|
||||
intermediate = gsk_gpu_node_processor_init_draw (&other,
|
||||
self->frame,
|
||||
@@ -1083,7 +1088,8 @@ gsk_gpu_node_processor_add_fallback_node (GskGpuNodeProcessor *self,
|
||||
if (!gsk_gpu_node_processor_clip_node_bounds (self, node, &clipped_bounds))
|
||||
return;
|
||||
|
||||
rect_round_to_pixels (&clipped_bounds, &self->scale, &self->offset, &clipped_bounds);
|
||||
if (!rect_round_to_pixels (&clipped_bounds, &self->scale, &self->offset, &clipped_bounds))
|
||||
return;
|
||||
|
||||
gsk_gpu_node_processor_sync_globals (self, 0);
|
||||
|
||||
@@ -1439,7 +1445,9 @@ gsk_gpu_node_processor_add_rounded_clip_node_with_mask (GskGpuNodeProcessor *sel
|
||||
|
||||
if (!gsk_gpu_node_processor_clip_node_bounds (self, node, &clip_bounds))
|
||||
return;
|
||||
rect_round_to_pixels (&clip_bounds, &self->scale, &self->offset, &clip_bounds);
|
||||
|
||||
if (!rect_round_to_pixels (&clip_bounds, &self->scale, &self->offset, &clip_bounds))
|
||||
return;
|
||||
|
||||
child_image = gsk_gpu_node_processor_get_node_as_image (self,
|
||||
0,
|
||||
@@ -2068,7 +2076,9 @@ gsk_gpu_node_processor_add_texture_scale_node (GskGpuNodeProcessor *self,
|
||||
|
||||
gsk_gpu_node_processor_get_clip_bounds (self, &clip_bounds);
|
||||
/* first round to pixel boundaries, so we make sure the full pixels are covered */
|
||||
rect_round_to_pixels (&clip_bounds, &self->scale, &self->offset, &clip_bounds);
|
||||
if (!rect_round_to_pixels (&clip_bounds, &self->scale, &self->offset, &clip_bounds))
|
||||
return;
|
||||
|
||||
/* then expand by half a pixel so that pixels needed for eventual linear
|
||||
* filtering are available */
|
||||
graphene_rect_inset (&clip_bounds, -0.5, -0.5);
|
||||
@@ -2276,7 +2286,9 @@ gsk_gpu_node_processor_add_gradient_node (GskGpuNodeProcessor *self,
|
||||
|
||||
if (!gsk_gpu_node_processor_clip_node_bounds (self, node, &bounds))
|
||||
return;
|
||||
rect_round_to_pixels (&bounds, &self->scale, &self->offset, &bounds);
|
||||
|
||||
if (!rect_round_to_pixels (&bounds, &self->scale, &self->offset, &bounds))
|
||||
return;
|
||||
|
||||
image = gsk_gpu_node_processor_init_draw (&other,
|
||||
self->frame,
|
||||
@@ -3581,7 +3593,9 @@ gsk_gpu_node_processor_add_fill_node (GskGpuNodeProcessor *self,
|
||||
|
||||
if (!gsk_gpu_node_processor_clip_node_bounds (self, node, &clip_bounds))
|
||||
return;
|
||||
rect_round_to_pixels (&clip_bounds, &self->scale, &self->offset, &clip_bounds);
|
||||
|
||||
if (!rect_round_to_pixels (&clip_bounds, &self->scale, &self->offset, &clip_bounds))
|
||||
return;
|
||||
|
||||
child = gsk_fill_node_get_child (node);
|
||||
|
||||
@@ -3678,7 +3692,9 @@ gsk_gpu_node_processor_add_stroke_node (GskGpuNodeProcessor *self,
|
||||
|
||||
if (!gsk_gpu_node_processor_clip_node_bounds (self, node, &clip_bounds))
|
||||
return;
|
||||
rect_round_to_pixels (&clip_bounds, &self->scale, &self->offset, &clip_bounds);
|
||||
|
||||
if (!rect_round_to_pixels (&clip_bounds, &self->scale, &self->offset, &clip_bounds))
|
||||
return;
|
||||
|
||||
child = gsk_stroke_node_get_child (node);
|
||||
|
||||
@@ -4111,15 +4127,17 @@ gsk_gpu_node_processor_create_node_pattern (GskGpuPatternWriter *self,
|
||||
gsk_gpu_descriptors_set_size (self->desc, images_before, buffers_before);
|
||||
}
|
||||
|
||||
rect_round_to_pixels (&GRAPHENE_RECT_INIT (
|
||||
self->bounds.origin.x - self->offset.x,
|
||||
self->bounds.origin.y - self->offset.y,
|
||||
self->bounds.size.width,
|
||||
self->bounds.size.height
|
||||
),
|
||||
&self->scale,
|
||||
&self->offset,
|
||||
&bounds);
|
||||
if (!rect_round_to_pixels (&GRAPHENE_RECT_INIT (
|
||||
self->bounds.origin.x - self->offset.x,
|
||||
self->bounds.origin.y - self->offset.y,
|
||||
self->bounds.size.width,
|
||||
self->bounds.size.height
|
||||
),
|
||||
&self->scale,
|
||||
&self->offset,
|
||||
&bounds))
|
||||
return TRUE;
|
||||
|
||||
image = gsk_gpu_get_node_as_image (self->frame,
|
||||
&bounds,
|
||||
&self->scale,
|
||||
|
||||
@@ -1139,7 +1139,7 @@ gsk_vulkan_device_get_vk_pipeline (GskVulkanDevice *self,
|
||||
format);
|
||||
|
||||
GSK_DEBUG (SHADERS,
|
||||
"Create Vulkan pipeline (%s %s, %u/%s/%s/%u) for layout (%lu/%lu/%lu)",
|
||||
"Create Vulkan pipeline (%s %s, %u/%s/%s/%u) for layout (%" G_GSIZE_FORMAT "/%" G_GSIZE_FORMAT "/%" G_GSIZE_FORMAT ")",
|
||||
op_class->shader_name,
|
||||
version_string + 1,
|
||||
variation,
|
||||
|
||||
@@ -2312,6 +2312,25 @@ parse_antialias (GtkCssParser *parser,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
parse_hint_metrics (GtkCssParser *parser,
|
||||
Context *context,
|
||||
gpointer out)
|
||||
{
|
||||
if (!parse_enum (parser, CAIRO_GOBJECT_TYPE_HINT_METRICS, out))
|
||||
return FALSE;
|
||||
|
||||
if (*(cairo_hint_metrics_t *) out != CAIRO_HINT_METRICS_OFF &&
|
||||
*(cairo_hint_metrics_t *) out != CAIRO_HINT_METRICS_ON)
|
||||
{
|
||||
gtk_css_parser_error_value (parser, "Unsupported value for enum \"%s\"",
|
||||
g_type_name (CAIRO_GOBJECT_TYPE_HINT_METRICS));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static GskRenderNode *
|
||||
parse_text_node (GtkCssParser *parser,
|
||||
Context *context)
|
||||
@@ -2322,6 +2341,7 @@ parse_text_node (GtkCssParser *parser,
|
||||
PangoGlyphString *glyphs = NULL;
|
||||
cairo_hint_style_t hint_style = CAIRO_HINT_STYLE_SLIGHT;
|
||||
cairo_antialias_t antialias = CAIRO_ANTIALIAS_GRAY;
|
||||
cairo_hint_metrics_t hint_metrics = CAIRO_HINT_METRICS_OFF;
|
||||
PangoFont *hinted;
|
||||
const Declaration declarations[] = {
|
||||
{ "font", parse_font, clear_font, &font },
|
||||
@@ -2330,6 +2350,7 @@ parse_text_node (GtkCssParser *parser,
|
||||
{ "glyphs", parse_glyphs, clear_glyphs, &glyphs },
|
||||
{ "hint-style", parse_hint_style, NULL, &hint_style },
|
||||
{ "antialias", parse_antialias, NULL, &antialias },
|
||||
{ "hint-metrics", parse_hint_metrics, NULL, &hint_metrics },
|
||||
};
|
||||
GskRenderNode *result;
|
||||
|
||||
@@ -2341,7 +2362,7 @@ parse_text_node (GtkCssParser *parser,
|
||||
g_assert (font);
|
||||
}
|
||||
|
||||
hinted = gsk_reload_font (font, 1.0, CAIRO_HINT_METRICS_OFF, hint_style, antialias);
|
||||
hinted = gsk_reload_font (font, 1.0, hint_metrics, hint_style, antialias);
|
||||
g_object_unref (font);
|
||||
font = hinted;
|
||||
|
||||
@@ -3539,13 +3560,13 @@ append_texture_param (Printer *p,
|
||||
case GDK_MEMORY_U8:
|
||||
case GDK_MEMORY_U16:
|
||||
bytes = gdk_texture_save_to_png_bytes (texture);
|
||||
g_string_append (p->str, "url(\"data:image/png;base64,");
|
||||
g_string_append (p->str, "url(\"data:image/png;base64,\\\n");
|
||||
break;
|
||||
|
||||
case GDK_MEMORY_FLOAT16:
|
||||
case GDK_MEMORY_FLOAT32:
|
||||
bytes = gdk_texture_save_to_tiff_bytes (texture);
|
||||
g_string_append (p->str, "url(\"data:image/tiff;base64,");
|
||||
g_string_append (p->str, "url(\"data:image/tiff;base64,\\\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -3604,7 +3625,7 @@ gsk_text_node_serialize_font (GskRenderNode *node,
|
||||
|
||||
b64 = base64_encode_with_linebreaks ((const guchar *) data, len);
|
||||
|
||||
g_string_append (p->str, " url(\"data:font/ttf;base64,");
|
||||
g_string_append (p->str, " url(\"data:font/ttf;base64,\\\n");
|
||||
append_escaping_newlines (p->str, b64);
|
||||
g_string_append (p->str, "\")");
|
||||
|
||||
@@ -3623,11 +3644,13 @@ gsk_text_node_serialize_font_options (GskRenderNode *node,
|
||||
cairo_font_options_t *options;
|
||||
cairo_hint_style_t hint_style;
|
||||
cairo_antialias_t antialias;
|
||||
cairo_hint_metrics_t hint_metrics;
|
||||
|
||||
options = cairo_font_options_create ();
|
||||
cairo_scaled_font_get_font_options (sf, options);
|
||||
hint_style = cairo_font_options_get_hint_style (options);
|
||||
antialias = cairo_font_options_get_antialias (options);
|
||||
hint_metrics = cairo_font_options_get_hint_metrics (options);
|
||||
cairo_font_options_destroy (options);
|
||||
|
||||
/* medium and full are identical in the absence of subpixel modes */
|
||||
@@ -3643,6 +3666,12 @@ gsk_text_node_serialize_font_options (GskRenderNode *node,
|
||||
*/
|
||||
if (antialias == CAIRO_ANTIALIAS_NONE)
|
||||
append_enum_param (p, "antialias", CAIRO_GOBJECT_TYPE_ANTIALIAS, antialias);
|
||||
|
||||
/* CAIRO_HINT_METRICS_ON is the only value we ever emit here, since off is the default,
|
||||
* and we don't accept any other values.
|
||||
*/
|
||||
if (hint_metrics == CAIRO_HINT_METRICS_ON)
|
||||
append_enum_param (p, "hint-metrics", CAIRO_GOBJECT_TYPE_HINT_METRICS, CAIRO_HINT_METRICS_ON);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -4414,7 +4443,7 @@ render_node_print (Printer *p,
|
||||
cairo_surface_write_to_png_stream (surface, cairo_write_array, array);
|
||||
|
||||
_indent (p);
|
||||
g_string_append (p->str, "pixels: url(\"data:image/png;base64,");
|
||||
g_string_append (p->str, "pixels: url(\"data:image/png;base64,\\\n");
|
||||
b64 = base64_encode_with_linebreaks (array->data, array->len);
|
||||
append_escaping_newlines (p->str, b64);
|
||||
g_free (b64);
|
||||
@@ -4434,7 +4463,7 @@ render_node_print (Printer *p,
|
||||
if (cairo_script_from_recording_surface (script, surface) == CAIRO_STATUS_SUCCESS)
|
||||
{
|
||||
_indent (p);
|
||||
g_string_append (p->str, "script: url(\"data:;base64,");
|
||||
g_string_append (p->str, "script: url(\"data:;base64,\\\n");
|
||||
b64 = base64_encode_with_linebreaks (array->data, array->len);
|
||||
append_escaping_newlines (p->str, b64);
|
||||
g_free (b64);
|
||||
|
||||
@@ -184,10 +184,4 @@
|
||||
</signal>
|
||||
</interface>
|
||||
|
||||
<interface name="org.a11y.atspi.Event.Focus">
|
||||
<signal name="Focus"><arg direction="in" type="(suuv)"/>
|
||||
<annotation name="org.qtproject.QtDBus.QtTypeName.In0" value="QSpiEvent"/>
|
||||
</signal>
|
||||
</interface>
|
||||
|
||||
</node>
|
||||
|
||||
@@ -720,6 +720,16 @@ handle_accessible_get_property (GDBusConnection *connection,
|
||||
res = get_parent_context_ref (accessible);
|
||||
else if (g_strcmp0 (property_name, "ChildCount") == 0)
|
||||
res = g_variant_new_int32 (gtk_at_spi_context_get_child_count (self));
|
||||
else if (g_strcmp0 (property_name, "HelpText"))
|
||||
{
|
||||
if (gtk_at_context_has_accessible_property (GTK_AT_CONTEXT (self), GTK_ACCESSIBLE_PROPERTY_HELP_TEXT))
|
||||
{
|
||||
GtkAccessibleValue *value = gtk_at_context_get_accessible_property (GTK_AT_CONTEXT (self), GTK_ACCESSIBLE_PROPERTY_HELP_TEXT);
|
||||
res = g_variant_new_string (gtk_string_accessible_value_get (value));
|
||||
}
|
||||
else
|
||||
res = g_variant_new_string ("");
|
||||
}
|
||||
else
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
|
||||
"Unknown property '%s'", property_name);
|
||||
@@ -899,24 +909,6 @@ emit_children_changed (GtkAtSpiContext *self,
|
||||
context_ref);
|
||||
}
|
||||
|
||||
static void
|
||||
emit_focus (GtkAtSpiContext *self,
|
||||
gboolean focus_in)
|
||||
{
|
||||
if (self->connection == NULL)
|
||||
return;
|
||||
|
||||
if (focus_in)
|
||||
g_dbus_connection_emit_signal (self->connection,
|
||||
NULL,
|
||||
self->context_path,
|
||||
"org.a11y.atspi.Event.Focus",
|
||||
"Focus",
|
||||
g_variant_new ("(siiva{sv})",
|
||||
"", 0, 0, g_variant_new_string ("0"), NULL),
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
emit_window_event (GtkAtSpiContext *self,
|
||||
const char *event_type)
|
||||
@@ -1154,7 +1146,7 @@ gtk_at_spi_context_state_change (GtkATContext *ctx,
|
||||
}
|
||||
|
||||
if (changed_properties & GTK_ACCESSIBLE_PROPERTY_CHANGE_DESCRIPTION)
|
||||
{
|
||||
{
|
||||
char *label = gtk_at_context_get_description (GTK_AT_CONTEXT (self));
|
||||
GVariant *v = g_variant_new_take_string (label);
|
||||
emit_property_changed (self, "accessible-description", v);
|
||||
@@ -1167,6 +1159,14 @@ gtk_at_spi_context_state_change (GtkATContext *ctx,
|
||||
"accessible-value",
|
||||
g_variant_new_double (gtk_number_accessible_value_get (value)));
|
||||
}
|
||||
|
||||
if (changed_properties & GTK_ACCESSIBLE_PROPERTY_CHANGE_HELP_TEXT)
|
||||
{
|
||||
value = gtk_accessible_attribute_set_get_value (properties, GTK_ACCESSIBLE_PROPERTY_HELP_TEXT);
|
||||
emit_property_changed (self,
|
||||
"accessible-help-text",
|
||||
g_variant_new_string (gtk_string_accessible_value_get (value)));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1196,7 +1196,6 @@ gtk_at_spi_context_platform_change (GtkATContext *ctx,
|
||||
gboolean state = gtk_accessible_get_platform_state (GTK_ACCESSIBLE (widget),
|
||||
GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED);
|
||||
emit_state_changed (self, "focused", state);
|
||||
emit_focus (self, state);
|
||||
}
|
||||
|
||||
if (changed_platform & GTK_ACCESSIBLE_PLATFORM_CHANGE_ACTIVE)
|
||||
|
||||
@@ -97,7 +97,7 @@ gtk_accessible_role_to_atspi_role (GtkAccessibleRole role)
|
||||
return ATSPI_ROLE_FORM;
|
||||
|
||||
case GTK_ACCESSIBLE_ROLE_GENERIC:
|
||||
return ATSPI_ROLE_FILLER;
|
||||
return ATSPI_ROLE_PANEL;
|
||||
|
||||
case GTK_ACCESSIBLE_ROLE_GRID:
|
||||
return ATSPI_ROLE_TABLE;
|
||||
@@ -106,7 +106,7 @@ gtk_accessible_role_to_atspi_role (GtkAccessibleRole role)
|
||||
return ATSPI_ROLE_TABLE_CELL;
|
||||
|
||||
case GTK_ACCESSIBLE_ROLE_GROUP:
|
||||
return ATSPI_ROLE_PANEL;
|
||||
return ATSPI_ROLE_GROUPING;
|
||||
|
||||
case GTK_ACCESSIBLE_ROLE_HEADING:
|
||||
return ATSPI_ROLE_HEADING;
|
||||
|
||||
@@ -808,6 +808,11 @@ static const GtkAccessibleCollect collect_props[] = {
|
||||
.ctype = GTK_ACCESSIBLE_COLLECT_STRING,
|
||||
.name = "valuetext"
|
||||
},
|
||||
[GTK_ACCESSIBLE_PROPERTY_HELP_TEXT] = {
|
||||
.value = GTK_ACCESSIBLE_PROPERTY_HELP_TEXT,
|
||||
.ctype = GTK_ACCESSIBLE_COLLECT_STRING,
|
||||
.name = "helptext"
|
||||
},
|
||||
};
|
||||
|
||||
/* § 6.6.4 Relationship Attributes */
|
||||
@@ -1662,7 +1667,7 @@ gtk_accessible_value_get_default_for_property (GtkAccessibleProperty property)
|
||||
{
|
||||
const GtkAccessibleCollect *cstate = &collect_props[property];
|
||||
|
||||
g_return_val_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT, NULL);
|
||||
g_return_val_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_HELP_TEXT, NULL);
|
||||
|
||||
switch (cstate->value)
|
||||
{
|
||||
@@ -1692,6 +1697,7 @@ gtk_accessible_value_get_default_for_property (GtkAccessibleProperty property)
|
||||
case GTK_ACCESSIBLE_PROPERTY_PLACEHOLDER:
|
||||
case GTK_ACCESSIBLE_PROPERTY_ROLE_DESCRIPTION:
|
||||
case GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT:
|
||||
case GTK_ACCESSIBLE_PROPERTY_HELP_TEXT:
|
||||
return gtk_undefined_accessible_value_new ();
|
||||
|
||||
/* Token properties */
|
||||
@@ -1732,7 +1738,7 @@ gtk_accessible_value_collect_for_property (GtkAccessibleProperty property,
|
||||
{
|
||||
const GtkAccessibleCollect *cstate = &collect_props[property];
|
||||
|
||||
g_return_val_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT, NULL);
|
||||
g_return_val_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_HELP_TEXT, NULL);
|
||||
|
||||
return gtk_accessible_value_collect_valist (cstate, error, args);
|
||||
}
|
||||
@@ -1760,7 +1766,7 @@ gtk_accessible_value_collect_for_property_value (GtkAccessibleProperty propert
|
||||
{
|
||||
const GtkAccessibleCollect *cstate = &collect_props[property];
|
||||
|
||||
g_return_val_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT, NULL);
|
||||
g_return_val_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_HELP_TEXT, NULL);
|
||||
|
||||
return gtk_accessible_value_collect_value (cstate, value, error);
|
||||
}
|
||||
@@ -1773,7 +1779,7 @@ gtk_accessible_value_parse_for_property (GtkAccessibleProperty property,
|
||||
{
|
||||
const GtkAccessibleCollect *cstate = &collect_props[property];
|
||||
|
||||
g_return_val_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT, NULL);
|
||||
g_return_val_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_HELP_TEXT, NULL);
|
||||
|
||||
return gtk_accessible_value_parse (cstate, str, len, error);
|
||||
}
|
||||
@@ -1794,7 +1800,7 @@ gtk_accessible_property_init_value (GtkAccessibleProperty property,
|
||||
{
|
||||
const GtkAccessibleCollect *cstate = &collect_props[property];
|
||||
|
||||
g_return_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT);
|
||||
g_return_if_fail (property <= GTK_ACCESSIBLE_PROPERTY_HELP_TEXT);
|
||||
|
||||
gtk_accessible_attribute_init_value (cstate, value);
|
||||
}
|
||||
|
||||
@@ -328,6 +328,7 @@ static const char *property_attrs[] = {
|
||||
[GTK_ACCESSIBLE_PROPERTY_VALUE_MIN] = "valuemin",
|
||||
[GTK_ACCESSIBLE_PROPERTY_VALUE_NOW] = "valuenow",
|
||||
[GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT] = "valuetext",
|
||||
[GTK_ACCESSIBLE_PROPERTY_HELP_TEXT] = "helptext",
|
||||
};
|
||||
|
||||
/*< private >
|
||||
@@ -342,7 +343,7 @@ const char *
|
||||
gtk_accessible_property_get_attribute_name (GtkAccessibleProperty property)
|
||||
{
|
||||
g_return_val_if_fail (property >= GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE &&
|
||||
property <= GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT,
|
||||
property <= GTK_ACCESSIBLE_PROPERTY_HELP_TEXT,
|
||||
"<none>");
|
||||
|
||||
return property_attrs[property];
|
||||
|
||||
@@ -47,7 +47,8 @@ typedef enum {
|
||||
GTK_ACCESSIBLE_PROPERTY_CHANGE_VALUE_MAX = 1 << GTK_ACCESSIBLE_PROPERTY_VALUE_MAX,
|
||||
GTK_ACCESSIBLE_PROPERTY_CHANGE_VALUE_MIN = 1 << GTK_ACCESSIBLE_PROPERTY_VALUE_MIN,
|
||||
GTK_ACCESSIBLE_PROPERTY_CHANGE_VALUE_NOW = 1 << GTK_ACCESSIBLE_PROPERTY_VALUE_NOW,
|
||||
GTK_ACCESSIBLE_PROPERTY_CHANGE_VALUE_TEXT = 1 << GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT
|
||||
GTK_ACCESSIBLE_PROPERTY_CHANGE_VALUE_TEXT = 1 << GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT,
|
||||
GTK_ACCESSIBLE_PROPERTY_CHANGE_HELP_TEXT = 1 << GTK_ACCESSIBLE_PROPERTY_HELP_TEXT,
|
||||
} GtkAccessiblePropertyChange;
|
||||
|
||||
typedef enum {
|
||||
|
||||
@@ -32,8 +32,12 @@
|
||||
* `GtkBuilderListItemFactory` is a `GtkListItemFactory` that creates
|
||||
* widgets by instantiating `GtkBuilder` UI templates.
|
||||
*
|
||||
* The templates must be extending `GtkListItem`, and typically use
|
||||
* `GtkExpression`s to obtain data from the items in the model.
|
||||
* The templates must extend the class that the parent widget expects.
|
||||
* For example, a factory provided to [property@Gtk.ListView:factory] must have
|
||||
* a template that extends [class@Gtk.ListItem].
|
||||
*
|
||||
* Templates typically use `GtkExpression`s to obtain data from the items
|
||||
* in the model.
|
||||
*
|
||||
* Example:
|
||||
* ```xml
|
||||
@@ -203,7 +207,7 @@ gtk_builder_list_item_factory_set_property (GObject *object,
|
||||
case PROP_RESOURCE:
|
||||
{
|
||||
GError *error = NULL;
|
||||
GBytes *bytes;
|
||||
GBytes *bytes;
|
||||
const char *resource;
|
||||
|
||||
resource = g_value_get_string (value);
|
||||
|
||||
@@ -861,6 +861,8 @@ gtk_column_view_class_init (GtkColumnViewClass *klass)
|
||||
*
|
||||
* The factory used for configuring rows.
|
||||
*
|
||||
* The factory must be for configuring [class@Gtk.ColumnViewRow] objects.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
properties[PROP_ROW_FACTORY] =
|
||||
@@ -926,6 +928,8 @@ gtk_column_view_class_init (GtkColumnViewClass *klass)
|
||||
*
|
||||
* Factory for creating header widgets.
|
||||
*
|
||||
* The factory must be for configuring [class@Gtk.ListHeader] objects.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
properties[PROP_HEADER_FACTORY] =
|
||||
|
||||
@@ -255,6 +255,8 @@ gtk_column_view_column_class_init (GtkColumnViewColumnClass *klass)
|
||||
* GtkColumnViewColumn:factory: (attributes org.gtk.Property.get=gtk_column_view_column_get_factory org.gtk.Property.set=gtk_column_view_column_set_factory)
|
||||
*
|
||||
* Factory for populating list items.
|
||||
*
|
||||
* The factory must be for configuring [class@Gtk.ColumnViewCell] objects.
|
||||
*/
|
||||
properties[PROP_FACTORY] =
|
||||
g_param_spec_object ("factory", NULL, NULL,
|
||||
@@ -761,7 +763,7 @@ gtk_column_view_column_remove_from_sorter (GtkColumnViewColumn *self)
|
||||
{
|
||||
if (self->view == NULL)
|
||||
return;
|
||||
|
||||
|
||||
gtk_column_view_sorter_remove_column (GTK_COLUMN_VIEW_SORTER (gtk_column_view_get_sorter (self->view)), self);
|
||||
}
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ gtk_css_image_icon_theme_compute (GtkCssImage *image,
|
||||
copy->icon_theme = gtk_icon_theme_get_for_display (display);
|
||||
copy->serial = gtk_icon_theme_get_serial (copy->icon_theme);
|
||||
copy->scale = gtk_style_provider_get_scale (provider);
|
||||
gtk_icon_theme_lookup_symbolic_colors (style, copy->colors);
|
||||
gtk_css_style_lookup_symbolic_colors (style, copy->colors);
|
||||
|
||||
return GTK_CSS_IMAGE (copy);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "gtkcssinitialvalueprivate.h"
|
||||
#include "gtkcssnumbervalueprivate.h"
|
||||
#include "gtkcsscolorvalueprivate.h"
|
||||
#include "gtkcsspalettevalueprivate.h"
|
||||
#include "gtkcssshorthandpropertyprivate.h"
|
||||
#include "gtkcssstringvalueprivate.h"
|
||||
#include "gtkcssfontvariationsvalueprivate.h"
|
||||
@@ -750,6 +751,33 @@ gtk_css_style_get_pango_font (GtkCssStyle *style)
|
||||
return description;
|
||||
}
|
||||
|
||||
void
|
||||
gtk_css_style_lookup_symbolic_colors (GtkCssStyle *style,
|
||||
GdkRGBA color_out[4])
|
||||
{
|
||||
GtkCssValue *palette, *color;
|
||||
const char *names[4] = {
|
||||
[GTK_SYMBOLIC_COLOR_ERROR] = "error",
|
||||
[GTK_SYMBOLIC_COLOR_WARNING] = "warning",
|
||||
[GTK_SYMBOLIC_COLOR_SUCCESS] = "success"
|
||||
};
|
||||
|
||||
color = style->core->color;
|
||||
palette = style->core->icon_palette;
|
||||
color_out[GTK_SYMBOLIC_COLOR_FOREGROUND] = *gtk_css_color_value_get_rgba (color);
|
||||
|
||||
for (gsize i = 1; i < 4; i++)
|
||||
{
|
||||
const GdkRGBA *lookup;
|
||||
|
||||
lookup = gtk_css_palette_value_get_color (palette, names[i]);
|
||||
if (lookup)
|
||||
color_out[i] = *lookup;
|
||||
else
|
||||
color_out[i] = color_out[GTK_SYMBOLIC_COLOR_FOREGROUND];
|
||||
}
|
||||
}
|
||||
|
||||
/* Refcounted value structs */
|
||||
|
||||
static const int values_size[] = {
|
||||
|
||||
@@ -268,6 +268,9 @@ char * gtk_css_style_compute_font_features (GtkCssStyle
|
||||
PangoAttrList * gtk_css_style_get_pango_attributes (GtkCssStyle *style);
|
||||
PangoFontDescription * gtk_css_style_get_pango_font (GtkCssStyle *style);
|
||||
|
||||
void gtk_css_style_lookup_symbolic_colors (GtkCssStyle *style,
|
||||
GdkRGBA color_out[4]);
|
||||
|
||||
GtkCssValues *gtk_css_values_new (GtkCssValuesType type);
|
||||
GtkCssValues *gtk_css_values_ref (GtkCssValues *values);
|
||||
void gtk_css_values_unref (GtkCssValues *values);
|
||||
|
||||
@@ -1632,6 +1632,15 @@ typedef enum {
|
||||
*
|
||||
* The possible accessible properties of a [iface@Accessible].
|
||||
*/
|
||||
|
||||
/**
|
||||
* GTK_ACCESSIBLE_PROPERTY_HELP_TEXT:
|
||||
*
|
||||
* Defines a string value that provides a description of non-standard keyboard
|
||||
* interactions of the current element. Value type: string
|
||||
*
|
||||
* Since: 4.16
|
||||
*/
|
||||
typedef enum {
|
||||
GTK_ACCESSIBLE_PROPERTY_AUTOCOMPLETE,
|
||||
GTK_ACCESSIBLE_PROPERTY_DESCRIPTION,
|
||||
@@ -1651,7 +1660,8 @@ typedef enum {
|
||||
GTK_ACCESSIBLE_PROPERTY_VALUE_MAX,
|
||||
GTK_ACCESSIBLE_PROPERTY_VALUE_MIN,
|
||||
GTK_ACCESSIBLE_PROPERTY_VALUE_NOW,
|
||||
GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT
|
||||
GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT,
|
||||
GTK_ACCESSIBLE_PROPERTY_HELP_TEXT
|
||||
} GtkAccessibleProperty;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1109,6 +1109,8 @@ gtk_grid_view_class_init (GtkGridViewClass *klass)
|
||||
* GtkGridView:factory: (attributes org.gtk.Property.get=gtk_grid_view_get_factory org.gtk.Property.set=gtk_grid_view_set_factory)
|
||||
*
|
||||
* Factory for populating list items.
|
||||
*
|
||||
* The factory must be for configuring [class@Gtk.ListItem] objects.
|
||||
*/
|
||||
properties[PROP_FACTORY] =
|
||||
g_param_spec_object ("factory", NULL, NULL,
|
||||
|
||||
@@ -2533,34 +2533,6 @@ gtk_icon_theme_error_quark (void)
|
||||
return g_quark_from_static_string ("gtk-icon-theme-error-quark");
|
||||
}
|
||||
|
||||
void
|
||||
gtk_icon_theme_lookup_symbolic_colors (GtkCssStyle *style,
|
||||
GdkRGBA color_out[4])
|
||||
{
|
||||
GtkCssValue *palette, *color;
|
||||
const char *names[4] = {
|
||||
[GTK_SYMBOLIC_COLOR_ERROR] = "error",
|
||||
[GTK_SYMBOLIC_COLOR_WARNING] = "warning",
|
||||
[GTK_SYMBOLIC_COLOR_SUCCESS] = "success"
|
||||
};
|
||||
const GdkRGBA *lookup;
|
||||
gsize i;
|
||||
|
||||
color = style->core->color;
|
||||
palette = style->core->icon_palette;
|
||||
color_out[GTK_SYMBOLIC_COLOR_FOREGROUND] = *gtk_css_color_value_get_rgba (color);
|
||||
|
||||
for (i = 1; i < 4; i++)
|
||||
{
|
||||
lookup = gtk_css_palette_value_get_color (palette, names[i]);
|
||||
if (lookup)
|
||||
color_out[i] = *lookup;
|
||||
else
|
||||
color_out[i] = color_out[GTK_SYMBOLIC_COLOR_FOREGROUND];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gtk_icon_theme_has_icon:
|
||||
* @self: a `GtkIconTheme`
|
||||
|
||||
@@ -26,8 +26,5 @@ const char *gtk_string_set_add (GtkStringSet *set,
|
||||
|
||||
#define IMAGE_MISSING_RESOURCE_PATH "/org/gtk/libgtk/icons/16x16/status/image-missing.png"
|
||||
|
||||
void gtk_icon_theme_lookup_symbolic_colors (GtkCssStyle *style,
|
||||
GdkRGBA color_out[4]);
|
||||
|
||||
int gtk_icon_theme_get_serial (GtkIconTheme *self);
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ static inline void
|
||||
istring_prepend (IString *str,
|
||||
IString *other)
|
||||
{
|
||||
if G_LIKELY (str->n_bytes + other->n_bytes < sizeof str->u.buf - 1)
|
||||
if G_LIKELY (str->n_bytes + other->n_bytes <= (sizeof str->u.buf - 1))
|
||||
{
|
||||
memmove (str->u.buf + other->n_bytes, str->u.buf, str->n_bytes);
|
||||
memcpy (str->u.buf, other->u.buf, other->n_bytes);
|
||||
|
||||
@@ -881,6 +881,8 @@ gtk_list_view_class_init (GtkListViewClass *klass)
|
||||
* GtkListView:factory: (attributes org.gtk.Property.get=gtk_list_view_get_factory org.gtk.Property.set=gtk_list_view_set_factory)
|
||||
*
|
||||
* Factory for populating list items.
|
||||
*
|
||||
* The factory must be for configuring [class@Gtk.ListItem] objects.
|
||||
*/
|
||||
properties[PROP_FACTORY] =
|
||||
g_param_spec_object ("factory", NULL, NULL,
|
||||
@@ -892,6 +894,8 @@ gtk_list_view_class_init (GtkListViewClass *klass)
|
||||
*
|
||||
* Factory for creating header widgets.
|
||||
*
|
||||
* The factory must be for configuring [class@Gtk.ListHeader] objects.
|
||||
*
|
||||
* Since: 4.12
|
||||
*/
|
||||
properties[PROP_HEADER_FACTORY] =
|
||||
@@ -1355,7 +1359,7 @@ gtk_list_view_get_tab_behavior (GtkListView *self)
|
||||
* @pos: position of the item
|
||||
* @flags: actions to perform
|
||||
* @scroll: (nullable) (transfer full): details of how to perform
|
||||
* the scroll operation or %NULL to scroll into view
|
||||
* the scroll operation or %NULL to scroll into view
|
||||
*
|
||||
* Scrolls to the item at the given position and performs the actions
|
||||
* specified in @flags.
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
|
||||
#include "gtkrendericonprivate.h"
|
||||
|
||||
#include "gtkcsscolorvalueprivate.h"
|
||||
#include "gtkcssfiltervalueprivate.h"
|
||||
#include "gtkcssimagevalueprivate.h"
|
||||
#include "gtkcssshadowvalueprivate.h"
|
||||
@@ -116,7 +117,7 @@ gtk_css_style_snapshot_icon_paintable (GtkCssStyle *style,
|
||||
is_symbolic_paintable = GTK_IS_SYMBOLIC_PAINTABLE (paintable);
|
||||
if (is_symbolic_paintable)
|
||||
{
|
||||
gtk_icon_theme_lookup_symbolic_colors (style, colors);
|
||||
gtk_css_style_lookup_symbolic_colors (style, colors);
|
||||
|
||||
if (gdk_rgba_is_clear (&colors[0]))
|
||||
goto transparent;
|
||||
|
||||
@@ -1774,6 +1774,10 @@ populate_event_properties (GListStore *store,
|
||||
case GDK_KEY_RELEASE:
|
||||
{
|
||||
char *tmp;
|
||||
|
||||
tmp = modifier_names (gdk_key_event_get_consumed_modifiers (event));
|
||||
add_text_row (store, "Consumed modifiers", "%s", tmp);
|
||||
g_free (tmp);
|
||||
add_int_row (store, "Keycode", gdk_key_event_get_keycode (event));
|
||||
add_int_row (store, "Keyval", gdk_key_event_get_keyval (event));
|
||||
tmp = key_event_string (event);
|
||||
|
||||
186
po/tr.po
186
po/tr.po
@@ -22,9 +22,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n"
|
||||
"POT-Creation-Date: 2024-04-04 16:15+0000\n"
|
||||
"PO-Revision-Date: 2024-04-06 17:31+0300\n"
|
||||
"Last-Translator: Sabri Ünal <yakushabb@gmail.com>\n"
|
||||
"POT-Creation-Date: 2024-05-01 15:18+0000\n"
|
||||
"PO-Revision-Date: 2024-05-01 08:00+0300\n"
|
||||
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
|
||||
"Language-Team: Türkçe <takim@gnome.org.tr>\n"
|
||||
"Language: tr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -65,7 +65,7 @@ msgstr "İçerikler %s olarak sağlanamıyor"
|
||||
msgid "The current backend does not support OpenGL"
|
||||
msgstr "Şimdiki arka uç OpenGL’i desteklemiyor"
|
||||
|
||||
#: gdk/gdkdisplay.c:1315 gdk/gdkvulkancontext.c:1600
|
||||
#: gdk/gdkdisplay.c:1315 gdk/gdkvulkancontext.c:1618
|
||||
msgid "Vulkan support disabled via GDK_DEBUG"
|
||||
msgstr "Vulkan desteği GDK_DEBUG yoluyla devre dışı bırakılmış"
|
||||
|
||||
@@ -546,7 +546,7 @@ msgstr "JPEG resim dosyası yorumlanırken hata (%s)"
|
||||
msgid "Unsupported JPEG colorspace (%d)"
|
||||
msgstr "Desteklenmeyen JPEG renk uzayı (%d)"
|
||||
|
||||
#: gdk/loaders/gdkjpeg.c:203 gdk/loaders/gdkpng.c:286 gdk/loaders/gdktiff.c:472
|
||||
#: gdk/loaders/gdkjpeg.c:203 gdk/loaders/gdkpng.c:289 gdk/loaders/gdktiff.c:472
|
||||
#, c-format
|
||||
msgid "Not enough memory for image size %ux%u"
|
||||
msgstr "%ux%u resim boyutu için yeterli bellek yok"
|
||||
@@ -556,17 +556,17 @@ msgstr "%ux%u resim boyutu için yeterli bellek yok"
|
||||
msgid "Error reading png (%s)"
|
||||
msgstr "PNG okunurken hata (%s)"
|
||||
|
||||
#: gdk/loaders/gdkpng.c:212
|
||||
#: gdk/loaders/gdkpng.c:215
|
||||
#, c-format
|
||||
msgid "Unsupported depth %u in png image"
|
||||
msgstr "Png resminde desteklenmeyen %u derinlik"
|
||||
|
||||
#: gdk/loaders/gdkpng.c:262
|
||||
#: gdk/loaders/gdkpng.c:265
|
||||
#, c-format
|
||||
msgid "Unsupported color type %u in png image"
|
||||
msgstr "Png resminde desteklenmeyen %u renk türü"
|
||||
|
||||
#: gdk/loaders/gdkpng.c:272
|
||||
#: gdk/loaders/gdkpng.c:275
|
||||
#, c-format
|
||||
msgid "Image stride too large for image size %ux%u"
|
||||
msgstr "%ux%u görüntü boyutu için görüntü adımı çok büyük"
|
||||
@@ -2250,7 +2250,7 @@ msgstr "Bu adda dosya zaten var"
|
||||
#: gtk/gtkmessagedialog.c:179 gtk/gtkmountoperation.c:608
|
||||
#: gtk/print/gtkpagesetupunixdialog.c:282 gtk/print/gtkprintbackend.c:638
|
||||
#: gtk/print/gtkprintunixdialog.c:682 gtk/print/gtkprintunixdialog.c:839
|
||||
#: gtk/gtkwindow.c:6256 gtk/ui/gtkappchooserdialog.ui:48
|
||||
#: gtk/gtkwindow.c:6257 gtk/ui/gtkappchooserdialog.ui:48
|
||||
#: gtk/ui/gtkassistant.ui:52 gtk/ui/gtkcolorchooserdialog.ui:36
|
||||
#: gtk/ui/gtkfontchooserdialog.ui:27
|
||||
msgid "_Cancel"
|
||||
@@ -2338,7 +2338,7 @@ msgid "If you delete an item, it will be permanently lost."
|
||||
msgstr "Eğer bir öge silerseniz kalıcı olarak kaybolur."
|
||||
|
||||
#: gtk/gtkfilechooserwidget.c:1188 gtk/gtkfilechooserwidget.c:1786
|
||||
#: gtk/gtklabel.c:5723 gtk/gtktext.c:6194 gtk/gtktextview.c:9099
|
||||
#: gtk/gtklabel.c:5745 gtk/gtktext.c:6194 gtk/gtktextview.c:9099
|
||||
msgid "_Delete"
|
||||
msgstr "_Sil"
|
||||
|
||||
@@ -2666,7 +2666,7 @@ msgstr "Biçem Değişkeleri"
|
||||
msgid "Character Variations"
|
||||
msgstr "Karakter Değişkeleri"
|
||||
|
||||
#: gtk/gtkglarea.c:309
|
||||
#: gtk/gtkglarea.c:316
|
||||
msgid "OpenGL context creation failed"
|
||||
msgstr "OpenGL içerik oluşturulması başarısız oldu"
|
||||
|
||||
@@ -2679,31 +2679,31 @@ msgstr "Kapat"
|
||||
msgid "Close the infobar"
|
||||
msgstr "Bilgi çubuğunu kapat"
|
||||
|
||||
#: gtk/gtklabel.c:5720 gtk/gtktext.c:6182 gtk/gtktextview.c:9087
|
||||
#: gtk/gtklabel.c:5742 gtk/gtktext.c:6182 gtk/gtktextview.c:9087
|
||||
msgid "Cu_t"
|
||||
msgstr "Ke_s"
|
||||
|
||||
#: gtk/gtklabel.c:5721 gtk/gtktext.c:6186 gtk/gtktextview.c:9091
|
||||
#: gtk/gtklabel.c:5743 gtk/gtktext.c:6186 gtk/gtktextview.c:9091
|
||||
msgid "_Copy"
|
||||
msgstr "_Kopyala"
|
||||
|
||||
#: gtk/gtklabel.c:5722 gtk/gtktext.c:6190 gtk/gtktextview.c:9095
|
||||
#: gtk/gtklabel.c:5744 gtk/gtktext.c:6190 gtk/gtktextview.c:9095
|
||||
msgid "_Paste"
|
||||
msgstr "_Yapıştır"
|
||||
|
||||
#: gtk/gtklabel.c:5728 gtk/gtktext.c:6203 gtk/gtktextview.c:9120
|
||||
#: gtk/gtklabel.c:5750 gtk/gtktext.c:6203 gtk/gtktextview.c:9120
|
||||
msgid "Select _All"
|
||||
msgstr "_Tümünü Seç"
|
||||
|
||||
#: gtk/gtklabel.c:5733
|
||||
#: gtk/gtklabel.c:5755
|
||||
msgid "_Open Link"
|
||||
msgstr "Bağlantı _Aç"
|
||||
|
||||
#: gtk/gtklabel.c:5737
|
||||
#: gtk/gtklabel.c:5759
|
||||
msgid "Copy _Link Address"
|
||||
msgstr "_Bağlantı Adresini Kopyala"
|
||||
|
||||
#: gtk/gtklabel.c:5781 gtk/gtktext.c:2723 gtk/gtktextview.c:9169
|
||||
#: gtk/gtklabel.c:5803 gtk/gtktext.c:2723 gtk/gtktextview.c:9169
|
||||
msgid "Context menu"
|
||||
msgstr "Bağlamsal menü"
|
||||
|
||||
@@ -2711,7 +2711,7 @@ msgstr "Bağlamsal menü"
|
||||
msgid "_Copy URL"
|
||||
msgstr "URL _Kopyala"
|
||||
|
||||
#: gtk/gtklinkbutton.c:567
|
||||
#: gtk/gtklinkbutton.c:589
|
||||
msgid "Invalid URI"
|
||||
msgstr "Geçersiz URI"
|
||||
|
||||
@@ -2774,7 +2774,7 @@ msgid "Play"
|
||||
msgstr "Oynat"
|
||||
|
||||
#: gtk/gtkmessagedialog.c:162 gtk/gtkmessagedialog.c:180
|
||||
#: gtk/print/gtkprintbackend.c:639 gtk/gtkwindow.c:6257
|
||||
#: gtk/print/gtkprintbackend.c:639 gtk/gtkwindow.c:6258
|
||||
msgid "_OK"
|
||||
msgstr "_Tamam"
|
||||
|
||||
@@ -3648,12 +3648,12 @@ msgstr "_Geri Al"
|
||||
msgid "_Redo"
|
||||
msgstr "_Yinele"
|
||||
|
||||
#: gtk/gtkwindow.c:6245
|
||||
#: gtk/gtkwindow.c:6246
|
||||
#, c-format
|
||||
msgid "Do you want to use GTK Inspector?"
|
||||
msgstr "GTK Denetleyicisi kullanmak istiyor musunuz?"
|
||||
|
||||
#: gtk/gtkwindow.c:6247
|
||||
#: gtk/gtkwindow.c:6248
|
||||
#, c-format
|
||||
msgid ""
|
||||
"GTK Inspector is an interactive debugger that lets you explore and modify "
|
||||
@@ -3664,7 +3664,7 @@ msgstr ""
|
||||
"izin veren etkileşimli hata ayıklayıcıdır. Bunun kullanılması uygulamanın "
|
||||
"kesilmesine ya da çökmesine neden olabilir."
|
||||
|
||||
#: gtk/gtkwindow.c:6252
|
||||
#: gtk/gtkwindow.c:6253
|
||||
msgid "Don’t show this message again"
|
||||
msgstr "Bu iletiyi yeniden gösterme"
|
||||
|
||||
@@ -3843,37 +3843,37 @@ msgstr "Biçem Sınıfları"
|
||||
msgid "CSS Property"
|
||||
msgstr "CSS Özelliği"
|
||||
|
||||
#: gtk/inspector/general.c:370
|
||||
#: gtk/inspector/general.c:371
|
||||
msgctxt "GL version"
|
||||
msgid "None"
|
||||
msgstr "Hiçbiri"
|
||||
|
||||
#: gtk/inspector/general.c:461
|
||||
#: gtk/inspector/general.c:462
|
||||
msgctxt "GL version"
|
||||
msgid "Unknown"
|
||||
msgstr "Bilinmeyen"
|
||||
|
||||
#: gtk/inspector/general.c:523
|
||||
#: gtk/inspector/general.c:524
|
||||
msgctxt "Vulkan device"
|
||||
msgid "Disabled"
|
||||
msgstr "Devre Dışı"
|
||||
|
||||
#: gtk/inspector/general.c:524 gtk/inspector/general.c:525
|
||||
#: gtk/inspector/general.c:525 gtk/inspector/general.c:526
|
||||
msgctxt "Vulkan version"
|
||||
msgid "Disabled"
|
||||
msgstr "Devre Dışı"
|
||||
|
||||
#: gtk/inspector/general.c:576
|
||||
#: gtk/inspector/general.c:577
|
||||
msgctxt "Vulkan device"
|
||||
msgid "None"
|
||||
msgstr "Hiçbiri"
|
||||
|
||||
#: gtk/inspector/general.c:577 gtk/inspector/general.c:578
|
||||
#: gtk/inspector/general.c:578 gtk/inspector/general.c:579
|
||||
msgctxt "Vulkan version"
|
||||
msgid "None"
|
||||
msgstr "Hiçbiri"
|
||||
|
||||
#: gtk/inspector/general.c:924
|
||||
#: gtk/inspector/general.c:930
|
||||
msgid "IM Context is hardcoded by GTK_IM_MODULE"
|
||||
msgstr "IM Bağlamı GTK_IM_MODULE tarafından kodlanmış"
|
||||
|
||||
@@ -4183,7 +4183,7 @@ msgstr "Kaynak:"
|
||||
msgid "Defined At"
|
||||
msgstr "Şurada Tanımlanmış"
|
||||
|
||||
#: gtk/inspector/recorder.c:1941
|
||||
#: gtk/inspector/recorder.c:1946
|
||||
#, c-format
|
||||
msgid "Saving RenderNode failed"
|
||||
msgstr "RenderNode kaydetme başarısız"
|
||||
@@ -4321,7 +4321,7 @@ msgstr "Hiyerarşi"
|
||||
msgid "Implements"
|
||||
msgstr "Sağladıkları"
|
||||
|
||||
#: gtk/inspector/visual.c:765 gtk/inspector/visual.c:784
|
||||
#: gtk/inspector/visual.c:690 gtk/inspector/visual.c:708
|
||||
msgid "Theme is hardcoded by GTK_THEME"
|
||||
msgstr "Tema GTK_THEME ile kodlanmış"
|
||||
|
||||
@@ -4366,46 +4366,28 @@ msgid "Slowdown"
|
||||
msgstr "Yavaşlama"
|
||||
|
||||
#: gtk/inspector/visual.ui:362
|
||||
msgid "Antialiasing"
|
||||
msgstr "Kenar Yumuşatma"
|
||||
msgid "Rendering"
|
||||
msgstr "Gerçekleme"
|
||||
|
||||
#: gtk/inspector/visual.ui:387
|
||||
msgid "Hinting"
|
||||
msgstr "Düzeltme"
|
||||
#: gtk/inspector/visual.ui:377
|
||||
msgctxt "Font rendering"
|
||||
msgid "Automatic"
|
||||
msgstr "Kendiliğinden"
|
||||
|
||||
#: gtk/inspector/visual.ui:402
|
||||
msgctxt "Font hinting style"
|
||||
msgid "None"
|
||||
msgstr "Yok"
|
||||
|
||||
#: gtk/inspector/visual.ui:403
|
||||
msgctxt "Font hinting style"
|
||||
msgid "Slight"
|
||||
msgstr "Hafif"
|
||||
|
||||
#: gtk/inspector/visual.ui:404
|
||||
msgctxt "Font hinting style"
|
||||
msgid "Medium"
|
||||
msgstr "Orta"
|
||||
#: gtk/inspector/visual.ui:378
|
||||
msgctxt "Font rendering"
|
||||
msgid "Manual"
|
||||
msgstr "Elle"
|
||||
|
||||
#: gtk/inspector/visual.ui:405
|
||||
msgctxt "Font hinting style"
|
||||
msgid "Full"
|
||||
msgstr "Tam"
|
||||
|
||||
#: gtk/inspector/visual.ui:422
|
||||
msgid "Metrics Hinting"
|
||||
msgstr "Metrik Düzeltme"
|
||||
|
||||
#: gtk/inspector/visual.ui:457
|
||||
msgid "Show Framerate"
|
||||
msgstr "Kare Hızını Göster"
|
||||
|
||||
#: gtk/inspector/visual.ui:482
|
||||
#: gtk/inspector/visual.ui:430
|
||||
msgid "Show Graphic Updates"
|
||||
msgstr "Grafik Güncellemeleri Göster"
|
||||
|
||||
#: gtk/inspector/visual.ui:502
|
||||
#: gtk/inspector/visual.ui:450
|
||||
msgid ""
|
||||
"Tints all the places where the current renderer uses Cairo instead of the "
|
||||
"GPU."
|
||||
@@ -4413,47 +4395,47 @@ msgstr ""
|
||||
"Geçerli gerçekleyicinin Ekran Kartı yerine Cairo kullandığı tüm yerleri "
|
||||
"renklendirir."
|
||||
|
||||
#: gtk/inspector/visual.ui:508
|
||||
#: gtk/inspector/visual.ui:456
|
||||
msgid "Show Cairo Rendering"
|
||||
msgstr "Cairo Gerçeklemeyi Göster"
|
||||
|
||||
#: gtk/inspector/visual.ui:533
|
||||
#: gtk/inspector/visual.ui:481
|
||||
msgid "Show Baselines"
|
||||
msgstr "Grafik Güncellemelerini Göster"
|
||||
|
||||
#: gtk/inspector/visual.ui:561
|
||||
#: gtk/inspector/visual.ui:509
|
||||
msgid "Show Layout Borders"
|
||||
msgstr "Yerleşim Sınırlarını Göster"
|
||||
|
||||
#: gtk/inspector/visual.ui:618
|
||||
#: gtk/inspector/visual.ui:566
|
||||
msgid "CSS Padding"
|
||||
msgstr "CSS Dolgu"
|
||||
|
||||
#: gtk/inspector/visual.ui:628
|
||||
#: gtk/inspector/visual.ui:576
|
||||
msgid "CSS Border"
|
||||
msgstr "CSS Kenarlığı"
|
||||
|
||||
#: gtk/inspector/visual.ui:638
|
||||
#: gtk/inspector/visual.ui:586
|
||||
msgid "CSS Margin"
|
||||
msgstr "CSS Boşluğu"
|
||||
|
||||
#: gtk/inspector/visual.ui:648
|
||||
#: gtk/inspector/visual.ui:596
|
||||
msgid "Widget Margin"
|
||||
msgstr "Parçacık Boşluğu"
|
||||
|
||||
#: gtk/inspector/visual.ui:683
|
||||
#: gtk/inspector/visual.ui:631
|
||||
msgid "Show Focus"
|
||||
msgstr "Odağı Göster"
|
||||
|
||||
#: gtk/inspector/visual.ui:708
|
||||
#: gtk/inspector/visual.ui:656
|
||||
msgid "Show Accessibility warnings"
|
||||
msgstr "Erişilebilirlik uyarılarını göster"
|
||||
|
||||
#: gtk/inspector/visual.ui:733
|
||||
#: gtk/inspector/visual.ui:681
|
||||
msgid "Show Graphics Offload"
|
||||
msgstr "Grafik Boşaltmaları Göster"
|
||||
|
||||
#: gtk/inspector/visual.ui:765
|
||||
#: gtk/inspector/visual.ui:713
|
||||
msgid "Inspect Inspector"
|
||||
msgstr "Denetleyiciyi İncele"
|
||||
|
||||
@@ -7168,22 +7150,22 @@ msgstr "Çıktı cwd yerine bu dizine"
|
||||
msgid "Generate debug output"
|
||||
msgstr "Hata ayıklama çıktısı oluştur"
|
||||
|
||||
#: tools/encodesymbolic.c:92
|
||||
#: tools/encodesymbolic.c:95
|
||||
#, c-format
|
||||
msgid "Invalid size %s\n"
|
||||
msgstr "Geçersiz boyut %s\n"
|
||||
|
||||
#: tools/encodesymbolic.c:104 tools/encodesymbolic.c:113
|
||||
#: tools/encodesymbolic.c:107 tools/encodesymbolic.c:116
|
||||
#, c-format
|
||||
msgid "Can’t load file: %s\n"
|
||||
msgstr "Dosya yüklenemedi: %s\n"
|
||||
|
||||
#: tools/encodesymbolic.c:141 tools/encodesymbolic.c:147
|
||||
#: tools/encodesymbolic.c:144 tools/encodesymbolic.c:162
|
||||
#, c-format
|
||||
msgid "Can’t save file %s: %s\n"
|
||||
msgstr "%s dosyası kaydedilemedi: %s\n"
|
||||
|
||||
#: tools/encodesymbolic.c:153
|
||||
#: tools/encodesymbolic.c:168
|
||||
#, c-format
|
||||
msgid "Can’t close stream"
|
||||
msgstr "Akış kapatılamadı"
|
||||
@@ -7257,7 +7239,7 @@ msgstr "CSS dosyasından biçem kullan"
|
||||
#: tools/gtk-builder-tool-preview.c:187 tools/gtk-builder-tool-screenshot.c:370
|
||||
#: tools/gtk-builder-tool-validate.c:268
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:106
|
||||
#: tools/gtk-rendernode-tool-render.c:203 tools/gtk-rendernode-tool-show.c:113
|
||||
#: tools/gtk-rendernode-tool-render.c:262 tools/gtk-rendernode-tool-show.c:113
|
||||
#, c-format
|
||||
msgid "Could not initialize windowing system\n"
|
||||
msgstr "Pencereleme sistemi ilklendirilemedi\n"
|
||||
@@ -7303,13 +7285,13 @@ msgstr ""
|
||||
"Üstüne yazmak için --force kullan.\n"
|
||||
|
||||
#: tools/gtk-builder-tool-screenshot.c:332
|
||||
#: tools/gtk-rendernode-tool-render.c:171
|
||||
#: tools/gtk-rendernode-tool-render.c:230
|
||||
#, c-format
|
||||
msgid "Output written to %s.\n"
|
||||
msgstr "Çıktı şuna yazıldı: %s.\n"
|
||||
|
||||
#: tools/gtk-builder-tool-screenshot.c:336
|
||||
#: tools/gtk-rendernode-tool-render.c:175
|
||||
#: tools/gtk-rendernode-tool-render.c:234
|
||||
#, c-format
|
||||
msgid "Failed to save %s: %s\n"
|
||||
msgstr "%s kaydedilemedi: %s\n"
|
||||
@@ -7328,7 +7310,7 @@ msgstr "Var olan dosyanın üstüne yaz"
|
||||
|
||||
#: tools/gtk-builder-tool-screenshot.c:363
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:97
|
||||
#: tools/gtk-rendernode-tool-render.c:196
|
||||
#: tools/gtk-rendernode-tool-render.c:255
|
||||
msgid "FILE…"
|
||||
msgstr "DOSYA…"
|
||||
|
||||
@@ -7829,7 +7811,7 @@ msgstr "Gerçekleyiciyi kıyaslamaya ekle"
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:94
|
||||
#: tools/gtk-rendernode-tool-compare.c:65
|
||||
#: tools/gtk-rendernode-tool-render.c:195
|
||||
#: tools/gtk-rendernode-tool-render.c:254
|
||||
msgid "RENDERER"
|
||||
msgstr "GERÇEKLEYİCİ"
|
||||
|
||||
@@ -7850,7 +7832,7 @@ msgid "Benchmark rendering of a .node file."
|
||||
msgstr "Bir .node dosyasının gerçeklemesini kıyasla."
|
||||
|
||||
#: tools/gtk-rendernode-tool-benchmark.c:127
|
||||
#: tools/gtk-rendernode-tool-info.c:236 tools/gtk-rendernode-tool-render.c:224
|
||||
#: tools/gtk-rendernode-tool-info.c:236 tools/gtk-rendernode-tool-render.c:283
|
||||
#: tools/gtk-rendernode-tool-show.c:134
|
||||
#, c-format
|
||||
msgid "No .node file specified\n"
|
||||
@@ -7862,7 +7844,7 @@ msgid "Can only benchmark a single .node file\n"
|
||||
msgstr "Yalnızca tek bir .node dosyasını kıyaslayabilir\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:65
|
||||
#: tools/gtk-rendernode-tool-render.c:195
|
||||
#: tools/gtk-rendernode-tool-render.c:254
|
||||
msgid "Renderer to use"
|
||||
msgstr "Kullanılacak gerçekleyici"
|
||||
|
||||
@@ -7884,7 +7866,7 @@ msgid "Must specify two files\n"
|
||||
msgstr "İki dosya belirtilmelidir\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-compare.c:102
|
||||
#: tools/gtk-rendernode-tool-render.c:150
|
||||
#: tools/gtk-rendernode-tool-render.c:209
|
||||
#, c-format
|
||||
msgid "Failed to create renderer: %s\n"
|
||||
msgstr "Gerçekleyici oluşturulamadı: %s\n"
|
||||
@@ -7943,7 +7925,7 @@ msgstr "Gerçekleme düğümüyle ilgili bilgi sağla."
|
||||
msgid "Can only accept a single .node file\n"
|
||||
msgstr "Yalnızca tek bir .node dosyasını kabul edebilir\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:123
|
||||
#: tools/gtk-rendernode-tool-render.c:170
|
||||
#, c-format
|
||||
msgid ""
|
||||
"File %s exists.\n"
|
||||
@@ -7952,16 +7934,17 @@ msgstr ""
|
||||
"%s dosyası var.\n"
|
||||
"Üstüne yazmak için --force kullan.\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:137
|
||||
#: tools/gtk-rendernode-tool-render.c:184
|
||||
#: tools/gtk-rendernode-tool-render.c:196
|
||||
#, c-format
|
||||
msgid "Failed to generate SVG: %s\n"
|
||||
msgstr "SVG oluşturulamadı: %s\n"
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:211
|
||||
#: tools/gtk-rendernode-tool-render.c:270
|
||||
msgid "Render a .node file to an image."
|
||||
msgstr "Bir .node dosyasını resme gerçekle."
|
||||
|
||||
#: tools/gtk-rendernode-tool-render.c:230
|
||||
#: tools/gtk-rendernode-tool-render.c:289
|
||||
#, c-format
|
||||
msgid "Can only render a single .node file to a single output file\n"
|
||||
msgstr ""
|
||||
@@ -8098,6 +8081,31 @@ msgstr ""
|
||||
"Eğer burada gerçekten bir simge önbelleği oluşturmak istiyorsanız, --ignore-"
|
||||
"theme-indexʼi kullanın.\n"
|
||||
|
||||
#~ msgid "Antialiasing"
|
||||
#~ msgstr "Kenar Yumuşatma"
|
||||
|
||||
#~ msgid "Hinting"
|
||||
#~ msgstr "Düzeltme"
|
||||
|
||||
#~ msgctxt "Font hinting style"
|
||||
#~ msgid "None"
|
||||
#~ msgstr "Yok"
|
||||
|
||||
#~ msgctxt "Font hinting style"
|
||||
#~ msgid "Slight"
|
||||
#~ msgstr "Hafif"
|
||||
|
||||
#~ msgctxt "Font hinting style"
|
||||
#~ msgid "Medium"
|
||||
#~ msgstr "Orta"
|
||||
|
||||
#~ msgctxt "Font hinting style"
|
||||
#~ msgid "Full"
|
||||
#~ msgstr "Tam"
|
||||
|
||||
#~ msgid "Metrics Hinting"
|
||||
#~ msgstr "Metrik Düzeltme"
|
||||
|
||||
#~ msgid "Font Scale"
|
||||
#~ msgstr "Yazı Tipi Ölçeği"
|
||||
|
||||
|
||||
@@ -649,6 +649,7 @@ main (int argc, char *argv[])
|
||||
g_test_add_data_func ("/a11y/property/value-min", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_MIN), test_number_property);
|
||||
g_test_add_data_func ("/a11y/property/value-now", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_NOW), test_number_property);
|
||||
g_test_add_data_func ("/a11y/property/value-text", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT), test_string_property);
|
||||
g_test_add_data_func ("/a11y/property/help-text", GUINT_TO_POINTER (GTK_ACCESSIBLE_PROPERTY_HELP_TEXT), test_string_property);
|
||||
|
||||
g_test_add_func ("/a11y/property/update-multiple", test_update_multiple_properties);
|
||||
|
||||
|
||||
@@ -52,31 +52,3 @@ test('transition', transition,
|
||||
suite: 'css'
|
||||
)
|
||||
|
||||
if false and get_option ('profiler')
|
||||
|
||||
adwaita_env = csstest_env
|
||||
adwaita_env.set('GTK_THEME', 'Adwaita')
|
||||
test('performance-adwaita', test_performance,
|
||||
args: [
|
||||
'--mark', 'css validation',
|
||||
'--name', 'performance-adwaita',
|
||||
'--output', join_paths(meson.current_build_dir(), 'output'),
|
||||
join_paths(meson.current_build_dir(), '../../demos/widget-factory/gtk4-widget-factory'),
|
||||
],
|
||||
env: adwaita_env,
|
||||
suite: [ 'css' ],
|
||||
)
|
||||
|
||||
empty_env = csstest_env
|
||||
empty_env.set('GTK_THEME', 'Empty')
|
||||
test('performance-empty', test_performance,
|
||||
args: [
|
||||
'--mark', 'css validation',
|
||||
'--name', 'performance-empty',
|
||||
'--output', join_paths(meson.current_build_dir(), 'output'),
|
||||
join_paths(meson.current_build_dir(), '../../demos/widget-factory/gtk4-widget-factory'),
|
||||
],
|
||||
env: empty_env,
|
||||
suite: [ 'css' ],
|
||||
)
|
||||
endif
|
||||
|
||||
41
testsuite/gsk/compare/empty-fallback.node
Normal file
41
testsuite/gsk/compare/empty-fallback.node
Normal file
@@ -0,0 +1,41 @@
|
||||
clip {
|
||||
/* Numbers that trigger rounding errors at 125%:
|
||||
9, 13, 18, 21, 26, 31, 36, 42, 47, 52, 57, 62, 67, 72, 77, 84, 89, 94, 99, ...
|
||||
*/
|
||||
clip: 0 0 9 13;
|
||||
child: transform {
|
||||
/* This is a typical fractional scale factor. It is 5/4.
|
||||
The inverse is 4/5, and that number cannot be represented as
|
||||
a float.
|
||||
The renderer does however operate in the scaled coordinate system,
|
||||
So this will translate the clip rect above to the scaled clip rect
|
||||
0 0 7.20000029 10.4000006
|
||||
*/
|
||||
transform: scale(1.25);
|
||||
child: container {
|
||||
/* This color node exists just so that the bounds of the clipped node
|
||||
are large enough. Otherwise the node bounds computation might end
|
||||
up detecting that the clip is actually empty, because it scales
|
||||
the other way: It multiplies by 1.25, not by 0.8.
|
||||
*/
|
||||
color {
|
||||
color: black;
|
||||
bounds: 0 0 50 50;
|
||||
}
|
||||
/* This node has bounds of 7.2 0 10 10 - which gets translated to
|
||||
7.19999981 0 10.000001 10 during parsing of the path.
|
||||
|
||||
And because 7.19999981 < 7.20000029 this node might not be considered
|
||||
fully clipped, even though it really should be.
|
||||
*/
|
||||
fill {
|
||||
path: "M 7.2 0 l 10 0 l 0 10 l -10 0 z";
|
||||
child: color {
|
||||
color: red;
|
||||
bounds: 0 0 50 50;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
testsuite/gsk/compare/empty-fallback.png
Normal file
BIN
testsuite/gsk/compare/empty-fallback.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 81 B |
@@ -73,6 +73,7 @@ compare_render_tests = [
|
||||
'empty-shadow',
|
||||
'empty-texture',
|
||||
'empty-transform',
|
||||
'empty-fallback',
|
||||
'fill',
|
||||
'fill2',
|
||||
'fill-clipped-nogl',
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
texture-scale {
|
||||
bounds: 0 0 50 50;
|
||||
texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKUlEQVQYlWP8z3DmPwMaYGQwYUQX\
|
||||
texture: url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKUlEQVQYlWP8z3DmPwMaYGQwYUQX\
|
||||
Y0IXwAUGUCGGoxkYGBiweXAoeAYAz44F3e3U1xUAAAAASUVORK5CYII=\
|
||||
");
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
texture {
|
||||
bounds: 0 0 50 50;
|
||||
texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKUlEQVQYlWP8z3DmPwMaYGQwYUQX\
|
||||
texture: url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKUlEQVQYlWP8z3DmPwMaYGQwYUQX\
|
||||
Y0IXwAUGUCGGoxkYGBiweXAoeAYAz44F3e3U1xUAAAAASUVORK5CYII=\
|
||||
");
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
text {
|
||||
font: "text-mixed-color 10px" url("data:font/ttf;base64,AAEAAAAKAIAAAwAgQ09MUgATAEEAAAJ8AAAALENQQUwB/wATAAACqAAAABpjbWFwAHcAPQAAATwA\
|
||||
font: "text-mixed-color 10px" url("data:font/ttf;base64,\
|
||||
AAEAAAAKAIAAAwAgQ09MUgATAEEAAAJ8AAAALENQQUwB/wATAAACqAAAABpjbWFwAHcAPQAAATwA\
|
||||
AAA0Z2x5Zu8g4kAAAAGEAAAA0mhlYWQmofyJAAAArAAAADZoaGVhDAEEAgAAAOQAAAAkaG10eAQA\
|
||||
AQAAAAEoAAAAFGxvY2EAyAD5AAABcAAAABRtYXhwAAwACQAAAQgAAAAgbmFtZX7VdrQAAAJYAAAA\
|
||||
IgABAAAAARmajs74k18PPPUAAggAAAAAAOHCPQAAAAAA4cpY+QAAAAAEAAgAAAAAAQACAAAAAAAA\
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
text {
|
||||
font: "text-mixed-color 10px" url("data:font/ttf;base64,AAEAAAAKAIAAAwAgQ09MUgATAEEAAAJ8AAAALENQQUwB/wATAAACqAAAABpjbWFwAHcAPQAAATwA\
|
||||
font: "text-mixed-color 10px" url("data:font/ttf;base64,\
|
||||
AAEAAAAKAIAAAwAgQ09MUgATAEEAAAJ8AAAALENQQUwB/wATAAACqAAAABpjbWFwAHcAPQAAATwA\
|
||||
AAA0Z2x5Zu8g4kAAAAGEAAAA0mhlYWQmofyJAAAArAAAADZoaGVhDAEEAgAAAOQAAAAkaG10eAQA\
|
||||
AQAAAAEoAAAAFGxvY2EAyAD5AAABcAAAABRtYXhwAAwACQAAAQgAAAAgbmFtZX7VdrQAAAJYAAAA\
|
||||
IgABAAAAARmajs74k18PPPUAAggAAAAAAOHCPQAAAAAA4cpY+QAAAAAEAAgAAAAAAQACAAAAAAAA\
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
texture {
|
||||
bounds: 0 0 50 50;
|
||||
texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKUlEQVQYlWP8z3DmPwMaYGQwYUQX\
|
||||
texture: url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKUlEQVQYlWP8z3DmPwMaYGQwYUQX\
|
||||
Y0IXwAUGUCGGoxkYGBiweXAoeAYAz44F3e3U1xUAAAAASUVORK5CYII=\
|
||||
");
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
texture {
|
||||
bounds: 0 0 1 1;
|
||||
texture: "texture1" url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWP4z8DwHwAFAAH/q842\
|
||||
texture: "texture1" url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWP4z8DwHwAFAAH/q842\
|
||||
iQAAAABJRU5ErkJggg==\
|
||||
");
|
||||
}
|
||||
|
||||
@@ -1,26 +1,30 @@
|
||||
texture-scale {
|
||||
bounds: 0 0 50 50;
|
||||
texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
|
||||
texture: url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
|
||||
1FMIAD2cAhL1w47oAAAAAElFTkSuQmCC\
|
||||
");
|
||||
}
|
||||
texture-scale {
|
||||
bounds: 0 0 50 50;
|
||||
texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
|
||||
texture: url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
|
||||
1FMIAD2cAhL1w47oAAAAAElFTkSuQmCC\
|
||||
");
|
||||
}
|
||||
texture-scale {
|
||||
bounds: 0 0 50 50;
|
||||
filter: nearest;
|
||||
texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
|
||||
texture: url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
|
||||
1FMIAD2cAhL1w47oAAAAAElFTkSuQmCC\
|
||||
");
|
||||
}
|
||||
texture-scale {
|
||||
bounds: 0 0 50 50;
|
||||
filter: trilinear;
|
||||
texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
|
||||
texture: url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWP8z8Dwn4EIwESMolGF\
|
||||
1FMIAD2cAhL1w47oAAAAAElFTkSuQmCC\
|
||||
");
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
texture-scale {
|
||||
bounds: 0 0 50 50;
|
||||
texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKUlEQVQYlWP8z3DmPwMaYGQwYUQX\
|
||||
texture: url("data:image/png;base64,\
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAKUlEQVQYlWP8z3DmPwMaYGQwYUQX\
|
||||
Y0IXwAUGUCGGoxkYGBiweXAoeAYAz44F3e3U1xUAAAAASUVORK5CYII=\
|
||||
");
|
||||
}
|
||||
|
||||
@@ -277,27 +277,3 @@ make_pot = find_program ('make-pot', dirs: meson.project_source_root())
|
||||
test('potfiles', make_pot,
|
||||
workdir: meson.project_source_root(),
|
||||
suite: ['gtk', 'translations' ])
|
||||
|
||||
if false and get_option ('profiler')
|
||||
|
||||
performance_env = test_env
|
||||
performance_env.set('GTK_THEME', 'Empty')
|
||||
|
||||
test('performance-layout', test_performance,
|
||||
args: [
|
||||
'--mark', 'size allocation',
|
||||
join_paths(meson.current_build_dir(), '../../demos/widget-factory/gtk4-widget-factory'),
|
||||
],
|
||||
env: performance_env,
|
||||
suite: [ 'gtk' ],
|
||||
)
|
||||
|
||||
test('performance-snapshot', test_performance,
|
||||
args: [
|
||||
'--mark', 'widget snapshot',
|
||||
join_paths(meson.current_build_dir(), '../../demos/widget-factory/gtk4-widget-factory'),
|
||||
],
|
||||
env: performance_env,
|
||||
suite: [ 'gtk' ],
|
||||
)
|
||||
endif
|
||||
|
||||
Reference in New Issue
Block a user