forked from AuroraMiddleware/gtk
Add test cases for alignment.
2006-03-14 Matthias Clasen <mclasen@redhat.com> * tests/testcellrenderertext.c: Add test cases for alignment. * gtk/gtkcellrenderertext.c: Add an alignment property, and fix some cases where ellipsize_set was being used to mean "we're ellipsizing" even when ellipsize was set to NONE. (#318761, Ross Burton)
This commit is contained in:
parent
98569f6e65
commit
f50363d3fa
@ -1,5 +1,12 @@
|
|||||||
2006-03-14 Matthias Clasen <mclasen@redhat.com>
|
2006-03-14 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* tests/testcellrenderertext.c: Add test cases for alignment.
|
||||||
|
|
||||||
|
* gtk/gtkcellrenderertext.c: Add an alignment property,
|
||||||
|
and fix some cases where ellipsize_set was being used to
|
||||||
|
mean "we're ellipsizing" even when ellipsize was set to NONE.
|
||||||
|
(#318761, Ross Burton)
|
||||||
|
|
||||||
* gtk/gtkimcontextsimple.c: Make return and release work again
|
* gtk/gtkimcontextsimple.c: Make return and release work again
|
||||||
to commit a hex sequence. Additionally, make escape reset the
|
to commit a hex sequence. Additionally, make escape reset the
|
||||||
im context when in a hex sequence. (#334423, Behdad Esfahbod)
|
im context when in a hex sequence. (#334423, Behdad Esfahbod)
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
2006-03-14 Matthias Clasen <mclasen@redhat.com>
|
2006-03-14 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* tests/testcellrenderertext.c: Add test cases for alignment.
|
||||||
|
|
||||||
|
* gtk/gtkcellrenderertext.c: Add an alignment property,
|
||||||
|
and fix some cases where ellipsize_set was being used to
|
||||||
|
mean "we're ellipsizing" even when ellipsize was set to NONE.
|
||||||
|
(#318761, Ross Burton)
|
||||||
|
|
||||||
* gtk/gtkimcontextsimple.c: Make return and release work again
|
* gtk/gtkimcontextsimple.c: Make return and release work again
|
||||||
to commit a hex sequence. Additionally, make escape reset the
|
to commit a hex sequence. Additionally, make escape reset the
|
||||||
im context when in a hex sequence. (#334423, Behdad Esfahbod)
|
im context when in a hex sequence. (#334423, Behdad Esfahbod)
|
||||||
|
@ -77,6 +77,7 @@ enum {
|
|||||||
PROP_SINGLE_PARAGRAPH_MODE,
|
PROP_SINGLE_PARAGRAPH_MODE,
|
||||||
PROP_WIDTH_CHARS,
|
PROP_WIDTH_CHARS,
|
||||||
PROP_WRAP_WIDTH,
|
PROP_WRAP_WIDTH,
|
||||||
|
PROP_ALIGN,
|
||||||
|
|
||||||
/* Style args */
|
/* Style args */
|
||||||
PROP_BACKGROUND,
|
PROP_BACKGROUND,
|
||||||
@ -138,6 +139,7 @@ struct _GtkCellRendererTextPrivate
|
|||||||
PangoLanguage *language;
|
PangoLanguage *language;
|
||||||
PangoEllipsizeMode ellipsize;
|
PangoEllipsizeMode ellipsize;
|
||||||
PangoWrapMode wrap_mode;
|
PangoWrapMode wrap_mode;
|
||||||
|
PangoAlignment align;
|
||||||
|
|
||||||
gulong populate_popup_id;
|
gulong populate_popup_id;
|
||||||
gulong entry_menu_popdown_timeout;
|
gulong entry_menu_popdown_timeout;
|
||||||
@ -194,6 +196,7 @@ gtk_cell_renderer_text_init (GtkCellRendererText *celltext)
|
|||||||
|
|
||||||
priv->width_chars = -1;
|
priv->width_chars = -1;
|
||||||
priv->wrap_width = -1;
|
priv->wrap_width = -1;
|
||||||
|
priv->align = PANGO_ALIGN_LEFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -498,6 +501,21 @@ gtk_cell_renderer_text_class_init (GtkCellRendererTextClass *class)
|
|||||||
-1,
|
-1,
|
||||||
GTK_PARAM_READWRITE));
|
GTK_PARAM_READWRITE));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GtkCellRendererText:alignment:
|
||||||
|
*
|
||||||
|
* Specifies how to align the lines of text.
|
||||||
|
*
|
||||||
|
* Since: 2.10
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (object_class,
|
||||||
|
PROP_ALIGN,
|
||||||
|
g_param_spec_enum ("alignment",
|
||||||
|
P_("Alignment"),
|
||||||
|
P_("How to align the lines"),
|
||||||
|
PANGO_TYPE_ALIGNMENT,
|
||||||
|
PANGO_ALIGN_LEFT,
|
||||||
|
GTK_PARAM_READWRITE));
|
||||||
|
|
||||||
/* Style props are set or not */
|
/* Style props are set or not */
|
||||||
|
|
||||||
@ -749,6 +767,10 @@ gtk_cell_renderer_text_get_property (GObject *object,
|
|||||||
g_value_set_int (value, priv->wrap_width);
|
g_value_set_int (value, priv->wrap_width);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_ALIGN:
|
||||||
|
g_value_set_enum (value, priv->align);
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_BACKGROUND_SET:
|
case PROP_BACKGROUND_SET:
|
||||||
g_value_set_boolean (value, celltext->background_set);
|
g_value_set_boolean (value, celltext->background_set);
|
||||||
break;
|
break;
|
||||||
@ -1249,6 +1271,10 @@ gtk_cell_renderer_text_set_property (GObject *object,
|
|||||||
priv->width_chars = g_value_get_int (value);
|
priv->width_chars = g_value_get_int (value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_ALIGN:
|
||||||
|
priv->align = g_value_get_enum (value);
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_BACKGROUND_SET:
|
case PROP_BACKGROUND_SET:
|
||||||
celltext->background_set = g_value_get_boolean (value);
|
celltext->background_set = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
@ -1446,6 +1472,8 @@ get_layout (GtkCellRendererText *celltext,
|
|||||||
pango_layout_set_wrap (layout, PANGO_WRAP_CHAR);
|
pango_layout_set_wrap (layout, PANGO_WRAP_CHAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pango_layout_set_alignment (layout, priv->align);
|
||||||
|
|
||||||
pango_layout_set_attributes (layout, attr_list);
|
pango_layout_set_attributes (layout, attr_list);
|
||||||
|
|
||||||
pango_attr_list_unref (attr_list);
|
pango_attr_list_unref (attr_list);
|
||||||
@ -1550,7 +1578,7 @@ get_size (GtkCellRenderer *cell,
|
|||||||
else
|
else
|
||||||
*x_offset = cell->xalign * (cell_area->width - (rect.x + rect.width + (2 * cell->xpad)));
|
*x_offset = cell->xalign * (cell_area->width - (rect.x + rect.width + (2 * cell->xpad)));
|
||||||
|
|
||||||
if (priv->ellipsize_set || priv->wrap_width != -1)
|
if ((priv->ellipsize_set && priv->ellipsize != PANGO_ELLIPSIZE_NONE) || priv->wrap_width != -1)
|
||||||
*x_offset = MAX(*x_offset, 0);
|
*x_offset = MAX(*x_offset, 0);
|
||||||
}
|
}
|
||||||
if (y_offset)
|
if (y_offset)
|
||||||
@ -1644,7 +1672,7 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell,
|
|||||||
cairo_destroy (cr);
|
cairo_destroy (cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->ellipsize_set)
|
if (priv->ellipsize_set && priv->ellipsize != PANGO_ELLIPSIZE_NONE)
|
||||||
pango_layout_set_width (layout,
|
pango_layout_set_width (layout,
|
||||||
(cell_area->width - x_offset - 2 * cell->xpad) * PANGO_SCALE);
|
(cell_area->width - x_offset - 2 * cell->xpad) * PANGO_SCALE);
|
||||||
else if (priv->wrap_width == -1)
|
else if (priv->wrap_width == -1)
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#define COL_BACKGROUND 14
|
#define COL_BACKGROUND 15
|
||||||
#define COL_LINE_NUM 15
|
#define COL_LINE_NUM 16
|
||||||
#define NUM_COLS 16 /* change this when adding columns */
|
#define NUM_COLS 17 /* change this when adding columns */
|
||||||
|
|
||||||
struct cell_params {
|
struct cell_params {
|
||||||
char *description; /* 0 */
|
char *description; /* 0 */
|
||||||
@ -42,8 +42,9 @@ struct cell_params {
|
|||||||
PangoWrapMode wrap_mode; /* 11 */
|
PangoWrapMode wrap_mode; /* 11 */
|
||||||
gboolean single_paragraph_mode; /* 12 */
|
gboolean single_paragraph_mode; /* 12 */
|
||||||
PangoEllipsizeMode ellipsize; /* 13 */
|
PangoEllipsizeMode ellipsize; /* 13 */
|
||||||
/* COL_BACKGROUND */ /* 14 */
|
PangoAlignment alignment; /* 14 */
|
||||||
/* COL_LINE_NUM */ /* 15 */
|
/* COL_BACKGROUND */ /* 15 */
|
||||||
|
/* COL_LINE_NUM */ /* 16 */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define WO PANGO_WRAP_WORD
|
#define WO PANGO_WRAP_WORD
|
||||||
@ -55,6 +56,9 @@ struct cell_params {
|
|||||||
#define MI PANGO_ELLIPSIZE_MIDDLE
|
#define MI PANGO_ELLIPSIZE_MIDDLE
|
||||||
#define EN PANGO_ELLIPSIZE_END
|
#define EN PANGO_ELLIPSIZE_END
|
||||||
|
|
||||||
|
#define AL PANGO_ALIGN_LEFT
|
||||||
|
#define AC PANGO_ALIGN_CENTER
|
||||||
|
#define AR PANGO_ALIGN_RIGHT
|
||||||
|
|
||||||
#define TESTL "LEFT JUSTIFIED This is really truly verily some very long text\n\330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205"
|
#define TESTL "LEFT JUSTIFIED This is really truly verily some very long text\n\330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205 \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205"
|
||||||
|
|
||||||
@ -73,29 +77,32 @@ static const struct cell_params cell_params[] = {
|
|||||||
|
|
||||||
/* Test alignment */
|
/* Test alignment */
|
||||||
|
|
||||||
{ "0 0 0 0 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 1 */
|
{ "0 0 0 0 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 1 */
|
||||||
{ "0 0 .5 0 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 2 */
|
{ "0 0 .5 0 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 2 */
|
||||||
{ "0 0 1 0 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 3 */
|
{ "0 0 1 0 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 3 */
|
||||||
{ "0 0 0 .5 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 4 */
|
{ "0 0 0 .5 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 4 */
|
||||||
{ "0 0 .5 .5 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 5 */
|
{ "0 0 .5 .5 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 5 */
|
||||||
{ "0 0 1 .5 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 6 */
|
{ "0 0 1 .5 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 6 */
|
||||||
{ "0 0 0 1 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 7 */
|
{ "0 0 0 1 T -1 -1 -1 -1 CH F NO", TESTL, 0, 0, 0.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 7 */
|
||||||
{ "0 0 .5 1 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 8 */
|
{ "0 0 .5 1 T -1 -1 -1 -1 CH F NO", TESTC, 0, 0, 0.5, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 8 */
|
||||||
{ "0 0 1 1 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 9 */
|
{ "0 0 1 1 T -1 -1 -1 -1 CH F NO", TESTR, 0, 0, 1.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 9 */
|
||||||
|
|
||||||
/* Test padding */
|
/* Test padding */
|
||||||
|
|
||||||
{ "10 10 0 0 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 10 */
|
{ "10 10 0 0 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 10 */
|
||||||
{ "10 10 .5 0 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 11 */
|
{ "10 10 .5 0 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 11 */
|
||||||
{ "10 10 1 0 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 12 */
|
{ "10 10 1 0 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 0.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 12 */
|
||||||
{ "10 10 0 .5 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 13 */
|
{ "10 10 0 .5 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 13 */
|
||||||
{ "10 10 .5 .5 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 14 */
|
{ "10 10 .5 .5 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 14 */
|
||||||
{ "10 10 1 .5 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 15 */
|
{ "10 10 1 .5 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 0.5, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 15 */
|
||||||
{ "10 10 0 1 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 16 */
|
{ "10 10 0 1 T -1 -1 -1 -1 CH F NO", TESTL, 10, 10, 0.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 16 */
|
||||||
{ "10 10 .5 1 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 17 */
|
{ "10 10 .5 1 T -1 -1 -1 -1 CH F NO", TESTC, 10, 10, 0.5, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 17 */
|
||||||
{ "10 10 1 1 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO }, /* 18 */
|
{ "10 10 1 1 T -1 -1 -1 -1 CH F NO", TESTR, 10, 10, 1.0, 1.0, TRUE, -1, -1, -1, -1, CH, FALSE, NO , AL }, /* 18 */
|
||||||
|
|
||||||
|
|
||||||
|
/* Test Pango alignment (not xalign) */
|
||||||
|
{ "0 0 0 0 T -1 -1 -1 -1 CH F NO AL", TESTL, 0, 0, 0.0, 0.0, TRUE, -1, -1, -1, 20, WO, FALSE, NO , AL }, /* 19 */
|
||||||
|
{ "0 0 0 0 T -1 -1 -1 -1 CH F NO AC", TESTC, 0, 0, 0.0, 0.0, TRUE, -1, -1, -1, 20, WO, FALSE, NO , AC }, /* 20 */
|
||||||
|
{ "0 0 0 0 T -1 -1 -1 -1 CH F NO AR", TESTR, 0, 0, 0.0, 0.0, TRUE, -1, -1, -1, 20, WO, FALSE, NO , AR }, /* 21 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static GtkListStore *
|
static GtkListStore *
|
||||||
@ -119,8 +126,9 @@ create_list_store (void)
|
|||||||
PANGO_TYPE_WRAP_MODE, /* 11 */
|
PANGO_TYPE_WRAP_MODE, /* 11 */
|
||||||
G_TYPE_BOOLEAN, /* 12 */
|
G_TYPE_BOOLEAN, /* 12 */
|
||||||
PANGO_TYPE_ELLIPSIZE_MODE, /* 13 */
|
PANGO_TYPE_ELLIPSIZE_MODE, /* 13 */
|
||||||
G_TYPE_STRING, /* 14 */
|
PANGO_TYPE_ALIGNMENT, /* 14 */
|
||||||
G_TYPE_STRING); /* 15 */
|
G_TYPE_STRING, /* 15 */
|
||||||
|
G_TYPE_STRING); /* 16 */
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (cell_params); i++)
|
for (i = 0; i < G_N_ELEMENTS (cell_params); i++)
|
||||||
{
|
{
|
||||||
@ -148,8 +156,9 @@ create_list_store (void)
|
|||||||
11, p->wrap_mode,
|
11, p->wrap_mode,
|
||||||
12, p->single_paragraph_mode,
|
12, p->single_paragraph_mode,
|
||||||
13, p->ellipsize,
|
13, p->ellipsize,
|
||||||
14, (i % 2 == 0) ? "gray50" : "gray80",
|
14, p->alignment,
|
||||||
15, buf,
|
15, (i % 2 == 0) ? "gray50" : "gray80",
|
||||||
|
16, buf,
|
||||||
-1);
|
-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,7 +224,8 @@ create_tree (gboolean rtl)
|
|||||||
"wrap_mode", 11,
|
"wrap_mode", 11,
|
||||||
"single_paragraph_mode", 12,
|
"single_paragraph_mode", 12,
|
||||||
"ellipsize", 13,
|
"ellipsize", 13,
|
||||||
"cell_background", 14,
|
"alignment", 14,
|
||||||
|
"cell_background", 15,
|
||||||
NULL);
|
NULL);
|
||||||
gtk_tree_view_column_set_resizable (column, TRUE);
|
gtk_tree_view_column_set_resizable (column, TRUE);
|
||||||
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
|
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
|
||||||
|
Loading…
Reference in New Issue
Block a user