Compare commits
34 Commits
filter-con
...
reverse-li
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39d689a170 | ||
|
|
bab7092a69 | ||
|
|
3b6941b04b | ||
|
|
fe429ffc45 | ||
|
|
d595c6ab12 | ||
|
|
2738d5bc93 | ||
|
|
5a8267dfae | ||
|
|
d03ce22446 | ||
|
|
350051c56e | ||
|
|
979ec828d2 | ||
|
|
99ddb3c927 | ||
|
|
770910e608 | ||
|
|
7180bfc288 | ||
|
|
bc80ed4240 | ||
|
|
4d45c2669c | ||
|
|
dd8ca7259f | ||
|
|
06c866f45e | ||
|
|
2bd7ed5ebd | ||
|
|
adc9d91e0e | ||
|
|
1150c23b0f | ||
|
|
9b8c175f23 | ||
|
|
e0134aaf15 | ||
|
|
bd7aa1782c | ||
|
|
007c9c6218 | ||
|
|
8c8baa9aa6 | ||
|
|
7ae0f56378 | ||
|
|
3fcf7adb25 | ||
|
|
8b38d1895c | ||
|
|
a4ba25f0f8 | ||
|
|
8a3621a125 | ||
|
|
60e37d3368 | ||
|
|
e0cc7b5d86 | ||
|
|
9843515736 | ||
|
|
41497aeb8b |
@@ -254,15 +254,11 @@ do_constraints (GtkWidget *do_widget)
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *header, *box, *grid, *button;
|
||||
GtkWidget *box, *grid;
|
||||
|
||||
window = gtk_window_new ();
|
||||
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Constraints");
|
||||
|
||||
header = gtk_header_bar_new ();
|
||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
|
||||
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
|
||||
@@ -272,12 +268,6 @@ do_constraints (GtkWidget *do_widget)
|
||||
gtk_widget_set_hexpand (grid, TRUE);
|
||||
gtk_widget_set_vexpand (grid, TRUE);
|
||||
gtk_box_append (GTK_BOX (box), grid);
|
||||
|
||||
button = gtk_button_new_with_label ("Close");
|
||||
gtk_box_append (GTK_BOX (box), button);
|
||||
gtk_widget_set_hexpand (grid, TRUE);
|
||||
g_signal_connect_swapped (button, "clicked",
|
||||
G_CALLBACK (gtk_window_destroy), window);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
|
||||
@@ -210,15 +210,11 @@ do_constraints2 (GtkWidget *do_widget)
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *header, *box, *grid, *button;
|
||||
GtkWidget *box, *grid;
|
||||
|
||||
window = gtk_window_new ();
|
||||
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Constraints");
|
||||
|
||||
header = gtk_header_bar_new ();
|
||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
|
||||
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
|
||||
@@ -228,12 +224,6 @@ do_constraints2 (GtkWidget *do_widget)
|
||||
gtk_widget_set_hexpand (grid, TRUE);
|
||||
gtk_widget_set_vexpand (grid, TRUE);
|
||||
gtk_box_append (GTK_BOX (box), grid);
|
||||
|
||||
button = gtk_button_new_with_label ("Close");
|
||||
gtk_box_append (GTK_BOX (box), button);
|
||||
gtk_widget_set_hexpand (grid, TRUE);
|
||||
g_signal_connect_swapped (button, "clicked",
|
||||
G_CALLBACK (gtk_window_destroy), window);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
|
||||
@@ -130,15 +130,11 @@ do_constraints3 (GtkWidget *do_widget)
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *header, *box, *grid, *button;
|
||||
GtkWidget *box, *grid;
|
||||
|
||||
window = gtk_window_new ();
|
||||
gtk_window_set_display (GTK_WINDOW (window), gtk_widget_get_display (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Constraints");
|
||||
|
||||
header = gtk_header_bar_new ();
|
||||
gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (header), FALSE);
|
||||
gtk_window_set_titlebar (GTK_WINDOW (window), header);
|
||||
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
|
||||
|
||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
|
||||
@@ -148,12 +144,6 @@ do_constraints3 (GtkWidget *do_widget)
|
||||
gtk_widget_set_hexpand (grid, TRUE);
|
||||
gtk_widget_set_vexpand (grid, TRUE);
|
||||
gtk_box_append (GTK_BOX (box), grid);
|
||||
|
||||
button = gtk_button_new_with_label ("Close");
|
||||
gtk_box_append (GTK_BOX (box), button);
|
||||
gtk_widget_set_hexpand (grid, TRUE);
|
||||
g_signal_connect_swapped (button, "clicked",
|
||||
G_CALLBACK (gtk_window_destroy), window);
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
|
||||
@@ -63,11 +63,15 @@ unit_to (graphene_point3d_t *p1,
|
||||
graphene_matrix_multiply (&s, &u, m);
|
||||
}
|
||||
|
||||
/* Make a 4x4 matrix that maps
|
||||
/* Compute a 4x4 matrix m that maps
|
||||
* p1 -> q1
|
||||
* p2 -> q2
|
||||
* p3 -> q3
|
||||
* p4 -> q4
|
||||
*
|
||||
* This is not in general possible, because projective
|
||||
* transforms preserve coplanarity. But in the cases we
|
||||
* care about here, both sets of points are always coplanar.
|
||||
*/
|
||||
void
|
||||
perspective_3d (graphene_point3d_t *p1,
|
||||
|
||||
@@ -11,6 +11,20 @@
|
||||
|
||||
#define MAX_ITERATION_COUNT 30
|
||||
|
||||
/* Perform Householder reduction to bidiagonal form
|
||||
*
|
||||
* Input: Matrix A of size nrows x ncols
|
||||
*
|
||||
* Output: Matrices and vectors such that
|
||||
* A = U*Bidiag(diagonal, superdiagonal)*Vt
|
||||
*
|
||||
* All matrices are allocated by the caller
|
||||
*
|
||||
* Sizes:
|
||||
* A, U: nrows x ncols
|
||||
* diagonal, superdiagonal: ncols
|
||||
* V: ncols x ncols
|
||||
*/
|
||||
static void
|
||||
householder_reduction (double *A,
|
||||
int nrows,
|
||||
@@ -160,6 +174,20 @@ householder_reduction (double *A,
|
||||
}
|
||||
}
|
||||
|
||||
/* Perform Givens reduction
|
||||
*
|
||||
* Input: Matrices such that
|
||||
* A = U*Bidiag(diagonal,superdiagonal)*Vt
|
||||
*
|
||||
* Output: The same, with superdiagonal = 0
|
||||
*
|
||||
* All matrices are allocated by the caller
|
||||
*
|
||||
* Sizes:
|
||||
* U: nrows x ncols
|
||||
* diagonal, superdiagonal: ncols
|
||||
* V: ncols x ncols
|
||||
*/
|
||||
static int
|
||||
givens_reduction (int nrows,
|
||||
int ncols,
|
||||
@@ -298,6 +326,11 @@ givens_reduction (int nrows,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Given a singular value decomposition
|
||||
* of an nrows x ncols matrix A = U*Diag(S)*Vt,
|
||||
* sort the values of S by decreasing value,
|
||||
* permuting V to match.
|
||||
*/
|
||||
static void
|
||||
sort_singular_values (int nrows,
|
||||
int ncols,
|
||||
@@ -339,6 +372,16 @@ sort_singular_values (int nrows,
|
||||
}
|
||||
}
|
||||
|
||||
/* Compute a singular value decomposition of A,
|
||||
* A = U*Diag(S)*Vt
|
||||
*
|
||||
* All matrices are allocated by the caller
|
||||
*
|
||||
* Sizes:
|
||||
* A, U: nrows x ncols
|
||||
* S: ncols
|
||||
* V: ncols x ncols
|
||||
*/
|
||||
int
|
||||
singular_value_decomposition (double *A,
|
||||
int nrows,
|
||||
@@ -364,6 +407,18 @@ singular_value_decomposition (double *A,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Given a singular value decomposition of A = U*Diag(S)*Vt,
|
||||
* compute the best approximation x to A*x = B.
|
||||
*
|
||||
* All matrices are allocated by the caller
|
||||
*
|
||||
* Sizes:
|
||||
* U: nrows x ncols
|
||||
* S: ncols
|
||||
* V: ncols x ncols
|
||||
* B, x: ncols
|
||||
*/
|
||||
void
|
||||
singular_value_decomposition_solve (double *U,
|
||||
double *S,
|
||||
|
||||
@@ -594,6 +594,8 @@ void
|
||||
gsk_gl_driver_create_render_target (GskGLDriver *self,
|
||||
int width,
|
||||
int height,
|
||||
int min_filter,
|
||||
int mag_filter,
|
||||
int *out_texture_id,
|
||||
int *out_render_target_id)
|
||||
{
|
||||
@@ -604,7 +606,7 @@ gsk_gl_driver_create_render_target (GskGLDriver *self,
|
||||
|
||||
texture = create_texture (self, width, height);
|
||||
gsk_gl_driver_bind_source_texture (self, texture->texture_id);
|
||||
gsk_gl_driver_init_texture_empty (self, texture->texture_id, GL_NEAREST, GL_NEAREST);
|
||||
gsk_gl_driver_init_texture_empty (self, texture->texture_id, min_filter, mag_filter);
|
||||
|
||||
glGenFramebuffers (1, &fbo_id);
|
||||
glBindFramebuffer (GL_FRAMEBUFFER, fbo_id);
|
||||
|
||||
@@ -45,6 +45,8 @@ int gsk_gl_driver_create_texture (GskGLDriver *driver
|
||||
void gsk_gl_driver_create_render_target (GskGLDriver *driver,
|
||||
int width,
|
||||
int height,
|
||||
int min_filter,
|
||||
int mag_filter,
|
||||
int *out_texture_id,
|
||||
int *out_render_target_id);
|
||||
void gsk_gl_driver_mark_texture_permanent (GskGLDriver *self,
|
||||
|
||||
@@ -71,6 +71,7 @@ typedef enum
|
||||
RESET_OPACITY = 1 << 2,
|
||||
DUMP_FRAMEBUFFER = 1 << 3,
|
||||
NO_CACHE_PLZ = 1 << 5,
|
||||
LINEAR_FILTER = 1 << 6,
|
||||
} OffscreenFlags;
|
||||
|
||||
static inline void
|
||||
@@ -1000,6 +1001,38 @@ render_texture_node (GskGLRenderer *self,
|
||||
}
|
||||
}
|
||||
|
||||
/* Returns TRUE is applying transform to bounds
|
||||
* yields an axis-aligned rectangle
|
||||
*/
|
||||
static gboolean
|
||||
result_is_axis_aligned (GskTransform *transform,
|
||||
const graphene_rect_t *bounds)
|
||||
{
|
||||
graphene_matrix_t m;
|
||||
graphene_quad_t q;
|
||||
graphene_rect_t b;
|
||||
graphene_point_t b1, b2;
|
||||
const graphene_point_t *p;
|
||||
int i;
|
||||
|
||||
gsk_transform_to_matrix (transform, &m);
|
||||
gsk_matrix_transform_rect (&m, bounds, &q);
|
||||
graphene_quad_bounds (&q, &b);
|
||||
graphene_rect_get_top_left (&b, &b1);
|
||||
graphene_rect_get_bottom_right (&b, &b2);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
p = graphene_quad_get_point (&q, i);
|
||||
if (fabs (p->x - b1.x) > FLT_EPSILON && fabs (p->x - b2.x) > FLT_EPSILON)
|
||||
return FALSE;
|
||||
if (fabs (p->y - b1.y) > FLT_EPSILON && fabs (p->y - b2.y) > FLT_EPSILON)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static inline void
|
||||
render_transform_node (GskGLRenderer *self,
|
||||
GskRenderNode *node,
|
||||
@@ -1035,11 +1068,10 @@ render_transform_node (GskGLRenderer *self,
|
||||
}
|
||||
break;
|
||||
|
||||
case GSK_TRANSFORM_CATEGORY_UNKNOWN:
|
||||
case GSK_TRANSFORM_CATEGORY_ANY:
|
||||
case GSK_TRANSFORM_CATEGORY_3D:
|
||||
case GSK_TRANSFORM_CATEGORY_2D:
|
||||
default:
|
||||
case GSK_TRANSFORM_CATEGORY_3D:
|
||||
case GSK_TRANSFORM_CATEGORY_ANY:
|
||||
case GSK_TRANSFORM_CATEGORY_UNKNOWN:
|
||||
{
|
||||
TextureRegion region;
|
||||
gboolean is_offscreen;
|
||||
@@ -1050,29 +1082,42 @@ render_transform_node (GskGLRenderer *self,
|
||||
gsk_gl_renderer_add_render_ops (self, child, builder);
|
||||
ops_pop_modelview (builder);
|
||||
}
|
||||
else if (add_offscreen_ops (self, builder,
|
||||
else
|
||||
{
|
||||
int filter_flag = 0;
|
||||
|
||||
if (!result_is_axis_aligned (node_transform, &child->bounds))
|
||||
filter_flag = LINEAR_FILTER;
|
||||
|
||||
if (add_offscreen_ops (self, builder,
|
||||
&child->bounds,
|
||||
child,
|
||||
®ion, &is_offscreen,
|
||||
RESET_CLIP | RESET_OPACITY))
|
||||
{
|
||||
/* For non-trivial transforms, we draw everything on a texture and then
|
||||
* draw the texture transformed. */
|
||||
/* TODO: We should compute a modelview containing only the "non-trivial"
|
||||
* part (e.g. the rotation) and use that. We want to keep the scale
|
||||
* for the texture.
|
||||
*/
|
||||
ops_push_modelview (builder, node_transform);
|
||||
ops_set_texture (builder, region.texture_id);
|
||||
ops_set_program (builder, &self->programs->blit_program);
|
||||
RESET_CLIP | RESET_OPACITY | filter_flag))
|
||||
{
|
||||
/* For non-trivial transforms, we draw everything on a texture and then
|
||||
* draw the texture transformed. */
|
||||
/* TODO: We should compute a modelview containing only the "non-trivial"
|
||||
* part (e.g. the rotation) and use that. We want to keep the scale
|
||||
* for the texture.
|
||||
*/
|
||||
ops_push_modelview (builder, node_transform);
|
||||
ops_set_texture (builder, region.texture_id);
|
||||
ops_set_program (builder, &self->programs->blit_program);
|
||||
|
||||
load_vertex_data_with_region (ops_draw (builder, NULL),
|
||||
child, builder,
|
||||
®ion,
|
||||
is_offscreen);
|
||||
ops_pop_modelview (builder);
|
||||
load_vertex_data_with_region (ops_draw (builder, NULL),
|
||||
child, builder,
|
||||
®ion,
|
||||
is_offscreen);
|
||||
ops_pop_modelview (builder);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1451,10 +1496,12 @@ blur_texture (GskGLRenderer *self,
|
||||
|
||||
gsk_gl_driver_create_render_target (self->gl_driver,
|
||||
texture_to_blur_width, texture_to_blur_height,
|
||||
GL_NEAREST, GL_NEAREST,
|
||||
&pass1_texture_id, &pass1_render_target);
|
||||
|
||||
gsk_gl_driver_create_render_target (self->gl_driver,
|
||||
texture_to_blur_width, texture_to_blur_height,
|
||||
GL_NEAREST, GL_NEAREST,
|
||||
&pass2_texture_id, &pass2_render_target);
|
||||
|
||||
graphene_matrix_init_ortho (&item_proj,
|
||||
@@ -1696,6 +1743,7 @@ render_inset_shadow_node (GskGLRenderer *self,
|
||||
|
||||
gsk_gl_driver_create_render_target (self->gl_driver,
|
||||
texture_width, texture_height,
|
||||
GL_NEAREST, GL_NEAREST,
|
||||
&texture_id, &render_target);
|
||||
|
||||
graphene_matrix_init_ortho (&item_proj,
|
||||
@@ -1869,7 +1917,9 @@ render_outset_shadow_node (GskGLRenderer *self,
|
||||
graphene_rect_t prev_viewport;
|
||||
graphene_matrix_t item_proj;
|
||||
|
||||
gsk_gl_driver_create_render_target (self->gl_driver, texture_width, texture_height,
|
||||
gsk_gl_driver_create_render_target (self->gl_driver,
|
||||
texture_width, texture_height,
|
||||
GL_NEAREST, GL_NEAREST,
|
||||
&texture_id, &render_target);
|
||||
if (gdk_gl_context_has_debug (self->gl_context))
|
||||
{
|
||||
@@ -3349,6 +3399,7 @@ add_offscreen_ops (GskGLRenderer *self,
|
||||
float prev_opacity = 1.0;
|
||||
int texture_id = 0;
|
||||
int max_texture_size;
|
||||
int filter;
|
||||
|
||||
if (node_is_invisible (child_node))
|
||||
{
|
||||
@@ -3401,7 +3452,14 @@ add_offscreen_ops (GskGLRenderer *self,
|
||||
width = ceilf (width * scale);
|
||||
height = ceilf (height * scale);
|
||||
|
||||
gsk_gl_driver_create_render_target (self->gl_driver, width, height, &texture_id, &render_target);
|
||||
if (flags & LINEAR_FILTER)
|
||||
filter = GL_LINEAR;
|
||||
else
|
||||
filter = GL_NEAREST;
|
||||
gsk_gl_driver_create_render_target (self->gl_driver,
|
||||
width, height,
|
||||
filter, filter,
|
||||
&texture_id, &render_target);
|
||||
if (gdk_gl_context_has_debug (self->gl_context))
|
||||
{
|
||||
gdk_gl_context_label_object_printf (self->gl_context, GL_TEXTURE, texture_id,
|
||||
|
||||
@@ -510,6 +510,7 @@ get_renderer_for_name (const char *renderer_name)
|
||||
#endif
|
||||
g_print (" cairo - Use the Cairo fallback renderer\n");
|
||||
g_print (" opengl - Use the default OpenGL renderer\n");
|
||||
g_print (" gl - Same as opengl\n");
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
g_print (" vulkan - Use the Vulkan renderer\n");
|
||||
#else
|
||||
@@ -636,11 +637,10 @@ gsk_renderer_new_for_surface (GdkSurface *surface)
|
||||
return renderer;
|
||||
}
|
||||
|
||||
GSK_RENDERER_NOTE (renderer, RENDERER,
|
||||
g_message ("Failed to realize renderer of type '%s' for surface '%s': %s\n",
|
||||
G_OBJECT_TYPE_NAME (renderer),
|
||||
G_OBJECT_TYPE_NAME (surface),
|
||||
error->message));
|
||||
g_message ("Failed to realize renderer of type '%s' for surface '%s': %s\n",
|
||||
G_OBJECT_TYPE_NAME (renderer),
|
||||
G_OBJECT_TYPE_NAME (surface),
|
||||
error->message);
|
||||
g_object_unref (renderer);
|
||||
g_clear_error (&error);
|
||||
}
|
||||
|
||||
@@ -2204,13 +2204,11 @@ gsk_matrix_transform_point3d (const graphene_matrix_t *m,
|
||||
}
|
||||
|
||||
void
|
||||
gsk_matrix_transform_bounds (const graphene_matrix_t *m,
|
||||
const graphene_rect_t *r,
|
||||
graphene_rect_t *res)
|
||||
gsk_matrix_transform_rect (const graphene_matrix_t *m,
|
||||
const graphene_rect_t *r,
|
||||
graphene_quad_t *res)
|
||||
{
|
||||
graphene_point_t ret[4];
|
||||
float min_x, min_y;
|
||||
float max_x, max_y;
|
||||
graphene_rect_t rr;
|
||||
|
||||
graphene_rect_normalize_r (r, &rr);
|
||||
@@ -2233,12 +2231,15 @@ gsk_matrix_transform_bounds (const graphene_matrix_t *m,
|
||||
|
||||
#undef TRANSFORM_POINT
|
||||
|
||||
/* FIXME: graphene doesn't export a fast way to do this */
|
||||
min_x = MIN (MIN (ret[0].x, ret[1].x), MIN (ret[2].x, ret[3].x));
|
||||
min_y = MIN (MIN (ret[0].y, ret[1].y), MIN (ret[2].y, ret[3].y));
|
||||
|
||||
max_x = MAX (MAX (ret[0].x, ret[1].x), MAX (ret[2].x, ret[3].x));
|
||||
max_y = MAX (MAX (ret[0].y, ret[1].y), MAX (ret[2].y, ret[3].y));
|
||||
|
||||
graphene_rect_init (res, min_x, min_y, max_x - min_x, max_y - min_y);
|
||||
graphene_quad_init (res, &ret[0], &ret[1], &ret[2], &ret[3]);
|
||||
}
|
||||
void
|
||||
gsk_matrix_transform_bounds (const graphene_matrix_t *m,
|
||||
const graphene_rect_t *r,
|
||||
graphene_rect_t *res)
|
||||
{
|
||||
graphene_quad_t q;
|
||||
|
||||
gsk_matrix_transform_rect (m, r, &q);
|
||||
graphene_quad_bounds (&q, res);
|
||||
}
|
||||
|
||||
@@ -41,7 +41,9 @@ void gsk_matrix_transform_point3d (const graphene_matrix_t *m,
|
||||
void gsk_matrix_transform_bounds (const graphene_matrix_t *m,
|
||||
const graphene_rect_t *r,
|
||||
graphene_rect_t *res);
|
||||
|
||||
void gsk_matrix_transform_rect (const graphene_matrix_t *m,
|
||||
const graphene_rect_t *r,
|
||||
graphene_quad_t *res);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
||||
@@ -205,6 +205,7 @@
|
||||
#include <gtk/gtkrecentmanager.h>
|
||||
#include <gtk/gtkrender.h>
|
||||
#include <gtk/gtkrevealer.h>
|
||||
#include <gtk/gtkreverselistmodel.h>
|
||||
#include <gtk/gtkroot.h>
|
||||
#include <gtk/gtkscale.h>
|
||||
#include <gtk/gtkscalebutton.h>
|
||||
|
||||
@@ -2042,6 +2042,8 @@ text_buffer_new (GtkAboutDialog *about,
|
||||
gtk_text_buffer_get_end_iter (buffer, &end_iter);
|
||||
gtk_text_buffer_apply_tag (buffer, tag, &start_iter, &end_iter);
|
||||
|
||||
gtk_text_buffer_set_enable_undo (buffer, FALSE);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,10 +58,9 @@
|
||||
* separators between the rows or columns.
|
||||
*
|
||||
* GtkColumnView allows the user to select items according to the selection
|
||||
* characteristics of the model. If the provided model is not a #GtkSelectionModel,
|
||||
* GtkColumnView will wrap it in a #GtkSingleSelection. For models that allow
|
||||
* multiple selected items, it is possible to turn on *rubberband selection*,
|
||||
* using #GtkColumnView:enable-rubberband.
|
||||
* characteristics of the model. For models that allow multiple selected items,
|
||||
* it is possible to turn on *rubberband selection*, using
|
||||
* #GtkColumnView:enable-rubberband.
|
||||
*
|
||||
* The column view supports sorting that can be customized by the user by
|
||||
* clicking on column headers. To set this up, the #GtkSorter returned by
|
||||
|
||||
@@ -909,7 +909,7 @@ gtk_drop_down_get_enable_search (GtkDropDown *self)
|
||||
*
|
||||
* Sets the expression that gets evaluated to obtain strings from items
|
||||
* when searching in the popup. The expression must have a value type of
|
||||
* #GTK_TYPE_STRING.
|
||||
* #G_TYPE_STRING.
|
||||
*/
|
||||
void
|
||||
gtk_drop_down_set_expression (GtkDropDown *self,
|
||||
|
||||
@@ -55,10 +55,9 @@
|
||||
* grid reflows vertically or horizontally.
|
||||
*
|
||||
* GtkGridView allows the user to select items according to the selection
|
||||
* characteristics of the model. If the provided model is not a #GtkSelectionModel,
|
||||
* GtkGridView will wrap it in a #GtkSingleSelection. For models that allow
|
||||
* multiple selected items, it is possible to turn on _rubberband selection_,
|
||||
* using #GtkGridView:enable-rubberband.
|
||||
* characteristics of the model. For models that allow multiple selected items,
|
||||
* it is possible to turn on _rubberband selection_, using
|
||||
* #GtkGridView:enable-rubberband.
|
||||
*
|
||||
* To learn more about the list widget framework, see the [overview](#ListWidget).
|
||||
*
|
||||
|
||||
@@ -54,10 +54,9 @@
|
||||
* between the rows.
|
||||
*
|
||||
* GtkListView allows the user to select items according to the selection
|
||||
* characteristics of the model. If the provided model is not a #GtkSelectionModel,
|
||||
* GtkListView will wrap it in a #GtkSingleSelection. For models that allow
|
||||
* multiple selected items, it is possible to turn on _rubberband selection_,
|
||||
* using #GtkListView:enable-rubberband.
|
||||
* characteristics of the model. For models that allow multiple selected items,
|
||||
* it is possible to turn on _rubberband selection_, using
|
||||
* #GtkListView:enable-rubberband.
|
||||
*
|
||||
* If you need multiple columns with headers, see #GtkColumnView.
|
||||
*
|
||||
@@ -95,7 +94,7 @@
|
||||
* {
|
||||
* GAppInfo *app_info;
|
||||
*
|
||||
* app_info = g_list_model_get_item (gtk_list_view_get_model (list), position);
|
||||
* app_info = g_list_model_get_item (G_LIST_MODEL (gtk_list_view_get_model (list)), position);
|
||||
* g_app_info_launch (app_info, NULL, NULL, NULL);
|
||||
* g_object_unref (app_info);
|
||||
* }
|
||||
@@ -108,7 +107,7 @@
|
||||
* g_signal_connect (factory, "setup", G_CALLBACK (setup_listitem_cb), NULL);
|
||||
* g_signal_connect (factory, "bind", G_CALLBACK (bind_listitem_cb), NULL);
|
||||
*
|
||||
* list = gtk_list_view_new (model, factory);
|
||||
* list = gtk_list_view_new (GTK_SELECTION_MODEL (gtk_single_selection_new (model)), factory);
|
||||
*
|
||||
* g_signal_connect (list, "activate", G_CALLBACK (activate_cb), NULL);
|
||||
*
|
||||
|
||||
290
gtk/gtkreverselistmodel.c
Normal file
290
gtk/gtkreverselistmodel.c
Normal file
@@ -0,0 +1,290 @@
|
||||
/*
|
||||
* Copyright © 2020 Red Hat, Inc
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Authors: Matthias Clasen
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "gtkreverselistmodel.h"
|
||||
|
||||
#include "gtkintl.h"
|
||||
#include "gtkprivate.h"
|
||||
|
||||
/**
|
||||
* SECTION:gtkreverselistmodel
|
||||
* @title: GtkReverseListModel
|
||||
* @short_description: A list model that reverses the order of a list model
|
||||
* @see_also: #GListModel
|
||||
*
|
||||
* #GtkReverseListModel is a list model that takes a list model and reverses
|
||||
* the order of that model.
|
||||
*/
|
||||
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_MODEL,
|
||||
NUM_PROPERTIES
|
||||
};
|
||||
|
||||
struct _GtkReverseListModel
|
||||
{
|
||||
GObject parent_instance;
|
||||
|
||||
GListModel *model;
|
||||
};
|
||||
|
||||
struct _GtkReverseListModelClass
|
||||
{
|
||||
GObjectClass parent_class;
|
||||
};
|
||||
|
||||
static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
|
||||
|
||||
static GType
|
||||
gtk_reverse_list_model_get_item_type (GListModel *list)
|
||||
{
|
||||
return G_TYPE_OBJECT;
|
||||
}
|
||||
|
||||
static guint
|
||||
gtk_reverse_list_model_get_n_items (GListModel *list)
|
||||
{
|
||||
GtkReverseListModel *self = GTK_REVERSE_LIST_MODEL (list);
|
||||
|
||||
if (self->model == NULL)
|
||||
return 0;
|
||||
|
||||
return g_list_model_get_n_items (self->model);
|
||||
}
|
||||
|
||||
static gpointer
|
||||
gtk_reverse_list_model_get_item (GListModel *list,
|
||||
guint position)
|
||||
{
|
||||
GtkReverseListModel *self = GTK_REVERSE_LIST_MODEL (list);
|
||||
guint n_items;
|
||||
|
||||
if (self->model == NULL)
|
||||
return NULL;
|
||||
|
||||
n_items = g_list_model_get_n_items (self->model);
|
||||
|
||||
if (position >= n_items)
|
||||
return NULL;
|
||||
|
||||
return g_list_model_get_item (self->model, n_items - 1 - position);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_reverse_list_model_model_init (GListModelInterface *iface)
|
||||
{
|
||||
iface->get_item_type = gtk_reverse_list_model_get_item_type;
|
||||
iface->get_n_items = gtk_reverse_list_model_get_n_items;
|
||||
iface->get_item = gtk_reverse_list_model_get_item;
|
||||
}
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GtkReverseListModel, gtk_reverse_list_model, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, gtk_reverse_list_model_model_init))
|
||||
|
||||
static void
|
||||
gtk_reverse_list_model_items_changed_cb (GListModel *model,
|
||||
guint position,
|
||||
guint removed,
|
||||
guint added,
|
||||
GtkReverseListModel *self)
|
||||
{
|
||||
guint n_items;
|
||||
guint position_before;
|
||||
|
||||
n_items = g_list_model_get_n_items (model);
|
||||
|
||||
position_before = (n_items - added + removed) - 1 - (position + removed - 1);
|
||||
|
||||
g_list_model_items_changed (G_LIST_MODEL (self), position_before, removed, added);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_reverse_list_model_set_property (GObject *object,
|
||||
guint prop_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkReverseListModel *self = GTK_REVERSE_LIST_MODEL (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_MODEL:
|
||||
gtk_reverse_list_model_set_model (self, g_value_get_object (value));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_reverse_list_model_get_property (GObject *object,
|
||||
guint prop_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkReverseListModel *self = GTK_REVERSE_LIST_MODEL (object);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
case PROP_MODEL:
|
||||
g_value_set_object (value, self->model);
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_reverse_list_model_clear_model (GtkReverseListModel *self)
|
||||
{
|
||||
if (self->model == NULL)
|
||||
return;
|
||||
|
||||
g_signal_handlers_disconnect_by_func (self->model, gtk_reverse_list_model_items_changed_cb, self);
|
||||
g_clear_object (&self->model);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_reverse_list_model_dispose (GObject *object)
|
||||
{
|
||||
GtkReverseListModel *self = GTK_REVERSE_LIST_MODEL (object);
|
||||
|
||||
gtk_reverse_list_model_clear_model (self);
|
||||
|
||||
G_OBJECT_CLASS (gtk_reverse_list_model_parent_class)->dispose (object);
|
||||
};
|
||||
|
||||
static void
|
||||
gtk_reverse_list_model_class_init (GtkReverseListModelClass *class)
|
||||
{
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
|
||||
|
||||
gobject_class->set_property = gtk_reverse_list_model_set_property;
|
||||
gobject_class->get_property = gtk_reverse_list_model_get_property;
|
||||
gobject_class->dispose = gtk_reverse_list_model_dispose;
|
||||
|
||||
/**
|
||||
* GtkReverseListModel:model:
|
||||
*
|
||||
* Child model to revert
|
||||
*/
|
||||
properties[PROP_MODEL] =
|
||||
g_param_spec_object ("model",
|
||||
P_("Model"),
|
||||
P_("Child model to revert"),
|
||||
G_TYPE_LIST_MODEL,
|
||||
GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
|
||||
|
||||
g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_reverse_list_model_init (GtkReverseListModel *self)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_reverse_list_model_new:
|
||||
* @model: (transfer full) (allow-none): The model to use, or %NULL
|
||||
*
|
||||
* Creates a new model that presents the items from @model
|
||||
* in reverse order
|
||||
*
|
||||
* Returns: A new #GtkReverseListModel
|
||||
**/
|
||||
GtkReverseListModel *
|
||||
gtk_reverse_list_model_new (GListModel *model)
|
||||
{
|
||||
GtkReverseListModel *self;
|
||||
|
||||
g_return_val_if_fail (model == NULL || G_IS_LIST_MODEL (model), NULL);
|
||||
|
||||
self = g_object_new (GTK_TYPE_REVERSE_LIST_MODEL,
|
||||
"model", model,
|
||||
NULL);
|
||||
|
||||
/* consume the reference */
|
||||
g_clear_object (&model);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_reverse_list_model_set_model:
|
||||
* @self: a #GtkReverseListModel
|
||||
* @model: (allow-none): The model to be sliced
|
||||
*
|
||||
* Sets the model to revert. The model's item type must conform
|
||||
* to @self's item type.
|
||||
*
|
||||
**/
|
||||
void
|
||||
gtk_reverse_list_model_set_model (GtkReverseListModel *self,
|
||||
GListModel *model)
|
||||
{
|
||||
guint removed, added;
|
||||
|
||||
g_return_if_fail (GTK_IS_REVERSE_LIST_MODEL (self));
|
||||
g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model));
|
||||
|
||||
if (self->model == model)
|
||||
return;
|
||||
|
||||
removed = g_list_model_get_n_items (G_LIST_MODEL (self));
|
||||
gtk_reverse_list_model_clear_model (self);
|
||||
|
||||
if (model)
|
||||
{
|
||||
self->model = g_object_ref (model);
|
||||
g_signal_connect (model, "items-changed", G_CALLBACK (gtk_reverse_list_model_items_changed_cb), self);
|
||||
added = g_list_model_get_n_items (G_LIST_MODEL (self));
|
||||
}
|
||||
else
|
||||
{
|
||||
added = 0;
|
||||
}
|
||||
|
||||
if (removed > 0 || added > 0)
|
||||
g_list_model_items_changed (G_LIST_MODEL (self), 0, removed, added);
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL]);
|
||||
}
|
||||
|
||||
/**
|
||||
* gtk_reverse_list_model_get_model:
|
||||
* @self: a #GtkReverseListModel
|
||||
*
|
||||
* Gets the model that is currently being used or %NULL if none.
|
||||
*
|
||||
* Returns: (nullable) (transfer none): The model in use
|
||||
**/
|
||||
GListModel *
|
||||
gtk_reverse_list_model_get_model (GtkReverseListModel *self)
|
||||
{
|
||||
g_return_val_if_fail (GTK_IS_REVERSE_LIST_MODEL (self), NULL);
|
||||
|
||||
return self->model;
|
||||
}
|
||||
50
gtk/gtkreverselistmodel.h
Normal file
50
gtk/gtkreverselistmodel.h
Normal file
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright © 2020 Red Hat, Inc
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* Authors: Matthias Clasen
|
||||
*/
|
||||
|
||||
#ifndef __GTK_REVERSE_LIST_MODEL_H__
|
||||
#define __GTK_REVERSE_LIST_MODEL_H__
|
||||
|
||||
|
||||
#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
|
||||
#error "Only <gtk/gtk.h> can be included directly."
|
||||
#endif
|
||||
|
||||
#include <gio/gio.h>
|
||||
#include <gtk/gtkwidget.h>
|
||||
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GTK_TYPE_REVERSE_LIST_MODEL (gtk_reverse_list_model_get_type ())
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
G_DECLARE_FINAL_TYPE (GtkReverseListModel, gtk_reverse_list_model, GTK, REVERSE_LIST_MODEL, GObject)
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GtkReverseListModel * gtk_reverse_list_model_new (GListModel *model);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gtk_reverse_list_model_set_model (GtkReverseListModel *self,
|
||||
GListModel *model);
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
GListModel * gtk_reverse_list_model_get_model (GtkReverseListModel *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GTK_REVERSE_LIST_MODEL_H__ */
|
||||
@@ -2910,6 +2910,16 @@ dnd_finished_cb (GdkDrag *drag,
|
||||
priv->drag = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
dnd_cancel_cb (GdkDrag *drag,
|
||||
GdkDragCancelReason reason,
|
||||
GtkText *self)
|
||||
{
|
||||
GtkTextPrivate *priv = gtk_text_get_instance_private (self);
|
||||
|
||||
priv->drag = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_text_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
double offset_x,
|
||||
@@ -2973,9 +2983,12 @@ gtk_text_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
g_object_unref (content);
|
||||
|
||||
g_signal_connect (drag, "dnd-finished", G_CALLBACK (dnd_finished_cb), self);
|
||||
g_signal_connect (drag, "cancel", G_CALLBACK (dnd_cancel_cb), self);
|
||||
|
||||
paintable = gtk_text_util_create_drag_icon (widget, text, -1);
|
||||
gtk_drag_icon_set_from_paintable (drag, paintable, ranges[0], 0);
|
||||
gtk_drag_icon_set_from_paintable (drag, paintable,
|
||||
(priv->drag_start_x - ranges[0]),
|
||||
priv->drag_start_y);
|
||||
g_clear_object (&paintable);
|
||||
|
||||
priv->drag = drag;
|
||||
@@ -2986,6 +2999,9 @@ gtk_text_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
g_free (text);
|
||||
|
||||
priv->in_drag = FALSE;
|
||||
|
||||
/* Deny the gesture so we don't get further updates */
|
||||
gtk_gesture_set_state (priv->drag_gesture, GTK_EVENT_SEQUENCE_DENIED);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1037,6 +1037,8 @@ gtk_text_history_set_enabled (GtkTextHistory *self,
|
||||
clear_action_queue (&self->undo_queue);
|
||||
clear_action_queue (&self->redo_queue);
|
||||
}
|
||||
|
||||
gtk_text_history_update_state (self);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7188,11 +7188,11 @@ selection_data_free (SelectionData *data)
|
||||
|
||||
static gboolean
|
||||
drag_gesture_get_text_surface_coords (GtkGestureDrag *gesture,
|
||||
GtkTextView *text_view,
|
||||
int *start_x,
|
||||
int *start_y,
|
||||
int *x,
|
||||
int *y)
|
||||
GtkTextView *text_view,
|
||||
int *start_x,
|
||||
int *start_y,
|
||||
int *x,
|
||||
int *y)
|
||||
{
|
||||
double sx, sy, ox, oy;
|
||||
|
||||
@@ -7262,6 +7262,10 @@ gtk_text_view_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
|
||||
gtk_text_view_start_selection_dnd (text_view, &iter, event,
|
||||
start_x, start_y);
|
||||
|
||||
/* Deny the gesture so we don't get further updates */
|
||||
gtk_gesture_set_state (text_view->priv->drag_gesture,
|
||||
GTK_EVENT_SEQUENCE_DENIED);
|
||||
return;
|
||||
}
|
||||
else
|
||||
@@ -7275,6 +7279,8 @@ gtk_text_view_drag_gesture_update (GtkGestureDrag *gesture,
|
||||
return;
|
||||
}
|
||||
|
||||
g_assert (data != NULL);
|
||||
|
||||
/* Text selection */
|
||||
if (data->granularity == SELECT_CHARACTERS)
|
||||
{
|
||||
@@ -7782,6 +7788,14 @@ dnd_finished_cb (GdkDrag *drag,
|
||||
self->priv->drag = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
dnd_cancel_cb (GdkDrag *drag,
|
||||
GdkDragCancelReason reason,
|
||||
GtkTextView *self)
|
||||
{
|
||||
self->priv->drag = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_text_view_start_selection_dnd (GtkTextView *text_view,
|
||||
const GtkTextIter *iter,
|
||||
@@ -7808,9 +7822,11 @@ gtk_text_view_start_selection_dnd (GtkTextView *text_view,
|
||||
surface = gdk_event_get_surface (event);
|
||||
device = gdk_event_get_device (event);
|
||||
drag = gdk_drag_begin (surface, device, content, actions, x, y);
|
||||
|
||||
g_object_unref (content);
|
||||
|
||||
g_signal_connect (drag, "dnd-finished", G_CALLBACK (dnd_finished_cb), text_view);
|
||||
g_signal_connect (drag, "cancel", G_CALLBACK (dnd_cancel_cb), text_view);
|
||||
|
||||
if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
|
||||
{
|
||||
|
||||
@@ -817,6 +817,13 @@ add_seat (GtkInspectorGeneral *gen,
|
||||
g_list_free (list);
|
||||
}
|
||||
|
||||
static void
|
||||
disconnect_seat (GtkInspectorGeneral *gen,
|
||||
GdkSeat *seat)
|
||||
{
|
||||
g_signal_handlers_disconnect_by_func (seat, G_CALLBACK (populate_seats), gen);
|
||||
}
|
||||
|
||||
static void
|
||||
populate_seats (GtkInspectorGeneral *gen)
|
||||
{
|
||||
@@ -835,11 +842,28 @@ populate_seats (GtkInspectorGeneral *gen)
|
||||
g_list_free (list);
|
||||
}
|
||||
|
||||
static void
|
||||
seat_added (GdkDisplay *display,
|
||||
GdkSeat *seat,
|
||||
GtkInspectorGeneral *gen)
|
||||
{
|
||||
populate_seats (gen);
|
||||
}
|
||||
|
||||
static void
|
||||
seat_removed (GdkDisplay *display,
|
||||
GdkSeat *seat,
|
||||
GtkInspectorGeneral *gen)
|
||||
{
|
||||
disconnect_seat (gen, seat);
|
||||
populate_seats (gen);
|
||||
}
|
||||
|
||||
static void
|
||||
init_device (GtkInspectorGeneral *gen)
|
||||
{
|
||||
g_signal_connect_swapped (gen->display, "seat-added", G_CALLBACK (populate_seats), gen);
|
||||
g_signal_connect_swapped (gen->display, "seat-removed", G_CALLBACK (populate_seats), gen);
|
||||
g_signal_connect (gen->display, "seat-added", G_CALLBACK (seat_added), gen);
|
||||
g_signal_connect (gen->display, "seat-removed", G_CALLBACK (seat_removed), gen);
|
||||
|
||||
populate_seats (gen);
|
||||
}
|
||||
@@ -911,9 +935,18 @@ static void
|
||||
gtk_inspector_general_dispose (GObject *object)
|
||||
{
|
||||
GtkInspectorGeneral *gen = GTK_INSPECTOR_GENERAL (object);
|
||||
GList *list, *l;
|
||||
|
||||
g_clear_pointer (&gen->swin, gtk_widget_unparent);
|
||||
|
||||
g_signal_handlers_disconnect_by_func (gen->display, G_CALLBACK (seat_added), gen);
|
||||
g_signal_handlers_disconnect_by_func (gen->display, G_CALLBACK (seat_removed), gen);
|
||||
|
||||
list = gdk_display_list_seats (gen->display);
|
||||
for (l = list; l; l = l->next)
|
||||
disconnect_seat (gen, GDK_SEAT (l->data));
|
||||
g_list_free (list);
|
||||
|
||||
G_OBJECT_CLASS (gtk_inspector_general_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
|
||||
@@ -340,6 +340,7 @@ gtk_public_sources = files([
|
||||
'gtkrendericon.c',
|
||||
'gtkrendernodepaintable.c',
|
||||
'gtkrevealer.c',
|
||||
'gtkreverselistmodel.c',
|
||||
'gtkroot.c',
|
||||
'gtknative.c',
|
||||
'gtkroundedbox.c',
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# Josep Puigdemont <josep.puigdemont@gmail.com>, 2005, 2006.
|
||||
# David Planella <david.planella@gmail.com>, 2008, 2009, 2010.
|
||||
# Jordi Serratosa <jordis@softcatala.cat>, 2012.
|
||||
# Gil Forcada <gilforcada@guifi.net>, 2011-2014.
|
||||
# Gil Forcada <gilforcada@guifi.net>, 2011-2020.
|
||||
# Benet R.i Camps <benny@softcatala.org>, 2015
|
||||
# Jordi Mas <jmas@softcatala.org>, 2015-2020
|
||||
#
|
||||
@@ -40,16 +40,16 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk+ 2.3.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-08-27 00:10+0000\n"
|
||||
"PO-Revision-Date: 2020-07-26 20:32+0200\n"
|
||||
"Last-Translator: Jordi Serratosa <jordis@softcatala.cat>\n"
|
||||
"POT-Creation-Date: 2020-09-06 13:26+0000\n"
|
||||
"PO-Revision-Date: 2020-09-07 09:24+0200\n"
|
||||
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Poedit 2.4\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Generator: Gtranslator 3.36.0\n"
|
||||
|
||||
#: gdk/gdkapplaunchcontext.c:133 gdk/gdkdrawcontext.c:155 gdk/gdkseat.c:201
|
||||
#: gdk/gdkseat.c:202 gdk/gdksurface.c:508 gdk/gdksurface.c:509
|
||||
@@ -679,11 +679,11 @@ msgstr "Finestra activa"
|
||||
msgid "The window which most recently had focus"
|
||||
msgstr "L'última finestra que ha tingut el focus"
|
||||
|
||||
#: gtk/gtkapplicationwindow.c:677
|
||||
#: gtk/gtkapplicationwindow.c:684
|
||||
msgid "Show a menubar"
|
||||
msgstr "Mostra la barra de menú"
|
||||
|
||||
#: gtk/gtkapplicationwindow.c:678
|
||||
#: gtk/gtkapplicationwindow.c:685
|
||||
msgid "TRUE if the window should show a menubar at the top of the window"
|
||||
msgstr ""
|
||||
"«TRUE» (cert) si la finestra hauria de mostrar una barra de menú a dalt de "
|
||||
@@ -721,7 +721,7 @@ msgstr "Obeeix el fill"
|
||||
msgid "Force aspect ratio to match that of the frame’s child"
|
||||
msgstr "Força la proporció perquè coincideixi amb el marc del fill"
|
||||
|
||||
#: gtk/gtkaspectframe.c:173 gtk/gtkbutton.c:252 gtk/gtkcombobox.c:782
|
||||
#: gtk/gtkaspectframe.c:173 gtk/gtkbutton.c:256 gtk/gtkcombobox.c:782
|
||||
#: gtk/gtkdragicon.c:372 gtk/gtkexpander.c:366 gtk/gtkflowbox.c:509
|
||||
#: gtk/gtkframe.c:191 gtk/gtklistbox.c:3467 gtk/gtklistitem.c:185
|
||||
#: gtk/gtknotebook.c:567 gtk/gtkoverlay.c:319 gtk/gtkpopover.c:1670
|
||||
@@ -731,7 +731,7 @@ msgstr "Força la proporció perquè coincideixi amb el marc del fill"
|
||||
msgid "Child"
|
||||
msgstr "Fill"
|
||||
|
||||
#: gtk/gtkaspectframe.c:174 gtk/gtkbutton.c:253 gtk/gtkexpander.c:367
|
||||
#: gtk/gtkaspectframe.c:174 gtk/gtkbutton.c:257 gtk/gtkexpander.c:367
|
||||
#: gtk/gtkflowbox.c:510 gtk/gtkframe.c:192 gtk/gtklistbox.c:3468
|
||||
#: gtk/gtkoverlay.c:320 gtk/gtkpopover.c:1671 gtk/gtkrevealer.c:353
|
||||
#: gtk/gtkscrolledwindow.c:757 gtk/gtksearchbar.c:325 gtk/gtkviewport.c:381
|
||||
@@ -918,24 +918,24 @@ msgstr "recurs que conté la definició de la IU"
|
||||
msgid "scope to use when instantiating listitems"
|
||||
msgstr "àmbit a usar quan s'instancia la llista d'elements"
|
||||
|
||||
#: gtk/gtkbutton.c:224 gtk/gtkexpander.c:320 gtk/gtkframe.c:169
|
||||
#: gtk/gtklabel.c:744 gtk/gtkmenubutton.c:399
|
||||
#: gtk/gtkbutton.c:228 gtk/gtkcheckbutton.c:472 gtk/gtkexpander.c:320
|
||||
#: gtk/gtkframe.c:169 gtk/gtklabel.c:744 gtk/gtkmenubutton.c:399
|
||||
msgid "Label"
|
||||
msgstr "Etiqueta"
|
||||
|
||||
#: gtk/gtkbutton.c:225
|
||||
#: gtk/gtkbutton.c:229 gtk/gtkcheckbutton.c:473
|
||||
msgid ""
|
||||
"Text of the label widget inside the button, if the button contains a label "
|
||||
"widget"
|
||||
msgstr "Text de l'etiqueta dins del botó, si el botó conté una etiqueta"
|
||||
|
||||
#: gtk/gtkbutton.c:231 gtk/gtkexpander.c:328 gtk/gtklabel.c:765
|
||||
#: gtk/gtkmenubutton.c:406 gtk/gtkstack.c:383
|
||||
#: gtk/gtkbutton.c:235 gtk/gtkcheckbutton.c:486 gtk/gtkexpander.c:328
|
||||
#: gtk/gtklabel.c:765 gtk/gtkmenubutton.c:406 gtk/gtkstack.c:383
|
||||
msgid "Use underline"
|
||||
msgstr "Utilitza subratllat"
|
||||
|
||||
#: gtk/gtkbutton.c:232 gtk/gtkexpander.c:329 gtk/gtklabel.c:766
|
||||
#: gtk/gtkmenubutton.c:407
|
||||
#: gtk/gtkbutton.c:236 gtk/gtkcheckbutton.c:487 gtk/gtkexpander.c:329
|
||||
#: gtk/gtklabel.c:766 gtk/gtkmenubutton.c:407
|
||||
msgid ""
|
||||
"If set, an underline in the text indicates the next character should be used "
|
||||
"for the mnemonic accelerator key"
|
||||
@@ -943,21 +943,21 @@ msgstr ""
|
||||
"Si s'habilita, un subratllat en el text indica que el caràcter següent "
|
||||
"s'hauria d'utilitzar per a la tecla de drecera"
|
||||
|
||||
#: gtk/gtkbutton.c:238 gtk/gtkcombobox.c:669 gtk/gtkentry.c:469
|
||||
#: gtk/gtkbutton.c:242 gtk/gtkcombobox.c:669 gtk/gtkentry.c:469
|
||||
#: gtk/gtkscrolledwindow.c:638
|
||||
msgid "Has Frame"
|
||||
msgstr "Té marc"
|
||||
|
||||
#: gtk/gtkbutton.c:239 gtk/gtkmenubutton.c:414
|
||||
#: gtk/gtkbutton.c:243 gtk/gtkmenubutton.c:414
|
||||
msgid "Whether the button has a frame"
|
||||
msgstr "Si el botó té un marc"
|
||||
|
||||
#: gtk/gtkbutton.c:245 gtk/gtkcellrendererpixbuf.c:209 gtk/gtkimage.c:211
|
||||
#: gtk/gtkbutton.c:249 gtk/gtkcellrendererpixbuf.c:209 gtk/gtkimage.c:211
|
||||
#: gtk/gtkmenubutton.c:392 gtk/gtkprinter.c:170 gtk/gtkwindow.c:822
|
||||
msgid "Icon Name"
|
||||
msgstr "Nom de la icona"
|
||||
|
||||
#: gtk/gtkbutton.c:246 gtk/gtkmenubutton.c:393
|
||||
#: gtk/gtkbutton.c:250 gtk/gtkmenubutton.c:393
|
||||
msgid "The name of the icon used to automatically populate the button"
|
||||
msgstr ""
|
||||
"El nom de la icona que s'utilitza automàticament per a emplenar el botó"
|
||||
@@ -1427,8 +1427,9 @@ msgstr "Dígits"
|
||||
msgid "The number of decimal places to display"
|
||||
msgstr "El nombre de decimals a mostrar"
|
||||
|
||||
#: gtk/gtkcellrendererspinner.c:138 gtk/gtkmodelbutton.c:1130
|
||||
#: gtk/gtkmodelbutton.c:1131 gtk/gtkswitch.c:528 gtk/gtktogglebutton.c:208
|
||||
#: gtk/gtkcellrendererspinner.c:138 gtk/gtkcheckbutton.c:460
|
||||
#: gtk/gtkmodelbutton.c:1130 gtk/gtkmodelbutton.c:1131 gtk/gtkswitch.c:528
|
||||
#: gtk/gtktogglebutton.c:260
|
||||
msgid "Active"
|
||||
msgstr "Actiu"
|
||||
|
||||
@@ -1892,19 +1893,24 @@ msgstr "Model ajustat"
|
||||
msgid "Whether to request enough space for every row in the model"
|
||||
msgstr "Si s'ha de demanar l'espai necessari per a cada fila del model"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:223
|
||||
msgid "Draw Indicator"
|
||||
msgstr "Indicador de dibuix"
|
||||
#: gtk/gtkcheckbutton.c:461 gtk/gtktogglebutton.c:261
|
||||
msgid "If the toggle button should be pressed in"
|
||||
msgstr "Si el botó de commutació ha d'estar premut cap endins"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:224
|
||||
msgid "If the indicator part of the button is displayed"
|
||||
msgstr "Si la part d'indicació del botó es visualitza"
|
||||
#: gtk/gtkcheckbutton.c:466 gtk/gtktogglebutton.c:267
|
||||
msgid "Group"
|
||||
msgstr "Grup"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:230
|
||||
#: gtk/gtkcheckbutton.c:467
|
||||
#| msgid "The radio button whose group this widget belongs to."
|
||||
msgid "The check button whose group this widget belongs to."
|
||||
msgstr "El botó de commutació al grup del qual pertany aquest giny."
|
||||
|
||||
#: gtk/gtkcheckbutton.c:479
|
||||
msgid "Inconsistent"
|
||||
msgstr "Inconsistent"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:231
|
||||
#: gtk/gtkcheckbutton.c:480
|
||||
msgid "If the check button is in an “in between” state"
|
||||
msgstr "Si el botó de commutació és en un estat «intermedi»"
|
||||
|
||||
@@ -4984,7 +4990,7 @@ msgstr "Paràmetres"
|
||||
msgid "Printer settings"
|
||||
msgstr "Paràmetres de la impressora"
|
||||
|
||||
#: gtk/gtkprintjob.c:171 gtk/gtkprintjob.c:172 gtk/gtkprintunixdialog.c:382
|
||||
#: gtk/gtkprintjob.c:171 gtk/gtkprintjob.c:172 gtk/gtkprintunixdialog.c:381
|
||||
msgid "Page Setup"
|
||||
msgstr "Configuració de la pàgina"
|
||||
|
||||
@@ -5009,11 +5015,11 @@ msgstr "Configuració de la pàgina per defecte"
|
||||
msgid "The GtkPageSetup used by default"
|
||||
msgstr "El GtkPageSetup utilitzat per defecte"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1093 gtk/gtkprintunixdialog.c:400
|
||||
#: gtk/gtkprintoperation.c:1093 gtk/gtkprintunixdialog.c:399
|
||||
msgid "Print Settings"
|
||||
msgstr "Paràmetres de la impressora"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1094 gtk/gtkprintunixdialog.c:401
|
||||
#: gtk/gtkprintoperation.c:1094 gtk/gtkprintunixdialog.c:400
|
||||
msgid "The GtkPrintSettings used for initializing the dialog"
|
||||
msgstr "El GtkPrintSettings utilitzat per a inicialitzar el diàleg"
|
||||
|
||||
@@ -5033,11 +5039,11 @@ msgstr "Nombre de pàgines"
|
||||
msgid "The number of pages in the document."
|
||||
msgstr "El nombre de pàgines del document."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1153 gtk/gtkprintunixdialog.c:390
|
||||
#: gtk/gtkprintoperation.c:1153 gtk/gtkprintunixdialog.c:389
|
||||
msgid "Current Page"
|
||||
msgstr "Pàgina actual"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1154 gtk/gtkprintunixdialog.c:391
|
||||
#: gtk/gtkprintoperation.c:1154 gtk/gtkprintunixdialog.c:390
|
||||
msgid "The current page in the document"
|
||||
msgstr "La pàgina actual en el document"
|
||||
|
||||
@@ -5116,7 +5122,7 @@ msgstr "Etiqueta de pestanya personalitzada"
|
||||
msgid "Label for the tab containing custom widgets."
|
||||
msgstr "Etiqueta per a la pestanya que contingui ginys personalitzats."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1330 gtk/gtkprintunixdialog.c:425
|
||||
#: gtk/gtkprintoperation.c:1330 gtk/gtkprintunixdialog.c:424
|
||||
msgid "Support Selection"
|
||||
msgstr "Admet la selecció"
|
||||
|
||||
@@ -5126,7 +5132,7 @@ msgstr ""
|
||||
"«TRUE» (cert) si l'operació d'impressió ha d'admetre la impressió de la "
|
||||
"selecció."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1345 gtk/gtkprintunixdialog.c:433
|
||||
#: gtk/gtkprintoperation.c:1345 gtk/gtkprintunixdialog.c:432
|
||||
msgid "Has Selection"
|
||||
msgstr "Té selecció"
|
||||
|
||||
@@ -5134,11 +5140,11 @@ msgstr "Té selecció"
|
||||
msgid "TRUE if a selection exists."
|
||||
msgstr "«TRUE» (cert) si existeix una selecció."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1359 gtk/gtkprintunixdialog.c:441
|
||||
#: gtk/gtkprintoperation.c:1359 gtk/gtkprintunixdialog.c:440
|
||||
msgid "Embed Page Setup"
|
||||
msgstr "Incrusta la configuració de la pàgina"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1360 gtk/gtkprintunixdialog.c:442
|
||||
#: gtk/gtkprintoperation.c:1360 gtk/gtkprintunixdialog.c:441
|
||||
msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog"
|
||||
msgstr ""
|
||||
"«TRUE» (cert) si els quadres combinats de la configuració de pàgina estan "
|
||||
@@ -5152,31 +5158,31 @@ msgstr "Nombre de pàgines a imprimir"
|
||||
msgid "The number of pages that will be printed."
|
||||
msgstr "El nombre de pàgines que s'imprimiran."
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:383
|
||||
#: gtk/gtkprintunixdialog.c:382
|
||||
msgid "The GtkPageSetup to use"
|
||||
msgstr "El GtkPageSetup a utilitzar"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:408
|
||||
#: gtk/gtkprintunixdialog.c:407
|
||||
msgid "Selected Printer"
|
||||
msgstr "Impressora seleccionada"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:409
|
||||
#: gtk/gtkprintunixdialog.c:408
|
||||
msgid "The GtkPrinter which is selected"
|
||||
msgstr "La GtkPrinter seleccionada"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:416
|
||||
#: gtk/gtkprintunixdialog.c:415
|
||||
msgid "Manual Capabilities"
|
||||
msgstr "Capacitats manuals"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:417
|
||||
#: gtk/gtkprintunixdialog.c:416
|
||||
msgid "Capabilities the application can handle"
|
||||
msgstr "Capacitats que l'aplicació admet"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:426
|
||||
#: gtk/gtkprintunixdialog.c:425
|
||||
msgid "Whether the dialog supports selection"
|
||||
msgstr "Si el diàleg admet la selecció"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:434
|
||||
#: gtk/gtkprintunixdialog.c:433
|
||||
msgid "Whether the application has a selection"
|
||||
msgstr "Si l'aplicació té una selecció"
|
||||
|
||||
@@ -5234,14 +5240,6 @@ msgstr "Objecte"
|
||||
msgid "The root object"
|
||||
msgstr "L'objecte arrel"
|
||||
|
||||
#: gtk/gtkradiobutton.c:203
|
||||
msgid "Group"
|
||||
msgstr "Grup"
|
||||
|
||||
#: gtk/gtkradiobutton.c:204
|
||||
msgid "The radio button whose group this widget belongs to."
|
||||
msgstr "El botó de grup al grup del qual pertany aquest giny."
|
||||
|
||||
#: gtk/gtkrange.c:366
|
||||
msgid "The GtkAdjustment that contains the current value of this range object"
|
||||
msgstr "El GtkAdjustment que conté el valor actual d'aquest rang d'objectes"
|
||||
@@ -7078,9 +7076,10 @@ msgstr "Tipus de finestra"
|
||||
msgid "The GtkTextWindowType"
|
||||
msgstr "El GtkTextWindowType"
|
||||
|
||||
#: gtk/gtktogglebutton.c:209
|
||||
msgid "If the toggle button should be pressed in"
|
||||
msgstr "Si el botó de commutació ha d'estar premut cap endins"
|
||||
#: gtk/gtktogglebutton.c:268
|
||||
#| msgid "The radio button whose group this widget belongs to."
|
||||
msgid "The toggle button whose group this widget belongs to."
|
||||
msgstr "El botó commutat al grup del qual pertany aquest giny."
|
||||
|
||||
#: gtk/gtktreeexpander.c:460
|
||||
msgid "The child widget with the actual contents"
|
||||
@@ -7898,6 +7897,12 @@ msgstr "Títol del perfil de color"
|
||||
msgid "The title of the color profile to use"
|
||||
msgstr "El títol del perfil de color a utilitzar"
|
||||
|
||||
#~ msgid "Draw Indicator"
|
||||
#~ msgstr "Indicador de dibuix"
|
||||
|
||||
#~ msgid "If the indicator part of the button is displayed"
|
||||
#~ msgstr "Si la part d'indicació del botó es visualitza"
|
||||
|
||||
#~ msgid "The text displayed next to the accelerator"
|
||||
#~ msgstr "El text que es mostra al costat de l'accelerador"
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,8 +8,8 @@
|
||||
msgid ""
|
||||
msgstr "Project-Id-Version: gtk+_properties master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-08-27 00:10+0000\n"
|
||||
"PO-Revision-Date: 2020-08-30 10:00+0100\n"
|
||||
"POT-Creation-Date: 2020-09-05 09:54+0000\n"
|
||||
"PO-Revision-Date: 2020-09-06 10:00+0100\n"
|
||||
"Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
|
||||
"Language-Team: Basque <librezale@librezale.eus>\n"
|
||||
"Language: eu\n"
|
||||
@@ -656,11 +656,11 @@ msgstr "Leiho aktiboa"
|
||||
msgid "The window which most recently had focus"
|
||||
msgstr "Azken aldian fokua daukan leihoa"
|
||||
|
||||
#: gtk/gtkapplicationwindow.c:677
|
||||
#: gtk/gtkapplicationwindow.c:684
|
||||
msgid "Show a menubar"
|
||||
msgstr "Erakutsi menu-barra"
|
||||
|
||||
#: gtk/gtkapplicationwindow.c:678
|
||||
#: gtk/gtkapplicationwindow.c:685
|
||||
msgid "TRUE if the window should show a menubar at the top of the window"
|
||||
msgstr "TRUE (egia) leihoak goian menu-barra erakutsi behar badu"
|
||||
|
||||
@@ -696,7 +696,7 @@ msgstr "Umeari obeditu"
|
||||
msgid "Force aspect ratio to match that of the frame’s child"
|
||||
msgstr "Behartu aspektu-erlazioa markoaren haurrarekin bat etor dadin"
|
||||
|
||||
#: gtk/gtkaspectframe.c:173 gtk/gtkbutton.c:252 gtk/gtkcombobox.c:782
|
||||
#: gtk/gtkaspectframe.c:173 gtk/gtkbutton.c:256 gtk/gtkcombobox.c:782
|
||||
#: gtk/gtkdragicon.c:372 gtk/gtkexpander.c:366 gtk/gtkflowbox.c:509
|
||||
#: gtk/gtkframe.c:191 gtk/gtklistbox.c:3467 gtk/gtklistitem.c:185
|
||||
#: gtk/gtknotebook.c:567 gtk/gtkoverlay.c:319 gtk/gtkpopover.c:1670
|
||||
@@ -706,7 +706,7 @@ msgstr "Behartu aspektu-erlazioa markoaren haurrarekin bat etor dadin"
|
||||
msgid "Child"
|
||||
msgstr "Haurra"
|
||||
|
||||
#: gtk/gtkaspectframe.c:174 gtk/gtkbutton.c:253 gtk/gtkexpander.c:367
|
||||
#: gtk/gtkaspectframe.c:174 gtk/gtkbutton.c:257 gtk/gtkexpander.c:367
|
||||
#: gtk/gtkflowbox.c:510 gtk/gtkframe.c:192 gtk/gtklistbox.c:3468
|
||||
#: gtk/gtkoverlay.c:320 gtk/gtkpopover.c:1671 gtk/gtkrevealer.c:353
|
||||
#: gtk/gtkscrolledwindow.c:757 gtk/gtksearchbar.c:325 gtk/gtkviewport.c:381
|
||||
@@ -895,44 +895,44 @@ msgstr "UI definizioa duen baliabidea"
|
||||
msgid "scope to use when instantiating listitems"
|
||||
msgstr "zerrenda-elementuak instantziatzean erabiliko den esparrua"
|
||||
|
||||
#: gtk/gtkbutton.c:224 gtk/gtkexpander.c:320 gtk/gtkframe.c:169
|
||||
#: gtk/gtklabel.c:744 gtk/gtkmenubutton.c:399
|
||||
#: gtk/gtkbutton.c:228 gtk/gtkcheckbutton.c:472 gtk/gtkexpander.c:320
|
||||
#: gtk/gtkframe.c:169 gtk/gtklabel.c:744 gtk/gtkmenubutton.c:399
|
||||
msgid "Label"
|
||||
msgstr "Etiketa"
|
||||
|
||||
#: gtk/gtkbutton.c:225
|
||||
#: gtk/gtkbutton.c:229 gtk/gtkcheckbutton.c:473
|
||||
msgid ""
|
||||
"Text of the label widget inside the button, if the button contains a label "
|
||||
"widget"
|
||||
msgstr "Etiketa-trepetaren testua botoi barruan, botoiak etiketa-trepeta badu"
|
||||
|
||||
#: gtk/gtkbutton.c:231 gtk/gtkexpander.c:328 gtk/gtklabel.c:765
|
||||
#: gtk/gtkmenubutton.c:406 gtk/gtkstack.c:383
|
||||
#: gtk/gtkbutton.c:235 gtk/gtkcheckbutton.c:486 gtk/gtkexpander.c:328
|
||||
#: gtk/gtklabel.c:765 gtk/gtkmenubutton.c:406 gtk/gtkstack.c:383
|
||||
msgid "Use underline"
|
||||
msgstr "Erabili azpimarra"
|
||||
|
||||
#: gtk/gtkbutton.c:232 gtk/gtkexpander.c:329 gtk/gtklabel.c:766
|
||||
#: gtk/gtkmenubutton.c:407
|
||||
#: gtk/gtkbutton.c:236 gtk/gtkcheckbutton.c:487 gtk/gtkexpander.c:329
|
||||
#: gtk/gtklabel.c:766 gtk/gtkmenubutton.c:407
|
||||
msgid ""
|
||||
"If set, an underline in the text indicates the next character should be used "
|
||||
"for the mnemonic accelerator key"
|
||||
msgstr "Ezartzen bada, testuko azpimarrak adierazten du hurrengo karakterea tekla bizkortzaile mnemoteknikorako erabili behar dela"
|
||||
|
||||
#: gtk/gtkbutton.c:238 gtk/gtkcombobox.c:669 gtk/gtkentry.c:469
|
||||
#: gtk/gtkbutton.c:242 gtk/gtkcombobox.c:669 gtk/gtkentry.c:469
|
||||
#: gtk/gtkscrolledwindow.c:638
|
||||
msgid "Has Frame"
|
||||
msgstr "Markoa dauka"
|
||||
|
||||
#: gtk/gtkbutton.c:239 gtk/gtkmenubutton.c:414
|
||||
#: gtk/gtkbutton.c:243 gtk/gtkmenubutton.c:414
|
||||
msgid "Whether the button has a frame"
|
||||
msgstr "Botoiak markoa duen ala ez"
|
||||
|
||||
#: gtk/gtkbutton.c:245 gtk/gtkcellrendererpixbuf.c:209 gtk/gtkimage.c:211
|
||||
#: gtk/gtkbutton.c:249 gtk/gtkcellrendererpixbuf.c:209 gtk/gtkimage.c:211
|
||||
#: gtk/gtkmenubutton.c:392 gtk/gtkprinter.c:170 gtk/gtkwindow.c:822
|
||||
msgid "Icon Name"
|
||||
msgstr "Ikono-izena"
|
||||
|
||||
#: gtk/gtkbutton.c:246 gtk/gtkmenubutton.c:393
|
||||
#: gtk/gtkbutton.c:250 gtk/gtkmenubutton.c:393
|
||||
msgid "The name of the icon used to automatically populate the button"
|
||||
msgstr "Ikonoaren izena botoia automatikoki betetzeko"
|
||||
|
||||
@@ -1400,8 +1400,9 @@ msgstr "Digituak"
|
||||
msgid "The number of decimal places to display"
|
||||
msgstr "Bistaratu beharreko dezimalen kopurua"
|
||||
|
||||
#: gtk/gtkcellrendererspinner.c:138 gtk/gtkmodelbutton.c:1130
|
||||
#: gtk/gtkmodelbutton.c:1131 gtk/gtkswitch.c:528 gtk/gtktogglebutton.c:208
|
||||
#: gtk/gtkcellrendererspinner.c:138 gtk/gtkcheckbutton.c:460
|
||||
#: gtk/gtkmodelbutton.c:1130 gtk/gtkmodelbutton.c:1131 gtk/gtkswitch.c:528
|
||||
#: gtk/gtktogglebutton.c:260
|
||||
msgid "Active"
|
||||
msgstr "Aktibo"
|
||||
|
||||
@@ -1863,22 +1864,26 @@ msgstr "Doitu eredua"
|
||||
msgid "Whether to request enough space for every row in the model"
|
||||
msgstr "Ereduan errenkada bakoitzarentzako nahiko leku eskatu edo ez"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:223
|
||||
msgid "Draw Indicator"
|
||||
msgstr "Marrazki-adierazlea"
|
||||
#: gtk/gtkcheckbutton.c:461 gtk/gtktogglebutton.c:261
|
||||
msgid "If the toggle button should be pressed in"
|
||||
msgstr "Txandakatze-botoiak sakatuta egon behar duen ala ez"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:224
|
||||
msgid "If the indicator part of the button is displayed"
|
||||
msgstr "Botoiaren adierazle-zatia bistaratuta dagoen"
|
||||
#: gtk/gtkcheckbutton.c:466 gtk/gtktogglebutton.c:267
|
||||
msgid "Group"
|
||||
msgstr "Taldea"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:467
|
||||
msgid "The check button whose group this widget belongs to."
|
||||
msgstr "Trepeta honi dagokion taldearen kontrol-botoia."
|
||||
|
||||
#
|
||||
#: gtk/gtkcheckbutton.c:230
|
||||
#: gtk/gtkcheckbutton.c:479
|
||||
msgid "Inconsistent"
|
||||
msgstr "Sendotasunik gabea"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:231
|
||||
#: gtk/gtkcheckbutton.c:480
|
||||
msgid "If the check button is in an “in between” state"
|
||||
msgstr "Txandakatze-botoia “tarteko” egoeran dagoen"
|
||||
msgstr "Kontrol-botoia “tarteko” egoeran dagoen"
|
||||
|
||||
#: gtk/gtkcolorbutton.c:158 gtk/gtkcolorchooser.c:83
|
||||
msgid "Use alpha"
|
||||
@@ -4921,7 +4926,7 @@ msgid "Printer settings"
|
||||
msgstr "Inprimagailuaren ezarpenak"
|
||||
|
||||
#
|
||||
#: gtk/gtkprintjob.c:171 gtk/gtkprintjob.c:172 gtk/gtkprintunixdialog.c:382
|
||||
#: gtk/gtkprintjob.c:171 gtk/gtkprintjob.c:172 gtk/gtkprintunixdialog.c:381
|
||||
msgid "Page Setup"
|
||||
msgstr "Orrialdearen konfigurazioa"
|
||||
|
||||
@@ -4943,11 +4948,11 @@ msgstr "Orriaren konfigurazio lehenetsia"
|
||||
msgid "The GtkPageSetup used by default"
|
||||
msgstr "GtkPageSetup lehenespenez erabilita"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1093 gtk/gtkprintunixdialog.c:400
|
||||
#: gtk/gtkprintoperation.c:1093 gtk/gtkprintunixdialog.c:399
|
||||
msgid "Print Settings"
|
||||
msgstr "Inprimatze-ezarpenak"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1094 gtk/gtkprintunixdialog.c:401
|
||||
#: gtk/gtkprintoperation.c:1094 gtk/gtkprintunixdialog.c:400
|
||||
msgid "The GtkPrintSettings used for initializing the dialog"
|
||||
msgstr "GtkPrintSettings elkarrizketa-koadroa hasieratzeko erabilita"
|
||||
|
||||
@@ -4967,11 +4972,11 @@ msgstr "Orrialde kopurua"
|
||||
msgid "The number of pages in the document."
|
||||
msgstr "Dokumentuaren orrialde kopurua."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1153 gtk/gtkprintunixdialog.c:390
|
||||
#: gtk/gtkprintoperation.c:1153 gtk/gtkprintunixdialog.c:389
|
||||
msgid "Current Page"
|
||||
msgstr "Uneko orrialdea"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1154 gtk/gtkprintunixdialog.c:391
|
||||
#: gtk/gtkprintoperation.c:1154 gtk/gtkprintunixdialog.c:390
|
||||
msgid "The current page in the document"
|
||||
msgstr "Dokumentuaren uneko orrialdea"
|
||||
|
||||
@@ -5043,7 +5048,7 @@ msgstr "Fitxaren etiketa pertsonalizatua"
|
||||
msgid "Label for the tab containing custom widgets."
|
||||
msgstr "Trepeta pertsonalizatuak dituen fitxaren etiketa."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1330 gtk/gtkprintunixdialog.c:425
|
||||
#: gtk/gtkprintoperation.c:1330 gtk/gtkprintunixdialog.c:424
|
||||
msgid "Support Selection"
|
||||
msgstr "Hautapenaren euskarria"
|
||||
|
||||
@@ -5051,7 +5056,7 @@ msgstr "Hautapenaren euskarria"
|
||||
msgid "TRUE if the print operation will support print of selection."
|
||||
msgstr "TRUE (egia) inprimatzeko eragiketak hautapena inprimatzea onartzen badu."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1345 gtk/gtkprintunixdialog.c:433
|
||||
#: gtk/gtkprintoperation.c:1345 gtk/gtkprintunixdialog.c:432
|
||||
msgid "Has Selection"
|
||||
msgstr "Hautapena du"
|
||||
|
||||
@@ -5060,11 +5065,11 @@ msgid "TRUE if a selection exists."
|
||||
msgstr "TRUE (egia) hautapena existitzen bada."
|
||||
|
||||
#
|
||||
#: gtk/gtkprintoperation.c:1359 gtk/gtkprintunixdialog.c:441
|
||||
#: gtk/gtkprintoperation.c:1359 gtk/gtkprintunixdialog.c:440
|
||||
msgid "Embed Page Setup"
|
||||
msgstr "Kapsulatutako orriaren konfigurazioa"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1360 gtk/gtkprintunixdialog.c:442
|
||||
#: gtk/gtkprintoperation.c:1360 gtk/gtkprintunixdialog.c:441
|
||||
msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog"
|
||||
msgstr "TRUE (egia) orria konfiguratzeko konbinazio-koadroak GtkPrintUnixDialog-en kapsulatuta badaude"
|
||||
|
||||
@@ -5076,31 +5081,31 @@ msgstr "Orrialde kopurua inprimatzeko"
|
||||
msgid "The number of pages that will be printed."
|
||||
msgstr "Inprimatuko diren orrialdeen kopurua."
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:383
|
||||
#: gtk/gtkprintunixdialog.c:382
|
||||
msgid "The GtkPageSetup to use"
|
||||
msgstr "GtkPageSetup erabiltzeko"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:408
|
||||
#: gtk/gtkprintunixdialog.c:407
|
||||
msgid "Selected Printer"
|
||||
msgstr "Hautatutako inprimagailua"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:409
|
||||
#: gtk/gtkprintunixdialog.c:408
|
||||
msgid "The GtkPrinter which is selected"
|
||||
msgstr "Hautatutako GtkPrinter"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:416
|
||||
#: gtk/gtkprintunixdialog.c:415
|
||||
msgid "Manual Capabilities"
|
||||
msgstr "Eskuzko gaitasunak"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:417
|
||||
#: gtk/gtkprintunixdialog.c:416
|
||||
msgid "Capabilities the application can handle"
|
||||
msgstr "Aplikazioak kudea ditzakeen gaitasunak"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:426
|
||||
#: gtk/gtkprintunixdialog.c:425
|
||||
msgid "Whether the dialog supports selection"
|
||||
msgstr "Elkarrizketa-koadroak hautapena onartzen duen edo ez"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:434
|
||||
#: gtk/gtkprintunixdialog.c:433
|
||||
msgid "Whether the application has a selection"
|
||||
msgstr "Aplikazioak hautapen bat duen edo ez"
|
||||
|
||||
@@ -5155,14 +5160,6 @@ msgstr "Objektua"
|
||||
msgid "The root object"
|
||||
msgstr "Erro-objektua"
|
||||
|
||||
#: gtk/gtkradiobutton.c:203
|
||||
msgid "Group"
|
||||
msgstr "Taldea"
|
||||
|
||||
#: gtk/gtkradiobutton.c:204
|
||||
msgid "The radio button whose group this widget belongs to."
|
||||
msgstr "Aukera-botoia (taldeari dagokion trepeta hau)."
|
||||
|
||||
#: gtk/gtkrange.c:366
|
||||
msgid "The GtkAdjustment that contains the current value of this range object"
|
||||
msgstr "Barruti-objektu honen uneko balioa duen GtkAdjustment"
|
||||
@@ -6891,9 +6888,9 @@ msgstr "Leiho-mota"
|
||||
msgid "The GtkTextWindowType"
|
||||
msgstr "GtkTextWindowType"
|
||||
|
||||
#: gtk/gtktogglebutton.c:209
|
||||
msgid "If the toggle button should be pressed in"
|
||||
msgstr "Txandakatze-botoiak sakatuta egon behar duen ala ez"
|
||||
#: gtk/gtktogglebutton.c:268
|
||||
msgid "The toggle button whose group this widget belongs to."
|
||||
msgstr "Trepeta honi dagokion taldearen txandakatze-botoia."
|
||||
|
||||
#: gtk/gtktreeexpander.c:460
|
||||
msgid "The child widget with the actual contents"
|
||||
@@ -7691,6 +7688,12 @@ msgstr "Kolore-profilaren titulua"
|
||||
msgid "The title of the color profile to use"
|
||||
msgstr "Erabiliko den kolore-profilaren titulua"
|
||||
|
||||
#~ msgid "Draw Indicator"
|
||||
#~ msgstr "Marrazki-adierazlea"
|
||||
|
||||
#~ msgid "If the indicator part of the button is displayed"
|
||||
#~ msgstr "Botoiaren adierazle-zatia bistaratuta dagoen"
|
||||
|
||||
#
|
||||
#~ msgid "Device type"
|
||||
#~ msgstr "Gailu mota"
|
||||
|
||||
5427
po-properties/fr.po
5427
po-properties/fr.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk+-properties master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-08-28 10:27+0000\n"
|
||||
"PO-Revision-Date: 2020-08-31 10:25+0700\n"
|
||||
"POT-Creation-Date: 2020-09-05 09:54+0000\n"
|
||||
"PO-Revision-Date: 2020-09-06 12:15+0700\n"
|
||||
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
|
||||
"Language-Team: Indonesian <gnome@i15n.org>\n"
|
||||
"Language: id\n"
|
||||
@@ -655,11 +655,11 @@ msgstr "Jendela aktif"
|
||||
msgid "The window which most recently had focus"
|
||||
msgstr "Jendela yang terakhir kali memiliki fokus"
|
||||
|
||||
#: gtk/gtkapplicationwindow.c:677
|
||||
#: gtk/gtkapplicationwindow.c:684
|
||||
msgid "Show a menubar"
|
||||
msgstr "Tampilkan bilah menu"
|
||||
|
||||
#: gtk/gtkapplicationwindow.c:678
|
||||
#: gtk/gtkapplicationwindow.c:685
|
||||
msgid "TRUE if the window should show a menubar at the top of the window"
|
||||
msgstr ""
|
||||
"TRUE jika jendela mesti menampilkan bilah menu di bagian puncak jendela"
|
||||
@@ -696,7 +696,7 @@ msgstr "Obey child"
|
||||
msgid "Force aspect ratio to match that of the frame’s child"
|
||||
msgstr "Paksakan rasio aspek agar cocok dengan dengan bingkai anak"
|
||||
|
||||
#: gtk/gtkaspectframe.c:173 gtk/gtkbutton.c:252 gtk/gtkcombobox.c:782
|
||||
#: gtk/gtkaspectframe.c:173 gtk/gtkbutton.c:256 gtk/gtkcombobox.c:782
|
||||
#: gtk/gtkdragicon.c:372 gtk/gtkexpander.c:366 gtk/gtkflowbox.c:509
|
||||
#: gtk/gtkframe.c:191 gtk/gtklistbox.c:3467 gtk/gtklistitem.c:185
|
||||
#: gtk/gtknotebook.c:567 gtk/gtkoverlay.c:319 gtk/gtkpopover.c:1670
|
||||
@@ -706,7 +706,7 @@ msgstr "Paksakan rasio aspek agar cocok dengan dengan bingkai anak"
|
||||
msgid "Child"
|
||||
msgstr "Anak"
|
||||
|
||||
#: gtk/gtkaspectframe.c:174 gtk/gtkbutton.c:253 gtk/gtkexpander.c:367
|
||||
#: gtk/gtkaspectframe.c:174 gtk/gtkbutton.c:257 gtk/gtkexpander.c:367
|
||||
#: gtk/gtkflowbox.c:510 gtk/gtkframe.c:192 gtk/gtklistbox.c:3468
|
||||
#: gtk/gtkoverlay.c:320 gtk/gtkpopover.c:1671 gtk/gtkrevealer.c:353
|
||||
#: gtk/gtkscrolledwindow.c:757 gtk/gtksearchbar.c:325 gtk/gtkviewport.c:381
|
||||
@@ -891,25 +891,25 @@ msgstr "sumber daya yang berisi definisi UI"
|
||||
msgid "scope to use when instantiating listitems"
|
||||
msgstr "lingkup untuk digunakan saat instantiating listitems"
|
||||
|
||||
#: gtk/gtkbutton.c:224 gtk/gtkexpander.c:320 gtk/gtkframe.c:169
|
||||
#: gtk/gtklabel.c:744 gtk/gtkmenubutton.c:399
|
||||
#: gtk/gtkbutton.c:228 gtk/gtkcheckbutton.c:472 gtk/gtkexpander.c:320
|
||||
#: gtk/gtkframe.c:169 gtk/gtklabel.c:744 gtk/gtkmenubutton.c:399
|
||||
msgid "Label"
|
||||
msgstr "Label"
|
||||
|
||||
#: gtk/gtkbutton.c:225
|
||||
#: gtk/gtkbutton.c:229 gtk/gtkcheckbutton.c:473
|
||||
msgid ""
|
||||
"Text of the label widget inside the button, if the button contains a label "
|
||||
"widget"
|
||||
msgstr ""
|
||||
"Tulisan pada widget label dalam tombol, (jika tombol berisi widget label"
|
||||
|
||||
#: gtk/gtkbutton.c:231 gtk/gtkexpander.c:328 gtk/gtklabel.c:765
|
||||
#: gtk/gtkmenubutton.c:406 gtk/gtkstack.c:383
|
||||
#: gtk/gtkbutton.c:235 gtk/gtkcheckbutton.c:486 gtk/gtkexpander.c:328
|
||||
#: gtk/gtklabel.c:765 gtk/gtkmenubutton.c:406 gtk/gtkstack.c:383
|
||||
msgid "Use underline"
|
||||
msgstr "Gunakan garis bawah"
|
||||
|
||||
#: gtk/gtkbutton.c:232 gtk/gtkexpander.c:329 gtk/gtklabel.c:766
|
||||
#: gtk/gtkmenubutton.c:407
|
||||
#: gtk/gtkbutton.c:236 gtk/gtkcheckbutton.c:487 gtk/gtkexpander.c:329
|
||||
#: gtk/gtklabel.c:766 gtk/gtkmenubutton.c:407
|
||||
msgid ""
|
||||
"If set, an underline in the text indicates the next character should be used "
|
||||
"for the mnemonic accelerator key"
|
||||
@@ -917,21 +917,21 @@ msgstr ""
|
||||
"Jika ini diisi maka ada garis bawah pada teks yang menunjukkan bahwa huruf "
|
||||
"tersebut berisi singkatan tombol jalan pintas"
|
||||
|
||||
#: gtk/gtkbutton.c:238 gtk/gtkcombobox.c:669 gtk/gtkentry.c:469
|
||||
#: gtk/gtkbutton.c:242 gtk/gtkcombobox.c:669 gtk/gtkentry.c:469
|
||||
#: gtk/gtkscrolledwindow.c:638
|
||||
msgid "Has Frame"
|
||||
msgstr "Memiliki bingkai"
|
||||
|
||||
#: gtk/gtkbutton.c:239 gtk/gtkmenubutton.c:414
|
||||
#: gtk/gtkbutton.c:243 gtk/gtkmenubutton.c:414
|
||||
msgid "Whether the button has a frame"
|
||||
msgstr "Apakah tombol memiliki bingkai"
|
||||
|
||||
#: gtk/gtkbutton.c:245 gtk/gtkcellrendererpixbuf.c:209 gtk/gtkimage.c:211
|
||||
#: gtk/gtkbutton.c:249 gtk/gtkcellrendererpixbuf.c:209 gtk/gtkimage.c:211
|
||||
#: gtk/gtkmenubutton.c:392 gtk/gtkprinter.c:170 gtk/gtkwindow.c:822
|
||||
msgid "Icon Name"
|
||||
msgstr "Icon Name"
|
||||
|
||||
#: gtk/gtkbutton.c:246 gtk/gtkmenubutton.c:393
|
||||
#: gtk/gtkbutton.c:250 gtk/gtkmenubutton.c:393
|
||||
msgid "The name of the icon used to automatically populate the button"
|
||||
msgstr "Nama ikon yang dipakai untuk mempopulasi tombol secara otomatis"
|
||||
|
||||
@@ -1398,8 +1398,9 @@ msgstr "Digit"
|
||||
msgid "The number of decimal places to display"
|
||||
msgstr "Jumlah tempat desimal yang ditampilkan"
|
||||
|
||||
#: gtk/gtkcellrendererspinner.c:138 gtk/gtkmodelbutton.c:1130
|
||||
#: gtk/gtkmodelbutton.c:1131 gtk/gtkswitch.c:528 gtk/gtktogglebutton.c:208
|
||||
#: gtk/gtkcellrendererspinner.c:138 gtk/gtkcheckbutton.c:460
|
||||
#: gtk/gtkmodelbutton.c:1130 gtk/gtkmodelbutton.c:1131 gtk/gtkswitch.c:528
|
||||
#: gtk/gtktogglebutton.c:260
|
||||
msgid "Active"
|
||||
msgstr "Aktif"
|
||||
|
||||
@@ -1859,19 +1860,23 @@ msgstr "Pas Model"
|
||||
msgid "Whether to request enough space for every row in the model"
|
||||
msgstr "Apakah meminta cukup ruang untuk setiap baris dalam model"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:223
|
||||
msgid "Draw Indicator"
|
||||
msgstr "Indikator gambar"
|
||||
#: gtk/gtkcheckbutton.c:461 gtk/gtktogglebutton.c:261
|
||||
msgid "If the toggle button should be pressed in"
|
||||
msgstr "Apakah tombol jungkit harus ditekan ke dalam"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:224
|
||||
msgid "If the indicator part of the button is displayed"
|
||||
msgstr "Menentukan apakah bagian indikator tombol ditampilkan"
|
||||
#: gtk/gtkcheckbutton.c:466 gtk/gtktogglebutton.c:267
|
||||
msgid "Group"
|
||||
msgstr "Grup"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:230
|
||||
#: gtk/gtkcheckbutton.c:467
|
||||
msgid "The check button whose group this widget belongs to."
|
||||
msgstr "Tombol cek tempat grup widget ini berada."
|
||||
|
||||
#: gtk/gtkcheckbutton.c:479
|
||||
msgid "Inconsistent"
|
||||
msgstr "Tidak konsisten"
|
||||
|
||||
#: gtk/gtkcheckbutton.c:231
|
||||
#: gtk/gtkcheckbutton.c:480
|
||||
msgid "If the check button is in an “in between” state"
|
||||
msgstr "Menentukan apakah tombol centang ada dalam kondisi \"antara\""
|
||||
|
||||
@@ -4926,7 +4931,7 @@ msgstr "Pengaturan"
|
||||
msgid "Printer settings"
|
||||
msgstr "Tatanan pencetak"
|
||||
|
||||
#: gtk/gtkprintjob.c:171 gtk/gtkprintjob.c:172 gtk/gtkprintunixdialog.c:382
|
||||
#: gtk/gtkprintjob.c:171 gtk/gtkprintjob.c:172 gtk/gtkprintunixdialog.c:381
|
||||
msgid "Page Setup"
|
||||
msgstr "Atur Halaman"
|
||||
|
||||
@@ -4950,11 +4955,11 @@ msgstr "Tatanan Halaman Baku"
|
||||
msgid "The GtkPageSetup used by default"
|
||||
msgstr "GtkPageSetup yang dipakai secara baku"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1093 gtk/gtkprintunixdialog.c:400
|
||||
#: gtk/gtkprintoperation.c:1093 gtk/gtkprintunixdialog.c:399
|
||||
msgid "Print Settings"
|
||||
msgstr "Tatanan Pencetakan"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1094 gtk/gtkprintunixdialog.c:401
|
||||
#: gtk/gtkprintoperation.c:1094 gtk/gtkprintunixdialog.c:400
|
||||
msgid "The GtkPrintSettings used for initializing the dialog"
|
||||
msgstr "GtkPrintSettings yang dipakai untuk menginisialisasi dialog"
|
||||
|
||||
@@ -4974,11 +4979,11 @@ msgstr "Cacah Halaman"
|
||||
msgid "The number of pages in the document."
|
||||
msgstr "Cacah halaman dalam dokumen."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1153 gtk/gtkprintunixdialog.c:390
|
||||
#: gtk/gtkprintoperation.c:1153 gtk/gtkprintunixdialog.c:389
|
||||
msgid "Current Page"
|
||||
msgstr "Halaman Kini"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1154 gtk/gtkprintunixdialog.c:391
|
||||
#: gtk/gtkprintoperation.c:1154 gtk/gtkprintunixdialog.c:390
|
||||
msgid "The current page in the document"
|
||||
msgstr "Halaman kini dalam dokumen"
|
||||
|
||||
@@ -5054,7 +5059,7 @@ msgstr "Label tab gubahan"
|
||||
msgid "Label for the tab containing custom widgets."
|
||||
msgstr "Label bagi tab yang memuat widget gubahan."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1330 gtk/gtkprintunixdialog.c:425
|
||||
#: gtk/gtkprintoperation.c:1330 gtk/gtkprintunixdialog.c:424
|
||||
msgid "Support Selection"
|
||||
msgstr "Mendukung Pilihan"
|
||||
|
||||
@@ -5062,7 +5067,7 @@ msgstr "Mendukung Pilihan"
|
||||
msgid "TRUE if the print operation will support print of selection."
|
||||
msgstr "TRUE bila operasi pencetakan akan mendukung pencetakan dari pilihan."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1345 gtk/gtkprintunixdialog.c:433
|
||||
#: gtk/gtkprintoperation.c:1345 gtk/gtkprintunixdialog.c:432
|
||||
msgid "Has Selection"
|
||||
msgstr "Memiliki Pilihan"
|
||||
|
||||
@@ -5070,11 +5075,11 @@ msgstr "Memiliki Pilihan"
|
||||
msgid "TRUE if a selection exists."
|
||||
msgstr "TRUE bila ada pilihan."
|
||||
|
||||
#: gtk/gtkprintoperation.c:1359 gtk/gtkprintunixdialog.c:441
|
||||
#: gtk/gtkprintoperation.c:1359 gtk/gtkprintunixdialog.c:440
|
||||
msgid "Embed Page Setup"
|
||||
msgstr "Tanamkan Penyiapan Halaman"
|
||||
|
||||
#: gtk/gtkprintoperation.c:1360 gtk/gtkprintunixdialog.c:442
|
||||
#: gtk/gtkprintoperation.c:1360 gtk/gtkprintunixdialog.c:441
|
||||
msgid "TRUE if page setup combos are embedded in GtkPrintUnixDialog"
|
||||
msgstr "TRUE bila kombo penyiapan halaman ditanamkan pada GtkPrintUnixDialog"
|
||||
|
||||
@@ -5086,31 +5091,31 @@ msgstr "Cacah Halaman Akan Dicetak"
|
||||
msgid "The number of pages that will be printed."
|
||||
msgstr "Cacah halaman yang akan dicetak."
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:383
|
||||
#: gtk/gtkprintunixdialog.c:382
|
||||
msgid "The GtkPageSetup to use"
|
||||
msgstr "GtkPageSetup yang akan dipakai"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:408
|
||||
#: gtk/gtkprintunixdialog.c:407
|
||||
msgid "Selected Printer"
|
||||
msgstr "Pencetak Terpilih"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:409
|
||||
#: gtk/gtkprintunixdialog.c:408
|
||||
msgid "The GtkPrinter which is selected"
|
||||
msgstr "GtkPrinter yang dipilih"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:416
|
||||
#: gtk/gtkprintunixdialog.c:415
|
||||
msgid "Manual Capabilities"
|
||||
msgstr "Kapabilitas Manual"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:417
|
||||
#: gtk/gtkprintunixdialog.c:416
|
||||
msgid "Capabilities the application can handle"
|
||||
msgstr "Kapabilitas yang dapat ditangani aplikasi"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:426
|
||||
#: gtk/gtkprintunixdialog.c:425
|
||||
msgid "Whether the dialog supports selection"
|
||||
msgstr "Apakah dialog mendukung pilihan"
|
||||
|
||||
#: gtk/gtkprintunixdialog.c:434
|
||||
#: gtk/gtkprintunixdialog.c:433
|
||||
msgid "Whether the application has a selection"
|
||||
msgstr "Apakah aplikasi memiliki pilihan"
|
||||
|
||||
@@ -5167,14 +5172,6 @@ msgstr "Objek"
|
||||
msgid "The root object"
|
||||
msgstr "Objek root"
|
||||
|
||||
#: gtk/gtkradiobutton.c:203
|
||||
msgid "Group"
|
||||
msgstr "Grup"
|
||||
|
||||
#: gtk/gtkradiobutton.c:204
|
||||
msgid "The radio button whose group this widget belongs to."
|
||||
msgstr "Tombol radio tempat Grup widget ini berada."
|
||||
|
||||
#: gtk/gtkrange.c:366
|
||||
msgid "The GtkAdjustment that contains the current value of this range object"
|
||||
msgstr "GtkAdjustment yang berisi nilai sekarang pada obyek jangkauan"
|
||||
@@ -6956,9 +6953,9 @@ msgstr "Jenis Jendela"
|
||||
msgid "The GtkTextWindowType"
|
||||
msgstr "GtkTextWindowType"
|
||||
|
||||
#: gtk/gtktogglebutton.c:209
|
||||
msgid "If the toggle button should be pressed in"
|
||||
msgstr "Apakah tombol jungkit harus ditekan ke dalam"
|
||||
#: gtk/gtktogglebutton.c:268
|
||||
msgid "The toggle button whose group this widget belongs to."
|
||||
msgstr "Tombol jungkitkan tempat grup widget ini berada."
|
||||
|
||||
#: gtk/gtktreeexpander.c:460
|
||||
msgid "The child widget with the actual contents"
|
||||
@@ -7763,3 +7760,9 @@ msgstr "Judul Profil Warna"
|
||||
#: modules/printbackends/gtkprintercups.c:94
|
||||
msgid "The title of the color profile to use"
|
||||
msgstr "Judul profil warna yang akan dipakai"
|
||||
|
||||
#~ msgid "Draw Indicator"
|
||||
#~ msgstr "Indikator gambar"
|
||||
|
||||
#~ msgid "If the indicator part of the button is displayed"
|
||||
#~ msgstr "Menentukan apakah bagian indikator tombol ditampilkan"
|
||||
|
||||
@@ -36,6 +36,7 @@ int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
GtkWidget *window, *fixed, *button;
|
||||
GtkWidget *fixed2, *frame;
|
||||
gboolean done = FALSE;
|
||||
GskTransform *transform;
|
||||
|
||||
@@ -52,8 +53,7 @@ main (int argc, char *argv[])
|
||||
gtk_widget_set_vexpand (fixed, TRUE);
|
||||
|
||||
button = gtk_button_new ();
|
||||
gtk_button_set_label (GTK_BUTTON (button), "Hello world");
|
||||
//gtk_widget_set_size_request (button, 50, 50);
|
||||
gtk_button_set_label (GTK_BUTTON (button), "Button");
|
||||
g_signal_connect (button, "clicked", G_CALLBACK (hello), NULL);
|
||||
|
||||
gtk_fixed_put (GTK_FIXED (fixed), button, 0, 0);
|
||||
@@ -62,11 +62,27 @@ main (int argc, char *argv[])
|
||||
transform = gsk_transform_translate_3d (transform, &GRAPHENE_POINT3D_INIT (0, 0, 50));
|
||||
transform = gsk_transform_perspective (transform, 170);
|
||||
transform = gsk_transform_translate_3d (transform, &GRAPHENE_POINT3D_INIT (50, 0, 50));
|
||||
transform = gsk_transform_rotate (transform, 30);
|
||||
transform = gsk_transform_rotate_3d (transform, 30, graphene_vec3_y_axis ());
|
||||
transform = gsk_transform_rotate (transform, 20);
|
||||
transform = gsk_transform_rotate_3d (transform, 20, graphene_vec3_y_axis ());
|
||||
gtk_fixed_set_child_transform (GTK_FIXED (fixed), button, transform);
|
||||
|
||||
gtk_window_set_child (GTK_WINDOW (window), fixed);
|
||||
frame = gtk_frame_new ("Frame");
|
||||
gtk_widget_add_css_class (frame, "view");
|
||||
gtk_frame_set_child (GTK_FRAME (frame), fixed);
|
||||
|
||||
fixed2 = gtk_fixed_new ();
|
||||
|
||||
gtk_fixed_put (GTK_FIXED (fixed2), frame, 0, 0);
|
||||
|
||||
transform = NULL;
|
||||
transform = gsk_transform_translate_3d (transform, &GRAPHENE_POINT3D_INIT (0, 0, 50));
|
||||
transform = gsk_transform_perspective (transform, 170);
|
||||
transform = gsk_transform_translate_3d (transform, &GRAPHENE_POINT3D_INIT (50, 0, 50));
|
||||
transform = gsk_transform_rotate (transform, 20);
|
||||
transform = gsk_transform_rotate_3d (transform, 20, graphene_vec3_y_axis ());
|
||||
gtk_fixed_set_child_transform (GTK_FIXED (fixed2), frame, transform);
|
||||
|
||||
gtk_window_set_child (GTK_WINDOW (window), fixed2);
|
||||
|
||||
gtk_widget_show (window);
|
||||
|
||||
|
||||
22
testsuite/gsk/compare/clip-coordinates-2d.node
Normal file
22
testsuite/gsk/compare/clip-coordinates-2d.node
Normal file
@@ -0,0 +1,22 @@
|
||||
/* This test checks that we get sharp clip boundaries
|
||||
* for 2d transforms. Compare with clip-coordinates-3d.node,
|
||||
* which uses a general transform and gets offscreen
|
||||
* rendering with GL_LINEAR.
|
||||
*/
|
||||
transform {
|
||||
transform: scale(2);
|
||||
child: container {
|
||||
color {
|
||||
bounds: 0 0 50 50;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
clip {
|
||||
clip: 10 10 30 30;
|
||||
child: color {
|
||||
bounds: 0 0 50 50;
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
testsuite/gsk/compare/clip-coordinates-2d.png
Normal file
BIN
testsuite/gsk/compare/clip-coordinates-2d.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 269 B |
@@ -22,6 +22,7 @@ node_parser = executable(
|
||||
compare_render_tests = [
|
||||
'blend-normal',
|
||||
'blend-difference',
|
||||
'clip-coordinates-2d',
|
||||
'clip-coordinates-3d',
|
||||
'clipped_rounded_clip',
|
||||
'color-blur0',
|
||||
|
||||
@@ -406,6 +406,122 @@ test_print_parse (void)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gsk_matrix_transform_rect (const graphene_matrix_t *m,
|
||||
const graphene_rect_t *r,
|
||||
graphene_quad_t *res)
|
||||
{
|
||||
graphene_point_t ret[4];
|
||||
graphene_rect_t rr;
|
||||
|
||||
graphene_rect_normalize_r (r, &rr);
|
||||
|
||||
#define TRANSFORM_POINT(matrix, rect, corner, out_p) do {\
|
||||
graphene_vec4_t __s; \
|
||||
graphene_point_t __p; \
|
||||
float w; \
|
||||
graphene_rect_get_ ## corner (rect, &__p); \
|
||||
graphene_vec4_init (&__s, __p.x, __p.y, 0.f, 1.f); \
|
||||
graphene_matrix_transform_vec4 (matrix, &__s, &__s); \
|
||||
w = graphene_vec4_get_w (&__s); \
|
||||
out_p.x = graphene_vec4_get_x (&__s) / w; \
|
||||
out_p.y = graphene_vec4_get_y (&__s) / w; } while (0)
|
||||
|
||||
TRANSFORM_POINT (m, &rr, top_left, ret[0]);
|
||||
TRANSFORM_POINT (m, &rr, top_right, ret[1]);
|
||||
TRANSFORM_POINT (m, &rr, bottom_right, ret[2]);
|
||||
TRANSFORM_POINT (m, &rr, bottom_left, ret[3]);
|
||||
|
||||
#undef TRANSFORM_POINT
|
||||
|
||||
graphene_quad_init (res, &ret[0], &ret[1], &ret[2], &ret[3]);
|
||||
}
|
||||
|
||||
/* This is an auxiliary function used in the GL renderer to
|
||||
* determine if transforming an axis-aligned rectangle produces
|
||||
* axis-aligned output, to decide whether to use linear
|
||||
* interpolation or not.
|
||||
*
|
||||
* Keep this in sync with gsk/gl/gskglrenderer.c
|
||||
*/
|
||||
static gboolean
|
||||
result_is_axis_aligned (GskTransform *transform,
|
||||
const graphene_rect_t *bounds)
|
||||
{
|
||||
graphene_matrix_t m;
|
||||
graphene_quad_t q;
|
||||
graphene_rect_t b;
|
||||
graphene_point_t b1, b2;
|
||||
const graphene_point_t *p;
|
||||
int i;
|
||||
|
||||
gsk_transform_to_matrix (transform, &m);
|
||||
gsk_matrix_transform_rect (&m, bounds, &q);
|
||||
graphene_quad_bounds (&q, &b);
|
||||
graphene_rect_get_top_left (&b, &b1);
|
||||
graphene_rect_get_bottom_right (&b, &b2);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
p = graphene_quad_get_point (&q, i);
|
||||
if (fabs (p->x - b1.x) > FLT_EPSILON && fabs (p->x - b2.x) > FLT_EPSILON)
|
||||
return FALSE;
|
||||
if (fabs (p->y - b1.y) > FLT_EPSILON && fabs (p->y - b2.y) > FLT_EPSILON)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
test_axis_aligned (void)
|
||||
{
|
||||
graphene_rect_t r = GRAPHENE_RECT_INIT (0, 0, 10, 10);
|
||||
GskTransform *transform = NULL;
|
||||
|
||||
transform = gsk_transform_translate (NULL, &GRAPHENE_POINT_INIT (10, 10));
|
||||
g_assert_true (result_is_axis_aligned (transform, &r));
|
||||
gsk_transform_unref (transform);
|
||||
|
||||
transform = gsk_transform_translate_3d (NULL, &GRAPHENE_POINT3D_INIT(0, 10, 10));
|
||||
g_assert_true (result_is_axis_aligned (transform, &r));
|
||||
gsk_transform_unref (transform);
|
||||
|
||||
transform = gsk_transform_rotate (NULL, 90);
|
||||
g_assert_true (result_is_axis_aligned (transform, &r));
|
||||
gsk_transform_unref (transform);
|
||||
|
||||
transform = gsk_transform_scale (NULL, 2, 3);
|
||||
g_assert_true (result_is_axis_aligned (transform, &r));
|
||||
gsk_transform_unref (transform);
|
||||
|
||||
/* rotating around the y axis does not affect axis alignedness,
|
||||
* as long as we don't involve perspective
|
||||
*/
|
||||
transform = gsk_transform_rotate_3d (NULL, 45, graphene_vec3_y_axis ());
|
||||
g_assert_true (result_is_axis_aligned (transform, &r));
|
||||
gsk_transform_unref (transform);
|
||||
|
||||
/* rotating by 45 around the z axis, not axis aligned */
|
||||
transform = gsk_transform_rotate (NULL, 45);
|
||||
g_assert_false (result_is_axis_aligned (transform, &r));
|
||||
gsk_transform_unref (transform);
|
||||
|
||||
/* perspective is harmless as long as we stay in the z=0 plane */
|
||||
transform = gsk_transform_perspective (NULL, 100);
|
||||
g_assert_true (result_is_axis_aligned (transform, &r));
|
||||
gsk_transform_unref (transform);
|
||||
|
||||
/* a complex transform that makes things look '3d' */
|
||||
transform = gsk_transform_translate_3d (NULL, &GRAPHENE_POINT3D_INIT (0, 0, 50));
|
||||
transform = gsk_transform_perspective (transform, 170);
|
||||
transform = gsk_transform_translate_3d (transform, &GRAPHENE_POINT3D_INIT (50, 0, 50));
|
||||
transform = gsk_transform_rotate (transform, 20);
|
||||
transform = gsk_transform_rotate_3d (transform, 20, graphene_vec3_y_axis ());
|
||||
g_assert_false (result_is_axis_aligned (transform, &r));
|
||||
gsk_transform_unref (transform);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc,
|
||||
char *argv[])
|
||||
@@ -418,6 +534,7 @@ main (int argc,
|
||||
g_test_add_func ("/transform/identity-equal", test_identity_equal);
|
||||
g_test_add_func ("/transform/invert", test_invert);
|
||||
g_test_add_func ("/transform/print-parse", test_print_parse);
|
||||
g_test_add_func ("/transform/check-axis-aligneness", test_axis_aligned);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user