Compare commits

..

7 Commits

Author SHA1 Message Date
Matthias Clasen
675214574c css: Break the selector tree into many
Since we can only match one name, doing a hash
by matcher name lets us quickly discard most
initial selectors, and having much smaller trees.

We can apply the same idea for style classes,
as well, by looking up a tree for each class.

Comparing the number of gtk_css_selector_match() calls
while moving the pointer outside the window, I see:

Before:
65773 selector matches (12863 positive)

After:
32704 selector matches (12278 positive)

So this cuts the numer of selectors we need to check
roughly in half, at the cost of a handful of hash table
lookups.
2020-01-19 19:00:00 -05:00
Matthias Clasen
31b15bf5e0 css: Add getters for a matchers name and classes
These will be used in the selector tree in the future.

The classes getter annoyingly has to allow returning
allocated memory, due to widget paths. This can be
removed when widget paths go away.
2020-01-19 19:00:00 -05:00
Matthias Clasen
7e2e92a87e cssselector: Inline a few things 2020-01-19 15:56:54 -05:00
Matthias Clasen
be4d42507c style cascade: Remove some pointless casts
The casts and checks in gtkstylecascade.c are leftovers
from when we had GtkStyleProviderPrivate, and no longer
serve any purpose.
2020-01-19 15:56:54 -05:00
Matthias Clasen
6e88ccf7fb pick: Take advantage of transform categories
Transform categories let us easily avoid doing matrix math
when we can just do a simple translation.
2020-01-19 15:56:54 -05:00
Matthias Clasen
cec4c15f05 Refactor gtk_widget_pick
Split this into a recursive part and a public
entry point. This lets us avoid some duplicate
checks.
2020-01-19 15:56:54 -05:00
Piotr Drąg
ce1f1f7dec Update Polish translation 2020-01-19 13:04:34 +01:00
9 changed files with 1202 additions and 892 deletions

View File

@@ -72,6 +72,80 @@ gtk_css_matcher_widget_path_get_previous (GtkCssMatcher *matcher,
return TRUE; return TRUE;
} }
static const char *
gtk_css_matcher_widget_path_get_name (const GtkCssMatcher *matcher)
{
const GtkWidgetPath *siblings;
siblings = gtk_widget_path_iter_get_siblings (matcher->path.path, matcher->path.index);
if (siblings && matcher->path.sibling_index != gtk_widget_path_iter_get_sibling_index (matcher->path.path, matcher->path.index))
{
const char *path_name = gtk_widget_path_iter_get_object_name (siblings, matcher->path.sibling_index);
if (path_name == NULL)
path_name = g_type_name (gtk_widget_path_iter_get_object_type (siblings, matcher->path.sibling_index));
return path_name;
}
else
{
const char *path_name = gtk_widget_path_iter_get_object_name (matcher->path.path, matcher->path.index);
if (path_name == NULL)
path_name = g_type_name (gtk_widget_path_iter_get_object_type (matcher->path.path, matcher->path.index));
return path_name;
}
return NULL;
}
static GQuark *
gtk_css_matcher_widget_path_get_classes (const GtkCssMatcher *matcher,
guint *n_classes,
gboolean *allocated)
{
int num;
const GtkWidgetPath *siblings;
GSList *list, *l;
GQuark *classes;
const GQuark *decl_classes = NULL;
guint n_decl_classes = 0;
int i;
if (matcher->path.decl)
decl_classes = gtk_css_node_declaration_get_classes (matcher->path.decl, &n_decl_classes);
siblings = gtk_widget_path_iter_get_siblings (matcher->path.path, matcher->path.index);
if (siblings && matcher->path.sibling_index != gtk_widget_path_iter_get_sibling_index (matcher->path.path, matcher->path.index))
list = gtk_widget_path_iter_list_classes (siblings, matcher->path.sibling_index);
else
list = gtk_widget_path_iter_list_classes (matcher->path.path, matcher->path.index);
num = n_decl_classes + g_slist_length (list);
classes = g_new (GQuark, num);
i = 0;
if (matcher->path.decl)
{
for (; i < n_decl_classes; i++)
classes[i] = decl_classes[i];
}
for (l = list; l; l = l->next)
{
const char *name = l->data;
classes[i++] = g_quark_from_string (name);
}
*n_classes = num;
*allocated = TRUE;
return classes;
}
static gboolean static gboolean
gtk_css_matcher_widget_path_has_state (const GtkCssMatcher *matcher, gtk_css_matcher_widget_path_has_state (const GtkCssMatcher *matcher,
GtkStateFlags state) GtkStateFlags state)
@@ -193,6 +267,8 @@ static const GtkCssMatcherClass GTK_CSS_MATCHER_WIDGET_PATH = {
GTK_CSS_MATCHER_TYPE_WIDGET_PATH, GTK_CSS_MATCHER_TYPE_WIDGET_PATH,
gtk_css_matcher_widget_path_get_parent, gtk_css_matcher_widget_path_get_parent,
gtk_css_matcher_widget_path_get_previous, gtk_css_matcher_widget_path_get_previous,
gtk_css_matcher_widget_path_get_name,
gtk_css_matcher_widget_path_get_classes,
gtk_css_matcher_widget_path_has_state, gtk_css_matcher_widget_path_has_state,
gtk_css_matcher_widget_path_has_name, gtk_css_matcher_widget_path_has_name,
gtk_css_matcher_widget_path_has_class, gtk_css_matcher_widget_path_has_class,
@@ -266,6 +342,22 @@ gtk_css_matcher_node_get_previous (GtkCssMatcher *matcher,
return gtk_css_node_init_matcher (node, matcher); return gtk_css_node_init_matcher (node, matcher);
} }
static const char *
gtk_css_matcher_node_get_name (const GtkCssMatcher *matcher)
{
return matcher->node.node_name;
}
static GQuark *
gtk_css_matcher_node_get_classes (const GtkCssMatcher *matcher,
guint *n_classes,
gboolean *allocated)
{
*n_classes = matcher->node.n_classes;
*allocated = FALSE;
return (GQuark *)matcher->node.classes;
}
static gboolean static gboolean
gtk_css_matcher_node_has_state (const GtkCssMatcher *matcher, gtk_css_matcher_node_has_state (const GtkCssMatcher *matcher,
GtkStateFlags state) GtkStateFlags state)
@@ -378,6 +470,8 @@ static const GtkCssMatcherClass GTK_CSS_MATCHER_NODE = {
GTK_CSS_MATCHER_TYPE_NODE, GTK_CSS_MATCHER_TYPE_NODE,
gtk_css_matcher_node_get_parent, gtk_css_matcher_node_get_parent,
gtk_css_matcher_node_get_previous, gtk_css_matcher_node_get_previous,
gtk_css_matcher_node_get_name,
gtk_css_matcher_node_get_classes,
gtk_css_matcher_node_has_state, gtk_css_matcher_node_has_state,
gtk_css_matcher_node_has_name, gtk_css_matcher_node_has_name,
gtk_css_matcher_node_has_class, gtk_css_matcher_node_has_class,

View File

@@ -41,6 +41,11 @@ struct _GtkCssMatcherClass {
gboolean (* get_previous) (GtkCssMatcher *matcher, gboolean (* get_previous) (GtkCssMatcher *matcher,
const GtkCssMatcher *next); const GtkCssMatcher *next);
const char * (* get_name) (const GtkCssMatcher *matcher);
GQuark * (* get_classes) (const GtkCssMatcher *matcher,
guint *n_classes,
gboolean *allocated);
gboolean (* has_state) (const GtkCssMatcher *matcher, gboolean (* has_state) (const GtkCssMatcher *matcher,
GtkStateFlags state); GtkStateFlags state);
gboolean (* has_name) (const GtkCssMatcher *matcher, gboolean (* has_name) (const GtkCssMatcher *matcher,
@@ -106,6 +111,20 @@ _gtk_css_matcher_get_previous (GtkCssMatcher *matcher,
return next->klass->get_previous (matcher, next); return next->klass->get_previous (matcher, next);
} }
static inline const char *
_gtk_css_matcher_get_name (const GtkCssMatcher *matcher)
{
return matcher->klass->get_name (matcher);
}
static inline GQuark *
_gtk_css_matcher_get_classes (const GtkCssMatcher *matcher,
guint *n_classes,
gboolean *allocated)
{
return matcher->klass->get_classes (matcher, n_classes, allocated);
}
static inline gboolean static inline gboolean
_gtk_css_matcher_has_state (const GtkCssMatcher *matcher, _gtk_css_matcher_has_state (const GtkCssMatcher *matcher,
GtkStateFlags state) GtkStateFlags state)

View File

@@ -118,7 +118,7 @@ struct _GtkCssProviderPrivate
GHashTable *keyframes; GHashTable *keyframes;
GArray *rulesets; GArray *rulesets;
GtkCssSelectorTree *tree; GtkCssSelectorTrees *tree;
GResource *resource; GResource *resource;
gchar *path; gchar *path;
}; };

View File

@@ -108,10 +108,15 @@ struct _GtkCssSelectorTree
gint32 parent_offset; gint32 parent_offset;
gint32 previous_offset; gint32 previous_offset;
gint32 sibling_offset; gint32 sibling_offset;
gint32 non_name_sibling_offset;
gint32 matches_offset; /* pointers that we return as matches if selector matches */ gint32 matches_offset; /* pointers that we return as matches if selector matches */
}; };
struct _GtkCssSelectorTrees {
GHashTable *by_name;
GHashTable *by_class;
GtkCssSelectorTree *remaining;
};
static gboolean static gboolean
gtk_css_selector_equal (const GtkCssSelector *a, gtk_css_selector_equal (const GtkCssSelector *a,
const GtkCssSelector *b) const GtkCssSelector *b)
@@ -127,7 +132,7 @@ gtk_css_selector_hash_one (const GtkCssSelector *selector)
return GPOINTER_TO_UINT (selector->class) ^ selector->class->hash_one (selector); return GPOINTER_TO_UINT (selector->class) ^ selector->class->hash_one (selector);
} }
static gpointer * static inline gpointer *
gtk_css_selector_tree_get_matches (const GtkCssSelectorTree *tree) gtk_css_selector_tree_get_matches (const GtkCssSelectorTree *tree)
{ {
if (tree->matches_offset == GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET) if (tree->matches_offset == GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET)
@@ -172,14 +177,14 @@ gtk_css_selector_tree_found_match (const GtkCssSelectorTree *tree,
} }
} }
static gboolean static inline gboolean
gtk_css_selector_match (const GtkCssSelector *selector, gtk_css_selector_match (const GtkCssSelector *selector,
const GtkCssMatcher *matcher) const GtkCssMatcher *matcher)
{ {
return selector->class->match_one (selector, matcher); return selector->class->match_one (selector, matcher);
} }
static gboolean static inline gboolean
gtk_css_selector_foreach (const GtkCssSelector *selector, gtk_css_selector_foreach (const GtkCssSelector *selector,
const GtkCssMatcher *matcher, const GtkCssMatcher *matcher,
GtkCssSelectorForeachFunc func, GtkCssSelectorForeachFunc func,
@@ -205,7 +210,7 @@ gtk_css_selector_previous (const GtkCssSelector *selector)
return selector->class ? selector : NULL; return selector->class ? selector : NULL;
} }
static const GtkCssSelectorTree * static inline const GtkCssSelectorTree *
gtk_css_selector_tree_at_offset (const GtkCssSelectorTree *tree, gtk_css_selector_tree_at_offset (const GtkCssSelectorTree *tree,
gint32 offset) gint32 offset)
{ {
@@ -215,30 +220,24 @@ gtk_css_selector_tree_at_offset (const GtkCssSelectorTree *tree,
return (GtkCssSelectorTree *) ((guint8 *)tree + offset); return (GtkCssSelectorTree *) ((guint8 *)tree + offset);
} }
static const GtkCssSelectorTree * static inline const GtkCssSelectorTree *
gtk_css_selector_tree_get_parent (const GtkCssSelectorTree *tree) gtk_css_selector_tree_get_parent (const GtkCssSelectorTree *tree)
{ {
return gtk_css_selector_tree_at_offset (tree, tree->parent_offset); return gtk_css_selector_tree_at_offset (tree, tree->parent_offset);
} }
static const GtkCssSelectorTree * static inline const GtkCssSelectorTree *
gtk_css_selector_tree_get_previous (const GtkCssSelectorTree *tree) gtk_css_selector_tree_get_previous (const GtkCssSelectorTree *tree)
{ {
return gtk_css_selector_tree_at_offset (tree, tree->previous_offset); return gtk_css_selector_tree_at_offset (tree, tree->previous_offset);
} }
static const GtkCssSelectorTree * static inline const GtkCssSelectorTree *
gtk_css_selector_tree_get_sibling (const GtkCssSelectorTree *tree) gtk_css_selector_tree_get_sibling (const GtkCssSelectorTree *tree)
{ {
return gtk_css_selector_tree_at_offset (tree, tree->sibling_offset); return gtk_css_selector_tree_at_offset (tree, tree->sibling_offset);
} }
static const GtkCssSelectorTree *
gtk_css_selector_tree_get_sibling2 (const GtkCssSelectorTree *tree, gboolean skip_names)
{
return gtk_css_selector_tree_at_offset (tree, skip_names ? tree->non_name_sibling_offset: tree->sibling_offset);
}
/* DEFAULTS */ /* DEFAULTS */
static void static void
@@ -1830,55 +1829,66 @@ gtk_css_selectors_skip_initial_selector (GtkCssSelector *selector, const GtkCssS
return (GtkCssSelector *)gtk_css_selector_previous (selector); return (GtkCssSelector *)gtk_css_selector_previous (selector);
} }
typedef struct {
gboolean matched_name;
GPtrArray *matches;
} MatchData;
static gboolean static gboolean
gtk_css_selector_tree_match_foreach (const GtkCssSelector *selector, gtk_css_selector_tree_match_foreach (const GtkCssSelector *selector,
const GtkCssMatcher *matcher, const GtkCssMatcher *matcher,
gpointer res) gpointer res)
{ {
const GtkCssSelectorTree *tree = (const GtkCssSelectorTree *) selector; const GtkCssSelectorTree *tree = (const GtkCssSelectorTree *) selector;
MatchData *data = res;
MatchData level_data;
const GtkCssSelectorTree *prev; const GtkCssSelectorTree *prev;
if (!gtk_css_selector_match (selector, matcher)) if (!gtk_css_selector_match (selector, matcher))
return FALSE; return FALSE;
if (selector->class == &GTK_CSS_SELECTOR_NAME) gtk_css_selector_tree_found_match (tree, res);
data->matched_name = TRUE;
gtk_css_selector_tree_found_match (tree, &data->matches);
level_data.matched_name = FALSE;
level_data.matches = data->matches;
for (prev = gtk_css_selector_tree_get_previous (tree); for (prev = gtk_css_selector_tree_get_previous (tree);
prev != NULL; prev != NULL;
prev = gtk_css_selector_tree_get_sibling2 (prev, level_data.matched_name)) prev = gtk_css_selector_tree_get_sibling (prev))
gtk_css_selector_foreach (&prev->selector, matcher, gtk_css_selector_tree_match_foreach, &level_data); gtk_css_selector_foreach (&prev->selector, matcher, gtk_css_selector_tree_match_foreach, res);
data->matches = level_data.matches;
return FALSE; return FALSE;
} }
static void
gtk_css_selector_tree_match_one (const GtkCssSelectorTree *tree,
const GtkCssMatcher *matcher,
gpointer res)
{
for (; tree != NULL;
tree = gtk_css_selector_tree_get_sibling (tree))
gtk_css_selector_foreach (&tree->selector, matcher, gtk_css_selector_tree_match_foreach, res);
}
GPtrArray * GPtrArray *
_gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree, _gtk_css_selector_tree_match_all (const GtkCssSelectorTrees *trees,
const GtkCssMatcher *matcher) const GtkCssMatcher *matcher)
{ {
MatchData data = { FALSE, NULL }; GPtrArray *array = NULL;
const char *name;
GQuark *classes;
guint n_classes;
gboolean allocated;
const GtkCssSelectorTree *tree;
int i;
for (; tree != NULL; name = _gtk_css_matcher_get_name (matcher);
tree = gtk_css_selector_tree_get_sibling2 (tree, data.matched_name))
tree = (const GtkCssSelectorTree *)g_hash_table_lookup (trees->by_name, (gpointer)name);
gtk_css_selector_tree_match_one (tree, matcher, &array);
classes = _gtk_css_matcher_get_classes (matcher, &n_classes, &allocated);
for (i = 0; i < n_classes; i++)
{ {
gtk_css_selector_foreach (&tree->selector, matcher, gtk_css_selector_tree_match_foreach, &data); tree = (const GtkCssSelectorTree *)g_hash_table_lookup (trees->by_class, GUINT_TO_POINTER (classes[i]));
gtk_css_selector_tree_match_one (tree, matcher, &array);
} }
if (allocated)
g_free (classes);
return data.matches; gtk_css_selector_tree_match_one (trees->remaining, matcher, &array);
return array;
} }
/* The code for collecting matches assumes that the name, id and classes /* The code for collecting matches assumes that the name, id and classes
@@ -1948,14 +1958,19 @@ gtk_css_selector_tree_get_change (const GtkCssSelectorTree *tree,
} }
gboolean gboolean
_gtk_css_selector_tree_is_empty (const GtkCssSelectorTree *tree) _gtk_css_selector_tree_is_empty (const GtkCssSelectorTrees *tree)
{ {
return tree == NULL; if (!tree)
return TRUE;
return g_hash_table_size (tree->by_name) == 0 &&
g_hash_table_size (tree->by_class) == 0 &&
tree->remaining == NULL;
} }
GtkCssChange static GtkCssChange
_gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *tree, gtk_css_selector_tree_get_change_for_one (const GtkCssSelectorTree *tree,
const GtkCssMatcher *matcher) const GtkCssMatcher *matcher)
{ {
GtkCssChange change; GtkCssChange change;
@@ -1970,10 +1985,40 @@ _gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *tree,
return change & ~GTK_CSS_CHANGE_RESERVED_BIT; return change & ~GTK_CSS_CHANGE_RESERVED_BIT;
} }
#define PRINT_TREE GtkCssChange
_gtk_css_selector_tree_get_change_all (const GtkCssSelectorTrees *trees,
const GtkCssMatcher *matcher)
{
GtkCssChange change = 0;
const char *name;
GQuark *classes;
guint n_classes;
gboolean allocated;
const GtkCssSelectorTree *tree;
int i;
name = _gtk_css_matcher_get_name (matcher);
tree = (const GtkCssSelectorTree *)g_hash_table_lookup (trees->by_name, (gpointer)name);
change |= gtk_css_selector_tree_get_change_for_one (tree, matcher);
classes = _gtk_css_matcher_get_classes (matcher, &n_classes, &allocated);
for (i = 0; i < n_classes; i++)
{
tree = (const GtkCssSelectorTree *)g_hash_table_lookup (trees->by_class, GUINT_TO_POINTER (classes[i]));
change |= gtk_css_selector_tree_get_change_for_one (tree, matcher);
}
if (allocated)
g_free (classes);
change |= gtk_css_selector_tree_get_change_for_one (trees->remaining, matcher);
return change;
}
#ifdef PRINT_TREE #ifdef PRINT_TREE
static void static void
_gtk_css_selector_tree_print (const GtkCssSelectorTree *tree, GString *str, const char *prefix) _gtk_css_selector_tree_print (const GtkCssSelectorTree *tree, GString *str, char *prefix)
{ {
gboolean first = TRUE; gboolean first = TRUE;
int len, i; int len, i;
@@ -2075,12 +2120,24 @@ _gtk_css_selector_tree_match_print (const GtkCssSelectorTree *tree,
} }
void void
_gtk_css_selector_tree_free (GtkCssSelectorTree *tree) _gtk_css_selector_tree_free (GtkCssSelectorTrees *trees)
{ {
if (tree == NULL) GHashTableIter iter;
gpointer key;
gpointer tree;
if (trees == NULL)
return; return;
g_free (tree); g_hash_table_iter_init (&iter, trees->by_name);
while (g_hash_table_iter_next (&iter, &key, (gpointer *)&tree))
g_free (tree);
g_hash_table_unref (trees->by_name);
g_free (trees->remaining);
g_free (trees);
} }
@@ -2088,6 +2145,8 @@ typedef struct {
gpointer match; gpointer match;
GtkCssSelector *current_selector; GtkCssSelector *current_selector;
GtkCssSelectorTree **selector_match; GtkCssSelectorTree **selector_match;
const char *name;
GQuark class;
} GtkCssSelectorRuleSetInfo; } GtkCssSelectorRuleSetInfo;
static GtkCssSelectorTree * static GtkCssSelectorTree *
@@ -2174,7 +2233,7 @@ subdivide_infos (GByteArray *array, GList *infos, gint32 parent_offset)
exact_matches = g_ptr_array_new (); exact_matches = g_ptr_array_new ();
g_ptr_array_add (exact_matches, info->match); g_ptr_array_add (exact_matches, info->match);
if (info->selector_match != NULL) if (info->selector_match != NULL)
*info->selector_match = GUINT_TO_POINTER (tree_offset); *info->selector_match = GUINT_TO_POINTER (tree_offset);
} }
else else
matched = g_list_prepend (matched, info); matched = g_list_prepend (matched, info);
@@ -2211,22 +2270,73 @@ subdivide_infos (GByteArray *array, GList *infos, gint32 parent_offset)
} }
struct _GtkCssSelectorTreeBuilder { struct _GtkCssSelectorTreeBuilder {
GList *infos; GHashTable *by_name;
GHashTable *by_class;
GList *remaining;
}; };
GtkCssSelectorTreeBuilder * GtkCssSelectorTreeBuilder *
_gtk_css_selector_tree_builder_new (void) _gtk_css_selector_tree_builder_new (void)
{ {
return g_new0 (GtkCssSelectorTreeBuilder, 1); GtkCssSelectorTreeBuilder *builder;
builder = g_new0 (GtkCssSelectorTreeBuilder, 1);
builder->by_name = g_hash_table_new (NULL, NULL);
builder->by_class = g_hash_table_new (NULL, NULL);
return builder;
} }
void void
_gtk_css_selector_tree_builder_free (GtkCssSelectorTreeBuilder *builder) _gtk_css_selector_tree_builder_free (GtkCssSelectorTreeBuilder *builder)
{ {
g_list_free_full (builder->infos, g_free); GHashTableIter iter;
gpointer key;
GList *infos;
g_hash_table_iter_init (&iter, builder->by_name);
while (g_hash_table_iter_next (&iter, &key, (gpointer *)&infos))
g_list_free_full (infos, g_free);
g_hash_table_unref (builder->by_name);
g_hash_table_iter_init (&iter, builder->by_class);
while (g_hash_table_iter_next (&iter, &key, (gpointer *)&infos))
g_list_free_full (infos, g_free);
g_hash_table_unref (builder->by_class);
g_list_free_full (builder->remaining, g_free);
g_free (builder); g_free (builder);
} }
static const char *
find_name (const GtkCssSelector *selector)
{
for (;
selector && selector->class->is_simple;
selector = gtk_css_selector_previous (selector))
{
if (selector->class == &GTK_CSS_SELECTOR_NAME)
return selector->name.name;
}
return NULL;
}
static GQuark
find_class (const GtkCssSelector *selector)
{
for (;
selector && selector->class->is_simple;
selector = gtk_css_selector_previous (selector))
{
if (selector->class == &GTK_CSS_SELECTOR_CLASS)
return selector->style_class.style_class;
}
return 0;
}
void void
_gtk_css_selector_tree_builder_add (GtkCssSelectorTreeBuilder *builder, _gtk_css_selector_tree_builder_add (GtkCssSelectorTreeBuilder *builder,
GtkCssSelector *selectors, GtkCssSelector *selectors,
@@ -2238,7 +2348,27 @@ _gtk_css_selector_tree_builder_add (GtkCssSelectorTreeBuilder *builder,
info->match = match; info->match = match;
info->current_selector = selectors; info->current_selector = selectors;
info->selector_match = selector_match; info->selector_match = selector_match;
builder->infos = g_list_prepend (builder->infos, info); info->name = find_name (selectors);
if (info->name)
{
GList *infos = g_hash_table_lookup (builder->by_name, (gpointer)info->name);
infos = g_list_prepend (infos, info);
g_hash_table_replace (builder->by_name, (gpointer)info->name, infos);
return;
}
info->class = find_class (selectors);
if (info->class)
{
GList *infos = g_hash_table_lookup (builder->by_class, GUINT_TO_POINTER (info->class));
infos = g_list_prepend (infos, info);
g_hash_table_replace (builder->by_class, GUINT_TO_POINTER (info->class), infos);
return;
}
builder->remaining = g_list_prepend (builder->remaining, info);
} }
/* Convert all offsets to node-relative */ /* Convert all offsets to node-relative */
@@ -2265,35 +2395,8 @@ fixup_offsets (GtkCssSelectorTree *tree, guint8 *data)
} }
} }
static void static GtkCssSelectorTree *
compute_non_name_offsets (GtkCssSelectorTree *tree) _gtk_css_selector_tree_builder_build_one (GList *infos)
{
GtkCssSelectorTree *current = tree;
for (; tree != NULL;
tree = (GtkCssSelectorTree *)gtk_css_selector_tree_get_sibling (tree))
{
compute_non_name_offsets ((GtkCssSelectorTree *)gtk_css_selector_tree_get_previous (tree));
if (tree->selector.class != &GTK_CSS_SELECTOR_NAME)
{
for (; current != tree;
current = (GtkCssSelectorTree *)gtk_css_selector_tree_get_sibling (current))
{
current->non_name_sibling_offset = ((guint8 *)tree - (guint8 *)current);
}
}
}
for (; current != NULL;
current = (GtkCssSelectorTree *)gtk_css_selector_tree_get_sibling (current))
{
current->non_name_sibling_offset = GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET;
}
}
GtkCssSelectorTree *
_gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder)
{ {
GtkCssSelectorTree *tree; GtkCssSelectorTree *tree;
GByteArray *array; GByteArray *array;
@@ -2303,7 +2406,7 @@ _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder)
GtkCssSelectorRuleSetInfo *info; GtkCssSelectorRuleSetInfo *info;
array = g_byte_array_new (); array = g_byte_array_new ();
subdivide_infos (array, builder->infos, GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET); subdivide_infos (array, infos, GTK_CSS_SELECTOR_TREE_EMPTY_OFFSET);
len = array->len; len = array->len;
data = g_byte_array_free (array, FALSE); data = g_byte_array_free (array, FALSE);
@@ -2314,10 +2417,9 @@ _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder)
tree = (GtkCssSelectorTree *)data; tree = (GtkCssSelectorTree *)data;
fixup_offsets (tree, data); fixup_offsets (tree, data);
compute_non_name_offsets (tree);
/* Convert offsets to final pointers */ /* Convert offsets to final pointers */
for (l = builder->infos; l != NULL; l = l->next) for (l = infos; l != NULL; l = l->next)
{ {
info = l->data; info = l->data;
if (info->selector_match) if (info->selector_match)
@@ -2335,3 +2437,36 @@ _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder)
return tree; return tree;
} }
GtkCssSelectorTrees *
_gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder)
{
GtkCssSelectorTrees *trees;
GHashTableIter iter;
const char *name;
GList *infos;
gpointer key;
trees = g_new0 (GtkCssSelectorTrees, 1);
trees->by_name = g_hash_table_new (NULL, NULL);
trees->by_class = g_hash_table_new (NULL, NULL);
g_hash_table_iter_init (&iter, builder->by_name);
while (g_hash_table_iter_next (&iter, (gpointer *)&name, (gpointer *)&infos))
{
GtkCssSelectorTree *tree = _gtk_css_selector_tree_builder_build_one (infos);
g_hash_table_insert (trees->by_name, (gpointer)name, tree);
}
g_hash_table_iter_init (&iter, builder->by_class);
while (g_hash_table_iter_next (&iter, &key, (gpointer *)&infos))
{
GtkCssSelectorTree *tree = _gtk_css_selector_tree_builder_build_one (infos);
g_hash_table_insert (trees->by_class, key, tree);
}
if (builder->remaining)
trees->remaining = _gtk_css_selector_tree_builder_build_one (builder->remaining);
return trees;
}

View File

@@ -25,6 +25,7 @@ G_BEGIN_DECLS
typedef union _GtkCssSelector GtkCssSelector; typedef union _GtkCssSelector GtkCssSelector;
typedef struct _GtkCssSelectorTree GtkCssSelectorTree; typedef struct _GtkCssSelectorTree GtkCssSelectorTree;
typedef struct _GtkCssSelectorTrees GtkCssSelectorTrees;
typedef struct _GtkCssSelectorTreeBuilder GtkCssSelectorTreeBuilder; typedef struct _GtkCssSelectorTreeBuilder GtkCssSelectorTreeBuilder;
GtkCssSelector * _gtk_css_selector_parse (GtkCssParser *parser); GtkCssSelector * _gtk_css_selector_parse (GtkCssParser *parser);
@@ -40,14 +41,14 @@ GtkCssChange _gtk_css_selector_get_change (const GtkCssSelector *sel
int _gtk_css_selector_compare (const GtkCssSelector *a, int _gtk_css_selector_compare (const GtkCssSelector *a,
const GtkCssSelector *b); const GtkCssSelector *b);
void _gtk_css_selector_tree_free (GtkCssSelectorTree *tree); void _gtk_css_selector_tree_free (GtkCssSelectorTrees *tree);
GPtrArray * _gtk_css_selector_tree_match_all (const GtkCssSelectorTree *tree, GPtrArray * _gtk_css_selector_tree_match_all (const GtkCssSelectorTrees *tree,
const GtkCssMatcher *matcher); const GtkCssMatcher *matcher);
GtkCssChange _gtk_css_selector_tree_get_change_all (const GtkCssSelectorTree *tree, GtkCssChange _gtk_css_selector_tree_get_change_all (const GtkCssSelectorTrees *tree,
const GtkCssMatcher *matcher); const GtkCssMatcher *matcher);
void _gtk_css_selector_tree_match_print (const GtkCssSelectorTree *tree, void _gtk_css_selector_tree_match_print (const GtkCssSelectorTree *tree,
GString *str); GString *str);
gboolean _gtk_css_selector_tree_is_empty (const GtkCssSelectorTree *tree) G_GNUC_CONST; gboolean _gtk_css_selector_tree_is_empty (const GtkCssSelectorTrees *tree) G_GNUC_CONST;
@@ -56,7 +57,7 @@ void _gtk_css_selector_tree_builder_add (GtkCssSelectorT
GtkCssSelector *selectors, GtkCssSelector *selectors,
GtkCssSelectorTree **selector_match, GtkCssSelectorTree **selector_match,
gpointer match); gpointer match);
GtkCssSelectorTree * _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder); GtkCssSelectorTrees * _gtk_css_selector_tree_builder_build (GtkCssSelectorTreeBuilder *builder);
void _gtk_css_selector_tree_builder_free (GtkCssSelectorTreeBuilder *builder); void _gtk_css_selector_tree_builder_free (GtkCssSelectorTreeBuilder *builder);
const char *gtk_css_pseudoclass_name (GtkStateFlags flags); const char *gtk_css_pseudoclass_name (GtkStateFlags flags);

View File

@@ -108,10 +108,7 @@ gtk_style_cascade_get_settings (GtkStyleProvider *provider)
item; item;
item = gtk_style_cascade_iter_next (cascade, &iter)) item = gtk_style_cascade_iter_next (cascade, &iter))
{ {
if (!GTK_IS_STYLE_PROVIDER (item)) settings = gtk_style_provider_get_settings (item);
continue;
settings = gtk_style_provider_get_settings (GTK_STYLE_PROVIDER (item));
if (settings) if (settings)
{ {
gtk_style_cascade_iter_clear (&iter); gtk_style_cascade_iter_clear (&iter);
@@ -136,18 +133,11 @@ gtk_style_cascade_get_color (GtkStyleProvider *provider,
item; item;
item = gtk_style_cascade_iter_next (cascade, &iter)) item = gtk_style_cascade_iter_next (cascade, &iter))
{ {
if (GTK_IS_STYLE_PROVIDER (item)) color = gtk_style_provider_get_color (item, name);
if (color)
{ {
color = gtk_style_provider_get_color (GTK_STYLE_PROVIDER (item), name); gtk_style_cascade_iter_clear (&iter);
if (color) return color;
{
gtk_style_cascade_iter_clear (&iter);
return color;
}
}
else
{
/* If somebody hits this code path, shout at them */
} }
} }
@@ -176,10 +166,7 @@ gtk_style_cascade_get_keyframes (GtkStyleProvider *provider,
item; item;
item = gtk_style_cascade_iter_next (cascade, &iter)) item = gtk_style_cascade_iter_next (cascade, &iter))
{ {
if (!GTK_IS_STYLE_PROVIDER (item)) keyframes = gtk_style_provider_get_keyframes (item, name);
continue;
keyframes = gtk_style_provider_get_keyframes (GTK_STYLE_PROVIDER (item), name);
if (keyframes) if (keyframes)
{ {
gtk_style_cascade_iter_clear (&iter); gtk_style_cascade_iter_clear (&iter);
@@ -206,19 +193,10 @@ gtk_style_cascade_lookup (GtkStyleProvider *provider,
item; item;
item = gtk_style_cascade_iter_next (cascade, &iter)) item = gtk_style_cascade_iter_next (cascade, &iter))
{ {
GtkStyleProvider *sp = (GtkStyleProvider *) item; gtk_style_provider_lookup (item, matcher, lookup,
if (GTK_IS_STYLE_PROVIDER (sp)) change ? &iter_change : NULL);
{ if (change)
gtk_style_provider_lookup (sp, matcher, lookup, *change |= iter_change;
change ? &iter_change : NULL);
if (change)
*change |= iter_change;
}
else
{
/* you lose */
g_warn_if_reached ();
}
} }
gtk_style_cascade_iter_clear (&iter); gtk_style_cascade_iter_clear (&iter);
} }

View File

@@ -10481,6 +10481,86 @@ gtk_widget_can_be_picked (GtkWidget *widget,
return TRUE; return TRUE;
} }
static GtkWidget *
gtk_widget_do_pick (GtkWidget *widget,
gdouble x,
gdouble y,
GtkPickFlags flags)
{
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
GtkWidget *child;
if (priv->overflow == GTK_OVERFLOW_HIDDEN)
{
GtkCssBoxes boxes;
gtk_css_boxes_init (&boxes, widget);
if (!gsk_rounded_rect_contains_point (gtk_css_boxes_get_padding_box (&boxes),
&GRAPHENE_POINT_INIT (x, y)))
return NULL;
}
for (child = _gtk_widget_get_last_child (widget);
child;
child = _gtk_widget_get_prev_sibling (child))
{
GtkWidgetPrivate *child_priv = gtk_widget_get_instance_private (child);
GskTransform *transform;
GtkWidget *picked;
graphene_point3d_t res;
if (!gtk_widget_can_be_picked (child, flags))
continue;
if (GTK_IS_NATIVE (child))
continue;
if (child_priv->transform)
{
transform = gsk_transform_invert (gsk_transform_ref (child_priv->transform));
if (transform == NULL)
continue;
}
else
{
transform = NULL;
}
if (gsk_transform_get_category (transform) >= GSK_TRANSFORM_CATEGORY_2D_TRANSLATE)
{
float dx, dy;
gsk_transform_to_translate (transform, &dx, &dy);
graphene_point3d_init (&res, x + dx, y + dy, 0.);
}
else
{
graphene_matrix_t inv;
graphene_point3d_t p0, p1;
gsk_transform_to_matrix (transform, &inv);
gsk_transform_unref (transform);
graphene_point3d_init (&p0, x, y, 0);
graphene_point3d_init (&p1, x, y, 1);
graphene_matrix_transform_point3d (&inv, &p0, &p0);
graphene_matrix_transform_point3d (&inv, &p1, &p1);
if (fabs (p0.z - p1.z) < 1.f / 4096)
continue;
graphene_point3d_interpolate (&p0, &p1, p0.z / (p0.z - p1.z), &res);
}
picked = gtk_widget_do_pick (child, res.x, res.y, flags);
if (picked)
return picked;
}
if (!GTK_WIDGET_GET_CLASS (widget)->contains (widget, x, y))
return NULL;
return widget;
}
/** /**
* gtk_widget_pick: * gtk_widget_pick:
* @widget: the widget to query * @widget: the widget to query
@@ -10510,22 +10590,11 @@ gtk_widget_pick (GtkWidget *widget,
gdouble y, gdouble y,
GtkPickFlags flags) GtkPickFlags flags)
{ {
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget); g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
GtkWidget *child;
GtkCssBoxes boxes;
if (!gtk_widget_can_be_picked (widget, flags)) if (!gtk_widget_can_be_picked (widget, flags))
return NULL; return NULL;
if (priv->overflow == GTK_OVERFLOW_HIDDEN)
{
gtk_css_boxes_init (&boxes, widget);
if (!gsk_rounded_rect_contains_point (gtk_css_boxes_get_padding_box (&boxes),
&GRAPHENE_POINT_INIT (x, y)))
return NULL;
}
if (GTK_IS_WINDOW (widget)) if (GTK_IS_WINDOW (widget))
{ {
GtkWidget *picked; GtkWidget *picked;
@@ -10535,52 +10604,7 @@ gtk_widget_pick (GtkWidget *widget,
return picked; return picked;
} }
for (child = _gtk_widget_get_last_child (widget); return gtk_widget_do_pick (widget, x, y, flags);
child;
child = _gtk_widget_get_prev_sibling (child))
{
GtkWidgetPrivate *child_priv = gtk_widget_get_instance_private (child);
GskTransform *transform;
graphene_matrix_t inv;
GtkWidget *picked;
graphene_point3d_t p0, p1, res;
if (!gtk_widget_can_be_picked (child, flags))
continue;
if (GTK_IS_NATIVE (child))
continue;
if (child_priv->transform)
{
transform = gsk_transform_invert (gsk_transform_ref (child_priv->transform));
if (transform == NULL)
continue;
}
else
{
transform = NULL;
}
gsk_transform_to_matrix (transform, &inv);
gsk_transform_unref (transform);
graphene_point3d_init (&p0, x, y, 0);
graphene_point3d_init (&p1, x, y, 1);
graphene_matrix_transform_point3d (&inv, &p0, &p0);
graphene_matrix_transform_point3d (&inv, &p1, &p1);
if (fabs (p0.z - p1.z) < 1.f / 4096)
continue;
graphene_point3d_interpolate (&p0, &p1, p0.z / (p0.z - p1.z), &res);
picked = gtk_widget_pick (child, res.x, res.y, flags);
if (picked)
return picked;
}
if (!gtk_widget_contains (widget, x, y))
return NULL;
return widget;
} }
/** /**

File diff suppressed because it is too large Load Diff

335
po/pl.po
View File

@@ -16,8 +16,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gtk\n" "Project-Id-Version: gtk\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-04 17:51+0000\n" "POT-Creation-Date: 2020-01-18 16:40+0000\n"
"PO-Revision-Date: 2020-01-05 17:25+0100\n" "PO-Revision-Date: 2020-01-19 12:58+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n" "Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n" "Language: pl\n"
@@ -40,12 +40,12 @@ msgstr "Ten schowek nie może przechowywać danych."
msgid "Cannot read from empty clipboard." msgid "Cannot read from empty clipboard."
msgstr "Nie można odczytać z pustego schowka." msgstr "Nie można odczytać z pustego schowka."
#: gdk/gdkclipboard.c:325 gdk/gdkclipboard.c:1137 gdk/gdkdrag.c:592 #: gdk/gdkclipboard.c:325 gdk/gdkclipboard.c:1137 gdk/gdkdrag.c:602
msgid "No compatible formats to transfer clipboard contents." msgid "No compatible formats to transfer clipboard contents."
msgstr "Brak zgodnych formatów do przesłania zawartości schowka." msgstr "Brak zgodnych formatów do przesłania zawartości schowka."
#: gdk/gdkcontentprovider.c:108 gdk/gdkcontentproviderimpl.c:215 #: gdk/gdkcontentprovider.c:108 gdk/gdkcontentproviderimpl.c:216
#: gtk/gtkdnd.c:817 #: gdk/gdkcontentproviderimpl.c:439
#, c-format #, c-format
msgid "Cannot provide contents as “%s”" msgid "Cannot provide contents as “%s”"
msgstr "Nie można dostarczyć zawartości jako „%s”" msgstr "Nie można dostarczyć zawartości jako „%s”"
@@ -55,6 +55,11 @@ msgstr "Nie można dostarczyć zawartości jako „%s”"
msgid "Cannot provide contents as %s" msgid "Cannot provide contents as %s"
msgstr "Nie można dostarczyć zawartości jako %s" msgstr "Nie można dostarczyć zawartości jako %s"
#: gdk/gdkcontentproviderimpl.c:448
#, c-format
msgid "Failed to get contents as “%s”"
msgstr "Pobranie zawartości jako „%s” się nie powiodło"
#: gdk/gdkdrop.c:110 #: gdk/gdkdrop.c:110
msgid "Dragndrop from other applications is not supported." msgid "Dragndrop from other applications is not supported."
msgstr "Przeciąganie z innych programów nie jest obsługiwane." msgstr "Przeciąganie z innych programów nie jest obsługiwane."
@@ -456,7 +461,7 @@ msgstr "Uśpienie"
msgid "Not implemented on OS X" msgid "Not implemented on OS X"
msgstr "Niezaimplementowane w systemie OS X" msgstr "Niezaimplementowane w systemie OS X"
#: gdk/wayland/gdkclipboard-wayland.c:231 gdk/wayland/gdkdrop-wayland.c:202 #: gdk/wayland/gdkclipboard-wayland.c:231 gdk/wayland/gdkdrop-wayland.c:204
#: gdk/wayland/gdkprimary-wayland.c:312 gdk/win32/gdkdrop-win32.c:1278 #: gdk/wayland/gdkprimary-wayland.c:312 gdk/win32/gdkdrop-win32.c:1278
#: gdk/win32/gdkdrop-win32.c:1323 gdk/x11/gdkclipboard-x11.c:760 #: gdk/win32/gdkdrop-win32.c:1323 gdk/x11/gdkclipboard-x11.c:760
#: gdk/x11/gdkdrop-x11.c:196 #: gdk/x11/gdkdrop-x11.c:196
@@ -1568,7 +1573,7 @@ msgstr "Tekst nie może pojawiać się wewnątrz <%s>"
#. * text direction of RTL and specify "calendar:YM", then the year #. * text direction of RTL and specify "calendar:YM", then the year
#. * will appear to the right of the month. #. * will appear to the right of the month.
#. #.
#: gtk/gtkcalendar.c:812 #: gtk/gtkcalendar.c:811
msgid "calendar:MY" msgid "calendar:MY"
msgstr "calendar:MY" msgstr "calendar:MY"
@@ -1576,7 +1581,7 @@ msgstr "calendar:MY"
#. * first day of the week to calendar:week_start:1 if you want Monday #. * first day of the week to calendar:week_start:1 if you want Monday
#. * to be the first day of the week, and so on. #. * to be the first day of the week, and so on.
#. #.
#: gtk/gtkcalendar.c:850 #: gtk/gtkcalendar.c:849
msgid "calendar:week_start:0" msgid "calendar:week_start:0"
msgstr "calendar:week_start:1" msgstr "calendar:week_start:1"
@@ -1585,7 +1590,7 @@ msgstr "calendar:week_start:1"
#. * #. *
#. * If you don't understand this, leave it as "2000" #. * If you don't understand this, leave it as "2000"
#. #.
#: gtk/gtkcalendar.c:1656 #: gtk/gtkcalendar.c:1655
msgctxt "year measurement template" msgctxt "year measurement template"
msgid "2000" msgid "2000"
msgstr "8888" msgstr "8888"
@@ -1600,7 +1605,7 @@ msgstr "8888"
#. * digits. That needs support from your system and locale definition #. * digits. That needs support from your system and locale definition
#. * too. #. * too.
#. #.
#: gtk/gtkcalendar.c:1687 gtk/gtkcalendar.c:2295 #: gtk/gtkcalendar.c:1686 gtk/gtkcalendar.c:2294
#, c-format #, c-format
msgctxt "calendar:day:digits" msgctxt "calendar:day:digits"
msgid "%d" msgid "%d"
@@ -1616,7 +1621,7 @@ msgstr "%d"
#. * digits. That needs support from your system and locale definition #. * digits. That needs support from your system and locale definition
#. * too. #. * too.
#. #.
#: gtk/gtkcalendar.c:1719 gtk/gtkcalendar.c:2187 #: gtk/gtkcalendar.c:1718 gtk/gtkcalendar.c:2186
#, c-format #, c-format
msgctxt "calendar:week:digits" msgctxt "calendar:week:digits"
msgid "%d" msgid "%d"
@@ -1632,7 +1637,7 @@ msgstr "%d"
#. * #. *
#. * "%Y" is appropriate for most locales. #. * "%Y" is appropriate for most locales.
#. #.
#: gtk/gtkcalendar.c:1962 #: gtk/gtkcalendar.c:1961
msgctxt "calendar year format" msgctxt "calendar year format"
msgid "%Y" msgid "%Y"
msgstr "%Y" msgstr "%Y"
@@ -1667,7 +1672,7 @@ msgctxt "progress bar label"
msgid "%d%%" msgid "%d%%"
msgstr "%d%%" msgstr "%d%%"
#: gtk/gtkcolorbutton.c:190 gtk/gtkcolorbutton.c:357 #: gtk/gtkcolorbutton.c:177 gtk/gtkcolorbutton.c:320
msgid "Pick a Color" msgid "Pick a Color"
msgstr "Wybór koloru" msgstr "Wybór koloru"
@@ -1867,19 +1872,19 @@ msgid "White"
msgstr "Biały" msgstr "Biały"
#. translators: label for the custom section in the color chooser #. translators: label for the custom section in the color chooser
#: gtk/gtkcolorchooserwidget.c:548 #: gtk/gtkcolorchooserwidget.c:549
msgid "Custom" msgid "Custom"
msgstr "Niestandardowy" msgstr "Niestandardowy"
#: gtk/gtkcolorchooserwidget.c:559 #: gtk/gtkcolorchooserwidget.c:560
msgid "Custom color" msgid "Custom color"
msgstr "Niestandardowy kolor" msgstr "Niestandardowy kolor"
#: gtk/gtkcolorchooserwidget.c:560 #: gtk/gtkcolorchooserwidget.c:561
msgid "Create a custom color" msgid "Create a custom color"
msgstr "Tworzy niestandardowy kolor" msgstr "Tworzy niestandardowy kolor"
#: gtk/gtkcolorchooserwidget.c:579 #: gtk/gtkcolorchooserwidget.c:586
#, c-format #, c-format
msgid "Custom color %d: %s" msgid "Custom color %d: %s"
msgstr "%d. niestandardowy kolor: %s" msgstr "%d. niestandardowy kolor: %s"
@@ -1898,7 +1903,7 @@ msgctxt "Color channel"
msgid "Alpha" msgid "Alpha"
msgstr "Alfa" msgstr "Alfa"
#: gtk/gtkcolorswatch.c:262 #: gtk/gtkcolorswatch.c:234
msgid "Customize" msgid "Customize"
msgstr "Dostosuj" msgstr "Dostosuj"
@@ -1966,7 +1971,7 @@ msgstr "_Prawy:"
msgid "Paper Margins" msgid "Paper Margins"
msgstr "Marginesy papieru" msgstr "Marginesy papieru"
#: gtk/gtkentry.c:3518 #: gtk/gtkentry.c:3521
msgid "Insert Emoji" msgid "Insert Emoji"
msgstr "Wstawia emoji" msgstr "Wstawia emoji"
@@ -1974,7 +1979,7 @@ msgstr "Wstawia emoji"
msgid "Select a File" msgid "Select a File"
msgstr "Wybór pliku" msgstr "Wybór pliku"
#: gtk/gtkfilechooserbutton.c:113 gtk/gtkplacessidebar.c:1093 #: gtk/gtkfilechooserbutton.c:113 gtk/gtkplacessidebar.c:1086
msgid "Desktop" msgid "Desktop"
msgstr "Pulpit" msgstr "Pulpit"
@@ -1982,7 +1987,7 @@ msgstr "Pulpit"
msgid "(None)" msgid "(None)"
msgstr "(Brak)" msgstr "(Brak)"
#: gtk/gtkfilechooserbutton.c:2068 #: gtk/gtkfilechooserbutton.c:2100
msgid "Other…" msgid "Other…"
msgstr "Inne…" msgstr "Inne…"
@@ -2047,7 +2052,7 @@ msgid "A file with that name already exists"
msgstr "Plik o tej nazwie już istnieje" msgstr "Plik o tej nazwie już istnieje"
#: gtk/gtkfilechoosernative.c:525 gtk/gtkfilechoosernative.c:603 #: gtk/gtkfilechoosernative.c:525 gtk/gtkfilechoosernative.c:603
#: gtk/gtkfilechooserwidget.c:1508 gtk/gtkfilechooserwidget.c:6392 #: gtk/gtkfilechooserwidget.c:1508 gtk/gtkfilechooserwidget.c:6367
#: gtk/gtkmessagedialog.c:777 gtk/gtkmessagedialog.c:786 #: gtk/gtkmessagedialog.c:777 gtk/gtkmessagedialog.c:786
#: gtk/gtkmountoperation.c:596 gtk/gtkpagesetupunixdialog.c:210 #: gtk/gtkmountoperation.c:596 gtk/gtkpagesetupunixdialog.c:210
#: gtk/gtkprintbackend.c:657 gtk/gtkprinteroptionwidget.c:545 #: gtk/gtkprintbackend.c:657 gtk/gtkprinteroptionwidget.c:545
@@ -2060,7 +2065,7 @@ msgid "_Cancel"
msgstr "_Anuluj" msgstr "_Anuluj"
#: gtk/gtkfilechoosernative.c:526 gtk/gtkfilechoosernative.c:597 #: gtk/gtkfilechoosernative.c:526 gtk/gtkfilechoosernative.c:597
#: gtk/gtkplacessidebar.c:3558 gtk/gtkplacessidebar.c:3627 #: gtk/gtkplacessidebar.c:3524 gtk/gtkplacessidebar.c:3593
#: gtk/gtkplacesview.c:1667 #: gtk/gtkplacesview.c:1667
msgid "_Open" msgid "_Open"
msgstr "_Otwórz" msgstr "_Otwórz"
@@ -2070,7 +2075,7 @@ msgstr "_Otwórz"
msgid "_Save" msgid "_Save"
msgstr "_Zapisz" msgstr "_Zapisz"
#: gtk/gtkfilechoosernativequartz.c:331 gtk/ui/gtkfilechooserwidget.ui:362 #: gtk/gtkfilechoosernativequartz.c:331 gtk/ui/gtkfilechooserwidget.ui:357
msgid "Select which types of files are shown" msgid "Select which types of files are shown"
msgstr "Wybór typów wyświetlanych plików" msgstr "Wybór typów wyświetlanych plików"
@@ -2151,8 +2156,8 @@ msgstr "Na pewno trwale usunąć „%s”?"
msgid "If you delete an item, it will be permanently lost." msgid "If you delete an item, it will be permanently lost."
msgstr "Jeśli element zostanie usunięty, to zostanie on bezpowrotnie utracony." msgstr "Jeśli element zostanie usunięty, to zostanie on bezpowrotnie utracony."
#: gtk/gtkfilechooserwidget.c:1509 gtk/gtkfilechooserwidget.c:2251 #: gtk/gtkfilechooserwidget.c:1509 gtk/gtkfilechooserwidget.c:2226
#: gtk/gtklabel.c:6064 gtk/gtktext.c:5862 gtk/gtktextview.c:8728 #: gtk/gtklabel.c:6004 gtk/gtktext.c:5897 gtk/gtktextview.c:8599
msgid "_Delete" msgid "_Delete"
msgstr "_Usuń" msgstr "_Usuń"
@@ -2164,189 +2169,189 @@ msgstr "Nie można zmienić nazwy pliku"
msgid "Could not select file" msgid "Could not select file"
msgstr "Nie można wybrać pliku" msgstr "Nie można wybrać pliku"
#: gtk/gtkfilechooserwidget.c:2246 #: gtk/gtkfilechooserwidget.c:2221
msgid "_Visit File" msgid "_Visit File"
msgstr "Od_wiedź plik" msgstr "Od_wiedź plik"
#: gtk/gtkfilechooserwidget.c:2247 #: gtk/gtkfilechooserwidget.c:2222
msgid "_Open With File Manager" msgid "_Open With File Manager"
msgstr "_Otwórz w menedżerze plików" msgstr "_Otwórz w menedżerze plików"
#: gtk/gtkfilechooserwidget.c:2248 #: gtk/gtkfilechooserwidget.c:2223
msgid "_Copy Location" msgid "_Copy Location"
msgstr "S_kopiuj położenie" msgstr "S_kopiuj położenie"
#: gtk/gtkfilechooserwidget.c:2249 #: gtk/gtkfilechooserwidget.c:2224
msgid "_Add to Bookmarks" msgid "_Add to Bookmarks"
msgstr "_Dodaj zakładkę" msgstr "_Dodaj zakładkę"
#: gtk/gtkfilechooserwidget.c:2250 gtk/gtkplacessidebar.c:2681 #: gtk/gtkfilechooserwidget.c:2225 gtk/gtkplacessidebar.c:2647
#: gtk/ui/gtkfilechooserwidget.ui:481 #: gtk/ui/gtkfilechooserwidget.ui:476
msgid "_Rename" msgid "_Rename"
msgstr "Z_mień nazwę" msgstr "Z_mień nazwę"
#: gtk/gtkfilechooserwidget.c:2252 #: gtk/gtkfilechooserwidget.c:2227
msgid "_Move to Trash" msgid "_Move to Trash"
msgstr "_Przenieś do kosza" msgstr "_Przenieś do kosza"
#: gtk/gtkfilechooserwidget.c:2256 #: gtk/gtkfilechooserwidget.c:2231
msgid "Show _Hidden Files" msgid "Show _Hidden Files"
msgstr "_Ukryte pliki" msgstr "_Ukryte pliki"
#: gtk/gtkfilechooserwidget.c:2257 #: gtk/gtkfilechooserwidget.c:2232
msgid "Show _Size Column" msgid "Show _Size Column"
msgstr "_Rozmiar" msgstr "_Rozmiar"
#: gtk/gtkfilechooserwidget.c:2258 #: gtk/gtkfilechooserwidget.c:2233
msgid "Show T_ype Column" msgid "Show T_ype Column"
msgstr "_Typ" msgstr "_Typ"
#: gtk/gtkfilechooserwidget.c:2259 #: gtk/gtkfilechooserwidget.c:2234
msgid "Show _Time" msgid "Show _Time"
msgstr "_Czas" msgstr "_Czas"
#: gtk/gtkfilechooserwidget.c:2260 #: gtk/gtkfilechooserwidget.c:2235
msgid "Sort _Folders before Files" msgid "Sort _Folders before Files"
msgstr "K_atalogi przed plikami" msgstr "K_atalogi przed plikami"
#. this is the header for the location column in the print dialog #. this is the header for the location column in the print dialog
#: gtk/gtkfilechooserwidget.c:2557 gtk/inspector/css-node-tree.ui:133 #: gtk/gtkfilechooserwidget.c:2532 gtk/inspector/css-node-tree.ui:133
#: gtk/ui/gtkfilechooserwidget.ui:194 gtk/ui/gtkprintunixdialog.ui:108 #: gtk/ui/gtkfilechooserwidget.ui:189 gtk/ui/gtkprintunixdialog.ui:108
msgid "Location" msgid "Location"
msgstr "Położenie" msgstr "Położenie"
#. Label #. Label
#: gtk/gtkfilechooserwidget.c:2650 #: gtk/gtkfilechooserwidget.c:2625
msgid "_Name:" msgid "_Name:"
msgstr "_Nazwa:" msgstr "_Nazwa:"
#: gtk/gtkfilechooserwidget.c:3270 gtk/gtkfilechooserwidget.c:3284 #: gtk/gtkfilechooserwidget.c:3245 gtk/gtkfilechooserwidget.c:3259
#, c-format #, c-format
msgid "Searching in %s" msgid "Searching in %s"
msgstr "Wyszukiwanie w „%s”" msgstr "Wyszukiwanie w „%s”"
#: gtk/gtkfilechooserwidget.c:3290 #: gtk/gtkfilechooserwidget.c:3265
msgid "Searching" msgid "Searching"
msgstr "Wyszukiwanie" msgstr "Wyszukiwanie"
#: gtk/gtkfilechooserwidget.c:3297 #: gtk/gtkfilechooserwidget.c:3272
msgid "Enter location" msgid "Enter location"
msgstr "Proszę wprowadzić położenie" msgstr "Proszę wprowadzić położenie"
#: gtk/gtkfilechooserwidget.c:3299 #: gtk/gtkfilechooserwidget.c:3274
msgid "Enter location or URL" msgid "Enter location or URL"
msgstr "Proszę wprowadzić położenie lub adres URL" msgstr "Proszę wprowadzić położenie lub adres URL"
#: gtk/gtkfilechooserwidget.c:4301 gtk/gtkfilechooserwidget.c:7306 #: gtk/gtkfilechooserwidget.c:4276 gtk/gtkfilechooserwidget.c:7281
#: gtk/ui/gtkfilechooserwidget.ui:234 #: gtk/ui/gtkfilechooserwidget.ui:229
msgid "Modified" msgid "Modified"
msgstr "Modyfikacja" msgstr "Modyfikacja"
#: gtk/gtkfilechooserwidget.c:4579 #: gtk/gtkfilechooserwidget.c:4554
#, c-format #, c-format
msgid "Could not read the contents of %s" msgid "Could not read the contents of %s"
msgstr "Nie można odczytać zawartości „%s”" msgstr "Nie można odczytać zawartości „%s”"
#: gtk/gtkfilechooserwidget.c:4583 #: gtk/gtkfilechooserwidget.c:4558
msgid "Could not read the contents of the folder" msgid "Could not read the contents of the folder"
msgstr "Nie można odczytać zawartości katalogu" msgstr "Nie można odczytać zawartości katalogu"
#. Translators: see g_date_time_format() for details on the format #. Translators: see g_date_time_format() for details on the format
#: gtk/gtkfilechooserwidget.c:4737 gtk/gtkfilechooserwidget.c:4781 #: gtk/gtkfilechooserwidget.c:4712 gtk/gtkfilechooserwidget.c:4756
msgid "%H:%M" msgid "%H:%M"
msgstr "%H%M" msgstr "%H%M"
#: gtk/gtkfilechooserwidget.c:4739 gtk/gtkfilechooserwidget.c:4783 #: gtk/gtkfilechooserwidget.c:4714 gtk/gtkfilechooserwidget.c:4758
msgid "%l:%M %p" msgid "%l:%M %p"
msgstr "%-l%M%p" msgstr "%-l%M%p"
#: gtk/gtkfilechooserwidget.c:4743 #: gtk/gtkfilechooserwidget.c:4718
msgid "Yesterday" msgid "Yesterday"
msgstr "Wczoraj" msgstr "Wczoraj"
#: gtk/gtkfilechooserwidget.c:4751 #: gtk/gtkfilechooserwidget.c:4726
msgid "%-e %b" msgid "%-e %b"
msgstr "%-d %b" msgstr "%-d %b"
#: gtk/gtkfilechooserwidget.c:4755 #: gtk/gtkfilechooserwidget.c:4730
msgid "%-e %b %Y" msgid "%-e %b %Y"
msgstr "%-d %b %Y" msgstr "%-d %b %Y"
#: gtk/gtkfilechooserwidget.c:4845 gtk/gtkfilechooserwidget.c:4853 #: gtk/gtkfilechooserwidget.c:4820 gtk/gtkfilechooserwidget.c:4828
msgid "Program" msgid "Program"
msgstr "Program" msgstr "Program"
#: gtk/gtkfilechooserwidget.c:4846 #: gtk/gtkfilechooserwidget.c:4821
msgid "Audio" msgid "Audio"
msgstr "Dźwięk" msgstr "Dźwięk"
#: gtk/gtkfilechooserwidget.c:4847 gtk/gtkfontbutton.c:564 #: gtk/gtkfilechooserwidget.c:4822 gtk/gtkfontbutton.c:564
#: gtk/inspector/visual.ui:187 #: gtk/inspector/visual.ui:187
msgid "Font" msgid "Font"
msgstr "Czcionka" msgstr "Czcionka"
#: gtk/gtkfilechooserwidget.c:4848 #: gtk/gtkfilechooserwidget.c:4823
msgid "Image" msgid "Image"
msgstr "Obraz" msgstr "Obraz"
#: gtk/gtkfilechooserwidget.c:4849 #: gtk/gtkfilechooserwidget.c:4824
msgid "Archive" msgid "Archive"
msgstr "Archiwum" msgstr "Archiwum"
#: gtk/gtkfilechooserwidget.c:4850 #: gtk/gtkfilechooserwidget.c:4825
msgid "Markup" msgid "Markup"
msgstr "Hipertekst" msgstr "Hipertekst"
#: gtk/gtkfilechooserwidget.c:4851 gtk/gtkfilechooserwidget.c:4852 #: gtk/gtkfilechooserwidget.c:4826 gtk/gtkfilechooserwidget.c:4827
msgid "Text" msgid "Text"
msgstr "Tekst" msgstr "Tekst"
#: gtk/gtkfilechooserwidget.c:4854 #: gtk/gtkfilechooserwidget.c:4829
msgid "Video" msgid "Video"
msgstr "Wideo" msgstr "Wideo"
#: gtk/gtkfilechooserwidget.c:4855 #: gtk/gtkfilechooserwidget.c:4830
msgid "Contacts" msgid "Contacts"
msgstr "Kontakty" msgstr "Kontakty"
#: gtk/gtkfilechooserwidget.c:4856 #: gtk/gtkfilechooserwidget.c:4831
msgid "Calendar" msgid "Calendar"
msgstr "Kalendarz" msgstr "Kalendarz"
#: gtk/gtkfilechooserwidget.c:4857 #: gtk/gtkfilechooserwidget.c:4832
msgid "Document" msgid "Document"
msgstr "Dokument" msgstr "Dokument"
#: gtk/gtkfilechooserwidget.c:4858 #: gtk/gtkfilechooserwidget.c:4833
msgid "Presentation" msgid "Presentation"
msgstr "Prezentacja" msgstr "Prezentacja"
#: gtk/gtkfilechooserwidget.c:4859 #: gtk/gtkfilechooserwidget.c:4834
msgid "Spreadsheet" msgid "Spreadsheet"
msgstr "Arkusz kalkulacyjny" msgstr "Arkusz kalkulacyjny"
#. Translators: We don't know whether this printer is #. Translators: We don't know whether this printer is
#. * available to print to. #. * available to print to.
#: gtk/gtkfilechooserwidget.c:4890 gtk/gtkfilechooserwidget.c:5074 #: gtk/gtkfilechooserwidget.c:4865 gtk/gtkfilechooserwidget.c:5049
#: gtk/inspector/prop-editor.c:1498 #: gtk/inspector/prop-editor.c:1498
#: modules/printbackends/gtkprintbackendcloudprint.c:731 #: modules/printbackends/gtkprintbackendcloudprint.c:731
msgid "Unknown" msgid "Unknown"
msgstr "Nieznane" msgstr "Nieznane"
#: gtk/gtkfilechooserwidget.c:5113 gtk/gtkplacessidebar.c:1078 #: gtk/gtkfilechooserwidget.c:5088 gtk/gtkplacessidebar.c:1071
msgid "Home" msgid "Home"
msgstr "Katalog domowy" msgstr "Katalog domowy"
#: gtk/gtkfilechooserwidget.c:5610 #: gtk/gtkfilechooserwidget.c:5585
msgid "Cannot change to folder because it is not local" msgid "Cannot change to folder because it is not local"
msgstr "Nie można przejść do katalogu, ponieważ nie jest on lokalny" msgstr "Nie można przejść do katalogu, ponieważ nie jest on lokalny"
#: gtk/gtkfilechooserwidget.c:6385 gtk/gtkprintunixdialog.c:671 #: gtk/gtkfilechooserwidget.c:6360 gtk/gtkprintunixdialog.c:671
#, c-format #, c-format
msgid "A file named “%s” already exists. Do you want to replace it?" msgid "A file named “%s” already exists. Do you want to replace it?"
msgstr "Plik o nazwie „%s” już istnieje. Zastąpić go?" msgstr "Plik o nazwie „%s” już istnieje. Zastąpić go?"
#: gtk/gtkfilechooserwidget.c:6388 gtk/gtkprintunixdialog.c:675 #: gtk/gtkfilechooserwidget.c:6363 gtk/gtkprintunixdialog.c:675
#, c-format #, c-format
msgid "" msgid ""
"The file already exists in “%s”. Replacing it will overwrite its contents." "The file already exists in “%s”. Replacing it will overwrite its contents."
@@ -2354,19 +2359,19 @@ msgstr ""
"Plik już istnieje w „%s”. Zastąpienie go spowoduje nadpisanie jego " "Plik już istnieje w „%s”. Zastąpienie go spowoduje nadpisanie jego "
"zawartości." "zawartości."
#: gtk/gtkfilechooserwidget.c:6393 gtk/gtkprintunixdialog.c:683 #: gtk/gtkfilechooserwidget.c:6368 gtk/gtkprintunixdialog.c:683
msgid "_Replace" msgid "_Replace"
msgstr "_Zastąp" msgstr "_Zastąp"
#: gtk/gtkfilechooserwidget.c:6601 #: gtk/gtkfilechooserwidget.c:6576
msgid "You do not have access to the specified folder." msgid "You do not have access to the specified folder."
msgstr "Brak dostępu do podanego katalogu." msgstr "Brak dostępu do podanego katalogu."
#: gtk/gtkfilechooserwidget.c:7229 #: gtk/gtkfilechooserwidget.c:7204
msgid "Could not send the search request" msgid "Could not send the search request"
msgstr "Nie można wysłać żądania wyszukiwania" msgstr "Nie można wysłać żądania wyszukiwania"
#: gtk/gtkfilechooserwidget.c:7555 #: gtk/gtkfilechooserwidget.c:7530
msgid "Accessed" msgid "Accessed"
msgstr "Dostęp" msgstr "Dostęp"
@@ -2392,51 +2397,51 @@ msgctxt "font"
msgid "None" msgid "None"
msgstr "Brak" msgstr "Brak"
#: gtk/gtkfontchooserwidget.c:1541 #: gtk/gtkfontchooserwidget.c:1543
msgid "Width" msgid "Width"
msgstr "Szerokość" msgstr "Szerokość"
#: gtk/gtkfontchooserwidget.c:1542 #: gtk/gtkfontchooserwidget.c:1544
msgid "Weight" msgid "Weight"
msgstr "Waga" msgstr "Waga"
#: gtk/gtkfontchooserwidget.c:1543 #: gtk/gtkfontchooserwidget.c:1545
msgid "Italic" msgid "Italic"
msgstr "Pochylenie" msgstr "Pochylenie"
#: gtk/gtkfontchooserwidget.c:1544 #: gtk/gtkfontchooserwidget.c:1546
msgid "Slant" msgid "Slant"
msgstr "Nachylenie" msgstr "Nachylenie"
#: gtk/gtkfontchooserwidget.c:1545 #: gtk/gtkfontchooserwidget.c:1547
msgid "Optical Size" msgid "Optical Size"
msgstr "Rozmiar wizualny" msgstr "Rozmiar wizualny"
#: gtk/gtkfontchooserwidget.c:2088 gtk/inspector/prop-editor.c:1485 #: gtk/gtkfontchooserwidget.c:2090 gtk/inspector/prop-editor.c:1485
msgid "Default" msgid "Default"
msgstr "Domyślne" msgstr "Domyślne"
#: gtk/gtkfontchooserwidget.c:2132 #: gtk/gtkfontchooserwidget.c:2134
msgid "Ligatures" msgid "Ligatures"
msgstr "Ligatury" msgstr "Ligatury"
#: gtk/gtkfontchooserwidget.c:2133 #: gtk/gtkfontchooserwidget.c:2135
msgid "Letter Case" msgid "Letter Case"
msgstr "Wielkość liter" msgstr "Wielkość liter"
#: gtk/gtkfontchooserwidget.c:2134 #: gtk/gtkfontchooserwidget.c:2136
msgid "Number Case" msgid "Number Case"
msgstr "Wielkość cyfr" msgstr "Wielkość cyfr"
#: gtk/gtkfontchooserwidget.c:2135 #: gtk/gtkfontchooserwidget.c:2137
msgid "Number Spacing" msgid "Number Spacing"
msgstr "Odstępy cyfr" msgstr "Odstępy cyfr"
#: gtk/gtkfontchooserwidget.c:2136 #: gtk/gtkfontchooserwidget.c:2138
msgid "Number Formatting" msgid "Number Formatting"
msgstr "Formatowanie cyfr" msgstr "Formatowanie cyfr"
#: gtk/gtkfontchooserwidget.c:2137 #: gtk/gtkfontchooserwidget.c:2139
msgid "Character Variants" msgid "Character Variants"
msgstr "Warianty znaku" msgstr "Warianty znaku"
@@ -2461,51 +2466,51 @@ msgstr "Brak ikony „%s” w motywie %s"
msgid "Failed to load icon" msgid "Failed to load icon"
msgstr "Wczytanie ikony się nie powiodło" msgstr "Wczytanie ikony się nie powiodło"
#: gtk/gtkinfobar.c:1124 gtk/gtkmessagedialog.c:297 gtk/inspector/window.ui:465 #: gtk/gtkinfobar.c:1169 gtk/gtkmessagedialog.c:297 gtk/inspector/window.ui:465
msgid "Information" msgid "Information"
msgstr "Informacja" msgstr "Informacja"
#: gtk/gtkinfobar.c:1128 gtk/gtkmessagedialog.c:301 #: gtk/gtkinfobar.c:1173 gtk/gtkmessagedialog.c:301
msgid "Question" msgid "Question"
msgstr "Pytanie" msgstr "Pytanie"
#: gtk/gtkinfobar.c:1132 gtk/gtkmessagedialog.c:305 #: gtk/gtkinfobar.c:1177 gtk/gtkmessagedialog.c:305
msgid "Warning" msgid "Warning"
msgstr "Ostrzeżenie" msgstr "Ostrzeżenie"
#: gtk/gtkinfobar.c:1136 gtk/gtkmessagedialog.c:309 #: gtk/gtkinfobar.c:1181 gtk/gtkmessagedialog.c:309
msgid "Error" msgid "Error"
msgstr "Błąd" msgstr "Błąd"
#: gtk/gtklabel.c:6061 gtk/gtktext.c:5850 gtk/gtktextview.c:8716 #: gtk/gtklabel.c:6001 gtk/gtktext.c:5885 gtk/gtktextview.c:8587
msgid "Cu_t" msgid "Cu_t"
msgstr "_Wytnij" msgstr "_Wytnij"
#: gtk/gtklabel.c:6062 gtk/gtktext.c:5854 gtk/gtktextview.c:8720 #: gtk/gtklabel.c:6002 gtk/gtktext.c:5889 gtk/gtktextview.c:8591
msgid "_Copy" msgid "_Copy"
msgstr "S_kopiuj" msgstr "S_kopiuj"
#: gtk/gtklabel.c:6063 gtk/gtktext.c:5858 gtk/gtktextview.c:8724 #: gtk/gtklabel.c:6003 gtk/gtktext.c:5893 gtk/gtktextview.c:8595
msgid "_Paste" msgid "_Paste"
msgstr "Wk_lej" msgstr "Wk_lej"
#: gtk/gtklabel.c:6069 gtk/gtktext.c:5871 gtk/gtktextview.c:8737 #: gtk/gtklabel.c:6009 gtk/gtktext.c:5906 gtk/gtktextview.c:8620
msgid "Select _All" msgid "Select _All"
msgstr "Z_aznacz wszystko" msgstr "Z_aznacz wszystko"
#: gtk/gtklabel.c:6074 #: gtk/gtklabel.c:6014
msgid "_Open Link" msgid "_Open Link"
msgstr "_Otwórz odnośnik" msgstr "_Otwórz odnośnik"
#: gtk/gtklabel.c:6078 #: gtk/gtklabel.c:6018
msgid "Copy _Link Address" msgid "Copy _Link Address"
msgstr "S_kopiuj adres odnośnika" msgstr "S_kopiuj adres odnośnika"
#: gtk/gtklinkbutton.c:247 #: gtk/gtklinkbutton.c:243
msgid "_Copy URL" msgid "_Copy URL"
msgstr "Skopiuj adres _URL" msgstr "Skopiuj adres _URL"
#: gtk/gtklinkbutton.c:505 #: gtk/gtklinkbutton.c:547
msgid "Invalid URI" msgid "Invalid URI"
msgstr "Nieprawidłowy adres URI" msgstr "Nieprawidłowy adres URI"
@@ -2719,7 +2724,7 @@ msgstr ""
"Biblioteka GTK nie może odnaleźć modułu multimediów. Proszę sprawdzić " "Biblioteka GTK nie może odnaleźć modułu multimediów. Proszę sprawdzić "
"poprawność instalacji." "poprawność instalacji."
#: gtk/gtknotebook.c:4341 gtk/gtknotebook.c:6625 #: gtk/gtknotebook.c:4326 gtk/gtknotebook.c:6610
#, c-format #, c-format
msgid "Page %u" msgid "Page %u"
msgstr "%u. strona" msgstr "%u. strona"
@@ -2784,126 +2789,126 @@ msgstr "Hasło"
msgid "_Show Text" msgid "_Show Text"
msgstr "_Wyświetlanie tekstu" msgstr "_Wyświetlanie tekstu"
#: gtk/gtkpathbar.c:1359 #: gtk/gtkpathbar.c:1336
msgid "File System Root" msgid "File System Root"
msgstr "System plików" msgstr "System plików"
#. translators: %s is the name of a cloud provider for files #. translators: %s is the name of a cloud provider for files
#: gtk/gtkplacessidebar.c:968 #: gtk/gtkplacessidebar.c:961
#, c-format #, c-format
msgid "Open %s" msgid "Open %s"
msgstr "Otwiera serwis %s" msgstr "Otwiera serwis %s"
#: gtk/gtkplacessidebar.c:1056 #: gtk/gtkplacessidebar.c:1049
msgid "Recent" msgid "Recent"
msgstr "Ostatnio używane" msgstr "Ostatnio używane"
#: gtk/gtkplacessidebar.c:1058 #: gtk/gtkplacessidebar.c:1051
msgid "Recent files" msgid "Recent files"
msgstr "Ostatnio używane pliki" msgstr "Ostatnio używane pliki"
#: gtk/gtkplacessidebar.c:1067 #: gtk/gtkplacessidebar.c:1060
msgid "Starred" msgid "Starred"
msgstr "Ulubione" msgstr "Ulubione"
#: gtk/gtkplacessidebar.c:1069 #: gtk/gtkplacessidebar.c:1062
msgid "Starred files" msgid "Starred files"
msgstr "Ulubione pliki" msgstr "Ulubione pliki"
#: gtk/gtkplacessidebar.c:1080 #: gtk/gtkplacessidebar.c:1073
msgid "Open your personal folder" msgid "Open your personal folder"
msgstr "Otwiera katalog osobisty" msgstr "Otwiera katalog osobisty"
#: gtk/gtkplacessidebar.c:1095 #: gtk/gtkplacessidebar.c:1088
msgid "Open the contents of your desktop in a folder" msgid "Open the contents of your desktop in a folder"
msgstr "Otwiera zawartość pulpitu jako katalog" msgstr "Otwiera zawartość pulpitu jako katalog"
#: gtk/gtkplacessidebar.c:1109 #: gtk/gtkplacessidebar.c:1102
msgid "Enter Location" msgid "Enter Location"
msgstr "Wprowadź położenie" msgstr "Wprowadź położenie"
#: gtk/gtkplacessidebar.c:1111 #: gtk/gtkplacessidebar.c:1104
msgid "Manually enter a location" msgid "Manually enter a location"
msgstr "Ręczne wprowadzanie położenia" msgstr "Ręczne wprowadzanie położenia"
#: gtk/gtkplacessidebar.c:1121 #: gtk/gtkplacessidebar.c:1114
msgid "Trash" msgid "Trash"
msgstr "Kosz" msgstr "Kosz"
#: gtk/gtkplacessidebar.c:1123 #: gtk/gtkplacessidebar.c:1116
msgid "Open the trash" msgid "Open the trash"
msgstr "Otwiera kosz" msgstr "Otwiera kosz"
#: gtk/gtkplacessidebar.c:1234 gtk/gtkplacessidebar.c:1262 #: gtk/gtkplacessidebar.c:1227 gtk/gtkplacessidebar.c:1255
#: gtk/gtkplacessidebar.c:1468 #: gtk/gtkplacessidebar.c:1461
#, c-format #, c-format
msgid "Mount and open “%s”" msgid "Mount and open “%s”"
msgstr "Montuje i otwiera „%s”" msgstr "Montuje i otwiera „%s”"
#: gtk/gtkplacessidebar.c:1357 #: gtk/gtkplacessidebar.c:1350
msgid "Open the contents of the file system" msgid "Open the contents of the file system"
msgstr "Otwiera zawartość systemu plików" msgstr "Otwiera zawartość systemu plików"
#: gtk/gtkplacessidebar.c:1443 #: gtk/gtkplacessidebar.c:1436
msgid "New bookmark" msgid "New bookmark"
msgstr "Nowa zakładka" msgstr "Nowa zakładka"
#: gtk/gtkplacessidebar.c:1445 #: gtk/gtkplacessidebar.c:1438
msgid "Add a new bookmark" msgid "Add a new bookmark"
msgstr "Dodaje nową zakładkę" msgstr "Dodaje nową zakładkę"
#: gtk/gtkplacessidebar.c:1513 #: gtk/gtkplacessidebar.c:1506
msgid "Other Locations" msgid "Other Locations"
msgstr "Inne położenia" msgstr "Inne położenia"
#: gtk/gtkplacessidebar.c:1514 #: gtk/gtkplacessidebar.c:1507
msgid "Show other locations" msgid "Show other locations"
msgstr "Wyświetla inne położenia" msgstr "Wyświetla inne położenia"
#. Adjust start/stop items to reflect the type of the drive #. Adjust start/stop items to reflect the type of the drive
#: gtk/gtkplacessidebar.c:2276 gtk/gtkplacessidebar.c:3647 #: gtk/gtkplacessidebar.c:2242 gtk/gtkplacessidebar.c:3613
msgid "_Start" msgid "_Start"
msgstr "_Uruchom" msgstr "_Uruchom"
#: gtk/gtkplacessidebar.c:2277 gtk/gtkplacessidebar.c:3648 #: gtk/gtkplacessidebar.c:2243 gtk/gtkplacessidebar.c:3614
msgid "_Stop" msgid "_Stop"
msgstr "Z_atrzymaj" msgstr "Z_atrzymaj"
#. start() for type G_DRIVE_START_STOP_TYPE_SHUTDOWN is normally not used #. start() for type G_DRIVE_START_STOP_TYPE_SHUTDOWN is normally not used
#: gtk/gtkplacessidebar.c:2284 #: gtk/gtkplacessidebar.c:2250
msgid "_Power On" msgid "_Power On"
msgstr "_Włącz" msgstr "_Włącz"
#: gtk/gtkplacessidebar.c:2285 #: gtk/gtkplacessidebar.c:2251
msgid "_Safely Remove Drive" msgid "_Safely Remove Drive"
msgstr "Bezpiecznie u_suń napęd" msgstr "Bezpiecznie u_suń napęd"
#: gtk/gtkplacessidebar.c:2289 #: gtk/gtkplacessidebar.c:2255
msgid "_Connect Drive" msgid "_Connect Drive"
msgstr "Podłą_cz napęd" msgstr "Podłą_cz napęd"
#: gtk/gtkplacessidebar.c:2290 #: gtk/gtkplacessidebar.c:2256
msgid "_Disconnect Drive" msgid "_Disconnect Drive"
msgstr "O_dłącz napęd" msgstr "O_dłącz napęd"
#: gtk/gtkplacessidebar.c:2294 #: gtk/gtkplacessidebar.c:2260
msgid "_Start Multi-disk Device" msgid "_Start Multi-disk Device"
msgstr "Uruchom napęd wielody_skowy" msgstr "Uruchom napęd wielody_skowy"
#: gtk/gtkplacessidebar.c:2295 #: gtk/gtkplacessidebar.c:2261
msgid "_Stop Multi-disk Device" msgid "_Stop Multi-disk Device"
msgstr "Zatrzymaj napęd wielody_skowy" msgstr "Zatrzymaj napęd wielody_skowy"
#. stop() for type G_DRIVE_START_STOP_TYPE_PASSWORD is normally not used #. stop() for type G_DRIVE_START_STOP_TYPE_PASSWORD is normally not used
#: gtk/gtkplacessidebar.c:2300 #: gtk/gtkplacessidebar.c:2266
msgid "_Unlock Device" msgid "_Unlock Device"
msgstr "Odblok_uj urządzenie" msgstr "Odblok_uj urządzenie"
#: gtk/gtkplacessidebar.c:2301 #: gtk/gtkplacessidebar.c:2267
msgid "_Lock Device" msgid "_Lock Device"
msgstr "_Zablokuj urządzenie" msgstr "_Zablokuj urządzenie"
#: gtk/gtkplacessidebar.c:2339 gtk/gtkplacessidebar.c:3332 #: gtk/gtkplacessidebar.c:2305 gtk/gtkplacessidebar.c:3298
#, c-format #, c-format
msgid "Unable to start “%s”" msgid "Unable to start “%s”"
msgstr "Nie można uruchomić „%s”" msgstr "Nie można uruchomić „%s”"
@@ -2911,90 +2916,90 @@ msgstr "Nie można uruchomić „%s”"
#. Translators: This means that unlocking an encrypted storage #. Translators: This means that unlocking an encrypted storage
#. * device failed. %s is the name of the device. #. * device failed. %s is the name of the device.
#. #.
#: gtk/gtkplacessidebar.c:2375 #: gtk/gtkplacessidebar.c:2341
#, c-format #, c-format
msgid "Error unlocking “%s”" msgid "Error unlocking “%s”"
msgstr "Błąd podczas odblokowywania urządzenia „%s”" msgstr "Błąd podczas odblokowywania urządzenia „%s”"
#: gtk/gtkplacessidebar.c:2377 #: gtk/gtkplacessidebar.c:2343
#, c-format #, c-format
msgid "Unable to access “%s”" msgid "Unable to access “%s”"
msgstr "Nie można uzyskać dostępu do „%s”" msgstr "Nie można uzyskać dostępu do „%s”"
#: gtk/gtkplacessidebar.c:2606 #: gtk/gtkplacessidebar.c:2572
msgid "This name is already taken" msgid "This name is already taken"
msgstr "Ta nazwa jest już zajęta" msgstr "Ta nazwa jest już zajęta"
#: gtk/gtkplacessidebar.c:2675 gtk/inspector/actions.ui:25 #: gtk/gtkplacessidebar.c:2641 gtk/inspector/actions.ui:25
#: gtk/inspector/css-node-tree.ui:34 gtk/ui/gtkfilechooserwidget.ui:176 #: gtk/inspector/css-node-tree.ui:34 gtk/ui/gtkfilechooserwidget.ui:171
#: gtk/ui/gtkfilechooserwidget.ui:456 #: gtk/ui/gtkfilechooserwidget.ui:451
msgid "Name" msgid "Name"
msgstr "Nazwa" msgstr "Nazwa"
#: gtk/gtkplacessidebar.c:2873 #: gtk/gtkplacessidebar.c:2839
#, c-format #, c-format
msgid "Unable to unmount “%s”" msgid "Unable to unmount “%s”"
msgstr "Nie można odmontować „%s”" msgstr "Nie można odmontować „%s”"
#: gtk/gtkplacessidebar.c:3049 #: gtk/gtkplacessidebar.c:3015
#, c-format #, c-format
msgid "Unable to stop “%s”" msgid "Unable to stop “%s”"
msgstr "Nie można zatrzymać „%s”" msgstr "Nie można zatrzymać „%s”"
#: gtk/gtkplacessidebar.c:3078 #: gtk/gtkplacessidebar.c:3044
#, c-format #, c-format
msgid "Unable to eject “%s”" msgid "Unable to eject “%s”"
msgstr "Nie można wysunąć „%s”" msgstr "Nie można wysunąć „%s”"
#: gtk/gtkplacessidebar.c:3107 gtk/gtkplacessidebar.c:3136 #: gtk/gtkplacessidebar.c:3073 gtk/gtkplacessidebar.c:3102
#, c-format #, c-format
msgid "Unable to eject %s" msgid "Unable to eject %s"
msgstr "Nie można wysunąć %s" msgstr "Nie można wysunąć %s"
#: gtk/gtkplacessidebar.c:3284 #: gtk/gtkplacessidebar.c:3250
#, c-format #, c-format
msgid "Unable to poll “%s” for media changes" msgid "Unable to poll “%s” for media changes"
msgstr "Nie można odpytać „%s” o zmiany nośnika" msgstr "Nie można odpytać „%s” o zmiany nośnika"
#: gtk/gtkplacessidebar.c:3564 gtk/gtkplacessidebar.c:3630 #: gtk/gtkplacessidebar.c:3530 gtk/gtkplacessidebar.c:3596
#: gtk/gtkplacesview.c:1671 #: gtk/gtkplacesview.c:1671
msgid "Open in New _Tab" msgid "Open in New _Tab"
msgstr "O_twórz w nowej karcie" msgstr "O_twórz w nowej karcie"
#: gtk/gtkplacessidebar.c:3570 gtk/gtkplacessidebar.c:3633 #: gtk/gtkplacessidebar.c:3536 gtk/gtkplacessidebar.c:3599
#: gtk/gtkplacesview.c:1676 #: gtk/gtkplacesview.c:1676
msgid "Open in New _Window" msgid "Open in New _Window"
msgstr "Otwórz w nowy_m oknie" msgstr "Otwórz w nowy_m oknie"
#: gtk/gtkplacessidebar.c:3637 #: gtk/gtkplacessidebar.c:3603
msgid "_Add Bookmark" msgid "_Add Bookmark"
msgstr "_Dodaj zakładkę" msgstr "_Dodaj zakładkę"
#: gtk/gtkplacessidebar.c:3638 #: gtk/gtkplacessidebar.c:3604
msgid "_Remove" msgid "_Remove"
msgstr "_Usuń" msgstr "_Usuń"
#: gtk/gtkplacessidebar.c:3639 #: gtk/gtkplacessidebar.c:3605
msgid "Rename…" msgid "Rename…"
msgstr "Zmień nazwę…" msgstr "Zmień nazwę…"
#: gtk/gtkplacessidebar.c:3643 gtk/gtkplacesview.c:1701 #: gtk/gtkplacessidebar.c:3609 gtk/gtkplacesview.c:1701
msgid "_Mount" msgid "_Mount"
msgstr "Za_montuj" msgstr "Za_montuj"
#: gtk/gtkplacessidebar.c:3644 gtk/gtkplacesview.c:1690 #: gtk/gtkplacessidebar.c:3610 gtk/gtkplacesview.c:1690
msgid "_Unmount" msgid "_Unmount"
msgstr "O_dmontuj" msgstr "O_dmontuj"
#: gtk/gtkplacessidebar.c:3645 #: gtk/gtkplacessidebar.c:3611
msgid "_Eject" msgid "_Eject"
msgstr "Wy_suń" msgstr "Wy_suń"
#: gtk/gtkplacessidebar.c:3646 #: gtk/gtkplacessidebar.c:3612
msgid "_Detect Media" msgid "_Detect Media"
msgstr "Wy_kryj nośnik" msgstr "Wy_kryj nośnik"
#: gtk/gtkplacessidebar.c:4114 gtk/gtkplacesview.c:1124 #: gtk/gtkplacessidebar.c:4105 gtk/gtkplacesview.c:1124
msgid "Computer" msgid "Computer"
msgstr "Komputer" msgstr "Komputer"
@@ -3349,7 +3354,7 @@ msgstr "Z góry do dołu"
msgid "Bottom to top" msgid "Bottom to top"
msgstr "Z dołu do góry" msgstr "Z dołu do góry"
#: gtk/gtkprogressbar.c:613 #: gtk/gtkprogressbar.c:601
#, c-format #, c-format
msgctxt "progress bar label" msgctxt "progress bar label"
msgid "%.0f%%" msgid "%.0f%%"
@@ -3454,19 +3459,27 @@ msgid "Search Shortcuts"
msgstr "Wyszukiwanie skrótów" msgstr "Wyszukiwanie skrótów"
#: gtk/gtkshortcutswindow.c:1011 gtk/ui/gtkemojichooser.ui:322 #: gtk/gtkshortcutswindow.c:1011 gtk/ui/gtkemojichooser.ui:322
#: gtk/ui/gtkfilechooserwidget.ui:306 #: gtk/ui/gtkfilechooserwidget.ui:301
msgid "No Results Found" msgid "No Results Found"
msgstr "Brak wyników" msgstr "Brak wyników"
#: gtk/gtkshortcutswindow.c:1017 gtk/ui/gtkemojichooser.ui:335 #: gtk/gtkshortcutswindow.c:1017 gtk/ui/gtkemojichooser.ui:335
#: gtk/ui/gtkfilechooserwidget.ui:319 gtk/ui/gtkplacesview.ui:236 #: gtk/ui/gtkfilechooserwidget.ui:314 gtk/ui/gtkplacesview.ui:236
msgid "Try a different search" msgid "Try a different search"
msgstr "Proszę spróbować innych słów" msgstr "Proszę spróbować innych słów"
#: gtk/gtktext.c:5876 gtk/gtktextview.c:8742 #: gtk/gtktext.c:5911 gtk/gtktextview.c:8625
msgid "Insert _Emoji" msgid "Insert _Emoji"
msgstr "Wstaw _emoji" msgstr "Wstaw _emoji"
#: gtk/gtktextview.c:8607
msgid "_Undo"
msgstr "Cof_nij"
#: gtk/gtktextview.c:8611
msgid "_Redo"
msgstr "P_onów"
#: gtk/gtkvolumebutton.c:195 #: gtk/gtkvolumebutton.c:195
msgid "Adjusts the volume" msgid "Adjusts the volume"
msgstr "Reguluje głośność" msgstr "Reguluje głośność"
@@ -3710,7 +3723,7 @@ msgid "Address"
msgstr "Adres" msgstr "Adres"
#: gtk/inspector/misc-info.ui:56 gtk/inspector/statistics.ui:45 #: gtk/inspector/misc-info.ui:56 gtk/inspector/statistics.ui:45
#: gtk/ui/gtkfilechooserwidget.ui:222 #: gtk/ui/gtkfilechooserwidget.ui:217
msgid "Type" msgid "Type"
msgstr "Typ" msgstr "Typ"
@@ -3886,7 +3899,7 @@ msgstr "Ścieżka"
msgid "Count" msgid "Count"
msgstr "Liczba" msgstr "Liczba"
#: gtk/inspector/resource-list.ui:98 gtk/ui/gtkfilechooserwidget.ui:210 #: gtk/inspector/resource-list.ui:98 gtk/ui/gtkfilechooserwidget.ui:205
#: gtk/ui/gtkfontchooserwidget.ui:124 gtk/ui/gtkfontchooserwidget.ui:262 #: gtk/ui/gtkfontchooserwidget.ui:124 gtk/ui/gtkfontchooserwidget.ui:262
msgid "Size" msgid "Size"
msgstr "Rozmiar" msgstr "Rozmiar"
@@ -6904,15 +6917,15 @@ msgstr "Tworzy katalog"
msgid "Files" msgid "Files"
msgstr "Pliki" msgstr "Pliki"
#: gtk/ui/gtkfilechooserwidget.ui:257 #: gtk/ui/gtkfilechooserwidget.ui:252
msgid "Remote location — only searching the current folder" msgid "Remote location — only searching the current folder"
msgstr "Zdalne położenie — przeszukiwanie tylko bieżącego katalogu" msgstr "Zdalne położenie — przeszukiwanie tylko bieżącego katalogu"
#: gtk/ui/gtkfilechooserwidget.ui:397 #: gtk/ui/gtkfilechooserwidget.ui:392
msgid "Folder Name" msgid "Folder Name"
msgstr "Nazwa katalogu" msgstr "Nazwa katalogu"
#: gtk/ui/gtkfilechooserwidget.ui:423 #: gtk/ui/gtkfilechooserwidget.ui:418
msgid "_Create" msgid "_Create"
msgstr "_Utwórz" msgstr "_Utwórz"