New upstream version 3.24.48

This commit is contained in:
Jeremy Bícha 2025-01-27 08:16:25 -05:00
commit 2d6be693ba
62 changed files with 39861 additions and 27788 deletions

View File

@ -1,6 +1,15 @@
include:
- project: 'gnome/citemplates'
file: 'flatpak/flatpak_ci_initiative.yml'
- component: gitlab.gnome.org/GNOME/citemplates/release-service@master
inputs:
dist-job-name: "fedora-distcheck"
tarball-artifact-path: "_build/meson-dist/${CI_PROJECT_NAME}-${CI_COMMIT_TAG}.tar.xz"
stages:
- build
- docs
- deploy
cache:
paths:
@ -10,16 +19,23 @@ fedora-distcheck:
image: registry.gitlab.gnome.org/gnome/gtk/fedora-gtk3:v3
variables:
DO_DISTCHECK: "yes"
when: manual
when: always
stage: build
script:
- git config --global --add safe.directory $CI_PROJECT_DIR
- bash -x ./.gitlab-ci/test-docker-meson.sh
artifacts:
when: always
name: "gtk3-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
paths:
- "_build/meson-dist"
fedora-meson:
image: registry.gitlab.gnome.org/gnome/gtk/fedora-gtk3:v3
stage: build
variables:
EXTRA_MESON_FLAGS: "-Ddefault_library=both"
DO_TEST: "yes"
script:
- bash -x ./.gitlab-ci/test-docker-meson.sh
artifacts:
@ -34,6 +50,7 @@ debian-meson:
stage: build
variables:
EXTRA_MESON_FLAGS: "-Ddefault_library=both"
DO_TEST: "yes"
script:
- bash -x ./.gitlab-ci/test-docker-meson.sh
artifacts:

View File

@ -22,6 +22,7 @@ meson \
cd _build
ninja
if [ -n "${DO_TEST-}" ]; then
# Meson < 0.57 can't exclude suites in a test_setup() so we have to
# explicitly leave out the failing and flaky suites.
xvfb-run -a -s "-screen 0 1024x768x24" \
@ -41,6 +42,7 @@ xvfb-run -a -s "-screen 0 1024x768x24" \
--suite=flaky \
--suite=failing \
|| true
fi
if [ -n "${DO_DISTCHECK-}" ]; then
meson dist --no-tests

51
NEWS
View File

@ -1,3 +1,54 @@
Overview of Changes in GTK+ 3.24.48, 25-02-2025
===============================================
* Switch to the new ci-based release process
Overview of Changes in GTK+ 3.24.44, 24-01-2025
===============================================
* GtkFileChooser:
- Stop replacing : (colon) with U+2236 (ratio)
* GtkEmojiChooser:
- Update to Unicode 16 / CLDR 46
* GtkSpinButton:
- Use semantically appropriate icon names
- Make numeric spin buttons always LTR
* GtkEntry:
- Stop guessing text direction from keyboard layout
- Add a shortcut and context menu item to change text direction
* GtkEventControllerMotion:
- Make enter and leave signals work
* Accessibility:
- Use message dialog titles as names
* GDK:
- Fix portal handling of gvfs files
* Wayland:
- Support the xdg_foreign_v2 protocol
- Try to fix monitor geometry on sway
- Improve font setting fallback
- Use a better default cursor size
- Fix a crash during DND
* macOS:
- Fix a UI hang
* Translation updates:
Bulgarian
Farsi
Hindi
Hungarian
Icelandic
Latvian
Serbian
Overview of Changes in GTK+ 3.24.43, 10-07-2024
===============================================

View File

@ -192,12 +192,23 @@
}
}
}
static void
synthesize_configure_event(GdkWindow *window)
{
GdkEvent *event = gdk_event_new (GDK_CONFIGURE);
event->configure.window = g_object_ref (window);
event->configure.x = window->x;
event->configure.y = window->y;
event->configure.width = window->width;
event->configure.height = window->height;
_gdk_event_queue_append (gdk_display_get_default (), event);
}
-(void)windowDidMove:(NSNotification *)aNotification
{
GdkWindow *window = [[self contentView] gdkWindow];
GdkEvent *event;
gboolean maximized = gdk_window_get_state (window) & GDK_WINDOW_STATE_MAXIMIZED;
/* In case the window is changed when maximized remove the maximized state */
@ -209,16 +220,7 @@
}
_gdk_quartz_window_update_position (window);
/* Synthesize a configure event */
event = gdk_event_new (GDK_CONFIGURE);
event->configure.window = g_object_ref (window);
event->configure.x = window->x;
event->configure.y = window->y;
event->configure.width = window->width;
event->configure.height = window->height;
_gdk_event_queue_append (gdk_display_get_default (), event);
synthesize_configure_event(window);
[self checkSendEnterNotify];
}
@ -227,7 +229,6 @@
{
NSRect content_rect = [self contentRectForFrameRect:[self frame]];
GdkWindow *window = [[self contentView] gdkWindow];
GdkEvent *event;
gboolean maximized = gdk_window_get_state (window) & GDK_WINDOW_STATE_MAXIMIZED;
/* Alignment to 4 pixels is on scaled pixels and these are unscaled pixels so divide by scale to compensate. */
const gint scale = gdk_window_get_scale_factor (window);
@ -245,10 +246,7 @@
window->height = content_rect.size.height;
if(window->width % align)
{
window->width += align - window->width % align;
content_rect.size.width = window->width;
}
content_rect.size.width = window->width + align - window->width % align;
content_rect.origin.x = 0;
content_rect.origin.y = 0;
@ -260,16 +258,7 @@
*/
_gdk_quartz_window_update_position (window);
_gdk_window_update_size (window);
/* Synthesize a configure event */
event = gdk_event_new (GDK_CONFIGURE);
event->configure.window = g_object_ref (window);
event->configure.x = window->x;
event->configure.y = window->y;
event->configure.width = window->width;
event->configure.height = window->height;
_gdk_event_queue_append (gdk_display_get_default (), event);
synthesize_configure_event (window);
[self checkSendEnterNotify];
}

View File

@ -1174,6 +1174,9 @@ data_device_enter (void *data,
GdkWindow *dest_window, *dnd_owner;
GdkAtom selection;
if (!surface)
return;
dest_window = wl_surface_get_user_data (surface);
if (!GDK_IS_WINDOW (dest_window))

View File

@ -47,6 +47,7 @@
#include "tablet-unstable-v2-client-protocol.h"
#include "xdg-shell-unstable-v6-client-protocol.h"
#include "xdg-foreign-unstable-v1-client-protocol.h"
#include "xdg-foreign-unstable-v2-client-protocol.h"
#include "server-decoration-client-protocol.h"
#ifdef HAVE_TOPLEVEL_STATE_SUSPENDED
@ -493,16 +494,28 @@ gdk_registry_handle_global (void *data,
}
else if (strcmp (interface, "zxdg_exporter_v1") == 0)
{
display_wayland->xdg_exporter =
display_wayland->xdg_exporter_v1 =
wl_registry_bind (display_wayland->wl_registry, id,
&zxdg_exporter_v1_interface, 1);
}
else if (strcmp (interface, "zxdg_importer_v1") == 0)
{
display_wayland->xdg_importer =
display_wayland->xdg_importer_v1 =
wl_registry_bind (display_wayland->wl_registry, id,
&zxdg_importer_v1_interface, 1);
}
else if (strcmp (interface, "zxdg_exporter_v2") == 0)
{
display_wayland->xdg_exporter_v2 =
wl_registry_bind (display_wayland->wl_registry, id,
&zxdg_exporter_v2_interface, 1);
}
else if (strcmp (interface, "zxdg_importer_v2") == 0)
{
display_wayland->xdg_importer_v2 =
wl_registry_bind (display_wayland->wl_registry, id,
&zxdg_importer_v2_interface, 1);
}
else if (strcmp (interface, "zwp_keyboard_shortcuts_inhibit_manager_v1") == 0)
{
display_wayland->keyboard_shortcuts_inhibit =
@ -1208,7 +1221,7 @@ _gdk_wayland_display_load_cursor_theme (GdkWaylandDisplay *display_wayland)
if (gdk_screen_get_setting (display_wayland->screen, "gtk-cursor-theme-size", &v))
size = g_value_get_int (&v);
else
size = 32;
size = 24;
g_value_unset (&v);
g_value_init (&v, G_TYPE_STRING);

View File

@ -32,6 +32,7 @@
#include <gdk/wayland/xdg-shell-client-protocol.h>
#include <gdk/wayland/xdg-shell-unstable-v6-client-protocol.h>
#include <gdk/wayland/xdg-foreign-unstable-v1-client-protocol.h>
#include <gdk/wayland/xdg-foreign-unstable-v2-client-protocol.h>
#include <gdk/wayland/keyboard-shortcuts-inhibit-unstable-v1-client-protocol.h>
#include <gdk/wayland/server-decoration-client-protocol.h>
#include <gdk/wayland/xdg-output-unstable-v1-client-protocol.h>
@ -96,8 +97,10 @@ struct _GdkWaylandDisplay
struct gtk_primary_selection_device_manager *gtk_primary_selection_manager;
struct zwp_primary_selection_device_manager_v1 *zwp_primary_selection_manager_v1;
struct zwp_tablet_manager_v2 *tablet_manager;
struct zxdg_exporter_v1 *xdg_exporter;
struct zxdg_importer_v1 *xdg_importer;
struct zxdg_exporter_v1 *xdg_exporter_v1;
struct zxdg_importer_v1 *xdg_importer_v1;
struct zxdg_exporter_v2 *xdg_exporter_v2;
struct zxdg_importer_v2 *xdg_importer_v2;
struct zwp_keyboard_shortcuts_inhibit_manager_v1 *keyboard_shortcuts_inhibit;
struct org_kde_kwin_server_decoration_manager *server_decoration_manager;
struct zxdg_output_manager_v1 *xdg_output_manager;

View File

@ -527,7 +527,7 @@ static TranslationEntry translations[] = {
{ FALSE, "org.gnome.desktop.interface", "gtk-key-theme", "gtk-key-theme-name" , G_TYPE_STRING, { .s = "Default" } },
{ FALSE, "org.gnome.desktop.interface", "icon-theme", "gtk-icon-theme-name", G_TYPE_STRING, { .s = "gnome" } },
{ FALSE, "org.gnome.desktop.interface", "cursor-theme", "gtk-cursor-theme-name", G_TYPE_STRING, { .s = "Adwaita" } },
{ FALSE, "org.gnome.desktop.interface", "cursor-size", "gtk-cursor-theme-size", G_TYPE_INT, { .i = 32 } },
{ FALSE, "org.gnome.desktop.interface", "cursor-size", "gtk-cursor-theme-size", G_TYPE_INT, { .i = 24 } },
{ FALSE, "org.gnome.desktop.interface", "font-name", "gtk-font-name", G_TYPE_STRING, { .s = "Cantarell 11" } },
{ FALSE, "org.gnome.desktop.interface", "cursor-blink", "gtk-cursor-blink", G_TYPE_BOOLEAN, { .b = TRUE } },
{ FALSE, "org.gnome.desktop.interface", "cursor-blink-time", "gtk-cursor-blink-time", G_TYPE_INT, { .i = 1200 } },
@ -760,16 +760,18 @@ init_settings (GdkScreen *screen)
goto fallback;
}
if (g_variant_n_children (ret) == 0)
g_variant_get (ret, "(a{sa{sv}})", &iter);
if (g_variant_iter_n_children (iter) == 0)
{
g_debug ("Received no portal settings");
g_clear_pointer (&iter, g_variant_iter_free);
g_clear_pointer (&ret, g_variant_unref);
g_clear_object (&screen_wayland->settings_portal);
goto fallback;
}
g_variant_get (ret, "(a{sa{sv}})", &iter);
while (g_variant_iter_loop (iter, "{s@a{sv}}", &schema, &val))
{
GVariantIter *iter2 = g_variant_iter_new (val);
@ -1565,7 +1567,9 @@ apply_monitor_change (GdkWaylandMonitor *monitor)
GdkRectangle logical_geometry;
gboolean needs_scaling = FALSE;
if (monitor->xdg_output_done)
if (monitor_has_xdg_output (monitor) &&
monitor->xdg_output_geometry.width != 0 &&
monitor->xdg_output_geometry.height != 0)
{
logical_geometry = monitor->xdg_output_geometry;
needs_scaling =

View File

@ -133,7 +133,8 @@ struct _GdkWindowImplWayland
struct wl_subsurface *wl_subsurface;
struct wl_egl_window *egl_window;
struct wl_egl_window *dummy_egl_window;
struct zxdg_exported_v1 *xdg_exported;
struct zxdg_exported_v1 *xdg_exported_v1;
struct zxdg_exported_v2 *xdg_exported_v2;
struct org_kde_kwin_server_decoration *server_decoration;
} display_server;
@ -236,7 +237,8 @@ struct _GdkWindowImplWayland
guint idle_source_id;
} exported;
struct zxdg_imported_v1 *imported_transient_for;
struct zxdg_imported_v1 *imported_v1_transient_for;
struct zxdg_imported_v2 *imported_v2_transient_for;
GHashTable *shortcuts_inhibitors;
struct wl_callback *surface_callback;
@ -952,6 +954,7 @@ buffer_release_callback (void *_data,
/* Release came in, we haven't done any interim updates, so we can just use
* the old committed buffer again.
*/
g_clear_pointer (&impl->staging_cairo_surface, cairo_surface_destroy);
impl->staging_cairo_surface = g_steal_pointer (&impl->committed_cairo_surface);
}
@ -1323,15 +1326,20 @@ gdk_wayland_window_sync_parent_of_imported (GdkWindow *window)
if (!impl->display_server.wl_surface)
return;
if (!impl->imported_transient_for)
return;
if (!is_realized_toplevel (window))
return;
zxdg_imported_v1_set_parent_of (impl->imported_transient_for,
if (impl->imported_v2_transient_for)
{
zxdg_imported_v2_set_parent_of (impl->imported_v2_transient_for,
impl->display_server.wl_surface);
}
else if (impl->imported_v1_transient_for)
{
zxdg_imported_v1_set_parent_of (impl->imported_v1_transient_for,
impl->display_server.wl_surface);
}
}
static void
gdk_wayland_window_update_dialogs (GdkWindow *window)
@ -5418,7 +5426,7 @@ invoke_exported_closures (GdkWindow *window)
}
static void
xdg_exported_handle (void *data,
xdg_exported_v1_handle (void *data,
struct zxdg_exported_v1 *zxdg_exported_v1,
const char *handle)
{
@ -5430,8 +5438,20 @@ xdg_exported_handle (void *data,
invoke_exported_closures (window);
}
static const struct zxdg_exported_v1_listener xdg_exported_listener = {
xdg_exported_handle
static const struct zxdg_exported_v1_listener xdg_exported_v1_listener = {
xdg_exported_v1_handle
};
static void
xdg_exported_v2_handle (void *data,
struct zxdg_exported_v2 *zxdg_exported_v2,
const char *handle)
{
xdg_exported_v1_handle(data, NULL, handle);
}
static const struct zxdg_exported_v2_listener xdg_exported_v2_listener = {
xdg_exported_v2_handle
};
/**
@ -5453,7 +5473,7 @@ gdk_wayland_window_is_exported (GdkWindow *window)
{
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
return !!impl->display_server.xdg_exported;
return impl->display_server.xdg_exported_v2 || impl->display_server.xdg_exported_v1;
}
static gboolean
@ -5520,24 +5540,44 @@ gdk_wayland_window_export_handle (GdkWindow *window,
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
display_wayland = GDK_WAYLAND_DISPLAY (display);
if (!display_wayland->xdg_exporter)
if (display_wayland->xdg_exporter_v2)
{
if (!impl->display_server.xdg_exported_v2)
{
struct zxdg_exported_v2 *xdg_exported_v2;
xdg_exported_v2 =
zxdg_exporter_v2_export_toplevel (display_wayland->xdg_exporter_v2,
impl->display_server.wl_surface);
zxdg_exported_v2_add_listener (xdg_exported_v2,
&xdg_exported_v2_listener,
window);
impl->display_server.xdg_exported_v2 = xdg_exported_v2;
}
}
else if (display_wayland->xdg_exporter_v1)
{
if (!impl->display_server.xdg_exported_v1)
{
struct zxdg_exported_v1 *xdg_exported_v1;
xdg_exported_v1 =
zxdg_exporter_v1_export (display_wayland->xdg_exporter_v1,
impl->display_server.wl_surface);
zxdg_exported_v1_add_listener (xdg_exported_v1,
&xdg_exported_v1_listener,
window);
impl->display_server.xdg_exported_v1 = xdg_exported_v1;
}
}
else
{
g_warning ("Server is missing xdg_foreign support");
return FALSE;
}
if (!impl->display_server.xdg_exported)
{
struct zxdg_exported_v1 *xdg_exported;
xdg_exported = zxdg_exporter_v1_export (display_wayland->xdg_exporter,
impl->display_server.wl_surface);
zxdg_exported_v1_add_listener (xdg_exported,
&xdg_exported_listener,
window);
impl->display_server.xdg_exported = xdg_exported;
}
closure = g_new0 (ExportedClosure, 1);
closure->callback = callback;
@ -5559,8 +5599,16 @@ gdk_wayland_window_unexport (GdkWindow *window)
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
GList *l;
g_clear_pointer (&impl->display_server.xdg_exported,
if (impl->display_server.xdg_exported_v2)
{
g_clear_pointer (&impl->display_server.xdg_exported_v2,
zxdg_exported_v2_destroy);
}
else if (impl->display_server.xdg_exported_v1)
{
g_clear_pointer (&impl->display_server.xdg_exported_v1,
zxdg_exported_v1_destroy);
}
for (l = impl->exported.closures; l; l = l->next)
{
@ -5605,7 +5653,8 @@ gdk_wayland_window_unexport_handle (GdkWindow *window)
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
g_return_if_fail (impl->display_server.xdg_exported);
g_return_if_fail (impl->display_server.xdg_exported_v2 ||
impl->display_server.xdg_exported_v1);
impl->exported.export_count--;
if (impl->exported.export_count == 0)
@ -5617,11 +5666,20 @@ unset_transient_for_exported (GdkWindow *window)
{
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
g_clear_pointer (&impl->imported_transient_for, zxdg_imported_v1_destroy);
if (impl->imported_v2_transient_for)
{
g_clear_pointer (&impl->imported_v2_transient_for,
zxdg_imported_v2_destroy);
}
else if (impl->imported_v1_transient_for)
{
g_clear_pointer (&impl->imported_v1_transient_for,
zxdg_imported_v1_destroy);
}
}
static void
xdg_imported_destroyed (void *data,
xdg_imported_v1_destroyed (void *data,
struct zxdg_imported_v1 *zxdg_imported_v1)
{
GdkWindow *window = data;
@ -5629,8 +5687,19 @@ xdg_imported_destroyed (void *data,
unset_transient_for_exported (window);
}
static const struct zxdg_imported_v1_listener xdg_imported_listener = {
xdg_imported_destroyed,
static const struct zxdg_imported_v1_listener xdg_imported_v1_listener = {
xdg_imported_v1_destroyed,
};
static void
xdg_imported_v2_destroyed (void *data,
struct zxdg_imported_v2 *zxdg_imported_v2)
{
xdg_imported_v1_destroyed (data, NULL);
}
static const struct zxdg_imported_v2_listener xdg_imported_v2_listener = {
xdg_imported_v2_destroyed,
};
/**
@ -5666,20 +5735,34 @@ gdk_wayland_window_set_transient_for_exported (GdkWindow *window,
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
display_wayland = GDK_WAYLAND_DISPLAY (display);
if (!display_wayland->xdg_importer)
if (display_wayland->xdg_importer_v2)
{
gdk_window_set_transient_for (window, NULL);
impl->imported_v2_transient_for =
zxdg_importer_v2_import_toplevel (display_wayland->xdg_importer_v2,
parent_handle_str);
zxdg_imported_v2_add_listener (impl->imported_v2_transient_for,
&xdg_imported_v2_listener,
window);
}
else if (display_wayland->xdg_importer_v1)
{
gdk_window_set_transient_for (window, NULL);
impl->imported_v1_transient_for =
zxdg_importer_v1_import (display_wayland->xdg_importer_v1,
parent_handle_str);
zxdg_imported_v1_add_listener (impl->imported_v1_transient_for,
&xdg_imported_v1_listener,
window);
}
else
{
g_warning ("Server is missing xdg_foreign support");
return FALSE;
}
gdk_window_set_transient_for (window, NULL);
impl->imported_transient_for =
zxdg_importer_v1_import (display_wayland->xdg_importer, parent_handle_str);
zxdg_imported_v1_add_listener (impl->imported_transient_for,
&xdg_imported_listener,
window);
gdk_wayland_window_sync_parent_of_imported (window);
return TRUE;

View File

@ -53,6 +53,7 @@ proto_sources = [
['xdg-shell', 'unstable', 'v6', ],
['xdg-shell', 'stable', ],
['xdg-foreign', 'unstable', 'v1', ],
['xdg-foreign', 'unstable', 'v2', ],
['tablet', 'unstable', 'v2', ],
['keyboard-shortcuts-inhibit', 'unstable', 'v1', ],
['server-decoration', 'private' ],

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1440,14 +1440,14 @@ out:
* modifier mask, %NULL
*
* Parses a string representing an accelerator. The format looks like
* <Control>a or <Shift><Alt>F1 or <Release>z (the last one is
* `<Control>a` or `<Shift><Alt>F1` or `<Release>z` (the last one is
* for key release).
*
* The parser is fairly liberal and allows lower or upper case, and also
* abbreviations such as <Ctl> and <Ctrl>. Key names are parsed using
* abbreviations such as `<Ctl>` and `<Ctrl>`. Key names are parsed using
* gdk_keyval_from_name(). For character keys the name is not the symbol,
* but the lowercase name, e.g. one would use <Ctrl>minus instead of
* <Ctrl>-.
* but the lowercase name, e.g. one would use `<Ctrl>minus` instead of
* `<Ctrl>-`.
*
* If the parse fails, @accelerator_key and @accelerator_mods will
* be set to 0 (zero).

View File

@ -328,6 +328,7 @@ enum {
ICON_RELEASE,
PREEDIT_CHANGED,
INSERT_EMOJI,
TOGGLE_DIRECTION,
LAST_SIGNAL
};
@ -553,13 +554,12 @@ static void gtk_entry_cut_clipboard (GtkEntry *entry);
static void gtk_entry_copy_clipboard (GtkEntry *entry);
static void gtk_entry_paste_clipboard (GtkEntry *entry);
static void gtk_entry_toggle_overwrite (GtkEntry *entry);
static void gtk_entry_toggle_direction (GtkEntry *entry);
static void gtk_entry_insert_emoji (GtkEntry *entry);
static void gtk_entry_select_all (GtkEntry *entry);
static void gtk_entry_real_activate (GtkEntry *entry);
static gboolean gtk_entry_popup_menu (GtkWidget *widget);
static void keymap_direction_changed (GdkKeymap *keymap,
GtkEntry *entry);
static void keymap_state_changed (GdkKeymap *keymap,
GtkEntry *entry);
static void remove_capslock_feedback (GtkEntry *entry);
@ -821,6 +821,7 @@ gtk_entry_class_init (GtkEntryClass *class)
class->activate = gtk_entry_real_activate;
class->get_text_area_size = gtk_entry_get_text_area_size;
class->get_frame_size = gtk_entry_get_frame_size;
class->toggle_direction = gtk_entry_toggle_direction;
quark_inner_border = g_quark_from_static_string ("gtk-entry-inner-border");
quark_password_hint = g_quark_from_static_string ("gtk-entry-password-hint");
@ -1847,6 +1848,15 @@ gtk_entry_class_init (GtkEntryClass *class)
NULL,
G_TYPE_NONE, 0);
signals[TOGGLE_DIRECTION] =
g_signal_new (I_("toggle-direction"),
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GtkEntryClass, toggle_direction),
NULL, NULL,
NULL,
G_TYPE_NONE, 0);
/**
* GtkEntry::icon-press:
* @entry: The entry on which the signal is emitted
@ -2101,6 +2111,8 @@ gtk_entry_class_init (GtkEntryClass *class)
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, 0,
"toggle-overwrite", 0);
gtk_binding_entry_add_signal (binding_set, GDK_KEY_t, GDK_CONTROL_MASK|GDK_SHIFT_MASK,
"toggle-direction", 0);
/**
* GtkEntry:inner-border:
*
@ -3002,7 +3014,6 @@ gtk_entry_dispose (GObject *object)
keymap = gdk_keymap_get_for_display (gtk_widget_get_display (GTK_WIDGET (object)));
g_signal_handlers_disconnect_by_func (keymap, keymap_state_changed, entry);
g_signal_handlers_disconnect_by_func (keymap, keymap_direction_changed, entry);
G_OBJECT_CLASS (gtk_entry_parent_class)->dispose (object);
}
@ -4973,9 +4984,6 @@ gtk_entry_focus_in (GtkWidget *widget,
G_CALLBACK (keymap_state_changed), entry);
}
g_signal_connect (keymap, "direction-changed",
G_CALLBACK (keymap_direction_changed), entry);
if (gtk_entry_buffer_get_bytes (get_buffer (entry)) == 0 &&
priv->placeholder_text != NULL)
{
@ -5027,7 +5035,6 @@ gtk_entry_focus_out (GtkWidget *widget,
}
g_signal_handlers_disconnect_by_func (keymap, keymap_state_changed, entry);
g_signal_handlers_disconnect_by_func (keymap, keymap_direction_changed, entry);
completion = gtk_entry_get_completion (entry);
if (completion)
@ -6028,6 +6035,34 @@ gtk_entry_toggle_overwrite (GtkEntry *entry)
gtk_widget_queue_draw (GTK_WIDGET (entry));
}
static void
update_resolved_dir (GtkEntry *self)
{
GtkEntryPrivate *priv = self->priv;
if (gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL)
priv->resolved_dir = PANGO_DIRECTION_RTL;
else
priv->resolved_dir = PANGO_DIRECTION_LTR;
}
static void
gtk_entry_toggle_direction (GtkEntry *entry)
{
GtkWidget *widget = GTK_WIDGET (entry);
GtkEntryPrivate *priv = entry->priv;
if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
gtk_widget_set_direction (widget, GTK_TEXT_DIR_LTR);
else
gtk_widget_set_direction (widget, GTK_TEXT_DIR_RTL);
update_resolved_dir (entry);
if (priv->cached_layout)
pango_layout_context_changed (priv->cached_layout);
}
static void
gtk_entry_select_all (GtkEntry *entry)
{
@ -6064,13 +6099,6 @@ gtk_entry_real_activate (GtkEntry *entry)
}
}
static void
keymap_direction_changed (GdkKeymap *keymap,
GtkEntry *entry)
{
gtk_entry_recompute (entry);
}
/* IM Context Callbacks
*/
@ -6398,40 +6426,11 @@ gtk_entry_create_layout (GtkEntry *entry,
}
else
{
PangoDirection pango_dir;
if (gtk_entry_get_display_mode (entry) == DISPLAY_NORMAL)
pango_dir = _gtk_pango_find_base_dir (display_text, n_bytes);
else
pango_dir = PANGO_DIRECTION_NEUTRAL;
if (pango_dir == PANGO_DIRECTION_NEUTRAL)
{
if (gtk_widget_has_focus (widget))
{
GdkDisplay *display = gtk_widget_get_display (widget);
GdkKeymap *keymap = gdk_keymap_get_for_display (display);
if (gdk_keymap_get_direction (keymap) == PANGO_DIRECTION_RTL)
pango_dir = PANGO_DIRECTION_RTL;
else
pango_dir = PANGO_DIRECTION_LTR;
}
else
{
if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
pango_dir = PANGO_DIRECTION_RTL;
else
pango_dir = PANGO_DIRECTION_LTR;
}
}
pango_context_set_base_dir (gtk_widget_get_pango_context (widget), pango_dir);
priv->resolved_dir = pango_dir;
pango_layout_set_text (layout, display_text, n_bytes);
}
update_resolved_dir (entry);
pango_layout_set_attributes (layout, tmp_attrs);
if (priv->tabs)

View File

@ -162,13 +162,14 @@ struct _GtkEntryClass
/*< private >*/
void (* toggle_direction) (GtkEntry *entry);
/* Padding for future expansion */
void (*_gtk_reserved1) (void);
void (*_gtk_reserved2) (void);
void (*_gtk_reserved3) (void);
void (*_gtk_reserved4) (void);
void (*_gtk_reserved5) (void);
void (*_gtk_reserved6) (void);
};
GDK_AVAILABLE_IN_ALL

View File

@ -4832,34 +4832,6 @@ stop_loading_and_clear_list_model (GtkFileChooserWidget *impl,
gtk_tree_view_set_model (GTK_TREE_VIEW (priv->browse_files_tree_view), NULL);
}
/* Replace 'target' with 'replacement' in the input string. */
static gchar *
string_replace (const gchar *input,
const gchar *target,
const gchar *replacement)
{
gchar **pieces;
gchar *output;
pieces = g_strsplit (input, target, -1);
output = g_strjoinv (replacement, pieces);
g_strfreev (pieces);
return output;
}
static void
replace_ratio (gchar **str)
{
if (g_get_charset (NULL))
{
gchar *ret;
ret = string_replace (*str, ":", "\xE2\x80\x8E");
g_free (*str);
*str = ret;
}
}
static char *
my_g_format_date_for_display (GtkFileChooserWidget *impl,
glong secs)
@ -4918,7 +4890,6 @@ my_g_format_date_for_display (GtkFileChooserWidget *impl,
}
date_str = g_date_time_format (time, format);
replace_ratio (&date_str);
g_date_time_unref (now);
g_date_time_unref (now_date);
@ -4949,7 +4920,6 @@ my_g_format_time_for_display (GtkFileChooserWidget *impl,
format = _("%l:%M %p");
date_str = g_date_time_format (time, format);
replace_ratio (&date_str);
g_date_time_unref (time);

View File

@ -125,6 +125,7 @@
#include "gtkmain.h"
#include "gtkintl.h"
#include "gtkmarshalers.h"
#include <math.h>
typedef struct _GtkGesturePrivate GtkGesturePrivate;
typedef struct _PointData PointData;
@ -472,7 +473,7 @@ _update_widget_coordinates (GtkGesture *gesture,
GtkWidget *event_widget, *widget;
GtkAllocation allocation;
gdouble event_x, event_y;
gint wx, wy, x, y;
gint x, y;
event_widget = gtk_get_event_widget (data->event);
@ -486,6 +487,7 @@ _update_widget_coordinates (GtkGesture *gesture,
while (window && window != event_widget_window)
{
gint wx, wy;
gdk_window_get_position (window, &wx, &wy);
event_x += wx;
event_y += wy;
@ -502,13 +504,20 @@ _update_widget_coordinates (GtkGesture *gesture,
event_y -= allocation.y;
}
gtk_widget_translate_coordinates (event_widget, widget,
event_x, event_y, &x, &y);
if (gtk_widget_translate_coordinates (event_widget, widget,
event_x, event_y, &x, &y))
{
/* gtk_widget_translate() loses the fractional part so we need to
* add it back to not lose accuracy */
data->widget_x = x + (event_x - (int)event_x);
data->widget_y = y + (event_y - (int)event_y);
}
else
{
/* Mark the coordinates well outside the widget, to
* signal that the translation has failed */
data->widget_x = data->widget_y = NAN;
}
}
static GtkEventSequenceState

View File

@ -102,8 +102,6 @@ static gboolean gtk_im_multicontext_delete_surrounding_cb (GtkIMContext *
static void propagate_purpose (GtkIMMulticontext *context);
static const gchar *global_context_id = NULL;
G_DEFINE_TYPE_WITH_PRIVATE (GtkIMMulticontext, gtk_im_multicontext, GTK_TYPE_IM_CONTEXT)
static void
@ -256,10 +254,7 @@ get_effective_context_id (GtkIMMulticontext *multicontext)
if (priv->context_id_aux)
return priv->context_id_aux;
if (!global_context_id)
global_context_id = _gtk_im_module_get_default_context_id ();
return global_context_id;
return _gtk_im_module_get_default_context_id ();
}
static GtkIMContext *
@ -267,9 +262,6 @@ gtk_im_multicontext_get_slave (GtkIMMulticontext *multicontext)
{
GtkIMMulticontextPrivate *priv = multicontext->priv;
if (g_strcmp0 (priv->context_id, get_effective_context_id (multicontext)) != 0)
gtk_im_multicontext_set_slave (multicontext, NULL, FALSE);
if (!priv->slave)
{
GtkIMContext *slave;
@ -291,22 +283,30 @@ gtk_im_multicontext_get_slave (GtkIMMulticontext *multicontext)
static void
im_module_setting_changed (GtkSettings *settings,
gpointer data)
GtkIMMulticontext *self)
{
global_context_id = NULL;
gtk_im_multicontext_set_slave (self, NULL, FALSE);
}
static void
gtk_im_multicontext_set_client_window (GtkIMContext *context,
GdkWindow *window)
{
GtkIMMulticontext *multicontext = GTK_IM_MULTICONTEXT (context);
GtkIMMulticontextPrivate *priv = multicontext->priv;
GtkIMMulticontext *self = GTK_IM_MULTICONTEXT (context);
GtkIMMulticontextPrivate *priv = self->priv;
GtkIMContext *slave;
GdkScreen *screen;
GtkSettings *settings;
gboolean connected;
if (priv->client_window != NULL)
{
screen = gdk_window_get_screen (priv->client_window);
settings = gtk_settings_get_for_screen (screen);
g_signal_handlers_disconnect_by_func (settings,
im_module_setting_changed,
self);
}
priv->client_window = window;
@ -315,20 +315,12 @@ gtk_im_multicontext_set_client_window (GtkIMContext *context,
screen = gdk_window_get_screen (window);
settings = gtk_settings_get_for_screen (screen);
connected = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (settings),
"gtk-im-module-connected"));
if (!connected)
{
g_signal_connect (settings, "notify::gtk-im-module",
G_CALLBACK (im_module_setting_changed), NULL);
g_object_set_data (G_OBJECT (settings), "gtk-im-module-connected",
GINT_TO_POINTER (TRUE));
global_context_id = NULL;
}
G_CALLBACK (im_module_setting_changed),
self);
}
slave = gtk_im_multicontext_get_slave (multicontext);
slave = gtk_im_multicontext_get_slave (self);
if (slave)
gtk_im_context_set_client_window (slave, window);
}
@ -723,9 +715,14 @@ gtk_im_multicontext_append_menuitems (GtkIMMulticontext *context,
const char *
gtk_im_multicontext_get_context_id (GtkIMMulticontext *context)
{
GtkIMMulticontextPrivate *priv = context->priv;
g_return_val_if_fail (GTK_IS_IM_MULTICONTEXT (context), NULL);
return context->priv->context_id;
if (priv->context_id == NULL)
gtk_im_multicontext_get_slave (context);
return priv->context_id;
}
/**

View File

@ -2082,6 +2082,13 @@ typedef struct
GdkEvent *trigger_event;
} PopupInfo;
static void
_gtk_menu_item_popup_info_destroy (PopupInfo *info)
{
g_clear_pointer (&info->trigger_event, gdk_event_free);
g_slice_free (PopupInfo, info);
}
static gint
gtk_menu_item_popup_timeout (gpointer data)
{
@ -2105,9 +2112,6 @@ gtk_menu_item_popup_timeout (gpointer data)
priv->timer = 0;
g_clear_pointer (&info->trigger_event, gdk_event_free);
g_slice_free (PopupInfo, info);
return FALSE;
}
@ -2148,9 +2152,11 @@ _gtk_menu_item_popup_submenu (GtkWidget *widget,
info->menu_item = menu_item;
info->trigger_event = gtk_get_current_event ();
priv->timer = gdk_threads_add_timeout (popup_delay,
priv->timer = gdk_threads_add_timeout_full (G_PRIORITY_DEFAULT,
popup_delay,
gtk_menu_item_popup_timeout,
info);
info,
(GDestroyNotify) _gtk_menu_item_popup_info_destroy);
g_source_set_name_by_id (priv->timer, "[gtk+] gtk_menu_item_popup_timeout");
return;

View File

@ -367,19 +367,20 @@ setup_primary_label_font (GtkMessageDialog *dialog)
}
static void
setup_type (GtkMessageDialog *dialog,
GtkMessageType type)
update_accessible_name (GtkMessageDialog *dialog)
{
GtkMessageDialogPrivate *priv = dialog->priv;
const gchar *name = NULL;
AtkObject *atk_obj;
if (priv->message_type == type)
AtkObject *atk_obj = gtk_widget_get_accessible (GTK_WIDGET (dialog));
if (!GTK_IS_ACCESSIBLE (atk_obj))
return;
priv->message_type = type;
const char *name = gtk_window_get_title (GTK_WINDOW (dialog));
if (name && name[0])
{
atk_object_set_name (atk_obj, name);
return;
}
switch (type)
switch (dialog->priv->message_type)
{
case GTK_MESSAGE_INFO:
name = _("Information");
@ -401,16 +402,32 @@ setup_type (GtkMessageDialog *dialog,
break;
default:
g_warning ("Unknown GtkMessageType %u", type);
g_warning ("Unknown GtkMessageType %u", dialog->priv->message_type);
break;
}
if (name)
atk_object_set_name (atk_obj, name);
}
static void
setup_type (GtkMessageDialog *dialog,
GtkMessageType type)
{
GtkMessageDialogPrivate *priv = dialog->priv;
AtkObject *atk_obj;
if (priv->message_type == type)
return;
priv->message_type = type;
atk_obj = gtk_widget_get_accessible (GTK_WIDGET (dialog));
if (GTK_IS_ACCESSIBLE (atk_obj))
{
atk_object_set_role (atk_obj, ATK_ROLE_ALERT);
if (name)
atk_object_set_name (atk_obj, name);
update_accessible_name (dialog);
}
g_object_notify (G_OBJECT (dialog), "message-type");
@ -426,6 +443,8 @@ update_title (GObject *dialog,
title = gtk_window_get_title (GTK_WINDOW (dialog));
gtk_label_set_label (GTK_LABEL (label), title);
gtk_widget_set_visible (label, title && title[0]);
update_accessible_name (GTK_MESSAGE_DIALOG (dialog));
}
static void

View File

@ -2024,11 +2024,7 @@ gtk_selection_data_get_uris (const GtkSelectionData *selection_data)
GPtrArray *uris = g_ptr_array_new ();
for (int i = 0; files[i]; i++)
{
GFile *file = g_file_new_for_path (files[i]);
g_ptr_array_add (uris, g_file_get_uri (file));
g_object_unref (file);
}
g_ptr_array_add (uris, g_filename_to_uri (files[i], NULL, NULL));
g_ptr_array_add (uris, NULL);
result = (char **) g_ptr_array_free (uris, FALSE);

View File

@ -800,6 +800,19 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
priv->gadget = gtk_box_gadget_new_for_node (widget_node, GTK_WIDGET (spin_button));
entry_node = gtk_css_node_new ();
char *down_button_icon_names[] = {
"value-decrease-symbolic",
"list-remove-symbolic"
};
GIcon *down_icon = g_themed_icon_new_from_names (down_button_icon_names, 2);
char *up_button_icon_names[] = {
"value-increase-symbolic",
"list-add-symbolic"
};
GIcon *up_icon = g_themed_icon_new_from_names (up_button_icon_names, 2);
gtk_css_node_set_name (entry_node, I_("entry"));
gtk_css_node_set_parent (entry_node, widget_node);
gtk_css_node_set_state (entry_node, gtk_css_node_get_state (widget_node));
@ -812,7 +825,8 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
priv->down_button = gtk_icon_helper_new_named ("button",
GTK_WIDGET (spin_button));
_gtk_icon_helper_set_use_fallback (GTK_ICON_HELPER (priv->down_button), TRUE);
_gtk_icon_helper_set_icon_name (GTK_ICON_HELPER (priv->down_button), "list-remove-symbolic", GTK_ICON_SIZE_MENU);
_gtk_icon_helper_set_gicon (GTK_ICON_HELPER (priv->down_button), down_icon, GTK_ICON_SIZE_MENU);
g_object_unref (down_icon);
gtk_css_gadget_add_class (priv->down_button, "down");
gtk_css_node_set_parent (gtk_css_gadget_get_node (priv->down_button), widget_node);
gtk_css_node_set_state (gtk_css_gadget_get_node (priv->down_button), gtk_css_node_get_state (widget_node));
@ -823,7 +837,8 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
priv->up_button = gtk_icon_helper_new_named ("button",
GTK_WIDGET (spin_button));
_gtk_icon_helper_set_use_fallback (GTK_ICON_HELPER (priv->up_button), TRUE);
_gtk_icon_helper_set_icon_name (GTK_ICON_HELPER (priv->up_button), "list-add-symbolic", GTK_ICON_SIZE_MENU);
_gtk_icon_helper_set_gicon (GTK_ICON_HELPER (priv->up_button), up_icon, GTK_ICON_SIZE_MENU);
g_object_unref (up_icon);
gtk_css_gadget_add_class (priv->up_button, "up");
gtk_css_node_set_parent (gtk_css_gadget_get_node (priv->up_button), widget_node);
gtk_css_node_set_state (gtk_css_gadget_get_node (priv->up_button), gtk_css_node_get_state (widget_node));
@ -2416,6 +2431,10 @@ gtk_spin_button_set_numeric (GtkSpinButton *spin_button,
if (priv->numeric != numeric)
{
priv->numeric = numeric;
if (numeric)
gtk_widget_set_direction (GTK_WIDGET (spin_button), GTK_TEXT_DIR_LTR);
g_object_notify (G_OBJECT (spin_button), "numeric");
}
}

View File

@ -683,6 +683,8 @@ static gboolean gtk_widget_real_button_event (GtkWidget
GdkEventButton *event);
static gboolean gtk_widget_real_motion_event (GtkWidget *widget,
GdkEventMotion *event);
static gboolean gtk_widget_real_crossing_event (GtkWidget *widget,
GdkEventCrossing *event);
static gboolean gtk_widget_real_key_press_event (GtkWidget *widget,
GdkEventKey *event);
static gboolean gtk_widget_real_key_release_event (GtkWidget *widget,
@ -1076,8 +1078,8 @@ gtk_widget_class_init (GtkWidgetClass *klass)
klass->destroy_event = NULL;
klass->key_press_event = gtk_widget_real_key_press_event;
klass->key_release_event = gtk_widget_real_key_release_event;
klass->enter_notify_event = NULL;
klass->leave_notify_event = NULL;
klass->enter_notify_event = gtk_widget_real_crossing_event;
klass->leave_notify_event = gtk_widget_real_crossing_event;
klass->configure_event = NULL;
klass->focus_in_event = gtk_widget_real_focus_in_event;
klass->focus_out_event = gtk_widget_real_focus_out_event;
@ -7217,6 +7219,14 @@ gtk_widget_real_motion_event (GtkWidget *widget,
GTK_PHASE_BUBBLE);
}
static gboolean
gtk_widget_real_crossing_event (GtkWidget *widget,
GdkEventCrossing *event)
{
return _gtk_widget_run_controllers (widget, (GdkEvent *) event,
GTK_PHASE_BUBBLE);
}
static gboolean
gtk_widget_real_key_press_event (GtkWidget *widget,
GdkEventKey *event)
@ -10984,7 +10994,10 @@ gtk_widget_get_scale_factor (GtkWidget *widget)
display = gtk_widget_get_display (widget);
monitor = gdk_display_get_monitor (display, 0);
if (monitor)
return gdk_monitor_get_scale_factor (monitor);
return 1;
}
/**

View File

@ -13028,8 +13028,6 @@ gtk_window_export_handle (GtkWindow *window,
}
#endif
g_warning ("Couldn't export handle, unsupported windowing system");
return FALSE;
}

View File

@ -644,14 +644,17 @@ scan_directory (const gchar *base_path,
directories = scan_directory (base_path, subsubdir, files,
directories, depth + 1);
g_free (subsubdir);
g_free (path);
continue;
}
/* ignore images in the toplevel directory */
if (subdir == NULL)
{
g_free (path);
continue;
}
retval = g_file_test (path, G_FILE_TEST_IS_REGULAR);
if (retval)
{
@ -665,7 +668,10 @@ scan_directory (const gchar *base_path,
flags |= HAS_ICON_FILE;
if (flags == 0)
{
g_free (path);
continue;
}
basename = g_strdup (name);
dot = strrchr (basename, '.');

View File

@ -1,5 +1,5 @@
project('gtk+', 'c',
version: '3.24.43',
project('gtk', 'c',
version: '3.24.48',
default_options: [
'buildtype=debugoptimized',
'warning_level=1'
@ -41,8 +41,8 @@ xkbcommon_req = '>= 0.2.0'
gnome = import('gnome')
add_project_arguments('-DG_LOG_USE_STRUCTURED=1', language: 'c')
add_project_arguments('-DGLIB_MIN_REQUIRED_VERSION=' + glib_min_required, language: 'c')
add_project_arguments('-DGLIB_MAX_ALLOWED_VERSION=' + glib_max_allowed, language: 'c')
add_project_arguments('-DGLIB_VERSION_MIN_REQUIRED=' + glib_min_required, language: 'c')
add_project_arguments('-DGLIB_VERSION_MAX_ALLOWED=' + glib_max_allowed, language: 'c')
# Making releases:
# 1. gtk_micro_version += 1;

File diff suppressed because it is too large Load Diff

View File

@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+ 2.3.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-04-24 12:06+0000\n"
"PO-Revision-Date: 2024-04-28 15:13+0330\n"
"POT-Creation-Date: 2024-09-29 13:26+0000\n"
"PO-Revision-Date: 2024-11-04 13:20+0330\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <translate@ifsug.org>\n"
"Language: fa\n"
@ -19,7 +19,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Poedit 3.2.2\n"
"X-Generator: Poedit 3.4.4\n"
#: gdk/gdkapplaunchcontext.c:127 gdk/gdkcursor.c:139 gdk/gdkdevicemanager.c:185
#: gdk/gdkglcontext.c:320 gdk/gdkseat.c:202 gdk/gdkseat.c:203
@ -779,11 +779,11 @@ msgstr "این که موارد باید با شماره نشان داده شون
#: gtk/deprecated/gtkstatusicon.c:234 gtk/gtkimage.c:256
msgid "Pixbuf"
msgstr "میانیگر پیکسل"
msgstr "میانیگر تصدانه"
#: gtk/deprecated/gtkstatusicon.c:235 gtk/gtkimage.c:257
msgid "A GdkPixbuf to display"
msgstr "میانیگر پیکسل برای نمایش"
msgstr "میانیگر تصدانه برای نمایش"
#: gtk/deprecated/gtkstatusicon.c:242 gtk/gtkimage.c:270
#: gtk/gtkrecentmanager.c:289
@ -1073,7 +1073,7 @@ msgstr "اندازهٔ نقشک"
#: gtk/deprecated/gtktrayicon-x11.c:179
msgid "The pixel size that icons should be forced to, or zero"
msgstr "اندازهٔ پیکسلی که نقشک باید به آن اجبار شود. یا صفر"
msgstr "اندازهٔ تصدانه‌ای که نقشک باید به آن اجبار شود. یا صفر"
#: gtk/deprecated/gtkuimanager.c:463 gtk/gtkcombobox.c:1010
msgid "Add tearoffs to menus"
@ -1510,7 +1510,7 @@ msgstr "لایه‌گذاری سربرگ"
#: gtk/gtkassistant.c:541
msgid "Number of pixels around the header."
msgstr "تعداد پیکسلها دور سرایند."
msgstr "تعداد تصدانهها دور سرایند."
#: gtk/gtkassistant.c:556
msgid "Content Padding"
@ -1518,7 +1518,7 @@ msgstr "فاصله‌دهی محتوا"
#: gtk/gtkassistant.c:557
msgid "Number of pixels around the content pages."
msgstr "تعداد پیکسلها دور صفحه‌های محتوا."
msgstr "تعداد تصدانهها دور صفحه‌های محتوا."
#: gtk/gtkassistant.c:573
msgid "Page type"
@ -1791,7 +1791,7 @@ msgstr "فاصله‌گذاری تصویر"
#: gtk/gtkbutton.c:627
msgid "Spacing in pixels between the image and label"
msgstr "فاصله‌گذاری بین تصویر و برچسب به پیکسل"
msgstr "فاصله‌گذاری بین تصویر و برچسب به تصدانه"
# naashenaakhte, naashenaas, naama'loom, naamoshakhkhas
#: gtk/gtkcalendar.c:398
@ -3355,7 +3355,7 @@ msgstr ""
#: gtk/gtkentry.c:1137
msgid "Secondary pixbuf"
msgstr "میانگیر پیکسل ثانویه"
msgstr "میانگیر تصدانهٔ ثانویه"
#: gtk/gtkentry.c:1138
msgid "Secondary pixbuf for the entry"
@ -3857,11 +3857,11 @@ msgstr "برچسب لغو"
msgid "The label on the cancel button"
msgstr "برچسب دکمهٔ لغو"
#: gtk/gtkfilechooserwidget.c:8674 gtk/gtkfilechooserwidget.c:8675
#: gtk/gtkfilechooserwidget.c:8675 gtk/gtkfilechooserwidget.c:8676
msgid "Search mode"
msgstr "حالت جست‌وجو"
#: gtk/gtkfilechooserwidget.c:8681 gtk/gtkfilechooserwidget.c:8682
#: gtk/gtkfilechooserwidget.c:8682 gtk/gtkfilechooserwidget.c:8683
#: gtk/gtkheaderbar.c:2034 gtk/gtkshortcutsshortcut.c:592
msgid "Subtitle"
msgstr "زیرنویس"
@ -4049,15 +4049,15 @@ msgstr ""
msgid "A widget to display in place of the usual frame label"
msgstr ""
#: gtk/gtkgesture.c:879
#: gtk/gtkgesture.c:888
msgid "Number of points"
msgstr "تعداد نقطه‌ها"
#: gtk/gtkgesture.c:880
#: gtk/gtkgesture.c:889
msgid "Number of points needed to trigger the gesture"
msgstr "تعداد نقطه‌های تحریک شدهٔ مورد نیاز برای ژست"
#: gtk/gtkgesture.c:896 gtk/gtkgesture.c:897
#: gtk/gtkgesture.c:905 gtk/gtkgesture.c:906
msgid "GdkWindow to receive events about"
msgstr ""
@ -7998,7 +7998,7 @@ msgstr "حاشیهٔ بالا"
#: gtk/gtktextview.c:906
msgid "Height of the top margin in pixels"
msgstr "بلندای حاشیهٔ بالایی به پیکسل"
msgstr "بلندای حاشیهٔ بالایی به تصدانه"
#: gtk/gtktextview.c:926
msgid "Bottom Margin"
@ -8006,7 +8006,7 @@ msgstr "حاشیهٔ پایینی"
#: gtk/gtktextview.c:927
msgid "Height of the bottom margin in pixels"
msgstr "بلندای حاشیهٔ پایینی به پیکسل"
msgstr "بلندای حاشیهٔ پایینی به تصدانه"
#: gtk/gtktextview.c:950
msgid "Cursor Visible"
@ -8184,7 +8184,7 @@ msgstr "فاصله‌گذاری نقشک"
#: gtk/gtktoolbutton.c:312
msgid "Spacing in pixels between the icon and label"
msgstr "فاصله‌گذاری بین نقشک و برچسب به پیکسل"
msgstr "فاصله‌گذاری بین نقشک و برچسب به تصدانه"
#: gtk/gtktoolitem.c:194
msgid ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
#'gtk/po-properties/
# gtk/po-properties/
# Slovenian translation of gtk+-properties.
# Copyright (C) 1999-2011 Free Software Foundation, Inc.
# This file is distributed under the same license as the gtk+-properties package.

8080
po/hi.po

File diff suppressed because it is too large Load Diff

View File

@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-16 13:18+0000\n"
"PO-Revision-Date: 2024-06-28 17:20+0200\n"
"POT-Creation-Date: 2024-06-28 15:27+0000\n"
"PO-Revision-Date: 2024-06-28 18:51+0200\n"
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
"Language-Team: Hungarian <openscope at fsf dot hu>\n"
"Language: hu\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 23.08.4\n"
"X-Generator: Poedit 3.4.4\n"
#: gdk/broadway/gdkbroadway-server.c:144
#, c-format
@ -2576,8 +2576,9 @@ msgid "Yesterday"
msgstr "Tegnap"
#: gtk/gtkfilechooserwidget.c:4912
#, c-format
msgid "%-e %b"
msgstr "%b. %-e."
msgstr "%2$b. %1$-e."
#: gtk/gtkfilechooserwidget.c:4916
msgid "%-e %b %Y"
@ -8397,4 +8398,3 @@ msgstr "tesztkimenet.%s"
#: modules/printbackends/test/gtkprintbackendtest.c:465
msgid "Print to Test Printer"
msgstr "Nyomtatás tesztnyomtatóra"

19105
po/is.po

File diff suppressed because it is too large Load Diff

476
po/lv.po

File diff suppressed because it is too large Load Diff

282
po/sr.po
View File

@ -11,17 +11,18 @@ msgid ""
msgstr ""
"Project-Id-Version: gtk+ 2.14\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-07 16:28+0000\n"
"PO-Revision-Date: 2023-04-09 13:34+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"POT-Creation-Date: 2024-11-04 10:04+0000\n"
"PO-Revision-Date: 2024-11-07 18:56+0100\n"
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
"Language-Team: Serbian <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : "
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n"
"X-Generator: Poedit 3.4.4\n"
#: gdk/broadway/gdkbroadway-server.c:144
#, c-format
@ -1219,9 +1220,9 @@ msgstr ""
#: gtk/deprecated/gtkcolorseldialog.c:191 gtk/deprecated/gtkfontsel.c:1689
#: gtk/gtkfilechoosernative.c:545 gtk/gtkfilechoosernative.c:637
#: gtk/gtkfilechooserwidget.c:1502 gtk/gtkfilechooserwidget.c:6578
#: gtk/gtkmessagedialog.c:952 gtk/gtkmessagedialog.c:965
#: gtk/gtkmountoperation.c:594 gtk/gtkpagesetupunixdialog.c:197
#: gtk/gtkfilechooserwidget.c:1502 gtk/gtkfilechooserwidget.c:6579
#: gtk/gtkmessagedialog.c:971 gtk/gtkmessagedialog.c:984
#: gtk/gtkmountoperation.c:599 gtk/gtkpagesetupunixdialog.c:197
#: gtk/gtkprintbackend.c:779 gtk/gtkprinteroptionwidget.c:545
#: gtk/gtkprintunixdialog.c:674 gtk/gtkprintunixdialog.c:747
#: gtk/gtkwindow.c:12829 gtk/inspector/css-editor.c:201
@ -1272,8 +1273,8 @@ msgstr "_Претпреглед:"
msgid "_Apply"
msgstr "_Примени"
#: gtk/deprecated/gtkfontsel.c:1698 gtk/gtkmessagedialog.c:944
#: gtk/gtkmessagedialog.c:966 gtk/gtkprintbackend.c:780 gtk/gtkwindow.c:12830
#: gtk/deprecated/gtkfontsel.c:1698 gtk/gtkmessagedialog.c:963
#: gtk/gtkmessagedialog.c:985 gtk/gtkprintbackend.c:780 gtk/gtkwindow.c:12830
msgid "_OK"
msgstr "У _реду"
@ -1518,7 +1519,7 @@ msgid "_License"
msgstr "_Лиценца"
#: gtk/gtkaboutdialog.c:720 gtk/gtkcustompaperunixdialog.c:329
#: gtk/gtkmessagedialog.c:948 gtk/ui/gtkassistant.ui:144
#: gtk/gtkmessagedialog.c:967 gtk/ui/gtkassistant.ui:144
msgid "_Close"
msgstr "_Затвори"
@ -2336,7 +2337,7 @@ msgstr "От_вори"
msgid "_Save"
msgstr "_Сачувај"
#: gtk/gtkfilechoosernativequartz.c:331 gtk/ui/gtkfilechooserwidget.ui:435
#: gtk/gtkfilechoosernativequartz.c:332 gtk/ui/gtkfilechooserwidget.ui:435
msgid "Select which types of files are shown"
msgstr "Изабери које врсте датотека се приказују"
@ -2560,7 +2561,7 @@ msgstr "Унесите путању"
msgid "Enter location or URL"
msgstr "Унесите путању или адресу"
#: gtk/gtkfilechooserwidget.c:4454 gtk/gtkfilechooserwidget.c:7498
#: gtk/gtkfilechooserwidget.c:4454 gtk/gtkfilechooserwidget.c:7499
#: gtk/ui/gtkfilechooserwidget.ui:278
msgid "Modified"
msgstr "Измењена"
@ -2574,11 +2575,11 @@ msgstr "Не могу да прочитам садржај „%s“"
msgid "Could not read the contents of the folder"
msgstr "Не могу да прочитам садржај фасцикле"
#: gtk/gtkfilechooserwidget.c:4898 gtk/gtkfilechooserwidget.c:4946
#: gtk/gtkfilechooserwidget.c:4898 gtk/gtkfilechooserwidget.c:4947
msgid "%H:%M"
msgstr "%H:%M"
#: gtk/gtkfilechooserwidget.c:4900 gtk/gtkfilechooserwidget.c:4948
#: gtk/gtkfilechooserwidget.c:4900 gtk/gtkfilechooserwidget.c:4949
msgid "%l:%M %p"
msgstr "%l:%M %p"
@ -2586,110 +2587,111 @@ msgstr "%l:%M %p"
msgid "Yesterday"
msgstr "Јуче"
#: gtk/gtkfilechooserwidget.c:4912
#: gtk/gtkfilechooserwidget.c:4913
#, no-c-format
msgid "%-e %b"
msgstr "%-e %b"
#: gtk/gtkfilechooserwidget.c:4916
#: gtk/gtkfilechooserwidget.c:4917
msgid "%-e %b %Y"
msgstr "%-e. %b %Y."
#: gtk/gtkfilechooserwidget.c:5015 gtk/gtkfilechooserwidget.c:5023
#: gtk/gtkfilechooserwidget.c:5016 gtk/gtkfilechooserwidget.c:5024
msgid "Program"
msgstr "Програм"
#: gtk/gtkfilechooserwidget.c:5016
#: gtk/gtkfilechooserwidget.c:5017
msgid "Audio"
msgstr "Звук"
#: gtk/gtkfilechooserwidget.c:5017 gtk/inspector/visual.ui:230
#: gtk/gtkfilechooserwidget.c:5018 gtk/inspector/visual.ui:230
#: gtk/ui/gtkfontbutton.ui:13
msgid "Font"
msgstr "Слова"
#: gtk/gtkfilechooserwidget.c:5018 gtk/inspector/visual.ui:488
#: gtk/gtkfilechooserwidget.c:5019 gtk/inspector/visual.ui:488
msgid "Image"
msgstr "Слика"
#: gtk/gtkfilechooserwidget.c:5019
#: gtk/gtkfilechooserwidget.c:5020
msgid "Archive"
msgstr "Архива"
#: gtk/gtkfilechooserwidget.c:5020
#: gtk/gtkfilechooserwidget.c:5021
msgid "Markup"
msgstr "Означавање"
#: gtk/gtkfilechooserwidget.c:5021 gtk/gtkfilechooserwidget.c:5022
#: gtk/gtkfilechooserwidget.c:5022 gtk/gtkfilechooserwidget.c:5023
msgid "Text"
msgstr "Текст"
#: gtk/gtkfilechooserwidget.c:5024
#: gtk/gtkfilechooserwidget.c:5025
msgid "Video"
msgstr "Видео"
#: gtk/gtkfilechooserwidget.c:5025
#: gtk/gtkfilechooserwidget.c:5026
msgid "Contacts"
msgstr "Контакти"
#: gtk/gtkfilechooserwidget.c:5026
#: gtk/gtkfilechooserwidget.c:5027
msgid "Calendar"
msgstr "Календар"
#: gtk/gtkfilechooserwidget.c:5027
#: gtk/gtkfilechooserwidget.c:5028
msgid "Document"
msgstr "Документ"
#: gtk/gtkfilechooserwidget.c:5028
#: gtk/gtkfilechooserwidget.c:5029
msgid "Presentation"
msgstr "Презентација"
#: gtk/gtkfilechooserwidget.c:5029
#: gtk/gtkfilechooserwidget.c:5030
msgid "Spreadsheet"
msgstr "Табела"
#: gtk/gtkfilechooserwidget.c:5060 gtk/gtkfilechooserwidget.c:5249
#: gtk/gtkfilechooserwidget.c:5061 gtk/gtkfilechooserwidget.c:5250
#: gtk/inspector/prop-editor.c:1689
msgid "Unknown"
msgstr "Непознато"
# ako je za "home directory", onda bi bilo dobro "licni direktorijum", ako je za "home page", onda za "licna stranica"
#: gtk/gtkfilechooserwidget.c:5288 gtk/gtkplacessidebar.c:1097
#: gtk/gtkfilechooserwidget.c:5289 gtk/gtkplacessidebar.c:1097
msgid "Home"
msgstr "Лична фасцикла"
#: gtk/gtkfilechooserwidget.c:5785
#: gtk/gtkfilechooserwidget.c:5786
msgid "Cannot change to folder because it is not local"
msgstr "Не могу да уђем у фасциклу зато што није локална"
#: gtk/gtkfilechooserwidget.c:6571 gtk/gtkprintunixdialog.c:665
#: gtk/gtkfilechooserwidget.c:6572 gtk/gtkprintunixdialog.c:665
#, c-format
msgid "A file named “%s” already exists. Do you want to replace it?"
msgstr "Датотека под називом „%s“ већ постоји. Да ли желите да је замените?"
#: gtk/gtkfilechooserwidget.c:6574 gtk/gtkprintunixdialog.c:669
#: gtk/gtkfilechooserwidget.c:6575 gtk/gtkprintunixdialog.c:669
#, c-format
msgid ""
"The file already exists in “%s”. Replacing it will overwrite its contents."
msgstr "Датотека већ постоји у „%s“. Ако је замените преписаћете њен садржај."
#: gtk/gtkfilechooserwidget.c:6579 gtk/gtkprintunixdialog.c:677
#: gtk/gtkfilechooserwidget.c:6580 gtk/gtkprintunixdialog.c:677
msgid "_Replace"
msgstr "_Замени"
#: gtk/gtkfilechooserwidget.c:6798
#: gtk/gtkfilechooserwidget.c:6799
msgid "You do not have access to the specified folder."
msgstr "Немате овлашћења за приступ наведеној фасцикли."
#: gtk/gtkfilechooserwidget.c:7421
#: gtk/gtkfilechooserwidget.c:7422
msgid "Could not send the search request"
msgstr "Не могу да пошаљем захтев претраге"
# Треба проверити на шта се односи.
#: gtk/gtkfilechooserwidget.c:7709
#: gtk/gtkfilechooserwidget.c:7710
msgid "Accessed"
msgstr "Датум приступа"
#: gtk/gtkfilechooserwidget.c:8829 gtk/ui/gtkfilechooserwidget.ui:89
#: gtk/gtkfilechooserwidget.c:8830 gtk/ui/gtkfilechooserwidget.ui:89
msgid "Create Folder"
msgstr "Направи фасциклу"
@ -2794,30 +2796,30 @@ msgctxt "input method menu"
msgid "None"
msgstr "Ништа"
#: gtk/gtkimmulticontext.c:615
#: gtk/gtkimmulticontext.c:607
msgctxt "input method menu"
msgid "System"
msgstr "Систем"
#: gtk/gtkimmulticontext.c:694
#: gtk/gtkimmulticontext.c:686
#, c-format
msgctxt "input method menu"
msgid "System (%s)"
msgstr "Систем (%s)"
#: gtk/gtkinfobar.c:1307 gtk/gtkmessagedialog.c:385
#: gtk/gtkinfobar.c:1307 gtk/gtkmessagedialog.c:386
msgid "Information"
msgstr "Обавештење"
#: gtk/gtkinfobar.c:1311 gtk/gtkmessagedialog.c:389
#: gtk/gtkinfobar.c:1311 gtk/gtkmessagedialog.c:390
msgid "Question"
msgstr "Питање"
#: gtk/gtkinfobar.c:1315 gtk/gtkmessagedialog.c:393
#: gtk/gtkinfobar.c:1315 gtk/gtkmessagedialog.c:394
msgid "Warning"
msgstr "Упозорење"
#: gtk/gtkinfobar.c:1319 gtk/gtkmessagedialog.c:397
#: gtk/gtkinfobar.c:1319 gtk/gtkmessagedialog.c:398
msgid "Error"
msgstr "Грешка"
@ -2975,81 +2977,81 @@ msgstr "Приказује Гтк+ опције"
msgid "default:LTR"
msgstr "default:LTR"
#: gtk/gtkmessagedialog.c:956
#: gtk/gtkmessagedialog.c:975
msgid "_No"
msgstr "_Не"
#: gtk/gtkmessagedialog.c:957
#: gtk/gtkmessagedialog.c:976
msgid "_Yes"
msgstr "_Да"
#: gtk/gtkmountoperation.c:595
#: gtk/gtkmountoperation.c:600
msgid "Co_nnect"
msgstr "Поежи се"
#: gtk/gtkmountoperation.c:668
#: gtk/gtkmountoperation.c:673
msgid "Connect As"
msgstr "Повежи се као"
#: gtk/gtkmountoperation.c:677
#: gtk/gtkmountoperation.c:682
msgid "_Anonymous"
msgstr "_Безимено"
#: gtk/gtkmountoperation.c:686
#: gtk/gtkmountoperation.c:691
msgid "Registered U_ser"
msgstr "Као уписани _корисник"
#: gtk/gtkmountoperation.c:697
#: gtk/gtkmountoperation.c:702
msgid "_Username"
msgstr "_Корисничко име"
#: gtk/gtkmountoperation.c:702
#: gtk/gtkmountoperation.c:707
msgid "_Domain"
msgstr "_Домен"
#: gtk/gtkmountoperation.c:711
#: gtk/gtkmountoperation.c:716
msgid "Volume type"
msgstr "Врста јачине звука"
#: gtk/gtkmountoperation.c:721
#: gtk/gtkmountoperation.c:726
msgid "_Hidden"
msgstr "_Скривен"
#: gtk/gtkmountoperation.c:724
#: gtk/gtkmountoperation.c:729
msgid "_Windows system"
msgstr "_Систем прозора"
#: gtk/gtkmountoperation.c:727
#: gtk/gtkmountoperation.c:732
msgid "_PIM"
msgstr "_ПИМ"
#: gtk/gtkmountoperation.c:733
#: gtk/gtkmountoperation.c:738
msgid "_Password"
msgstr "_Лозинка"
#: gtk/gtkmountoperation.c:755
#: gtk/gtkmountoperation.c:760
msgid "Forget password _immediately"
msgstr "_Одмах заборави лозинку"
#: gtk/gtkmountoperation.c:765
#: gtk/gtkmountoperation.c:770
msgid "Remember password until you _logout"
msgstr "Запамти лозинку _до одјављивања"
#: gtk/gtkmountoperation.c:775
#: gtk/gtkmountoperation.c:780
msgid "Remember _forever"
msgstr "Запамти _заувек"
#: gtk/gtkmountoperation.c:1170
#: gtk/gtkmountoperation.c:1175
#, c-format
msgid "Unknown Application (PID %d)"
msgstr "Непознат програм (ПИБ %d)"
#: gtk/gtkmountoperation.c:1355
#: gtk/gtkmountoperation.c:1360
#, c-format
msgid "Unable to end process"
msgstr "Не могу да окончам процес"
#: gtk/gtkmountoperation.c:1389
#: gtk/gtkmountoperation.c:1394
msgid "_End Process"
msgstr "_Окончај процес"
@ -3125,7 +3127,7 @@ msgstr "Управљај произвољним величинама…"
msgid "Page Setup"
msgstr "Поставке странице"
#: gtk/gtkpathbar.c:1571
#: gtk/gtkpathbar.c:1572
msgid "File System Root"
msgstr "Корен система датотека"
@ -3633,42 +3635,42 @@ msgstr "Прикупљам податке о штампачу…"
#. * multiple pages on a sheet when printing
#.
#: gtk/gtkprintunixdialog.c:3120
#: modules/printbackends/cups/gtkprintbackendcups.c:5709
#: modules/printbackends/cups/gtkprintbackendcups.c:5736
msgid "Left to right, top to bottom"
msgstr "С лева на десно, одозго на доле"
#: gtk/gtkprintunixdialog.c:3120
#: modules/printbackends/cups/gtkprintbackendcups.c:5709
#: modules/printbackends/cups/gtkprintbackendcups.c:5736
msgid "Left to right, bottom to top"
msgstr "С лева на десно, одоздо на горе"
#: gtk/gtkprintunixdialog.c:3121
#: modules/printbackends/cups/gtkprintbackendcups.c:5710
#: modules/printbackends/cups/gtkprintbackendcups.c:5737
msgid "Right to left, top to bottom"
msgstr "С десна на лево, одозго на доле"
#: gtk/gtkprintunixdialog.c:3121
#: modules/printbackends/cups/gtkprintbackendcups.c:5710
#: modules/printbackends/cups/gtkprintbackendcups.c:5737
msgid "Right to left, bottom to top"
msgstr "С десна на лево, одоздо на горе"
#: gtk/gtkprintunixdialog.c:3122
#: modules/printbackends/cups/gtkprintbackendcups.c:5711
#: modules/printbackends/cups/gtkprintbackendcups.c:5738
msgid "Top to bottom, left to right"
msgstr "Одозго на доле, с лева на десно"
#: gtk/gtkprintunixdialog.c:3122
#: modules/printbackends/cups/gtkprintbackendcups.c:5711
#: modules/printbackends/cups/gtkprintbackendcups.c:5738
msgid "Top to bottom, right to left"
msgstr "Одозго на доле, с десна на лево"
#: gtk/gtkprintunixdialog.c:3123
#: modules/printbackends/cups/gtkprintbackendcups.c:5712
#: modules/printbackends/cups/gtkprintbackendcups.c:5739
msgid "Bottom to top, left to right"
msgstr "Одоздо на горе, с лева на десно"
#: gtk/gtkprintunixdialog.c:3123
#: modules/printbackends/cups/gtkprintbackendcups.c:5712
#: modules/printbackends/cups/gtkprintbackendcups.c:5739
msgid "Bottom to top, right to left"
msgstr "Одоздо на горе, с десна на лево"
@ -4181,8 +4183,6 @@ msgid "Pango Fontmap"
msgstr "Панго словна мапа"
#: gtk/inspector/general.ui:136
#| msgctxt "input method menu"
#| msgid "X Input Method"
msgid "Input Method"
msgstr "Начин уноса"
@ -7133,7 +7133,6 @@ msgstr "Услуге"
#. used for the application menu on MacOS. %s is replaced with the application name.
#: gtk/ui/gtkapplication-quartz.ui:29
#, c-format
msgid "Hide %s"
msgstr "Сакриј „%s“"
@ -7149,7 +7148,6 @@ msgstr "Покажи све"
#. used for the application menu on MacOS. %s is replaced with the application name.
#: gtk/ui/gtkapplication-quartz.ui:49
#, c-format
msgid "Quit %s"
msgstr "Напусти „%s“"
@ -7399,7 +7397,7 @@ msgstr "_Све странице"
#: gtk/ui/gtkprintunixdialog.ui:216
msgid "C_urrent Page"
msgstr "_Тренутну странице"
msgstr "Трен_утну страницу"
#: gtk/ui/gtkprintunixdialog.ui:233
msgid "Se_lection"
@ -7970,241 +7968,241 @@ msgstr "Одбија послове"
msgid "; "
msgstr "; "
#: modules/printbackends/cups/gtkprintbackendcups.c:4655
#: modules/printbackends/cups/gtkprintbackendcups.c:4722
#: modules/printbackends/cups/gtkprintbackendcups.c:4682
#: modules/printbackends/cups/gtkprintbackendcups.c:4749
msgctxt "printing option"
msgid "Two Sided"
msgstr "Двострано"
#: modules/printbackends/cups/gtkprintbackendcups.c:4656
#: modules/printbackends/cups/gtkprintbackendcups.c:4683
msgctxt "printing option"
msgid "Paper Type"
msgstr "Врста папира"
#: modules/printbackends/cups/gtkprintbackendcups.c:4657
#: modules/printbackends/cups/gtkprintbackendcups.c:4684
msgctxt "printing option"
msgid "Paper Source"
msgstr "Извор папира"
#: modules/printbackends/cups/gtkprintbackendcups.c:4658
#: modules/printbackends/cups/gtkprintbackendcups.c:4723
#: modules/printbackends/cups/gtkprintbackendcups.c:4685
#: modules/printbackends/cups/gtkprintbackendcups.c:4750
msgctxt "printing option"
msgid "Output Tray"
msgstr "Прихватна фиока"
#: modules/printbackends/cups/gtkprintbackendcups.c:4659
#: modules/printbackends/cups/gtkprintbackendcups.c:4686
msgctxt "printing option"
msgid "Resolution"
msgstr "Резолуција"
#: modules/printbackends/cups/gtkprintbackendcups.c:4660
#: modules/printbackends/cups/gtkprintbackendcups.c:4687
msgctxt "printing option"
msgid "GhostScript pre-filtering"
msgstr "Гост скрипт пред-филтрирање"
#: modules/printbackends/cups/gtkprintbackendcups.c:4669
#: modules/printbackends/cups/gtkprintbackendcups.c:4696
msgctxt "printing option value"
msgid "One Sided"
msgstr "Једнострано"
#. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4671
#: modules/printbackends/cups/gtkprintbackendcups.c:4698
msgctxt "printing option value"
msgid "Long Edge (Standard)"
msgstr "По дужој страни (стандардно)"
#. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4673
#: modules/printbackends/cups/gtkprintbackendcups.c:4700
msgctxt "printing option value"
msgid "Short Edge (Flip)"
msgstr "По краћој страни (окренуто)"
#. Translators: this is an option of "Paper Source"
#: modules/printbackends/cups/gtkprintbackendcups.c:4675
#: modules/printbackends/cups/gtkprintbackendcups.c:4677
#: modules/printbackends/cups/gtkprintbackendcups.c:4685
#: modules/printbackends/cups/gtkprintbackendcups.c:4702
#: modules/printbackends/cups/gtkprintbackendcups.c:4704
#: modules/printbackends/cups/gtkprintbackendcups.c:4712
msgctxt "printing option value"
msgid "Auto Select"
msgstr "Сам одреди"
#. Translators: this is an option of "Paper Source"
#. Translators: this is an option of "Resolution"
#: modules/printbackends/cups/gtkprintbackendcups.c:4679
#: modules/printbackends/cups/gtkprintbackendcups.c:4681
#: modules/printbackends/cups/gtkprintbackendcups.c:4683
#: modules/printbackends/cups/gtkprintbackendcups.c:4687
#: modules/printbackends/cups/gtkprintbackendcups.c:4706
#: modules/printbackends/cups/gtkprintbackendcups.c:4708
#: modules/printbackends/cups/gtkprintbackendcups.c:4710
#: modules/printbackends/cups/gtkprintbackendcups.c:4714
msgctxt "printing option value"
msgid "Printer Default"
msgstr "Подразумевано"
#. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4689
#: modules/printbackends/cups/gtkprintbackendcups.c:4716
msgctxt "printing option value"
msgid "Embed GhostScript fonts only"
msgstr "Само угнеждени Гост скрипт словни ликови"
#. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4691
#: modules/printbackends/cups/gtkprintbackendcups.c:4718
msgctxt "printing option value"
msgid "Convert to PS level 1"
msgstr "Преведи у 1° ниво постскрипта"
#. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4693
#: modules/printbackends/cups/gtkprintbackendcups.c:4720
msgctxt "printing option value"
msgid "Convert to PS level 2"
msgstr "Преведи у 2° ниво постскрипта"
#. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4695
#: modules/printbackends/cups/gtkprintbackendcups.c:4722
msgctxt "printing option value"
msgid "No pre-filtering"
msgstr "Без пред-филтрирања"
#. Translators: "Miscellaneous" is the label for a button, that opens
#. up an extra panel of settings in a print dialog.
#: modules/printbackends/cups/gtkprintbackendcups.c:4704
#: modules/printbackends/cups/gtkprintbackendcups.c:4731
msgctxt "printing option group"
msgid "Miscellaneous"
msgstr "Додатна подешавања"
#: modules/printbackends/cups/gtkprintbackendcups.c:4731
#: modules/printbackends/cups/gtkprintbackendcups.c:4758
msgctxt "sides"
msgid "One Sided"
msgstr "Једнострано"
#. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4733
#: modules/printbackends/cups/gtkprintbackendcups.c:4760
msgctxt "sides"
msgid "Long Edge (Standard)"
msgstr "По дужој ивици (стандардно)"
#. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4735
#: modules/printbackends/cups/gtkprintbackendcups.c:4762
msgctxt "sides"
msgid "Short Edge (Flip)"
msgstr "По краћој ивици (окренуто)"
#. Translators: Top output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4738
#: modules/printbackends/cups/gtkprintbackendcups.c:4765
msgctxt "output-bin"
msgid "Top Bin"
msgstr "Горња корпа"
#. Translators: Middle output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4740
#: modules/printbackends/cups/gtkprintbackendcups.c:4767
msgctxt "output-bin"
msgid "Middle Bin"
msgstr "Средња корпа"
#. Translators: Bottom output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4742
#: modules/printbackends/cups/gtkprintbackendcups.c:4769
msgctxt "output-bin"
msgid "Bottom Bin"
msgstr "Доња корпа"
#. Translators: Side output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4744
#: modules/printbackends/cups/gtkprintbackendcups.c:4771
msgctxt "output-bin"
msgid "Side Bin"
msgstr "Корпа са стране"
#. Translators: Left output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4746
#: modules/printbackends/cups/gtkprintbackendcups.c:4773
msgctxt "output-bin"
msgid "Left Bin"
msgstr "Лева корпа"
#. Translators: Right output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4748
#: modules/printbackends/cups/gtkprintbackendcups.c:4775
msgctxt "output-bin"
msgid "Right Bin"
msgstr "Десна корпа"
#. Translators: Center output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4750
#: modules/printbackends/cups/gtkprintbackendcups.c:4777
msgctxt "output-bin"
msgid "Center Bin"
msgstr "Корпа на средини"
#. Translators: Rear output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4752
#: modules/printbackends/cups/gtkprintbackendcups.c:4779
msgctxt "output-bin"
msgid "Rear Bin"
msgstr "Задња корпа"
#. Translators: Output bin where one sided output is oriented in the face-up position
#: modules/printbackends/cups/gtkprintbackendcups.c:4754
#: modules/printbackends/cups/gtkprintbackendcups.c:4781
msgctxt "output-bin"
msgid "Face Up Bin"
msgstr "Корпа на лицу"
#. Translators: Output bin where one sided output is oriented in the face-down position
#: modules/printbackends/cups/gtkprintbackendcups.c:4756
#: modules/printbackends/cups/gtkprintbackendcups.c:4783
msgctxt "output-bin"
msgid "Face Down Bin"
msgstr "Корпа на наличју"
#. Translators: Large capacity output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4758
#: modules/printbackends/cups/gtkprintbackendcups.c:4785
msgctxt "output-bin"
msgid "Large Capacity Bin"
msgstr "Корпа велике запремине"
#. Translators: Output stacker number %d
#: modules/printbackends/cups/gtkprintbackendcups.c:4780
#: modules/printbackends/cups/gtkprintbackendcups.c:4807
#, c-format
msgctxt "output-bin"
msgid "Stacker %d"
msgstr "Одлагач %d"
#. Translators: Output mailbox number %d
#: modules/printbackends/cups/gtkprintbackendcups.c:4784
#: modules/printbackends/cups/gtkprintbackendcups.c:4811
#, c-format
msgctxt "output-bin"
msgid "Mailbox %d"
msgstr "Поштанско сандуче %d"
#. Translators: Private mailbox
#: modules/printbackends/cups/gtkprintbackendcups.c:4788
#: modules/printbackends/cups/gtkprintbackendcups.c:4815
msgctxt "output-bin"
msgid "My Mailbox"
msgstr "Моје сандуче"
#. Translators: Output tray number %d
#: modules/printbackends/cups/gtkprintbackendcups.c:4792
#: modules/printbackends/cups/gtkprintbackendcups.c:4819
#, c-format
msgctxt "output-bin"
msgid "Tray %d"
msgstr "Касета %d"
#: modules/printbackends/cups/gtkprintbackendcups.c:5263
#: modules/printbackends/cups/gtkprintbackendcups.c:5290
msgid "Printer Default"
msgstr "Подразумевано"
#. Translators: These strings name the possible values of the
#. * job priority option in the print dialog
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5704
#: modules/printbackends/cups/gtkprintbackendcups.c:5731
msgid "Urgent"
msgstr "Хитно"
#: modules/printbackends/cups/gtkprintbackendcups.c:5704
#: modules/printbackends/cups/gtkprintbackendcups.c:5731
msgid "High"
msgstr "Важно"
#: modules/printbackends/cups/gtkprintbackendcups.c:5704
#: modules/printbackends/cups/gtkprintbackendcups.c:5731
msgid "Medium"
msgstr "Средње"
#: modules/printbackends/cups/gtkprintbackendcups.c:5704
#: modules/printbackends/cups/gtkprintbackendcups.c:5731
msgid "Low"
msgstr "Небитно"
#. Translators, this string is used to label the job priority option
#. * in the print dialog
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5734
#: modules/printbackends/cups/gtkprintbackendcups.c:5761
msgid "Job Priority"
msgstr "Важност"
@ -8212,41 +8210,41 @@ msgstr "Важност"
#. Translators, this string is used to label the billing info entry
#. * in the print dialog
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5745
#: modules/printbackends/cups/gtkprintbackendcups.c:5772
msgid "Billing Info"
msgstr "Фактурисање"
#: modules/printbackends/cups/gtkprintbackendcups.c:5769
#: modules/printbackends/cups/gtkprintbackendcups.c:5796
msgctxt "cover page"
msgid "None"
msgstr "Ништа"
#: modules/printbackends/cups/gtkprintbackendcups.c:5770
#: modules/printbackends/cups/gtkprintbackendcups.c:5797
msgctxt "cover page"
msgid "Classified"
msgstr "Категорисано"
#: modules/printbackends/cups/gtkprintbackendcups.c:5771
#: modules/printbackends/cups/gtkprintbackendcups.c:5798
msgctxt "cover page"
msgid "Confidential"
msgstr "Поверљиво"
#: modules/printbackends/cups/gtkprintbackendcups.c:5772
#: modules/printbackends/cups/gtkprintbackendcups.c:5799
msgctxt "cover page"
msgid "Secret"
msgstr "Тајно"
#: modules/printbackends/cups/gtkprintbackendcups.c:5773
#: modules/printbackends/cups/gtkprintbackendcups.c:5800
msgctxt "cover page"
msgid "Standard"
msgstr "Обично"
#: modules/printbackends/cups/gtkprintbackendcups.c:5774
#: modules/printbackends/cups/gtkprintbackendcups.c:5801
msgctxt "cover page"
msgid "Top Secret"
msgstr "Строго поверљиво"
#: modules/printbackends/cups/gtkprintbackendcups.c:5775
#: modules/printbackends/cups/gtkprintbackendcups.c:5802
msgctxt "cover page"
msgid "Unclassified"
msgstr "Некатегорисано"
@ -8254,7 +8252,7 @@ msgstr "Некатегорисано"
#. Translators, this string is used to label the pages-per-sheet option
#. * in the print dialog
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5787
#: modules/printbackends/cups/gtkprintbackendcups.c:5814
msgctxt "printer option"
msgid "Pages per Sheet"
msgstr "Страна на листу"
@ -8262,7 +8260,7 @@ msgstr "Страна на листу"
#. Translators, this string is used to label the option in the print
#. * dialog that controls in what order multiple pages are arranged
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5804
#: modules/printbackends/cups/gtkprintbackendcups.c:5831
msgctxt "printer option"
msgid "Page Ordering"
msgstr "Слагање страна"
@ -8270,7 +8268,7 @@ msgstr "Слагање страна"
#. Translators, this is the label used for the option in the print
#. * dialog that controls the front cover page.
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5846
#: modules/printbackends/cups/gtkprintbackendcups.c:5873
msgctxt "printer option"
msgid "Before"
msgstr "Пре"
@ -8278,7 +8276,7 @@ msgstr "Пре"
#. Translators, this is the label used for the option in the print
#. * dialog that controls the back cover page.
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5861
#: modules/printbackends/cups/gtkprintbackendcups.c:5888
msgctxt "printer option"
msgid "After"
msgstr "После"
@ -8287,7 +8285,7 @@ msgstr "После"
#. * a print job is printed. Possible values are 'now', a specified time,
#. * or 'on hold'
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5881
#: modules/printbackends/cups/gtkprintbackendcups.c:5908
msgctxt "printer option"
msgid "Print at"
msgstr "Закажи штампу"
@ -8295,7 +8293,7 @@ msgstr "Закажи штампу"
#. Translators: this is the name of the option that allows the user
#. * to specify a time when a print job will be printed.
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5892
#: modules/printbackends/cups/gtkprintbackendcups.c:5919
msgctxt "printer option"
msgid "Print at time"
msgstr "Штампај у"
@ -8305,18 +8303,18 @@ msgstr "Штампај у"
#. * the width and height in points. E.g: "Custom
#. * 230.4x142.9"
#.
#: modules/printbackends/cups/gtkprintbackendcups.c:5937
#: modules/printbackends/cups/gtkprintbackendcups.c:5964
#, c-format
msgid "Custom %s×%s"
msgstr "Произвољно %s×%s"
#: modules/printbackends/cups/gtkprintbackendcups.c:6047
#: modules/printbackends/cups/gtkprintbackendcups.c:6074
msgctxt "printer option"
msgid "Printer Profile"
msgstr "Профил штампача"
#. TRANSLATORS: this is when color profile information is unavailable
#: modules/printbackends/cups/gtkprintbackendcups.c:6054
#: modules/printbackends/cups/gtkprintbackendcups.c:6081
msgctxt "printer option value"
msgid "Unavailable"
msgstr "Недоступно"

View File

@ -5,5 +5,5 @@
}
#reference2 {
background: url("marble.xpm") no-repeat;
background: url("marble.png") no-repeat;
}

View File

@ -25,7 +25,7 @@
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="file">marble.xpm</property>
<property name="file">marble.png</property>
</object>
<packing>
<property name="expand">False</property>

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

File diff suppressed because one or more lines are too long

View File

@ -305,7 +305,7 @@ test_data = [
'link-coloring.css',
'link-coloring.ref.ui',
'link-coloring.ui',
'marble.xpm',
'marble.png',
'messagedialog-secondarytext.ui',
'messagedialog-secondarytext.ref.ui',
'misc-alignment.css',