Make GTK_JUSTIFY_FILL work, using pango_layout_set_justify() that works

2007-05-03  Behdad Esfahbod  <behdad@gnome.org>

        * gtk/gtklabel.c (gtk_label_ensure_layout):
        * gtk/gtktextlayout.c (set_para_values): Make GTK_JUSTIFY_FILL work,
        using pango_layout_set_justify() that works now. (#435675)


svn path=/trunk/; revision=17790
This commit is contained in:
Behdad Esfahbod
2007-05-04 00:24:46 +00:00
committed by Behdad Esfahbod
parent 7250d57ad6
commit d77c56a140
3 changed files with 19 additions and 12 deletions

View File

@ -1,3 +1,9 @@
2007-05-03 Behdad Esfahbod <behdad@gnome.org>
* gtk/gtklabel.c (gtk_label_ensure_layout):
* gtk/gtktextlayout.c (set_para_values): Make GTK_JUSTIFY_FILL work,
using pango_layout_set_justify() that works now. (#435675)
2007-05-03 Emmanuele Bassi <ebassi@gnome.org> 2007-05-03 Emmanuele Bassi <ebassi@gnome.org>
* gtk/gtksearchenginesimple.c (search_engine_simple_finalize): Remove * gtk/gtksearchenginesimple.c (search_engine_simple_finalize): Remove

View File

@ -2024,7 +2024,6 @@ gtk_label_ensure_layout (GtkLabel *label)
align = PANGO_ALIGN_CENTER; align = PANGO_ALIGN_CENTER;
break; break;
case GTK_JUSTIFY_FILL: case GTK_JUSTIFY_FILL:
/* FIXME: This just doesn't work to do this */
align = rtl ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT; align = rtl ? PANGO_ALIGN_RIGHT : PANGO_ALIGN_LEFT;
pango_layout_set_justify (label->layout, TRUE); pango_layout_set_justify (label->layout, TRUE);
break; break;

View File

@ -1201,7 +1201,7 @@ set_para_values (GtkTextLayout *layout,
GtkTextLineDisplay *display) GtkTextLineDisplay *display)
{ {
PangoAlignment pango_align = PANGO_ALIGN_LEFT; PangoAlignment pango_align = PANGO_ALIGN_LEFT;
int layout_width; PangoWrapMode pango_wrap = PANGO_WRAP_WORD;
switch (base_dir) switch (base_dir)
{ {
@ -1241,7 +1241,8 @@ set_para_values (GtkTextLayout *layout,
pango_align = PANGO_ALIGN_CENTER; pango_align = PANGO_ALIGN_CENTER;
break; break;
case GTK_JUSTIFY_FILL: case GTK_JUSTIFY_FILL:
g_warning ("FIXME we don't support GTK_JUSTIFY_FILL yet"); pango_align = (base_dir == PANGO_DIRECTION_LTR) ? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT;
pango_layout_set_justify (display->layout, TRUE);
break; break;
default: default:
g_assert_not_reached (); g_assert_not_reached ();
@ -1269,26 +1270,27 @@ set_para_values (GtkTextLayout *layout,
switch (style->wrap_mode) switch (style->wrap_mode)
{ {
case GTK_WRAP_CHAR: case GTK_WRAP_CHAR:
layout_width = layout->screen_width - display->left_margin - display->right_margin; pango_wrap = PANGO_WRAP_CHAR;
pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
pango_layout_set_wrap (display->layout, PANGO_WRAP_CHAR);
break; break;
case GTK_WRAP_WORD: case GTK_WRAP_WORD:
layout_width = layout->screen_width - display->left_margin - display->right_margin; pango_wrap = PANGO_WRAP_WORD;
pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
pango_layout_set_wrap (display->layout, PANGO_WRAP_WORD);
break; break;
case GTK_WRAP_WORD_CHAR: case GTK_WRAP_WORD_CHAR:
layout_width = layout->screen_width - display->left_margin - display->right_margin; pango_wrap = PANGO_WRAP_WORD_CHAR;
pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
pango_layout_set_wrap (display->layout, PANGO_WRAP_WORD_CHAR);
break; break;
case GTK_WRAP_NONE: case GTK_WRAP_NONE:
break; break;
} }
if (style->wrap_mode != GTK_WRAP_NONE)
{
int layout_width = (layout->screen_width - display->left_margin - display->right_margin);
pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
pango_layout_set_wrap (display->layout, pango_wrap);
}
display->total_width = MAX (layout->screen_width, layout->width) - display->left_margin - display->right_margin; display->total_width = MAX (layout->screen_width, layout->width) - display->left_margin - display->right_margin;
if (style->pg_bg_color) if (style->pg_bg_color)