Compare commits

..

28 Commits
4.17.0 ... main

Author SHA1 Message Date
Matthias Clasen
f05eac610a Merge branch 'places_view_button_labels' into 'main'
gtkplacesview: Add some missing button tooltips

See merge request GNOME/gtk!7927
2024-11-15 15:51:38 +00:00
Sveinn í Felli
4e8eeba5bb Update Icelandic translation
(cherry picked from commit d07a62a940)
2024-11-15 15:25:16 +00:00
Lukáš Tyrychtr
6da8fcf5d9 gtkplacesview: Add some missing button tooltips
The remove server button and the server list one had only icons,
so fix it by adding tooltips to them.
2024-11-15 15:27:04 +01:00
Matthias Clasen
a34e95bc39 Merge branch 'for-main' into 'main'
surface: Add debug spew for color states

See merge request GNOME/gtk!7924
2024-11-14 23:04:07 +00:00
Matthias Clasen
ed2716f9ce inspector: Put surfaces and renderers in the tree
These are otherwise really hard to navigate to, and we already
have plenty of non-widget objects in the tree.
2024-11-14 16:58:44 -05:00
Matthias Clasen
841bd9c5c2 inspector: Avoid a critical 2024-11-14 16:09:45 -05:00
Matthias Clasen
b0344e1fd8 surface: Add debug spew for color states
Log the preferred color state events we get.
2024-11-14 15:33:35 -05:00
Matthias Clasen
77e340f23d Merge branch 'for-main' into 'main'
text: Try harder not to select inserted Emoji

See merge request GNOME/gtk!7921
2024-11-14 16:14:19 +00:00
Matthias Clasen
1d1ef311e3 text: Try harder not to select inserted Emoji
We had code trying to handle the case of focus coming from a
child, but it is running too late to be effective. Instead,
keep a flag that tells us if the Emoji picker is still open.
2024-11-14 10:49:42 -05:00
Sveinn í Felli
1ce19d3c77 Update Icelandic translation
(cherry picked from commit b3e794e4f5)
2024-11-13 16:05:16 +00:00
Sveinn í Felli
3e6e8e6dd5 Update Icelandic translation
(cherry picked from commit 482c55550c)
2024-11-13 16:01:01 +00:00
Matthias Clasen
78738fac3b Merge branch 'cm/fix-goptioncontext-leak' into 'main'
updateiconcache: Fix GOptionContext leak in main

See merge request GNOME/gtk!7918
2024-11-13 13:37:34 +00:00
correctmost
549f537445 updateiconcache: Fix GOptionContext leak in main 2024-11-12 21:16:18 -05:00
Matthias Clasen
e37d15f75c Merge branch 'vulkan-prepare' into 'main'
Drop vulkan refcounting

See merge request GNOME/gtk!7916
2024-11-12 22:56:40 +00:00
Matthias Clasen
ae180f85ca gsk: Move the platform check up
In some cases, we can know that we're not going to use Vulkan
without initializing it. Handle those before calling
gdk_display_prepare_vulkan.
2024-11-12 16:53:15 -05:00
Matthias Clasen
58036ece96 Drop vulkan refcounting
Change things to have a gdk_display_prepare_vulkan call which sets
up Vulkan support for the display. The Vulkan resources will be
dropped when the display is disposed. This matches what we do
for GL, and seems better than a refcounting approach where everybody
leaks the references.

Fixes: #7150
2024-11-12 16:53:15 -05:00
Matthias Clasen
9d8679e211 Merge branch 'wip/chergert/drop-g_debug-newline' into 'main'
gdk/wayland: remove trailing \n from g_debug()

See merge request GNOME/gtk!7913
2024-11-11 20:55:22 +00:00
Christian Hergert
bdb4d28acb gdk/wayland: remove trailing \n from g_debug()
Log messages do not need newlines.
2024-11-11 11:38:06 -08:00
Милош Поповић
11b28c24c2 Update Serbian (Latin) translation
(cherry picked from commit 60fec7db51)
2024-11-11 13:15:47 +00:00
Милош Поповић
aadf18579a Update Serbian translation
(cherry picked from commit 3c56a2915c)
2024-11-11 13:14:08 +00:00
Matthias Clasen
29fd4ee16e Merge branch 'for-main' into 'main'
rendernodeparser: Use advance width for glyphs

See merge request GNOME/gtk!7896
2024-11-10 02:11:32 +00:00
Matthias Clasen
d3b22413ec Merge branch 'font-chooser-default-width' into 'main'
fontchooser: Don't make default size translatable

See merge request GNOME/gtk!7905
2024-11-08 00:20:29 +00:00
Matthias Clasen
cb0c4d6e88 rendernodeparser: Use advance width for glyphs
Commit f5159e1ecb introduced more flexible ways of specifying
glyph strings in node files, but it used ink rect width instead
of the more appropriate advance width when reconstrucing the
glyph string.

Fix expected output of one test to match.
2024-11-07 15:46:09 -05:00
Matthias Clasen
331c6c130f fontchooser: Don't make default size translatable
That was a copy/paste error in 2ad2bae1ca.

Thanks to Anders Jonsson for spotting it.
2024-11-07 15:27:36 -05:00
Марко Костић
89d17ec86e Update Serbian translation
(cherry picked from commit 46d268cd47)
2024-11-07 18:03:38 +00:00
Matthias Clasen
0878727ce4 Merge branch 'ci-vs2019' into 'main'
CI: Use Visual Studio 2019 instead of 2017

See merge request GNOME/gtk!7904
2024-11-07 11:09:59 +00:00
Chun-wei Fan
36f5cbeb57 CI: Use Visual Studio 2019 instead of 2017
Visual Studio 2019 brings C11 support and is actually needed (or best
suited at least) if we are:

* Building with debugging code enabled (/Zc:preprocessor is required)
* Introspection works better on Visual Studio 2019 or later, also due to
  the preprocessor improvements.
* Pulling in bleeding edge Cairo (and possibly soon, GLib) already
  requires C11 support.
2024-11-07 17:29:22 +08:00
Matthias Clasen
4a0323d46d Post-release version bump 2024-11-06 21:23:45 -05:00
25 changed files with 10779 additions and 5828 deletions

View File

@@ -264,7 +264,7 @@ macos:
paths:
- "${CI_PROJECT_DIR}/_build/meson-logs"
vs2017-x64:
vs2019-x64:
# TODO: Uncomment this when ready to merge.
# rules:
# - if: $CI_PROJECT_NAMESPACE == "GNOME"

View File

@@ -1,7 +1,7 @@
@echo on
:: vcvarsall.bat sets various env vars like PATH, INCLUDE, LIB, LIBPATH for the
:: specified build architecture
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
@echo on
pip3 install --upgrade --user meson~=1.2 || goto :error

3
NEWS
View File

@@ -1,3 +1,6 @@
Overview of Changes in 4.17.1, xx-xx-xxxx
=========================================
Overview of Changes in 4.17.0, 06-11-2024
=========================================

View File

@@ -438,11 +438,10 @@ gdk_display_dispose (GObject *object)
g_clear_pointer (&display->egl_dmabuf_formats, gdk_dmabuf_formats_unref);
g_clear_pointer (&display->egl_internal_formats, gdk_dmabuf_formats_unref);
#ifdef GDK_RENDERING_VULKAN
if (display->vk_dmabuf_formats)
{
gdk_display_unref_vulkan (display);
g_assert (display->vk_dmabuf_formats == NULL);
}
if (display->vk_instance)
gdk_display_destroy_vulkan_instance (display);
g_assert (display->vk_dmabuf_formats == NULL);
g_clear_error (&display->vulkan_error);
#endif
g_clear_object (&priv->gl_context);
@@ -1286,6 +1285,53 @@ gdk_display_get_keymap (GdkDisplay *display)
return GDK_DISPLAY_GET_CLASS (display)->get_keymap (display);
}
/*< private >
* gdk_display_prepare_vulkan:
* @self: a `GdkDisplay`
* @error: return location for a `GError`
*
* Checks that Vulkan is available for @self and ensures that it is
* properly initialized.
*
* When this fails, an @error will be set describing the error and this
* function returns %FALSE.
*
* Note that even if this function succeeds, creating a `GdkVulkanContext`
* may still fail.
*
* This function is idempotent. Calling it multiple times will just
* return the same value or error.
*
* You never need to call this function, GDK will call it automatically
* as needed.
*
* Returns: %TRUE if the display supports Vulkan
*/
gboolean
gdk_display_prepare_vulkan (GdkDisplay *self,
GError **error)
{
g_return_val_if_fail (GDK_IS_DISPLAY (self), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
#ifdef GDK_RENDERING_VULKAN
if (!self->vk_instance && !self->vulkan_error)
gdk_display_create_vulkan_instance (self, &self->vulkan_error);
if (self->vk_instance == NULL)
{
if (error)
*error = g_error_copy (self->vulkan_error);
}
return self->vk_instance != NULL;
#else
g_set_error (error, GDK_VULKAN_ERROR, GDK_VULKAN_ERROR_UNSUPPORTED,
"GTK was built without Vulkan support");
return FALSE;
#endif
}
/*<private>
* gdk_display_create_vulkan_context:
* @self: a `GdkDisplay`

View File

@@ -126,7 +126,7 @@ struct _GdkDisplay
GdkDmabufFormats *vk_dmabuf_formats;
GdkVulkanFeatures vulkan_features;
guint vulkan_refcount;
GError *vulkan_error;
#endif /* GDK_RENDERING_VULKAN */
/* egl info */
@@ -239,6 +239,8 @@ void _gdk_display_unpause_events (GdkDisplay *display
void gdk_display_init_dmabuf (GdkDisplay *self);
gboolean gdk_display_prepare_vulkan (GdkDisplay *self,
GError **error);
gboolean gdk_display_has_vulkan_feature (GdkDisplay *self,
GdkVulkanFeatures feature);
GdkVulkanContext * gdk_display_create_vulkan_context (GdkDisplay *self,

View File

@@ -367,7 +367,6 @@ gdk_vulkan_context_dispose (GObject *gobject)
{
GdkVulkanContext *context = GDK_VULKAN_CONTEXT (gobject);
GdkVulkanContextPrivate *priv = gdk_vulkan_context_get_instance_private (context);
GdkDisplay *display;
VkDevice device;
guint i;
@@ -397,11 +396,6 @@ gdk_vulkan_context_dispose (GObject *gobject)
priv->surface = VK_NULL_HANDLE;
}
/* display will be unset in gdk_draw_context_dispose() */
display = gdk_draw_context_get_display (GDK_DRAW_CONTEXT (context));
if (display && priv->vulkan_ref)
gdk_display_unref_vulkan (display);
G_OBJECT_CLASS (gdk_vulkan_context_parent_class)->dispose (gobject);
}
@@ -887,8 +881,7 @@ gdk_vulkan_context_real_init (GInitable *initable,
VkBool32 supported;
uint32_t i;
priv->vulkan_ref = gdk_display_init_vulkan (display, error);
if (!priv->vulkan_ref)
if (!gdk_display_prepare_vulkan (display, error))
return FALSE;
if (surface == NULL)
@@ -1668,7 +1661,7 @@ gdk_vulkan_debug_report (VkDebugReportFlagsEXT flags,
return VK_FALSE;
}
static gboolean
gboolean
gdk_display_create_vulkan_instance (GdkDisplay *display,
GError **error)
{
@@ -1678,6 +1671,8 @@ gdk_display_create_vulkan_instance (GdkDisplay *display,
gboolean have_debug_report = FALSE;
VkResult res;
g_assert (display->vk_instance == NULL);
if (!gdk_has_feature (GDK_FEATURE_VULKAN))
{
g_set_error_literal (error, GDK_VULKAN_ERROR, GDK_VULKAN_ERROR_NOT_AVAILABLE,
@@ -1804,66 +1799,16 @@ gdk_display_create_vulkan_instance (GdkDisplay *display,
return TRUE;
}
/*
* gdk_display_init_vulkan:
* @display: a display
* @error: A potential error message
*
* Initializes Vulkan and returns an error on failure.
*
* If Vulkan is already initialized, this function returns
* %TRUE and increases the refcount of the existing instance.
*
* You need to gdk_display_unref_vulkan() to close it again.
*
* Returns: %TRUE if Vulkan is initialized.
**/
gboolean
gdk_display_init_vulkan (GdkDisplay *display,
GError **error)
{
if (display->vulkan_refcount == 0)
{
if (!gdk_display_create_vulkan_instance (display, error))
return FALSE;
}
display->vulkan_refcount++;
return TRUE;
}
/*
* gdk_display_ref_vulkan:
* @display: a GdkDisplay
*
* Increases the refcount of an existing Vulkan instance.
*
* This function must not be called if Vulkan may not be initialized
* yet, call gdk_display_init_vulkan() in that case.
**/
void
gdk_display_ref_vulkan (GdkDisplay *display)
{
g_assert (display->vulkan_refcount > 0);
display->vulkan_refcount++;
}
void
gdk_display_unref_vulkan (GdkDisplay *display)
gdk_display_destroy_vulkan_instance (GdkDisplay *display)
{
GHashTableIter iter;
gpointer key, value;
g_return_if_fail (GDK_IS_DISPLAY (display));
g_return_if_fail (display->vulkan_refcount > 0);
g_assert (GDK_IS_DISPLAY (display));
g_assert (display->vk_instance != NULL);
display->vulkan_refcount--;
if (display->vulkan_refcount > 0)
return;
GDK_DEBUG (VULKAN, "Closing Vulkan instance");
GDK_DEBUG (VULKAN, "Destroy Vulkan instance");
display->vulkan_features = 0;
g_clear_pointer (&display->vk_dmabuf_formats, gdk_dmabuf_formats_unref);
g_hash_table_iter_init (&iter, display->vk_shader_modules);
@@ -1941,11 +1886,9 @@ gdk_vulkan_init_dmabuf (GdkDisplay *display)
return;
if (!gdk_has_feature (GDK_FEATURE_DMABUF) ||
!gdk_display_init_vulkan (display, NULL) ||
((display->vulkan_features & GDK_VULKAN_FEATURE_DMABUF) == 0))
{
return;
}
!gdk_display_prepare_vulkan (display, NULL) ||
(display->vulkan_features & GDK_VULKAN_FEATURE_DMABUF) == 0)
return;
vulkan_builder = gdk_dmabuf_formats_builder_new ();

View File

@@ -73,10 +73,9 @@ gdk_vulkan_handle_result (VkResult res,
#define GDK_VK_CHECK(func, ...) gdk_vulkan_handle_result (func (__VA_ARGS__), G_STRINGIFY (func))
gboolean gdk_display_init_vulkan (GdkDisplay *display,
gboolean gdk_display_create_vulkan_instance (GdkDisplay *display,
GError **error);
void gdk_display_ref_vulkan (GdkDisplay *display);
void gdk_display_unref_vulkan (GdkDisplay *display);
void gdk_display_destroy_vulkan_instance (GdkDisplay *display);
void gdk_vulkan_init_dmabuf (GdkDisplay *display);

View File

@@ -2032,7 +2032,7 @@ init_settings (GdkDisplay *display)
if (entry)
{
char *a = g_variant_print (v, FALSE);
g_debug ("Using portal setting for %s %s: %s\n", schema_str, key, a);
g_debug ("Using portal setting for %s %s: %s", schema_str, key, a);
g_free (a);
entry->valid = TRUE;
apply_portal_setting (entry, v, display);

View File

@@ -928,6 +928,10 @@ preferred_changed (GdkWaylandColorSurface *color,
{
GdkWaylandSurface *self = GDK_WAYLAND_SURFACE (data);
GDK_DISPLAY_DEBUG (gdk_surface_get_display (GDK_SURFACE (self)), EVENTS,
"preferred color state, surface %p color state %s",
self, gdk_color_state_get_name (color_state));
gdk_surface_set_color_state (GDK_SURFACE (self), color_state);
self->color_state_changed = TRUE;

View File

@@ -343,8 +343,6 @@ gsk_vulkan_device_finalize (GObject *object)
g_clear_pointer (&self->allocators[i], gsk_vulkan_allocator_unref);
g_clear_pointer (&self->external_allocator, gsk_vulkan_allocator_unref);
gdk_display_unref_vulkan (display);
G_OBJECT_CLASS (gsk_vulkan_device_parent_class)->finalize (object);
}
@@ -422,7 +420,7 @@ gsk_vulkan_device_get_for_display (GdkDisplay *display,
if (self)
return GSK_GPU_DEVICE (g_object_ref (self));
if (!gdk_display_init_vulkan (display, error))
if (!gdk_display_prepare_vulkan (display, error))
return NULL;
self = g_object_new (GSK_TYPE_VULKAN_DEVICE, NULL);

View File

@@ -653,7 +653,16 @@ vulkan_supported_platform (GdkSurface *surface,
VkPhysicalDeviceProperties props;
GError *error = NULL;
if (!gdk_display_init_vulkan (display, &error))
#ifdef GDK_WINDOWING_WAYLAND
if (!GDK_IS_WAYLAND_DISPLAY (gdk_surface_get_display (surface)) && !as_fallback)
{
GSK_DEBUG (RENDERER, "Not using '%s': platform is not Wayland",
g_type_name (renderer_type));
return FALSE;
}
#endif
if (!gdk_display_prepare_vulkan (display, &error))
{
GSK_DEBUG (RENDERER, "Not using Vulkan%s: %s",
as_fallback ? " as fallback" : "",
@@ -685,15 +694,7 @@ vulkan_supported_platform (GdkSurface *surface,
}
#endif
#ifdef GDK_WINDOWING_WAYLAND
if (GDK_IS_WAYLAND_DISPLAY (gdk_surface_get_display (surface)))
return TRUE;
#endif
GSK_DEBUG (RENDERER, "Not using '%s': platform is not Wayland",
g_type_name (renderer_type));
return FALSE;
return TRUE;
}
static GType

View File

@@ -2638,11 +2638,11 @@ unpack_glyphs (PangoFont *font,
}
else
{
PangoRectangle ink_rect;
PangoRectangle rect;
pango_font_get_glyph_extents (font, gi->glyph, &ink_rect, NULL);
pango_font_get_glyph_extents (font, gi->glyph, NULL, &rect);
gi->geometry.width = ink_rect.width;
gi->geometry.width = rect.width;
}
}

View File

@@ -590,6 +590,7 @@ populate_servers (GtkPlacesView *view)
gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
gtk_button_set_has_frame (GTK_BUTTON (button), FALSE);
gtk_widget_add_css_class (button, "sidebar-button");
gtk_widget_set_tooltip_text (button, _("Remove server"));
gtk_grid_attach (GTK_GRID (grid), button, 1, 0, 1, 2);
gtk_list_box_row_set_child (GTK_LIST_BOX_ROW (row), grid);

View File

@@ -291,6 +291,7 @@ struct _GtkTextPrivate
guint propagate_text_width : 1;
guint text_handles_enabled : 1;
guint enable_undo : 1;
guint emoji_chooser_open : 1;
};
struct _GtkTextPasswordHint
@@ -3459,7 +3460,7 @@ gtk_text_grab_focus (GtkWidget *widget)
if (!GTK_WIDGET_CLASS (gtk_text_parent_class)->grab_focus (GTK_WIDGET (self)))
return FALSE;
if (priv->editable && !priv->in_click && !prev_focus_was_child)
if (priv->editable && !priv->in_click && !prev_focus_was_child && !priv->emoji_chooser_open)
{
g_object_get (gtk_widget_get_settings (widget),
"gtk-entry-select-on-focus",
@@ -7183,6 +7184,15 @@ gtk_text_get_tabs (GtkText *self)
return priv->tabs;
}
static void
emoji_chooser_closed (GtkWidget *chooser,
GtkText *text)
{
GtkTextPrivate *priv = gtk_text_get_instance_private (text);
priv->emoji_chooser_open = 1;
}
static void
emoji_picked (GtkEmojiChooser *chooser,
const char *text,
@@ -7208,6 +7218,7 @@ emoji_picked (GtkEmojiChooser *chooser,
static void
gtk_text_insert_emoji (GtkText *self)
{
GtkTextPrivate *priv = gtk_text_get_instance_private (self);
GtkWidget *chooser;
if (gtk_widget_get_ancestor (GTK_WIDGET (self), GTK_TYPE_EMOJI_CHOOSER) != NULL)
@@ -7221,10 +7232,11 @@ gtk_text_insert_emoji (GtkText *self)
gtk_widget_set_parent (chooser, GTK_WIDGET (self));
g_signal_connect (chooser, "emoji-picked", G_CALLBACK (emoji_picked), self);
g_signal_connect_swapped (chooser, "hide", G_CALLBACK (gtk_text_grab_focus_without_selecting), self);
g_signal_connect_swapped (chooser, "hide", G_CALLBACK (emoji_chooser_closed), self);
}
gtk_popover_popup (GTK_POPOVER (chooser));
priv->emoji_chooser_open = 1;
}
static void

View File

@@ -577,7 +577,7 @@ init_vulkan (GtkInspectorGeneral *gen)
const char *types[] = { "other", "integrated GPU", "discrete GPU", "virtual GPU", "CPU" };
GError *error = NULL;
if (!gdk_display_init_vulkan (gen->display, &error))
if (!gdk_display_prepare_vulkan (gen->display, &error))
{
gtk_label_set_text (GTK_LABEL (gen->vk_device), C_("Vulkan device", "None"));
gtk_widget_set_visible (gen->vk_error_row, TRUE);
@@ -617,8 +617,6 @@ init_vulkan (GtkInspectorGeneral *gen)
add_instance_extensions (gen->vulkan_extensions_list);
add_device_extensions (gen->display->vk_physical_device, gen->vulkan_extensions_list);
add_layers (gen->vulkan_layers_list);
gdk_display_unref_vulkan (gen->display);
#else
gtk_label_set_text (GTK_LABEL (gen->vk_device), C_("Vulkan device", "None"));
gtk_widget_set_visible (gen->vk_api_version_row, FALSE);

View File

@@ -183,8 +183,13 @@ update_allocation (GtkWidget *w,
char *size_label;
GEnumClass *class;
GEnumValue *value;
GtkWidget *target;
if (!gtk_widget_compute_bounds (w, gtk_widget_get_parent (w), &bounds))
target = gtk_widget_get_parent (w);
if (target == NULL)
target = w;
if (!gtk_widget_compute_bounds (w, target, &bounds))
graphene_rect_init (&bounds, 0, 0, 0, 0);
size_label = g_strdup_printf ("%g×%g+%g+%g",

View File

@@ -45,6 +45,7 @@
#include "gtklabel.h"
#include "gtklistitem.h"
#include "gtkpopover.h"
#include "gtknative.h"
#include "gtksettings.h"
#include "gtksingleselection.h"
#include "gtksignallistitemfactory.h"
@@ -132,6 +133,37 @@ object_tree_widget_get_children (GObject *object)
return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (list)));
}
static GObject *
object_tree_window_get_parent (GObject *object)
{
return NULL;
}
static GListModel *
object_tree_native_get_children (GObject *object)
{
GtkNative *native = GTK_NATIVE (object);
GListStore *list;
GListModel *sublist;
list = g_list_store_new (G_TYPE_LIST_MODEL);
sublist = G_LIST_MODEL (g_list_store_new (G_TYPE_OBJECT));
if (gtk_native_get_surface (native))
g_list_store_append (G_LIST_STORE (sublist), gtk_native_get_surface (native));
if (gtk_native_get_renderer (native))
g_list_store_append (G_LIST_STORE (sublist), gtk_native_get_renderer (native));
g_list_store_append (list, sublist);
g_object_unref (sublist);
sublist = object_tree_widget_get_children (object);
g_list_store_append (list, sublist);
g_object_unref (sublist);
return G_LIST_MODEL (gtk_flatten_list_model_new (G_LIST_MODEL (list)));
}
static GListModel *
object_tree_tree_model_sort_get_children (GObject *object)
{
@@ -518,6 +550,16 @@ static const ObjectTreeClassFuncs object_tree_class_funcs[] = {
object_tree_widget_get_parent,
object_tree_combo_box_get_children
},
{
gtk_window_get_type,
object_tree_window_get_parent,
object_tree_native_get_children,
},
{
gtk_popover_get_type,
object_tree_widget_get_parent,
object_tree_native_get_children,
},
{
gtk_widget_get_type,
object_tree_widget_get_parent,

View File

@@ -2,8 +2,8 @@
<interface domain="gtk40">
<template class="GtkFontChooserDialog" parent="GtkDialog">
<property name="title" translatable="yes">Select Font</property>
<property name="default-width" translatable="yes">400</property>
<property name="default-height" translatable="yes">500</property>
<property name="default-width">400</property>
<property name="default-height">500</property>
<style>
<class name="fontchooser"/>
</style>

View File

@@ -275,6 +275,7 @@
<property name="direction">0</property>
<property name="popover">recent_servers_popover</property>
<property name="icon-name">pan-down-symbolic</property>
<property name="tooltip-text" translatable="yes">Show recent servers</property>
<style>
<class name="server-list-button"/>
</style>

View File

@@ -1,5 +1,5 @@
project('gtk', 'c',
version: '4.17.0',
version: '4.17.1',
default_options: [
'buildtype=debugoptimized',
'warning_level=1',

3607
po/is.po

File diff suppressed because it is too large Load Diff

1580
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
text {
color: rgb(50,50,50);
font: "Cantarell 14px";
glyphs: "N", 430 4.2002, 406 6.10352, 417 7, 772 4, 783 5, 783 5, 793 6 0 0 same-cluster;
glyphs: "Ntp", 417 7, 772 4, 783 5, 783 5, 793 6 0 0 same-cluster;
offset: 0 32.0186;
}

View File

@@ -1708,6 +1708,7 @@ main (int argc, char **argv)
g_option_context_add_main_entries (context, args, GETTEXT_PACKAGE);
g_option_context_parse (context, &argc, &argv, NULL);
g_option_context_free (context);
path = argv[1];
#ifdef G_OS_WIN32