Update upstream source from tag 'upstream/3.24.42'

Update to upstream version '3.24.42'
with Debian dir f8814cf53e
This commit is contained in:
Jeremy Bícha 2024-05-28 16:48:03 -04:00
commit f4acf7073e
34 changed files with 19280 additions and 1458 deletions

43
NEWS
View File

@ -1,3 +1,46 @@
Overview of Changes in GTK+ 3.24.42, 15-05-2024
===============================================
* GtkFileChooser:
- Avoid warnings about floating refs
- Improve performance of recursive search
- Populate search model in an idle
* GtkGLArea:
- Fix a regression in transparency handling
* Printing:
- Avoid accessing freed printers
* Accessibility:
- Drop support for the deprecated atk_focus_tracker
* Wayland:
- Fix monitor sizes
- Fix a crash related to tablet removal
- Infer resizable edges for tiled windows
- Always commit soon after acking a configure
* Windows:
- Avoid committing NULL strings to IME
* gdk:
- Use css cursor names as far as possible
- Sync DND cursor use with GTK4
* macOs:
- Fix cocoa pasteboard constants
* build:
- Allow building against sysprof-capture-4
* Translation updates:
Georgian
Hebrew
Kabyle
Persian
Overview of Changes in GTK+ 3.24.41, 23-01-2024 Overview of Changes in GTK+ 3.24.41, 23-01-2024
=============================================== ===============================================

View File

@ -36,12 +36,12 @@ static struct {
const gchar *name; const gchar *name;
GdkCursor *cursor; GdkCursor *cursor;
} drag_cursors[] = { } drag_cursors[] = {
{ GDK_ACTION_DEFAULT, NULL, NULL }, { GDK_ACTION_DEFAULT, NULL, NULL },
{ GDK_ACTION_ASK, "dnd-ask", NULL }, { GDK_ACTION_ASK, "dnd-ask", NULL },
{ GDK_ACTION_COPY, "dnd-copy", NULL }, { GDK_ACTION_COPY, "copy", NULL },
{ GDK_ACTION_MOVE, "dnd-move", NULL }, { GDK_ACTION_MOVE, "dnd-move", NULL },
{ GDK_ACTION_LINK, "dnd-link", NULL }, { GDK_ACTION_LINK, "dnd-link", NULL },
{ 0, "dnd-none", NULL }, { 0, "default", NULL },
}; };
enum { enum {

View File

@ -540,6 +540,30 @@ gdk_cairo_draw_from_gl (cairo_t *cr,
/* Translate to impl coords */ /* Translate to impl coords */
cairo_region_translate (clip_region, dx, dy); cairo_region_translate (clip_region, dx, dy);
if (alpha_size != 0)
{
cairo_region_t *opaque_region, *blend_region;
opaque_region = cairo_region_copy (clip_region);
cairo_region_subtract (opaque_region, impl_window->current_paint.flushed_region);
cairo_region_subtract (opaque_region, impl_window->current_paint.need_blend_region);
if (!cairo_region_is_empty (opaque_region))
gdk_gl_texture_from_surface (impl_window->current_paint.surface,
opaque_region);
blend_region = cairo_region_copy (clip_region);
cairo_region_intersect (blend_region, impl_window->current_paint.need_blend_region);
glEnable (GL_BLEND);
if (!cairo_region_is_empty (blend_region))
gdk_gl_texture_from_surface (impl_window->current_paint.surface,
blend_region);
cairo_region_destroy (opaque_region);
cairo_region_destroy (blend_region);
}
glBindTexture (GL_TEXTURE_2D, source); glBindTexture (GL_TEXTURE_2D, source);
if (gdk_gl_context_get_use_es (paint_context) || if (gdk_gl_context_get_use_es (paint_context) ||

View File

@ -508,7 +508,7 @@ copy_rectangle_argb32 (cairo_surface_t *dest, cairo_surface_t *source,
owner: self owner: self
userInfo: nil]; userInfo: nil];
[self addTrackingArea: trackingArea]; [self addTrackingArea: trackingArea];
trackingRect = (NSInteger)[trackingArea retain]; trackingRect = (NSInteger)trackingArea;
#else #else
trackingRect = [self addTrackingRect: rect trackingRect = [self addTrackingRect: rect
owner: self owner: self

View File

@ -27,6 +27,20 @@
#include <gdk/gdk.h> #include <gdk/gdk.h>
#include <gdk/quartz/gdkquartz.h> #include <gdk/quartz/gdkquartz.h>
#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400
#define GDK_QUARTZ_FILE_PBOARD_TYPE NSURLPboardType
#define GDK_QUARTZ_URL_PBOARD_TYPE NSURLPboardType
#define GDK_QUARTZ_COLOR_PBOARD_TYPE NSColorPboardType
#define GDK_QUARTZ_STRING_PBOARD_TYPE NSStringPboardType
#define GDK_QUARTZ_TIFF_PBOARD_TYPE NSTIFFPboardType
#else
#define GDK_QUARTZ_FILE_PBOARD_TYPE NSPasteboardTypeFileURL
#define GDK_QUARTZ_URL_PBOARD_TYPE NSPasteboardTypeURL
#define GDK_QUARTZ_COLOR_PBOARD_TYPE NSPasteboardTypeColor
#define GDK_QUARTZ_STRING_PBOARD_TYPE NSPasteboardTypeString
#define GDK_QUARTZ_TIFF_PBOARD_TYPE NSPasteboardTypeTIFF
#endif
/* Drag and Drop/Clipboard */ /* Drag and Drop/Clipboard */
GDK_AVAILABLE_IN_ALL GDK_AVAILABLE_IN_ALL
GdkAtom gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type); GdkAtom gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type);

View File

@ -174,19 +174,6 @@ _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay *display,
} }
} }
#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400
#define GDK_QUARTZ_URL_PBOARD_TYPE NSURLPboardType
#define GDK_QUARTZ_COLOR_PBOARD_TYPE NSColorPboardType
#define GDK_QUARTZ_STRING_PBOARD_TYPE NSStringPboardType
#define GDK_QUARTZ_TIFF_PBOARD_TYPE NSTIFFPboardType
#else
#define GDK_QUARTZ_FILE_PBOARD_TYPE NSPasteboardTypeFileURL
#define GDK_QUARTZ_URL_PBOARD_TYPE NSPasteboardTypeURL
#define GDK_QUARTZ_COLOR_PBOARD_TYPE NSPasteboardTypeColor
#define GDK_QUARTZ_STRING_PBOARD_TYPE NSPasteboardTypeString
#define GDK_QUARTZ_TIFF_PBOARD_TYPE NSPasteboardTypeTIFF
#endif
GdkAtom GdkAtom
gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type) gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type)
{ {
@ -196,12 +183,9 @@ gdk_quartz_pasteboard_type_to_atom_libgtk_only (NSString *type)
return gdk_atom_intern_static_string ("image/tiff"); return gdk_atom_intern_static_string ("image/tiff");
else if ([type isEqualToString:GDK_QUARTZ_COLOR_PBOARD_TYPE]) else if ([type isEqualToString:GDK_QUARTZ_COLOR_PBOARD_TYPE])
return gdk_atom_intern_static_string ("application/x-color"); return gdk_atom_intern_static_string ("application/x-color");
else if ([type isEqualToString:GDK_QUARTZ_URL_PBOARD_TYPE]) else if ([type isEqualToString:GDK_QUARTZ_URL_PBOARD_TYPE] ||
[type isEqualToString:GDK_QUARTZ_FILE_PBOARD_TYPE])
return gdk_atom_intern_static_string ("text/uri-list"); return gdk_atom_intern_static_string ("text/uri-list");
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 101400
else if ([type isEqualToString:GDK_QUARTZ_FILE_PBOARD_TYPE])
return gdk_atom_intern_static_string ("text/uri-list");
#endif
else else
return gdk_atom_intern ([type UTF8String], FALSE); return gdk_atom_intern ([type UTF8String], FALSE);
} }

View File

@ -101,6 +101,7 @@ static const struct {
{ "move", "dnd-move" }, { "move", "dnd-move" },
{ "no-drop", "dnd-none" }, { "no-drop", "dnd-none" },
{ "dnd-ask", "dnd-copy" }, /* not CSS, but we want to guarantee it anyway */ { "dnd-ask", "dnd-copy" }, /* not CSS, but we want to guarantee it anyway */
{ "dnd-move", "default" },
{ "not-allowed", "crossed_circle" }, { "not-allowed", "crossed_circle" },
{ "grab", "hand2" }, { "grab", "hand2" },
{ "grabbing", "hand2" }, { "grabbing", "hand2" },
@ -423,6 +424,36 @@ _gdk_wayland_display_get_cursor_for_type_with_scale (GdkDisplay *display,
g_free (cursor_name); g_free (cursor_name);
if (!result)
{
const char *name = NULL;
/* Map cursors back to standard names.
* Currently, we just list the cursor values
* that are used in GTK. More can be added.
*/
switch ((int)cursor_type)
{
case GDK_XTERM:
name = "text";
break;
case GDK_FLEUR:
name = "move";
break;
case GDK_CROSSHAIR:
name = "cross";
break;
default:
name = "default";
break;
}
if (name)
result = _gdk_wayland_display_get_cursor_for_name_with_scale (display,
name,
scale);
}
return result; return result;
} }

View File

@ -4560,7 +4560,10 @@ tablet_pad_handle_leave (void *data,
wp_tablet_pad, surface)); wp_tablet_pad, surface));
if (pad->current_tablet) if (pad->current_tablet)
pad->current_tablet->pads = g_list_remove (pad->current_tablet->pads, pad); {
pad->current_tablet->pads = g_list_remove (pad->current_tablet->pads, pad);
pad->current_tablet = NULL;
}
} }
static void static void

View File

@ -31,11 +31,10 @@ struct _GdkWaylandMonitor {
struct wl_output *output; struct wl_output *output;
struct zxdg_output_v1 *xdg_output; struct zxdg_output_v1 *xdg_output;
/* Size and position, can be either from wl_output or xdg_output */ /* Raw wl_output data */
int32_t x; GdkRectangle output_geometry;
int32_t y; /* Raw xdg_output data */
int32_t width; GdkRectangle xdg_output_geometry;
int32_t height;
char *name; char *name;
gboolean wl_output_done; gboolean wl_output_done;
gboolean xdg_output_done; gboolean xdg_output_done;

View File

@ -1552,17 +1552,43 @@ should_expect_xdg_output_done (GdkWaylandMonitor *monitor)
static void static void
apply_monitor_change (GdkWaylandMonitor *monitor) apply_monitor_change (GdkWaylandMonitor *monitor)
{ {
GDK_NOTE (MISC,
g_message ("monitor %d changed position %d %d, size %d %d",
monitor->id, monitor->output_geometry.x,
monitor->output_geometry.y,
monitor->output_geometry.width,
monitor->output_geometry.height));
GdkDisplay *display = GDK_MONITOR (monitor)->display; GdkDisplay *display = GDK_MONITOR (monitor)->display;
GdkWaylandScreen *screen_wayland = GDK_WAYLAND_SCREEN (gdk_display_get_default_screen (display)); GdkWaylandScreen *screen_wayland = GDK_WAYLAND_SCREEN (gdk_display_get_default_screen (display));
GDK_NOTE (MISC, GdkRectangle logical_geometry;
g_message ("monitor %d changed position %d %d, size %d %d", gboolean needs_scaling = FALSE;
monitor->id,
monitor->x, monitor->y,
monitor->width, monitor->height));
gdk_monitor_set_position (GDK_MONITOR (monitor), monitor->x, monitor->y); if (monitor->xdg_output_done)
gdk_monitor_set_size (GDK_MONITOR (monitor), monitor->width, monitor->height); {
logical_geometry = monitor->xdg_output_geometry;
needs_scaling =
logical_geometry.width == monitor->output_geometry.width ||
logical_geometry.height == monitor->output_geometry.height;
}
else
{
logical_geometry = monitor->output_geometry;
needs_scaling = TRUE;
}
if (needs_scaling)
{
int scale = gdk_monitor_get_scale_factor (GDK_MONITOR (monitor));
logical_geometry.y /= scale;
logical_geometry.x /= scale;
logical_geometry.width /= scale;
logical_geometry.height /= scale;
}
gdk_monitor_set_position (GDK_MONITOR (monitor), logical_geometry.x, logical_geometry.y);
gdk_monitor_set_size (GDK_MONITOR (monitor), logical_geometry.width, logical_geometry.height);
gdk_monitor_set_connector (GDK_MONITOR (monitor), monitor->name); gdk_monitor_set_connector (GDK_MONITOR (monitor), monitor->name);
monitor->wl_output_done = FALSE; monitor->wl_output_done = FALSE;
monitor->xdg_output_done = FALSE; monitor->xdg_output_done = FALSE;
@ -1582,8 +1608,9 @@ xdg_output_handle_logical_position (void *data,
GDK_NOTE (MISC, GDK_NOTE (MISC,
g_message ("handle logical position xdg-output %d, position %d %d", g_message ("handle logical position xdg-output %d, position %d %d",
monitor->id, x, y)); monitor->id, x, y));
monitor->x = x;
monitor->y = y; monitor->xdg_output_geometry.x = x;
monitor->xdg_output_geometry.y = y;
} }
static void static void
@ -1597,8 +1624,9 @@ xdg_output_handle_logical_size (void *data,
GDK_NOTE (MISC, GDK_NOTE (MISC,
g_message ("handle logical size xdg-output %d, size %d %d", g_message ("handle logical size xdg-output %d, size %d %d",
monitor->id, width, height)); monitor->id, width, height));
monitor->width = width;
monitor->height = height; monitor->xdg_output_geometry.width = width;
monitor->xdg_output_geometry.height = height;
} }
static void static void
@ -1685,8 +1713,8 @@ output_handle_geometry (void *data,
g_message ("handle geometry output %d, position %d %d, phys. size %d %d, subpixel layout %s, manufacturer %s, model %s, transform %s", g_message ("handle geometry output %d, position %d %d, phys. size %d %d, subpixel layout %s, manufacturer %s, model %s, transform %s",
monitor->id, x, y, physical_width, physical_height, subpixel_to_string (subpixel), make, model, transform_to_string (transform))); monitor->id, x, y, physical_width, physical_height, subpixel_to_string (subpixel), make, model, transform_to_string (transform)));
monitor->x = x; monitor->output_geometry.x = x;
monitor->y = y; monitor->output_geometry.y = y;
switch (transform) switch (transform)
{ {
@ -1731,29 +1759,13 @@ output_handle_scale (void *data,
int32_t scale) int32_t scale)
{ {
GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)data; GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)data;
GdkRectangle previous_geometry;
int previous_scale;
int width;
int height;
GDK_NOTE (MISC, GDK_NOTE (MISC,
g_message ("handle scale output %d, scale %d", monitor->id, scale)); g_message ("handle scale output %d, scale %d", monitor->id, scale));
gdk_monitor_get_geometry (GDK_MONITOR (monitor), &previous_geometry);
previous_scale = gdk_monitor_get_scale_factor (GDK_MONITOR (monitor));
/* Set the scale from wl_output protocol, regardless of xdg-output support */ /* Set the scale from wl_output protocol, regardless of xdg-output support */
gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), scale); gdk_monitor_set_scale_factor (GDK_MONITOR (monitor), scale);
if (monitor_has_xdg_output (monitor))
return;
width = previous_geometry.width * previous_scale;
height = previous_geometry.height * previous_scale;
monitor->width = width / scale;
monitor->height = height / scale;
if (should_update_monitor (monitor)) if (should_update_monitor (monitor))
apply_monitor_change (monitor); apply_monitor_change (monitor);
} }
@ -1767,7 +1779,6 @@ output_handle_mode (void *data,
int refresh) int refresh)
{ {
GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)data; GdkWaylandMonitor *monitor = (GdkWaylandMonitor *)data;
int scale;
GDK_NOTE (MISC, GDK_NOTE (MISC,
g_message ("handle mode output %d, size %d %d, rate %d", g_message ("handle mode output %d, size %d %d, rate %d",
@ -1776,9 +1787,8 @@ output_handle_mode (void *data,
if ((flags & WL_OUTPUT_MODE_CURRENT) == 0) if ((flags & WL_OUTPUT_MODE_CURRENT) == 0)
return; return;
scale = gdk_monitor_get_scale_factor (GDK_MONITOR (monitor)); monitor->output_geometry.width = width;
monitor->width = width / scale; monitor->output_geometry.height = height;
monitor->height = height / scale;
gdk_monitor_set_refresh_rate (GDK_MONITOR (monitor), refresh); gdk_monitor_set_refresh_rate (GDK_MONITOR (monitor), refresh);
if (should_update_monitor (monitor) || !monitor_has_xdg_output (monitor)) if (should_update_monitor (monitor) || !monitor_has_xdg_output (monitor))

View File

@ -1082,6 +1082,14 @@ gdk_window_impl_wayland_end_paint (GdkWindow *window)
impl->pending_commit = TRUE; impl->pending_commit = TRUE;
} }
else if (window->current_paint.use_gl &&
window->current_paint.surface_needs_composite &&
impl->pending_commit)
{
/* Discard issuing pending commit, as when we reach here, it means it'll
* be done implicitly by eglSwapBuffers(). */
impl->pending_commit = FALSE;
}
gdk_wayland_window_sync_margin (window); gdk_wayland_window_sync_margin (window);
gdk_wayland_window_sync_opaque_region (window); gdk_wayland_window_sync_opaque_region (window);
@ -1664,6 +1672,49 @@ should_use_fixed_size (GdkWindowState state)
GDK_WINDOW_STATE_TILED); GDK_WINDOW_STATE_TILED);
} }
static gboolean
has_per_edge_tiling_info (GdkWindowState state)
{
return state & (GDK_WINDOW_STATE_TOP_TILED |
GDK_WINDOW_STATE_RIGHT_TILED |
GDK_WINDOW_STATE_BOTTOM_TILED |
GDK_WINDOW_STATE_LEFT_TILED);
}
static GdkWindowState
infer_edge_constraints (GdkWindowState state)
{
if (state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN))
return state;
if (!(state & GDK_WINDOW_STATE_TILED) || !has_per_edge_tiling_info (state))
return state |
GDK_WINDOW_STATE_TOP_RESIZABLE |
GDK_WINDOW_STATE_RIGHT_RESIZABLE |
GDK_WINDOW_STATE_BOTTOM_RESIZABLE |
GDK_WINDOW_STATE_LEFT_RESIZABLE;
if (!(state & GDK_WINDOW_STATE_TOP_TILED))
state |= GDK_WINDOW_STATE_TOP_RESIZABLE;
if (!(state & GDK_WINDOW_STATE_RIGHT_TILED))
state |= GDK_WINDOW_STATE_RIGHT_RESIZABLE;
if (!(state & GDK_WINDOW_STATE_BOTTOM_TILED))
state |= GDK_WINDOW_STATE_BOTTOM_RESIZABLE;
if (!(state & GDK_WINDOW_STATE_LEFT_TILED))
state |= GDK_WINDOW_STATE_LEFT_RESIZABLE;
return state;
}
static gboolean
supports_native_edge_constraints (GdkWindowImplWayland *impl)
{
struct gtk_surface1 *gtk_surface = impl->display_server.gtk_surface;
if (!gtk_surface)
return FALSE;
return gtk_surface1_get_version (gtk_surface) >= GTK_SURFACE1_CONFIGURE_EDGES_SINCE_VERSION;
}
static void static void
gdk_wayland_window_handle_configure (GdkWindow *window, gdk_wayland_window_handle_configure (GdkWindow *window,
uint32_t serial) uint32_t serial)
@ -1671,6 +1722,7 @@ gdk_wayland_window_handle_configure (GdkWindow *window,
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
GdkWaylandDisplay *display_wayland = GdkWaylandDisplay *display_wayland =
GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)); GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
GdkFrameClock *frame_clock = gdk_window_get_frame_clock (window);
GdkWindowState new_state; GdkWindowState new_state;
gboolean suspended; gboolean suspended;
int width = impl->pending.width; int width = impl->pending.width;
@ -1712,6 +1764,9 @@ gdk_wayland_window_handle_configure (GdkWindow *window,
new_state = impl->pending.state; new_state = impl->pending.state;
impl->pending.state = 0; impl->pending.state = 0;
if (!supports_native_edge_constraints (impl))
new_state = infer_edge_constraints (new_state);
fixed_size = should_use_fixed_size (new_state); fixed_size = should_use_fixed_size (new_state);
saved_size = (width == 0 && height == 0); saved_size = (width == 0 && height == 0);
@ -1817,6 +1872,10 @@ gdk_wayland_window_handle_configure (GdkWindow *window,
if (impl->hint != GDK_WINDOW_TYPE_HINT_DIALOG && if (impl->hint != GDK_WINDOW_TYPE_HINT_DIALOG &&
new_state & GDK_WINDOW_STATE_FOCUSED) new_state & GDK_WINDOW_STATE_FOCUSED)
gdk_wayland_window_update_dialogs (window); gdk_wayland_window_update_dialogs (window);
impl->pending_commit = TRUE;
gdk_frame_clock_request_phase (frame_clock,
GDK_FRAME_CLOCK_PHASE_AFTER_PAINT);
} }
static void static void

View File

@ -525,11 +525,9 @@ gail_focus_notify (GtkWidget *widget)
/* /*
* Do not report focus on redundant object * Do not report focus on redundant object
*/ */
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
if (atk_obj && if (atk_obj &&
(atk_object_get_role(atk_obj) != ATK_ROLE_REDUNDANT_OBJECT)) (atk_object_get_role(atk_obj) != ATK_ROLE_REDUNDANT_OBJECT))
atk_focus_tracker_notify (atk_obj); atk_object_notify_state_change (atk_obj, ATK_STATE_FOCUSED, TRUE);
G_GNUC_END_IGNORE_DEPRECATIONS;
if (atk_obj && transient) if (atk_obj && transient)
g_object_unref (atk_obj); g_object_unref (atk_obj);
if (subsequent_focus_widget) if (subsequent_focus_widget)

View File

@ -1297,8 +1297,8 @@ gtk_handle_box_button_press (GtkWidget *widget,
} }
priv->in_drag = TRUE; priv->in_drag = TRUE;
priv->grab_device = event->device; priv->grab_device = event->device;
fleur = gdk_cursor_new_for_display (gtk_widget_get_display (widget), fleur = gdk_cursor_new_from_name (gtk_widget_get_display (widget),
GDK_FLEUR); "move");
if (gdk_device_grab (event->device, if (gdk_device_grab (event->device,
gtk_widget_get_window (invisible), gtk_widget_get_window (invisible),
GDK_OWNERSHIP_WINDOW, GDK_OWNERSHIP_WINDOW,

View File

@ -616,8 +616,8 @@ set_cross_grab (GtkHSV *hsv,
GtkHSVPrivate *priv = hsv->priv; GtkHSVPrivate *priv = hsv->priv;
GdkCursor *cursor; GdkCursor *cursor;
cursor = gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (hsv)), cursor = gdk_cursor_new_from_name (gtk_widget_get_display (GTK_WIDGET (hsv)),
GDK_CROSSHAIR); "crosshair");
gdk_device_grab (device, gdk_device_grab (device,
priv->window, priv->window,
GDK_OWNERSHIP_NONE, GDK_OWNERSHIP_NONE,

View File

@ -170,7 +170,6 @@ gtk_box_gadget_distribute (GtkBoxGadget *gadget,
if G_UNLIKELY (size < 0) if G_UNLIKELY (size < 0)
{ {
g_critical ("%s: assertion 'size >= 0' failed in %s", G_STRFUNC, G_OBJECT_TYPE_NAME (gtk_css_gadget_get_owner (GTK_CSS_GADGET (gadget))));
return; return;
} }

View File

@ -966,7 +966,7 @@ pack_border (GtkCssShorthandProperty *shorthand,
{ {
GtkCssStyleProperty *prop; GtkCssStyleProperty *prop;
GtkBorder border; GtkBorder border;
GValue v; GValue v = G_VALUE_INIT;
prop = _gtk_css_shorthand_property_get_subproperty (shorthand, 0); prop = _gtk_css_shorthand_property_get_subproperty (shorthand, 0);
_gtk_style_property_query (GTK_STYLE_PROPERTY (prop), &v, query_func, query_data); _gtk_style_property_query (GTK_STYLE_PROPERTY (prop), &v, query_func, query_data);

View File

@ -4724,7 +4724,7 @@ gtk_entry_drag_gesture_update (GtkGestureDrag *gesture,
button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture));
gtk_drag_begin_with_coordinates (widget, target_list, actions, gtk_drag_begin_with_coordinates (widget, target_list, actions,
button, (GdkEvent*) event, button, (GdkEvent*) event,
priv->drag_start_x + ranges[0], priv->drag_start_x + (n_ranges > 0 ? ranges[0] : 0),
priv->drag_start_y); priv->drag_start_y);
g_free (ranges); g_free (ranges);
@ -9931,7 +9931,7 @@ gtk_entry_drag_begin (GtkWidget *widget,
gtk_entry_get_pixel_ranges (entry, &ranges, &n_ranges); gtk_entry_get_pixel_ranges (entry, &ranges, &n_ranges);
cairo_surface_get_device_scale (surface, &sx, &sy); cairo_surface_get_device_scale (surface, &sx, &sy);
cairo_surface_set_device_offset (surface, cairo_surface_set_device_offset (surface,
-(priv->drag_start_x - ranges[0]) * sx, -(priv->drag_start_x - (n_ranges > 0 ? ranges[0] : 0)) * sx,
-(priv->drag_start_y) * sy); -(priv->drag_start_y) * sy);
g_free (ranges); g_free (ranges);

View File

@ -759,6 +759,7 @@ refresh_current_folder_and_file_part (GtkFileChooserEntry *chooser_entry)
filter = gtk_file_filter_new (); filter = gtk_file_filter_new ();
pattern = g_strconcat (chooser_entry->file_part, "*", NULL); pattern = g_strconcat (chooser_entry->file_part, "*", NULL);
gtk_file_filter_add_pattern (filter, pattern); gtk_file_filter_add_pattern (filter, pattern);
g_object_ref_sink (filter);
_gtk_file_system_model_set_filter (GTK_FILE_SYSTEM_MODEL (chooser_entry->completion_store), _gtk_file_system_model_set_filter (GTK_FILE_SYSTEM_MODEL (chooser_entry->completion_store),
filter); filter);

View File

@ -5455,8 +5455,8 @@ gtk_label_create_window (GtkLabel *label)
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_NOREDIR; attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_NOREDIR;
if (gtk_widget_is_sensitive (widget) && priv->select_info->selectable) if (gtk_widget_is_sensitive (widget) && priv->select_info->selectable)
{ {
attributes.cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), attributes.cursor = gdk_cursor_new_from_name (gtk_widget_get_display (widget),
GDK_XTERM); "text");
attributes_mask |= GDK_WA_CURSOR; attributes_mask |= GDK_WA_CURSOR;
} }

View File

@ -195,7 +195,8 @@ indicator_is_left (GtkWidget *widget)
} }
static void static void
gtk_model_button_update_state (GtkModelButton *button) gtk_model_button_update_state (GtkModelButton *button,
GtkStateFlags previous_flags)
{ {
GtkStateFlags state; GtkStateFlags state;
GtkStateFlags indicator_state; GtkStateFlags indicator_state;
@ -252,9 +253,10 @@ gtk_model_button_update_state (GtkModelButton *button)
button->role == GTK_BUTTON_ROLE_RADIO) button->role == GTK_BUTTON_ROLE_RADIO)
{ {
AtkObject *object = _gtk_widget_peek_accessible (GTK_WIDGET (button)); AtkObject *object = _gtk_widget_peek_accessible (GTK_WIDGET (button));
if (object) gboolean was_checked = (previous_flags & GTK_STATE_FLAG_CHECKED) != 0;
atk_object_notify_state_change (object, ATK_STATE_CHECKED, gboolean is_checked = (indicator_state & GTK_STATE_FLAG_CHECKED) != 0;
(indicator_state & GTK_STATE_FLAG_CHECKED)); if (object && (was_checked != is_checked))
atk_object_notify_state_change (object, ATK_STATE_CHECKED, is_checked);
} }
} }
@ -290,7 +292,7 @@ static void
gtk_model_button_state_flags_changed (GtkWidget *widget, gtk_model_button_state_flags_changed (GtkWidget *widget,
GtkStateFlags previous_flags) GtkStateFlags previous_flags)
{ {
gtk_model_button_update_state (GTK_MODEL_BUTTON (widget)); gtk_model_button_update_state (GTK_MODEL_BUTTON (widget), previous_flags);
GTK_WIDGET_CLASS (gtk_model_button_parent_class)->state_flags_changed (widget, previous_flags); GTK_WIDGET_CLASS (gtk_model_button_parent_class)->state_flags_changed (widget, previous_flags);
} }
@ -301,7 +303,7 @@ gtk_model_button_direction_changed (GtkWidget *widget,
{ {
GtkModelButton *button = GTK_MODEL_BUTTON (widget); GtkModelButton *button = GTK_MODEL_BUTTON (widget);
gtk_model_button_update_state (button); gtk_model_button_update_state (button, GTK_STATE_FLAG_NORMAL);
update_node_ordering (button); update_node_ordering (button);
GTK_WIDGET_CLASS (gtk_model_button_parent_class)->direction_changed (widget, previous_dir); GTK_WIDGET_CLASS (gtk_model_button_parent_class)->direction_changed (widget, previous_dir);
@ -370,7 +372,7 @@ gtk_model_button_set_role (GtkModelButton *button,
update_node_name (button); update_node_name (button);
gtk_model_button_update_state (button); gtk_model_button_update_state (button, GTK_STATE_FLAG_NORMAL);
gtk_widget_queue_draw (GTK_WIDGET (button)); gtk_widget_queue_draw (GTK_WIDGET (button));
g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_ROLE]); g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_ROLE]);
} }
@ -428,7 +430,7 @@ gtk_model_button_set_active (GtkModelButton *button,
return; return;
button->active = active; button->active = active;
gtk_model_button_update_state (button); gtk_model_button_update_state (button, GTK_STATE_FLAG_NORMAL);
gtk_widget_queue_draw (GTK_WIDGET (button)); gtk_widget_queue_draw (GTK_WIDGET (button));
g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_ACTIVE]); g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_ACTIVE]);
} }
@ -441,7 +443,7 @@ gtk_model_button_set_menu_name (GtkModelButton *button,
button->menu_name = g_strdup (menu_name); button->menu_name = g_strdup (menu_name);
update_node_name (button); update_node_name (button);
gtk_model_button_update_state (button); gtk_model_button_update_state (button, GTK_STATE_FLAG_NORMAL);
gtk_widget_queue_resize (GTK_WIDGET (button)); gtk_widget_queue_resize (GTK_WIDGET (button));
g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_MENU_NAME]); g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_MENU_NAME]);
@ -456,7 +458,7 @@ gtk_model_button_set_inverted (GtkModelButton *button,
return; return;
button->inverted = inverted; button->inverted = inverted;
gtk_model_button_update_state (button); gtk_model_button_update_state (button, GTK_STATE_FLAG_NORMAL);
update_node_ordering (button); update_node_ordering (button);
gtk_widget_queue_resize (GTK_WIDGET (button)); gtk_widget_queue_resize (GTK_WIDGET (button));
g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_INVERTED]); g_object_notify_by_pspec (G_OBJECT (button), properties[PROP_INVERTED]);
@ -1106,7 +1108,7 @@ gtk_model_button_get_accessible (GtkWidget *widget)
object = GTK_WIDGET_CLASS (gtk_model_button_parent_class)->get_accessible (widget); object = GTK_WIDGET_CLASS (gtk_model_button_parent_class)->get_accessible (widget);
gtk_model_button_update_state (GTK_MODEL_BUTTON (widget)); gtk_model_button_update_state (GTK_MODEL_BUTTON (widget), GTK_STATE_FLAG_NORMAL);
return object; return object;
} }

View File

@ -186,7 +186,7 @@ _gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
selection_data->display = gdk_display_get_default (); selection_data->display = gdk_display_get_default ();
if (target == gdk_atom_intern_static_string ("UTF8_STRING")) if (target == gdk_atom_intern_static_string ("UTF8_STRING"))
{ {
NSString *s = [pasteboard stringForType:NSStringPboardType]; NSString *s = [pasteboard stringForType:GDK_QUARTZ_STRING_PBOARD_TYPE];
if (s) if (s)
{ {
@ -237,7 +237,8 @@ _gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
gtk_selection_data_set_uris (selection_data, uris); gtk_selection_data_set_uris (selection_data, uris);
g_free (uris); g_free (uris);
} }
else if ([[pasteboard types] containsObject:NSURLPboardType]) else if ([[pasteboard types] containsObject:GDK_QUARTZ_URL_PBOARD_TYPE] ||
[[pasteboard types] containsObject:GDK_QUARTZ_FILE_PBOARD_TYPE])
{ {
gchar *uris[2]; gchar *uris[2];
NSURL *url = [NSURL URLFromPasteboard:pasteboard]; NSURL *url = [NSURL URLFromPasteboard:pasteboard];
@ -258,7 +259,7 @@ _gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
name = gdk_atom_name (target); name = gdk_atom_name (target);
if (strcmp (name, "image/tiff") == 0) if (strcmp (name, "image/tiff") == 0)
data = [pasteboard dataForType:NSTIFFPboardType]; data = [pasteboard dataForType:GDK_QUARTZ_TIFF_PBOARD_TYPE];
else else
data = [pasteboard dataForType:[NSString stringWithUTF8String:name]]; data = [pasteboard dataForType:[NSString stringWithUTF8String:name]];
@ -292,10 +293,10 @@ _gtk_quartz_set_selection_data_for_pasteboard (NSPasteboard *pasteboard,
type = gdk_quartz_atom_to_pasteboard_type_libgtk_only (gtk_selection_data_get_target (selection_data)); type = gdk_quartz_atom_to_pasteboard_type_libgtk_only (gtk_selection_data_get_target (selection_data));
if ([type isEqualTo:NSStringPboardType]) if ([type isEqualTo:GDK_QUARTZ_STRING_PBOARD_TYPE])
[pasteboard setString:[NSString stringWithUTF8String:(const char *)data] [pasteboard setString:[NSString stringWithUTF8String:(const char *)data]
forType:type]; forType:type];
else if ([type isEqualTo:NSColorPboardType]) else if ([type isEqualTo:GDK_QUARTZ_COLOR_PBOARD_TYPE])
{ {
guint16 *color = (guint16 *)data; guint16 *color = (guint16 *)data;
float red, green, blue, alpha; float red, green, blue, alpha;
@ -309,7 +310,7 @@ _gtk_quartz_set_selection_data_for_pasteboard (NSPasteboard *pasteboard,
nscolor = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha]; nscolor = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha];
[nscolor writeToPasteboard:pasteboard]; [nscolor writeToPasteboard:pasteboard];
} }
else if ([type isEqualTo:NSURLPboardType]) else if ([type isEqualTo:GDK_QUARTZ_URL_PBOARD_TYPE])
{ {
gchar **uris; gchar **uris;

View File

@ -241,7 +241,7 @@ gtk_render_arrow (GtkStyleContext *context,
* *
* ![](background.png) * ![](background.png)
* *
* Since: 3.0. * Since: 3.0
**/ **/
void void
gtk_render_background (GtkStyleContext *context, gtk_render_background (GtkStyleContext *context,

View File

@ -34,12 +34,14 @@
#include "gtksearchenginetracker3.h" #include "gtksearchenginetracker3.h"
#define N_RESULT_BATCH_ITEMS 50
#define MINER_FS_BUS_NAME "org.freedesktop.Tracker3.Miner.Files" #define MINER_FS_BUS_NAME "org.freedesktop.Tracker3.Miner.Files"
#define SEARCH_QUERY_BASE(__PATTERN__) \ #define SEARCH_QUERY_BASE(__PATTERN__) \
"SELECT ?url " \ "SELECT ?url " \
" nfo:fileName(?urn) " \ " nfo:fileName(?urn) " \
" nie:mimeType(?urn)" \ " nie:mimeType(?ie)" \
" nfo:fileSize(?urn)" \ " nfo:fileSize(?urn)" \
" nfo:fileLastModified(?urn)" \ " nfo:fileLastModified(?urn)" \
"FROM tracker:FileSystem " \ "FROM tracker:FileSystem " \
@ -47,12 +49,13 @@
" ?urn a nfo:FileDataObject ;" \ " ?urn a nfo:FileDataObject ;" \
" nie:url ?url ; " \ " nie:url ?url ; " \
" fts:match ~match . " \ " fts:match ~match . " \
" OPTIONAL { ?urn nie:interpretedAs ?ie } ." \
__PATTERN__ \ __PATTERN__ \
"} " \ "} " \
"ORDER BY DESC(fts:rank(?urn)) DESC(?url)" "ORDER BY ASC(?url)"
#define SEARCH_QUERY SEARCH_QUERY_BASE("") #define SEARCH_QUERY SEARCH_QUERY_BASE("")
#define SEARCH_RECURSIVE_QUERY SEARCH_QUERY_BASE("?urn (nfo:belongsToContainer/nie:isStoredAs)+/nie:url ~location") #define SEARCH_RECURSIVE_QUERY SEARCH_QUERY_BASE("FILTER (STRSTARTS (?url, CONCAT (~location, '/')))")
#define SEARCH_LOCATION_QUERY SEARCH_QUERY_BASE("?urn nfo:belongsToContainer/nie:isStoredAs/nie:url ~location") #define SEARCH_LOCATION_QUERY SEARCH_QUERY_BASE("?urn nfo:belongsToContainer/nie:isStoredAs/nie:url ~location")
#define FILE_CHECK_QUERY "ASK { ?urn nie:url ~url }" #define FILE_CHECK_QUERY "ASK { ?urn nie:url ~url }"
@ -65,6 +68,7 @@ struct _GtkSearchEngineTracker3
TrackerSparqlStatement *search_location_query; TrackerSparqlStatement *search_location_query;
TrackerSparqlStatement *file_check_query; TrackerSparqlStatement *file_check_query;
GCancellable *cancellable; GCancellable *cancellable;
guint idle_id;
GtkQuery *query; GtkQuery *query;
gboolean query_pending; gboolean query_pending;
}; };
@ -74,6 +78,13 @@ struct _GtkSearchEngineTracker3Class
GtkSearchEngineClass parent_class; GtkSearchEngineClass parent_class;
}; };
typedef struct
{
TrackerSparqlCursor *cursor;
GtkSearchEngineTracker3 *engine;
gboolean got_results;
} CursorData;
static void gtk_search_engine_tracker3_initable_iface_init (GInitableIface *iface); static void gtk_search_engine_tracker3_initable_iface_init (GInitableIface *iface);
G_DEFINE_TYPE_WITH_CODE (GtkSearchEngineTracker3, G_DEFINE_TYPE_WITH_CODE (GtkSearchEngineTracker3,
@ -97,6 +108,8 @@ finalize (GObject *object)
g_object_unref (engine->cancellable); g_object_unref (engine->cancellable);
} }
g_clear_handle_id (&engine->idle_id, g_source_remove);
g_clear_object (&engine->search_query); g_clear_object (&engine->search_query);
g_clear_object (&engine->search_location_query); g_clear_object (&engine->search_location_query);
g_clear_object (&engine->file_check_query); g_clear_object (&engine->file_check_query);
@ -133,7 +146,18 @@ create_file_info (TrackerSparqlCursor *cursor)
str = tracker_sparql_cursor_get_string (cursor, 2, NULL); str = tracker_sparql_cursor_get_string (cursor, 2, NULL);
if (str) if (str)
g_file_info_set_content_type (info, str); {
g_file_info_set_content_type (info, str);
g_file_info_set_attribute_uint32 (info, "standard::type",
strcmp (str, "inode/directory") == 0 ?
G_FILE_TYPE_DIRECTORY :
G_FILE_TYPE_REGULAR);
}
else
{
g_file_info_set_content_type (info, "application/text");
g_file_info_set_attribute_uint32 (info, "standard::type", G_FILE_TYPE_UNKNOWN);
}
g_file_info_set_size (info, g_file_info_set_size (info,
tracker_sparql_cursor_get_integer (cursor, 3)); tracker_sparql_cursor_get_integer (cursor, 3));
@ -149,6 +173,59 @@ create_file_info (TrackerSparqlCursor *cursor)
return info; return info;
} }
static gboolean
handle_cursor_idle_cb (gpointer user_data)
{
CursorData *data = user_data;
GtkSearchEngineTracker3 *engine = data->engine;
TrackerSparqlCursor *cursor = data->cursor;
gboolean has_next;
GList *hits = NULL;
GtkSearchHit *hit;
int i = 0;
for (i = 0; i < N_RESULT_BATCH_ITEMS; i++)
{
const gchar *url;
has_next = tracker_sparql_cursor_next (cursor, NULL, NULL);
if (!has_next)
break;
url = tracker_sparql_cursor_get_string (cursor, 0, NULL);
hit = g_slice_new0 (GtkSearchHit);
hit->file = g_file_new_for_uri (url);
hit->info = create_file_info (cursor);
hits = g_list_prepend (hits, hit);
data->got_results = TRUE;
}
_gtk_search_engine_hits_added (GTK_SEARCH_ENGINE (engine), hits);
g_list_free_full (hits, free_hit);
if (has_next)
return G_SOURCE_CONTINUE;
else
{
engine->idle_id = 0;
return G_SOURCE_REMOVE;
}
}
static void
cursor_data_free (gpointer user_data)
{
CursorData *data = user_data;
tracker_sparql_cursor_close (data->cursor);
_gtk_search_engine_finished (GTK_SEARCH_ENGINE (data->engine),
data->got_results);
g_object_unref (data->cursor);
g_object_unref (data->engine);
g_free (data);
}
static void static void
query_callback (TrackerSparqlStatement *statement, query_callback (TrackerSparqlStatement *statement,
GAsyncResult *res, GAsyncResult *res,
@ -156,9 +233,8 @@ query_callback (TrackerSparqlStatement *statement,
{ {
GtkSearchEngineTracker3 *engine; GtkSearchEngineTracker3 *engine;
TrackerSparqlCursor *cursor; TrackerSparqlCursor *cursor;
GList *hits = NULL;
GError *error = NULL; GError *error = NULL;
GtkSearchHit *hit; CursorData *data;
engine = GTK_SEARCH_ENGINE_TRACKER3 (user_data); engine = GTK_SEARCH_ENGINE_TRACKER3 (user_data);
@ -174,25 +250,14 @@ query_callback (TrackerSparqlStatement *statement,
return; return;
} }
while (tracker_sparql_cursor_next (cursor, NULL, NULL)) data = g_new0 (CursorData, 1);
{ data->cursor = cursor;
const gchar *url; data->engine = engine;
url = tracker_sparql_cursor_get_string (cursor, 0, NULL); engine->idle_id =
hit = g_slice_new0 (GtkSearchHit); g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
hit->file = g_file_new_for_uri (url); handle_cursor_idle_cb,
hit->info = create_file_info (cursor); data, cursor_data_free);
hits = g_list_prepend (hits, hit);
}
tracker_sparql_cursor_close (cursor);
_gtk_search_engine_hits_added (GTK_SEARCH_ENGINE (engine), hits);
_gtk_search_engine_finished (GTK_SEARCH_ENGINE (engine), hits != NULL);
g_list_free_full (hits, free_hit);
g_object_unref (engine);
g_object_unref (cursor);
} }
static void static void
@ -219,11 +284,15 @@ gtk_search_engine_tracker3_start (GtkSearchEngine *engine)
return; return;
} }
tracker->query_pending = TRUE;
search_text = gtk_query_get_text (tracker->query); search_text = gtk_query_get_text (tracker->query);
location = gtk_query_get_location (tracker->query); location = gtk_query_get_location (tracker->query);
recursive = _gtk_search_engine_get_recursive (engine); recursive = _gtk_search_engine_get_recursive (engine);
if (strlen (search_text) <= 1)
return;
tracker->query_pending = TRUE;
if (location) if (location)
{ {
gchar *location_uri = g_file_get_uri (location); gchar *location_uri = g_file_get_uri (location);
@ -271,6 +340,8 @@ gtk_search_engine_tracker3_stop (GtkSearchEngine *engine)
g_cancellable_cancel (tracker->cancellable); g_cancellable_cancel (tracker->cancellable);
tracker->query_pending = FALSE; tracker->query_pending = FALSE;
} }
g_clear_handle_id (&tracker->idle_id, g_source_remove);
} }
static void static void

View File

@ -1,5 +1,5 @@
project('gtk+', 'c', project('gtk+', 'c',
version: '3.24.41', version: '3.24.42',
default_options: [ default_options: [
'buildtype=debugoptimized', 'buildtype=debugoptimized',
'warning_level=1' 'warning_level=1'
@ -833,7 +833,10 @@ endif
profiler_enabled = get_option('profiler') profiler_enabled = get_option('profiler')
if profiler_enabled if profiler_enabled
profiler_dep = dependency('sysprof-capture-3', static: true, required: true) profiler_dep = dependency('sysprof-capture-3', static: true, required: false)
if not profiler_dep.found()
profiler_dep = dependency('sysprof-capture-4', static: true, required: false)
endif
if profiler_dep.found() if profiler_dep.found()
cdata.set('HAVE_SYSPROF_CAPTURE', profiler_dep.found()) cdata.set('HAVE_SYSPROF_CAPTURE', profiler_dep.found())
else else

View File

@ -336,6 +336,9 @@ gtk_im_context_ime_filter_keypress (GtkIMContext *context,
return FALSE; return FALSE;
utf8 = g_utf16_to_utf8 (event_priv->translation, event_priv->translation_len, NULL, NULL, NULL); utf8 = g_utf16_to_utf8 (event_priv->translation, event_priv->translation_len, NULL, NULL, NULL);
if (!utf8)
return FALSE;
g_signal_emit_by_name (context_ime, "commit", utf8); g_signal_emit_by_name (context_ime, "commit", utf8);
g_free (utf8); g_free (utf8);

View File

@ -3690,6 +3690,19 @@ avahi_request_printer_list (GtkPrintBackendCups *cups_backend)
g_bus_get (G_BUS_TYPE_SYSTEM, cups_backend->avahi_cancellable, avahi_create_browsers, cups_backend); g_bus_get (G_BUS_TYPE_SYSTEM, cups_backend->avahi_cancellable, avahi_create_browsers, cups_backend);
} }
/*
* Print backend can be disposed together with all its printers
* as a reaction to user stopping enumeration of printers.
*/
static void
backend_finalized_cb (gpointer data,
GObject *where_the_object_was)
{
gboolean *backend_finalized = data;
*backend_finalized = TRUE;
}
static void static void
cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
GtkCupsResult *result, GtkCupsResult *result,
@ -3702,6 +3715,7 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
GList *removed_printer_checklist; GList *removed_printer_checklist;
gchar *remote_default_printer = NULL; gchar *remote_default_printer = NULL;
GList *iter; GList *iter;
gboolean backend_finalized = FALSE;
gdk_threads_enter (); gdk_threads_enter ();
@ -3738,6 +3752,8 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
*/ */
removed_printer_checklist = gtk_print_backend_get_printer_list (backend); removed_printer_checklist = gtk_print_backend_get_printer_list (backend);
g_object_weak_ref (G_OBJECT (backend), backend_finalized_cb, &backend_finalized);
response = gtk_cups_result_get_response (result); response = gtk_cups_result_get_response (result);
for (attr = ippFirstAttribute (response); attr != NULL; for (attr = ippFirstAttribute (response); attr != NULL;
attr = ippNextAttribute (response)) attr = ippNextAttribute (response))
@ -3848,6 +3864,9 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
{ {
g_signal_emit_by_name (backend, "printer-added", printer); g_signal_emit_by_name (backend, "printer-added", printer);
if (backend_finalized)
break;
gtk_printer_set_is_new (printer, FALSE); gtk_printer_set_is_new (printer, FALSE);
} }
@ -3884,36 +3903,44 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
break; break;
} }
/* look at the removed printers checklist and mark any printer if (!backend_finalized)
as inactive if it is in the list, emitting a printer_removed signal */
if (removed_printer_checklist != NULL)
{ {
for (iter = removed_printer_checklist; iter; iter = iter->next) g_object_weak_unref (G_OBJECT (backend), backend_finalized_cb, &backend_finalized);
/* look at the removed printers checklist and mark any printer
as inactive if it is in the list, emitting a printer_removed signal */
if (removed_printer_checklist != NULL)
{ {
if (!GTK_PRINTER_CUPS (iter->data)->avahi_browsed) for (iter = removed_printer_checklist; iter; iter = iter->next)
{ {
mark_printer_inactive (GTK_PRINTER (iter->data), backend); if (!GTK_PRINTER_CUPS (iter->data)->avahi_browsed)
list_has_changed = TRUE; {
mark_printer_inactive (GTK_PRINTER (iter->data), backend);
list_has_changed = TRUE;
}
} }
} }
g_list_free (removed_printer_checklist);
} }
g_list_free (removed_printer_checklist);
done: done:
if (list_has_changed) if (!backend_finalized)
g_signal_emit_by_name (backend, "printer-list-changed");
gtk_print_backend_set_list_done (backend);
if (!cups_backend->got_default_printer && remote_default_printer != NULL)
{ {
set_default_printer (cups_backend, remote_default_printer); if (list_has_changed)
g_free (remote_default_printer); g_signal_emit_by_name (backend, "printer-list-changed");
}
if (!cups_backend->got_default_printer && cups_backend->avahi_default_printer != NULL) gtk_print_backend_set_list_done (backend);
set_default_printer (cups_backend, cups_backend->avahi_default_printer);
if (!cups_backend->got_default_printer && remote_default_printer != NULL)
{
set_default_printer (cups_backend, remote_default_printer);
g_free (remote_default_printer);
}
if (!cups_backend->got_default_printer && cups_backend->avahi_default_printer != NULL)
set_default_printer (cups_backend, cups_backend->avahi_default_printer);
}
gdk_threads_leave (); gdk_threads_leave ();
} }

View File

@ -61,6 +61,7 @@ is
it it
ja ja
ka ka
kab
kg kg
kk kk
km km

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

9311
po-properties/kab.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -61,6 +61,7 @@ is
it it
ja ja
ka ka
kab
kg kg
kk kk
km km

206
po/he.po
View File

@ -12,8 +12,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gtk+.HEAD.he\n" "Project-Id-Version: gtk+.HEAD.he\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-13 21:16+0000\n" "POT-Creation-Date: 2024-04-04 09:09+0000\n"
"PO-Revision-Date: 2024-01-14 08:56+0200\n" "PO-Revision-Date: 2024-04-07 08:12+0300\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n" "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <yoseforb@gmail.com>\n" "Language-Team: Hebrew <yoseforb@gmail.com>\n"
"Language: he\n" "Language: he\n"
@ -3673,42 +3673,42 @@ msgstr "נתוני המדפסת מתקבלים…"
#. * multiple pages on a sheet when printing #. * multiple pages on a sheet when printing
#. #.
#: gtk/gtkprintunixdialog.c:3120 #: gtk/gtkprintunixdialog.c:3120
#: modules/printbackends/cups/gtkprintbackendcups.c:5709 #: modules/printbackends/cups/gtkprintbackendcups.c:5736
msgid "Left to right, top to bottom" msgid "Left to right, top to bottom"
msgstr "שמאל לימין, מלמעלה למטה" msgstr "שמאל לימין, מלמעלה למטה"
#: gtk/gtkprintunixdialog.c:3120 #: gtk/gtkprintunixdialog.c:3120
#: modules/printbackends/cups/gtkprintbackendcups.c:5709 #: modules/printbackends/cups/gtkprintbackendcups.c:5736
msgid "Left to right, bottom to top" msgid "Left to right, bottom to top"
msgstr "שמאל לימין, מלמטה למעלה" msgstr "שמאל לימין, מלמטה למעלה"
#: gtk/gtkprintunixdialog.c:3121 #: gtk/gtkprintunixdialog.c:3121
#: modules/printbackends/cups/gtkprintbackendcups.c:5710 #: modules/printbackends/cups/gtkprintbackendcups.c:5737
msgid "Right to left, top to bottom" msgid "Right to left, top to bottom"
msgstr "ימין לשמאל, מלמעלה למטה" msgstr "ימין לשמאל, מלמעלה למטה"
#: gtk/gtkprintunixdialog.c:3121 #: gtk/gtkprintunixdialog.c:3121
#: modules/printbackends/cups/gtkprintbackendcups.c:5710 #: modules/printbackends/cups/gtkprintbackendcups.c:5737
msgid "Right to left, bottom to top" msgid "Right to left, bottom to top"
msgstr "ימין לשמאל, מלמטה למעלה" msgstr "ימין לשמאל, מלמטה למעלה"
#: gtk/gtkprintunixdialog.c:3122 #: gtk/gtkprintunixdialog.c:3122
#: modules/printbackends/cups/gtkprintbackendcups.c:5711 #: modules/printbackends/cups/gtkprintbackendcups.c:5738
msgid "Top to bottom, left to right" msgid "Top to bottom, left to right"
msgstr "מלמעלה למטה, משמאל לימין" msgstr "מלמעלה למטה, משמאל לימין"
#: gtk/gtkprintunixdialog.c:3122 #: gtk/gtkprintunixdialog.c:3122
#: modules/printbackends/cups/gtkprintbackendcups.c:5711 #: modules/printbackends/cups/gtkprintbackendcups.c:5738
msgid "Top to bottom, right to left" msgid "Top to bottom, right to left"
msgstr "מלמעלה למטה, מימין לשמאל" msgstr "מלמעלה למטה, מימין לשמאל"
#: gtk/gtkprintunixdialog.c:3123 #: gtk/gtkprintunixdialog.c:3123
#: modules/printbackends/cups/gtkprintbackendcups.c:5712 #: modules/printbackends/cups/gtkprintbackendcups.c:5739
msgid "Bottom to top, left to right" msgid "Bottom to top, left to right"
msgstr "מלמטה למעלה, משמאל לימין" msgstr "מלמטה למעלה, משמאל לימין"
#: gtk/gtkprintunixdialog.c:3123 #: gtk/gtkprintunixdialog.c:3123
#: modules/printbackends/cups/gtkprintbackendcups.c:5712 #: modules/printbackends/cups/gtkprintbackendcups.c:5739
msgid "Bottom to top, right to left" msgid "Bottom to top, right to left"
msgstr "מלמטה למעלה, מימין לשמאל" msgstr "מלמטה למעלה, מימין לשמאל"
@ -6845,7 +6845,7 @@ msgstr "ג׳אוואנית"
#: gtk/script-names.c:101 #: gtk/script-names.c:101
msgctxt "Script" msgctxt "Script"
msgid "Kaithi" msgid "Kaithi"
msgstr "" msgstr "קאיתי"
#: gtk/script-names.c:102 #: gtk/script-names.c:102
msgctxt "Script" msgctxt "Script"
@ -6900,7 +6900,7 @@ msgstr "מנדאית"
#: gtk/script-names.c:112 #: gtk/script-names.c:112
msgctxt "Script" msgctxt "Script"
msgid "Chakma" msgid "Chakma"
msgstr "" msgstr "צ׳אקמה"
#: gtk/script-names.c:113 #: gtk/script-names.c:113
msgctxt "Script" msgctxt "Script"
@ -6920,22 +6920,22 @@ msgstr "מיאו"
#: gtk/script-names.c:116 #: gtk/script-names.c:116
msgctxt "Script" msgctxt "Script"
msgid "Sharada" msgid "Sharada"
msgstr "" msgstr "שרדה"
#: gtk/script-names.c:117 #: gtk/script-names.c:117
msgctxt "Script" msgctxt "Script"
msgid "Sora Sompeng" msgid "Sora Sompeng"
msgstr "" msgstr "סורה סומפנג"
#: gtk/script-names.c:118 #: gtk/script-names.c:118
msgctxt "Script" msgctxt "Script"
msgid "Takri" msgid "Takri"
msgstr "" msgstr "טאקרי"
#: gtk/script-names.c:119 #: gtk/script-names.c:119
msgctxt "Script" msgctxt "Script"
msgid "Bassa" msgid "Bassa"
msgstr "" msgstr "באסה ואה"
#: gtk/script-names.c:120 #: gtk/script-names.c:120
msgctxt "Script" msgctxt "Script"
@ -6945,7 +6945,7 @@ msgstr "אלבנית קווקזית"
#: gtk/script-names.c:121 #: gtk/script-names.c:121
msgctxt "Script" msgctxt "Script"
msgid "Duployan" msgid "Duployan"
msgstr "" msgstr "דובילרן"
#: gtk/script-names.c:122 #: gtk/script-names.c:122
msgctxt "Script" msgctxt "Script"
@ -6955,17 +6955,17 @@ msgstr "אלבסן"
#: gtk/script-names.c:123 #: gtk/script-names.c:123
msgctxt "Script" msgctxt "Script"
msgid "Grantha" msgid "Grantha"
msgstr "" msgstr "גרנתה"
#: gtk/script-names.c:124 #: gtk/script-names.c:124
msgctxt "Script" msgctxt "Script"
msgid "Khojki" msgid "Khojki"
msgstr "" msgstr "חוג׳קי"
#: gtk/script-names.c:125 #: gtk/script-names.c:125
msgctxt "Script" msgctxt "Script"
msgid "Khudawadi, Sindhi" msgid "Khudawadi, Sindhi"
msgstr "" msgstr "חודוואדי, סינדית"
#: gtk/script-names.c:126 #: gtk/script-names.c:126
msgctxt "Script" msgctxt "Script"
@ -6975,17 +6975,17 @@ msgstr "קווי א׳"
#: gtk/script-names.c:127 #: gtk/script-names.c:127
msgctxt "Script" msgctxt "Script"
msgid "Mahajani" msgid "Mahajani"
msgstr "" msgstr "מהג׳אני"
#: gtk/script-names.c:128 #: gtk/script-names.c:128
msgctxt "Script" msgctxt "Script"
msgid "Manichaean" msgid "Manichaean"
msgstr "" msgstr "מניצ׳י"
#: gtk/script-names.c:129 #: gtk/script-names.c:129
msgctxt "Script" msgctxt "Script"
msgid "Mende Kikakui" msgid "Mende Kikakui"
msgstr "" msgstr "מנדה קיקקוי"
#: gtk/script-names.c:130 #: gtk/script-names.c:130
msgctxt "Script" msgctxt "Script"
@ -7015,42 +7015,42 @@ msgstr "פרמית עתיקה"
#: gtk/script-names.c:135 #: gtk/script-names.c:135
msgctxt "Script" msgctxt "Script"
msgid "Pahawh Hmong" msgid "Pahawh Hmong"
msgstr "" msgstr "פאהח המונג"
#: gtk/script-names.c:136 #: gtk/script-names.c:136
msgctxt "Script" msgctxt "Script"
msgid "Palmyrene" msgid "Palmyrene"
msgstr "" msgstr "פלמירן"
#: gtk/script-names.c:137 #: gtk/script-names.c:137
msgctxt "Script" msgctxt "Script"
msgid "Pau Cin Hau" msgid "Pau Cin Hau"
msgstr "" msgstr "פאו צ׳ין האו"
#: gtk/script-names.c:138 #: gtk/script-names.c:138
msgctxt "Script" msgctxt "Script"
msgid "Psalter Pahlavi" msgid "Psalter Pahlavi"
msgstr "" msgstr "מזמור פהלווי"
#: gtk/script-names.c:139 #: gtk/script-names.c:139
msgctxt "Script" msgctxt "Script"
msgid "Siddham" msgid "Siddham"
msgstr "" msgstr "סידהם"
#: gtk/script-names.c:140 #: gtk/script-names.c:140
msgctxt "Script" msgctxt "Script"
msgid "Tirhuta" msgid "Tirhuta"
msgstr "" msgstr "תרותא"
#: gtk/script-names.c:141 #: gtk/script-names.c:141
msgctxt "Script" msgctxt "Script"
msgid "Warang Citi" msgid "Warang Citi"
msgstr "" msgstr "ווראנג סיטי"
#: gtk/script-names.c:142 #: gtk/script-names.c:142
msgctxt "Script" msgctxt "Script"
msgid "Ahom" msgid "Ahom"
msgstr "" msgstr "אהום"
#: gtk/script-names.c:143 #: gtk/script-names.c:143
msgctxt "Script" msgctxt "Script"
@ -7060,12 +7060,12 @@ msgstr "הירוגליפים אנטוליים"
#: gtk/script-names.c:144 #: gtk/script-names.c:144
msgctxt "Script" msgctxt "Script"
msgid "Hatran" msgid "Hatran"
msgstr "" msgstr "חטרן"
#: gtk/script-names.c:145 #: gtk/script-names.c:145
msgctxt "Script" msgctxt "Script"
msgid "Multani" msgid "Multani"
msgstr "" msgstr "מולטני"
#: gtk/script-names.c:146 #: gtk/script-names.c:146
msgctxt "Script" msgctxt "Script"
@ -7080,27 +7080,27 @@ msgstr "שפת סימנים בכתב"
#: gtk/script-names.c:148 #: gtk/script-names.c:148
msgctxt "Script" msgctxt "Script"
msgid "Adlam" msgid "Adlam"
msgstr "" msgstr "אדלם"
#: gtk/script-names.c:149 #: gtk/script-names.c:149
msgctxt "Script" msgctxt "Script"
msgid "Bhaiksuki" msgid "Bhaiksuki"
msgstr "" msgstr "בהיקסוקי"
#: gtk/script-names.c:150 #: gtk/script-names.c:150
msgctxt "Script" msgctxt "Script"
msgid "Marchen" msgid "Marchen"
msgstr "" msgstr "מרצ׳ן"
#: gtk/script-names.c:151 #: gtk/script-names.c:151
msgctxt "Script" msgctxt "Script"
msgid "Newa" msgid "Newa"
msgstr "" msgstr "נווארית"
#: gtk/script-names.c:152 #: gtk/script-names.c:152
msgctxt "Script" msgctxt "Script"
msgid "Osage" msgid "Osage"
msgstr "" msgstr "אוסייג׳"
#: gtk/script-names.c:153 #: gtk/script-names.c:153
msgctxt "Script" msgctxt "Script"
@ -7110,7 +7110,7 @@ msgstr "טנגוט"
#: gtk/script-names.c:154 #: gtk/script-names.c:154
msgctxt "Script" msgctxt "Script"
msgid "Masaram Gondi" msgid "Masaram Gondi"
msgstr "" msgstr "מסארם גונדי"
#: gtk/script-names.c:155 #: gtk/script-names.c:155
msgctxt "Script" msgctxt "Script"
@ -7990,282 +7990,282 @@ msgstr "דוחה עבודות"
msgid "; " msgid "; "
msgstr "; " msgstr "; "
#: modules/printbackends/cups/gtkprintbackendcups.c:4655 #: modules/printbackends/cups/gtkprintbackendcups.c:4682
#: modules/printbackends/cups/gtkprintbackendcups.c:4722 #: modules/printbackends/cups/gtkprintbackendcups.c:4749
msgctxt "printing option" msgctxt "printing option"
msgid "Two Sided" msgid "Two Sided"
msgstr "דו צדדי" msgstr "דו צדדי"
#: modules/printbackends/cups/gtkprintbackendcups.c:4656 #: modules/printbackends/cups/gtkprintbackendcups.c:4683
msgctxt "printing option" msgctxt "printing option"
msgid "Paper Type" msgid "Paper Type"
msgstr "סוג נייר" msgstr "סוג נייר"
#: modules/printbackends/cups/gtkprintbackendcups.c:4657 #: modules/printbackends/cups/gtkprintbackendcups.c:4684
msgctxt "printing option" msgctxt "printing option"
msgid "Paper Source" msgid "Paper Source"
msgstr "מקור נייר" msgstr "מקור נייר"
#: modules/printbackends/cups/gtkprintbackendcups.c:4658 #: modules/printbackends/cups/gtkprintbackendcups.c:4685
#: modules/printbackends/cups/gtkprintbackendcups.c:4723 #: modules/printbackends/cups/gtkprintbackendcups.c:4750
msgctxt "printing option" msgctxt "printing option"
msgid "Output Tray" msgid "Output Tray"
msgstr "מגש פלט" msgstr "מגש פלט"
#: modules/printbackends/cups/gtkprintbackendcups.c:4659 #: modules/printbackends/cups/gtkprintbackendcups.c:4686
msgctxt "printing option" msgctxt "printing option"
msgid "Resolution" msgid "Resolution"
msgstr "הבחנה" msgstr "הבחנה"
#: modules/printbackends/cups/gtkprintbackendcups.c:4660 #: modules/printbackends/cups/gtkprintbackendcups.c:4687
msgctxt "printing option" msgctxt "printing option"
msgid "GhostScript pre-filtering" msgid "GhostScript pre-filtering"
msgstr "סינון קדם של GhostScript" msgstr "סינון קדם של GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4669 #: modules/printbackends/cups/gtkprintbackendcups.c:4696
msgctxt "printing option value" msgctxt "printing option value"
msgid "One Sided" msgid "One Sided"
msgstr "צד אחד" msgstr "צד אחד"
#. Translators: this is an option of "Two Sided" #. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4671 #: modules/printbackends/cups/gtkprintbackendcups.c:4698
msgctxt "printing option value" msgctxt "printing option value"
msgid "Long Edge (Standard)" msgid "Long Edge (Standard)"
msgstr "הצד הארוך (תקני)" msgstr "הצד הארוך (תקני)"
#. Translators: this is an option of "Two Sided" #. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4673 #: modules/printbackends/cups/gtkprintbackendcups.c:4700
msgctxt "printing option value" msgctxt "printing option value"
msgid "Short Edge (Flip)" msgid "Short Edge (Flip)"
msgstr "הצד הקצר (היפוך)" msgstr "הצד הקצר (היפוך)"
#. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Paper Source"
#: modules/printbackends/cups/gtkprintbackendcups.c:4675 #: modules/printbackends/cups/gtkprintbackendcups.c:4702
#: modules/printbackends/cups/gtkprintbackendcups.c:4677 #: modules/printbackends/cups/gtkprintbackendcups.c:4704
#: modules/printbackends/cups/gtkprintbackendcups.c:4685 #: modules/printbackends/cups/gtkprintbackendcups.c:4712
msgctxt "printing option value" msgctxt "printing option value"
msgid "Auto Select" msgid "Auto Select"
msgstr "בחירה אוטומטית" msgstr "בחירה אוטומטית"
#. Translators: this is an option of "Paper Source" #. Translators: this is an option of "Paper Source"
#. Translators: this is an option of "Resolution" #. Translators: this is an option of "Resolution"
#: modules/printbackends/cups/gtkprintbackendcups.c:4679 #: modules/printbackends/cups/gtkprintbackendcups.c:4706
#: modules/printbackends/cups/gtkprintbackendcups.c:4681 #: modules/printbackends/cups/gtkprintbackendcups.c:4708
#: modules/printbackends/cups/gtkprintbackendcups.c:4683 #: modules/printbackends/cups/gtkprintbackendcups.c:4710
#: modules/printbackends/cups/gtkprintbackendcups.c:4687 #: modules/printbackends/cups/gtkprintbackendcups.c:4714
msgctxt "printing option value" msgctxt "printing option value"
msgid "Printer Default" msgid "Printer Default"
msgstr "בררת מחדל עבור המדפסת" msgstr "בררת מחדל עבור המדפסת"
#. Translators: this is an option of "GhostScript" #. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4689 #: modules/printbackends/cups/gtkprintbackendcups.c:4716
msgctxt "printing option value" msgctxt "printing option value"
msgid "Embed GhostScript fonts only" msgid "Embed GhostScript fonts only"
msgstr "הטמעת גופני PostScript בלבד" msgstr "הטמעת גופני PostScript בלבד"
#. Translators: this is an option of "GhostScript" #. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4691 #: modules/printbackends/cups/gtkprintbackendcups.c:4718
msgctxt "printing option value" msgctxt "printing option value"
msgid "Convert to PS level 1" msgid "Convert to PS level 1"
msgstr "המרה ל־PS רמה 1" msgstr "המרה ל־PS רמה 1"
#. Translators: this is an option of "GhostScript" #. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4693 #: modules/printbackends/cups/gtkprintbackendcups.c:4720
msgctxt "printing option value" msgctxt "printing option value"
msgid "Convert to PS level 2" msgid "Convert to PS level 2"
msgstr "המרה ל־PS רמה 2" msgstr "המרה ל־PS רמה 2"
#. Translators: this is an option of "GhostScript" #. Translators: this is an option of "GhostScript"
#: modules/printbackends/cups/gtkprintbackendcups.c:4695 #: modules/printbackends/cups/gtkprintbackendcups.c:4722
msgctxt "printing option value" msgctxt "printing option value"
msgid "No pre-filtering" msgid "No pre-filtering"
msgstr "אין סינון קדם" msgstr "אין סינון קדם"
#. Translators: "Miscellaneous" is the label for a button, that opens #. Translators: "Miscellaneous" is the label for a button, that opens
#. up an extra panel of settings in a print dialog. #. 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" msgctxt "printing option group"
msgid "Miscellaneous" msgid "Miscellaneous"
msgstr "שונות" msgstr "שונות"
#: modules/printbackends/cups/gtkprintbackendcups.c:4731 #: modules/printbackends/cups/gtkprintbackendcups.c:4758
msgctxt "sides" msgctxt "sides"
msgid "One Sided" msgid "One Sided"
msgstr "חד צדדי" msgstr "חד צדדי"
#. Translators: this is an option of "Two Sided" #. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4733 #: modules/printbackends/cups/gtkprintbackendcups.c:4760
msgctxt "sides" msgctxt "sides"
msgid "Long Edge (Standard)" msgid "Long Edge (Standard)"
msgstr "צד ארוך (תקני)" msgstr "צד ארוך (תקני)"
#. Translators: this is an option of "Two Sided" #. Translators: this is an option of "Two Sided"
#: modules/printbackends/cups/gtkprintbackendcups.c:4735 #: modules/printbackends/cups/gtkprintbackendcups.c:4762
msgctxt "sides" msgctxt "sides"
msgid "Short Edge (Flip)" msgid "Short Edge (Flip)"
msgstr "צד קצר (היפוך)" msgstr "צד קצר (היפוך)"
#. Translators: Top output bin #. Translators: Top output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4738 #: modules/printbackends/cups/gtkprintbackendcups.c:4765
msgctxt "output-bin" msgctxt "output-bin"
msgid "Top Bin" msgid "Top Bin"
msgstr "מגש עליון" msgstr "מגש עליון"
#. Translators: Middle output bin #. Translators: Middle output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4740 #: modules/printbackends/cups/gtkprintbackendcups.c:4767
msgctxt "output-bin" msgctxt "output-bin"
msgid "Middle Bin" msgid "Middle Bin"
msgstr "מגש אמצעי" msgstr "מגש אמצעי"
#. Translators: Bottom output bin #. Translators: Bottom output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4742 #: modules/printbackends/cups/gtkprintbackendcups.c:4769
msgctxt "output-bin" msgctxt "output-bin"
msgid "Bottom Bin" msgid "Bottom Bin"
msgstr "מגש תחתון" msgstr "מגש תחתון"
#. Translators: Side output bin #. Translators: Side output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4744 #: modules/printbackends/cups/gtkprintbackendcups.c:4771
msgctxt "output-bin" msgctxt "output-bin"
msgid "Side Bin" msgid "Side Bin"
msgstr "מגש צדי" msgstr "מגש צדי"
#. Translators: Left output bin #. Translators: Left output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4746 #: modules/printbackends/cups/gtkprintbackendcups.c:4773
msgctxt "output-bin" msgctxt "output-bin"
msgid "Left Bin" msgid "Left Bin"
msgstr "מגש שמאלי" msgstr "מגש שמאלי"
#. Translators: Right output bin #. Translators: Right output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4748 #: modules/printbackends/cups/gtkprintbackendcups.c:4775
msgctxt "output-bin" msgctxt "output-bin"
msgid "Right Bin" msgid "Right Bin"
msgstr "מגש ימני" msgstr "מגש ימני"
#. Translators: Center output bin #. Translators: Center output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4750 #: modules/printbackends/cups/gtkprintbackendcups.c:4777
msgctxt "output-bin" msgctxt "output-bin"
msgid "Center Bin" msgid "Center Bin"
msgstr "מגש מרכזי" msgstr "מגש מרכזי"
#. Translators: Rear output bin #. Translators: Rear output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4752 #: modules/printbackends/cups/gtkprintbackendcups.c:4779
msgctxt "output-bin" msgctxt "output-bin"
msgid "Rear Bin" msgid "Rear Bin"
msgstr "מגש אחורי" msgstr "מגש אחורי"
#. Translators: Output bin where one sided output is oriented in the face-up position #. 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" msgctxt "output-bin"
msgid "Face Up Bin" msgid "Face Up Bin"
msgstr "מגש עם הפנים כלפי מעלה" msgstr "מגש עם הפנים כלפי מעלה"
#. Translators: Output bin where one sided output is oriented in the face-down position #. 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" msgctxt "output-bin"
msgid "Face Down Bin" msgid "Face Down Bin"
msgstr "מגש עם הפנים כלפי מטה" msgstr "מגש עם הפנים כלפי מטה"
#. Translators: Large capacity output bin #. Translators: Large capacity output bin
#: modules/printbackends/cups/gtkprintbackendcups.c:4758 #: modules/printbackends/cups/gtkprintbackendcups.c:4785
msgctxt "output-bin" msgctxt "output-bin"
msgid "Large Capacity Bin" msgid "Large Capacity Bin"
msgstr "מגש בעל קיבולת מוגדלת" msgstr "מגש בעל קיבולת מוגדלת"
#. Translators: Output stacker number %d #. Translators: Output stacker number %d
#: modules/printbackends/cups/gtkprintbackendcups.c:4780 #: modules/printbackends/cups/gtkprintbackendcups.c:4807
#, c-format #, c-format
msgctxt "output-bin" msgctxt "output-bin"
msgid "Stacker %d" msgid "Stacker %d"
msgstr "מערם פלט נייר %d" msgstr "מערם פלט נייר %d"
#. Translators: Output mailbox number %d #. Translators: Output mailbox number %d
#: modules/printbackends/cups/gtkprintbackendcups.c:4784 #: modules/printbackends/cups/gtkprintbackendcups.c:4811
#, c-format #, c-format
msgctxt "output-bin" msgctxt "output-bin"
msgid "Mailbox %d" msgid "Mailbox %d"
msgstr "התקן למיון פלט הדפסה %d" msgstr "התקן למיון פלט הדפסה %d"
#. Translators: Private mailbox #. Translators: Private mailbox
#: modules/printbackends/cups/gtkprintbackendcups.c:4788 #: modules/printbackends/cups/gtkprintbackendcups.c:4815
msgctxt "output-bin" msgctxt "output-bin"
msgid "My Mailbox" msgid "My Mailbox"
msgstr "התקן למיון פלט ההדפסה שלי" msgstr "התקן למיון פלט ההדפסה שלי"
#. Translators: Output tray number %d #. Translators: Output tray number %d
#: modules/printbackends/cups/gtkprintbackendcups.c:4792 #: modules/printbackends/cups/gtkprintbackendcups.c:4819
#, c-format #, c-format
msgctxt "output-bin" msgctxt "output-bin"
msgid "Tray %d" msgid "Tray %d"
msgstr "מגירת הזנת נייר %d" msgstr "מגירת הזנת נייר %d"
#: modules/printbackends/cups/gtkprintbackendcups.c:5263 #: modules/printbackends/cups/gtkprintbackendcups.c:5290
msgid "Printer Default" msgid "Printer Default"
msgstr "בררת מחדל עבור המדפסת" msgstr "בררת מחדל עבור המדפסת"
#. Translators: These strings name the possible values of the #. Translators: These strings name the possible values of the
#. * job priority option in the print dialog #. * job priority option in the print dialog
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5704 #: modules/printbackends/cups/gtkprintbackendcups.c:5731
msgid "Urgent" msgid "Urgent"
msgstr "דחוף" msgstr "דחוף"
#: modules/printbackends/cups/gtkprintbackendcups.c:5704 #: modules/printbackends/cups/gtkprintbackendcups.c:5731
msgid "High" msgid "High"
msgstr "גבוה" msgstr "גבוה"
#: modules/printbackends/cups/gtkprintbackendcups.c:5704 #: modules/printbackends/cups/gtkprintbackendcups.c:5731
msgid "Medium" msgid "Medium"
msgstr "בינוני" msgstr "בינוני"
#: modules/printbackends/cups/gtkprintbackendcups.c:5704 #: modules/printbackends/cups/gtkprintbackendcups.c:5731
msgid "Low" msgid "Low"
msgstr "נמוך" msgstr "נמוך"
#. Translators, this string is used to label the job priority option #. Translators, this string is used to label the job priority option
#. * in the print dialog #. * in the print dialog
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5734 #: modules/printbackends/cups/gtkprintbackendcups.c:5761
msgid "Job Priority" msgid "Job Priority"
msgstr "עדיפות המשימה" msgstr "עדיפות המשימה"
#. Translators, this string is used to label the billing info entry #. Translators, this string is used to label the billing info entry
#. * in the print dialog #. * in the print dialog
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5745 #: modules/printbackends/cups/gtkprintbackendcups.c:5772
msgid "Billing Info" msgid "Billing Info"
msgstr "נתוני חיוב" msgstr "נתוני חיוב"
#: modules/printbackends/cups/gtkprintbackendcups.c:5769 #: modules/printbackends/cups/gtkprintbackendcups.c:5796
msgctxt "cover page" msgctxt "cover page"
msgid "None" msgid "None"
msgstr "ללא" msgstr "ללא"
#: modules/printbackends/cups/gtkprintbackendcups.c:5770 #: modules/printbackends/cups/gtkprintbackendcups.c:5797
msgctxt "cover page" msgctxt "cover page"
msgid "Classified" msgid "Classified"
msgstr "מסווג" msgstr "מסווג"
#: modules/printbackends/cups/gtkprintbackendcups.c:5771 #: modules/printbackends/cups/gtkprintbackendcups.c:5798
msgctxt "cover page" msgctxt "cover page"
msgid "Confidential" msgid "Confidential"
msgstr "חסוי" msgstr "חסוי"
#: modules/printbackends/cups/gtkprintbackendcups.c:5772 #: modules/printbackends/cups/gtkprintbackendcups.c:5799
msgctxt "cover page" msgctxt "cover page"
msgid "Secret" msgid "Secret"
msgstr "סודי" msgstr "סודי"
#: modules/printbackends/cups/gtkprintbackendcups.c:5773 #: modules/printbackends/cups/gtkprintbackendcups.c:5800
msgctxt "cover page" msgctxt "cover page"
msgid "Standard" msgid "Standard"
msgstr "רגיל" msgstr "רגיל"
#: modules/printbackends/cups/gtkprintbackendcups.c:5774 #: modules/printbackends/cups/gtkprintbackendcups.c:5801
msgctxt "cover page" msgctxt "cover page"
msgid "Top Secret" msgid "Top Secret"
msgstr "סודי ביותר" msgstr "סודי ביותר"
#: modules/printbackends/cups/gtkprintbackendcups.c:5775 #: modules/printbackends/cups/gtkprintbackendcups.c:5802
msgctxt "cover page" msgctxt "cover page"
msgid "Unclassified" msgid "Unclassified"
msgstr "לא מסווג" msgstr "לא מסווג"
@ -8273,7 +8273,7 @@ msgstr "לא מסווג"
#. Translators, this string is used to label the pages-per-sheet option #. Translators, this string is used to label the pages-per-sheet option
#. * in the print dialog #. * in the print dialog
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5787 #: modules/printbackends/cups/gtkprintbackendcups.c:5814
msgctxt "printer option" msgctxt "printer option"
msgid "Pages per Sheet" msgid "Pages per Sheet"
msgstr "מספר העמודים בדף" msgstr "מספר העמודים בדף"
@ -8281,7 +8281,7 @@ msgstr "מספר העמודים בדף"
#. Translators, this string is used to label the option in the print #. Translators, this string is used to label the option in the print
#. * dialog that controls in what order multiple pages are arranged #. * 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" msgctxt "printer option"
msgid "Page Ordering" msgid "Page Ordering"
msgstr "סדר דפים" msgstr "סדר דפים"
@ -8289,7 +8289,7 @@ msgstr "סדר דפים"
#. Translators, this is the label used for the option in the print #. Translators, this is the label used for the option in the print
#. * dialog that controls the front cover page. #. * dialog that controls the front cover page.
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5846 #: modules/printbackends/cups/gtkprintbackendcups.c:5873
msgctxt "printer option" msgctxt "printer option"
msgid "Before" msgid "Before"
msgstr "לפני" msgstr "לפני"
@ -8297,7 +8297,7 @@ msgstr "לפני"
#. Translators, this is the label used for the option in the print #. Translators, this is the label used for the option in the print
#. * dialog that controls the back cover page. #. * dialog that controls the back cover page.
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5861 #: modules/printbackends/cups/gtkprintbackendcups.c:5888
msgctxt "printer option" msgctxt "printer option"
msgid "After" msgid "After"
msgstr "אחרי" msgstr "אחרי"
@ -8306,7 +8306,7 @@ msgstr "אחרי"
#. * a print job is printed. Possible values are 'now', a specified time, #. * a print job is printed. Possible values are 'now', a specified time,
#. * or 'on hold' #. * or 'on hold'
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5881 #: modules/printbackends/cups/gtkprintbackendcups.c:5908
msgctxt "printer option" msgctxt "printer option"
msgid "Print at" msgid "Print at"
msgstr "הדפסה" msgstr "הדפסה"
@ -8314,7 +8314,7 @@ msgstr "הדפסה"
#. Translators: this is the name of the option that allows the user #. Translators: this is the name of the option that allows the user
#. * to specify a time when a print job will be printed. #. * 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" msgctxt "printer option"
msgid "Print at time" msgid "Print at time"
msgstr "הדפסה" msgstr "הדפסה"
@ -8324,18 +8324,18 @@ msgstr "הדפסה"
#. * the width and height in points. E.g: "Custom #. * the width and height in points. E.g: "Custom
#. * 230.4x142.9" #. * 230.4x142.9"
#. #.
#: modules/printbackends/cups/gtkprintbackendcups.c:5937 #: modules/printbackends/cups/gtkprintbackendcups.c:5964
#, c-format #, c-format
msgid "Custom %s×%s" msgid "Custom %s×%s"
msgstr "מותאם אישית %s×%s" msgstr "מותאם אישית %s×%s"
#: modules/printbackends/cups/gtkprintbackendcups.c:6047 #: modules/printbackends/cups/gtkprintbackendcups.c:6074
msgctxt "printer option" msgctxt "printer option"
msgid "Printer Profile" msgid "Printer Profile"
msgstr "פרופיל מדפסת" msgstr "פרופיל מדפסת"
#. TRANSLATORS: this is when color profile information is unavailable #. 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" msgctxt "printer option value"
msgid "Unavailable" msgid "Unavailable"
msgstr "לא זמין" msgstr "לא זמין"

8314
po/kab.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4928,7 +4928,7 @@ set_cursor_from_name (GtkWidget *entry,
if (cursor == NULL) if (cursor == NULL)
{ {
name = NULL; name = NULL;
cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), GDK_BLANK_CURSOR); cursor = gdk_cursor_new_from_name (gtk_widget_get_display (widget), "none");
} }
gdk_window_set_cursor (gtk_widget_get_window (widget), cursor); gdk_window_set_cursor (gtk_widget_get_window (widget), cursor);
@ -8635,8 +8635,8 @@ snapshot_widget (GtkButton *button,
data->is_toplevel = widget == data->toplevel_button; data->is_toplevel = widget == data->toplevel_button;
if (!data->cursor) if (!data->cursor)
data->cursor = gdk_cursor_new_for_display (gtk_widget_get_display (widget), data->cursor = gdk_cursor_new_from_name (gtk_widget_get_display (widget),
GDK_TARGET); "crosshair");
gdk_seat_grab (gdk_device_get_seat (device), gdk_seat_grab (gdk_device_get_seat (device),
gtk_widget_get_window (widget), gtk_widget_get_window (widget),