Add a size_only flag, so when we only need the size, we don't create

Tue May  9 21:29:06 2000  Owen Taylor  <otaylor@redhat.com>

	* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c (gtk_text_layout_get_line_display):
	Add a size_only flag, so when we only need the size, we don't create
	useless appearance attributes.

	* gtk/gtktextview.c (gtk_text_view_ensure_layout): Remove
	duplicate setting of font description.

	* gtk/gtkscale.c: Use PANGO_SCALE instead of 1000
This commit is contained in:
Owen Taylor
2000-05-10 03:58:57 +00:00
committed by Owen Taylor
parent 67b20d27d8
commit 7a7faba61a
12 changed files with 108 additions and 27 deletions

View File

@@ -1,3 +1,14 @@
Tue May 9 21:29:06 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c (gtk_text_layout_get_line_display):
Add a size_only flag, so when we only need the size, we don't create
useless appearance attributes.
* gtk/gtktextview.c (gtk_text_view_ensure_layout): Remove
duplicate setting of font description.
* gtk/gtkscale.c: Use PANGO_SCALE instead of 1000
Fri May 5 11:18:47 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c gdk/x11/gdkwindow-x11.c (gdk_window_clear): Move

View File

@@ -1,3 +1,14 @@
Tue May 9 21:29:06 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c (gtk_text_layout_get_line_display):
Add a size_only flag, so when we only need the size, we don't create
useless appearance attributes.
* gtk/gtktextview.c (gtk_text_view_ensure_layout): Remove
duplicate setting of font description.
* gtk/gtkscale.c: Use PANGO_SCALE instead of 1000
Fri May 5 11:18:47 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c gdk/x11/gdkwindow-x11.c (gdk_window_clear): Move

View File

@@ -1,3 +1,14 @@
Tue May 9 21:29:06 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c (gtk_text_layout_get_line_display):
Add a size_only flag, so when we only need the size, we don't create
useless appearance attributes.
* gtk/gtktextview.c (gtk_text_view_ensure_layout): Remove
duplicate setting of font description.
* gtk/gtkscale.c: Use PANGO_SCALE instead of 1000
Fri May 5 11:18:47 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c gdk/x11/gdkwindow-x11.c (gdk_window_clear): Move

View File

@@ -1,3 +1,14 @@
Tue May 9 21:29:06 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c (gtk_text_layout_get_line_display):
Add a size_only flag, so when we only need the size, we don't create
useless appearance attributes.
* gtk/gtktextview.c (gtk_text_view_ensure_layout): Remove
duplicate setting of font description.
* gtk/gtkscale.c: Use PANGO_SCALE instead of 1000
Fri May 5 11:18:47 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c gdk/x11/gdkwindow-x11.c (gdk_window_clear): Move

View File

@@ -1,3 +1,14 @@
Tue May 9 21:29:06 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c (gtk_text_layout_get_line_display):
Add a size_only flag, so when we only need the size, we don't create
useless appearance attributes.
* gtk/gtktextview.c (gtk_text_view_ensure_layout): Remove
duplicate setting of font description.
* gtk/gtkscale.c: Use PANGO_SCALE instead of 1000
Fri May 5 11:18:47 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c gdk/x11/gdkwindow-x11.c (gdk_window_clear): Move

View File

@@ -1,3 +1,14 @@
Tue May 9 21:29:06 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c (gtk_text_layout_get_line_display):
Add a size_only flag, so when we only need the size, we don't create
useless appearance attributes.
* gtk/gtktextview.c (gtk_text_view_ensure_layout): Remove
duplicate setting of font description.
* gtk/gtkscale.c: Use PANGO_SCALE instead of 1000
Fri May 5 11:18:47 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c gdk/x11/gdkwindow-x11.c (gdk_window_clear): Move

View File

@@ -1,3 +1,14 @@
Tue May 9 21:29:06 2000 Owen Taylor <otaylor@redhat.com>
* gtk/gtktextlayout.[ch] gtk/gtktextdisplay.c (gtk_text_layout_get_line_display):
Add a size_only flag, so when we only need the size, we don't create
useless appearance attributes.
* gtk/gtktextview.c (gtk_text_view_ensure_layout): Remove
duplicate setting of font description.
* gtk/gtkscale.c: Use PANGO_SCALE instead of 1000
Fri May 5 11:18:47 2000 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c gdk/x11/gdkwindow-x11.c (gdk_window_clear): Move

View File

@@ -305,9 +305,9 @@ gtk_scale_get_value_size (GtkScale *scale,
pango_layout_get_extents (layout, NULL, &logical_rect);
if (width)
*width = logical_rect.width / 1000;
*width = logical_rect.width / PANGO_SCALE;
if (height)
*height = logical_rect.width / 1000;
*height = logical_rect.width / PANGO_SCALE;
value = ABS (range->adjustment->upper);
if (value == 0) value = 1;
@@ -330,9 +330,9 @@ gtk_scale_get_value_size (GtkScale *scale,
pango_layout_get_extents (layout, NULL, &logical_rect);
if (width)
*width = MAX (*width, logical_rect.width / 1000);
*width = MAX (*width, logical_rect.width / PANGO_SCALE);
if (height)
*height = MAX (*height, logical_rect.height / 1000);
*height = MAX (*height, logical_rect.height / PANGO_SCALE);
pango_layout_unref (layout);
}

View File

@@ -555,7 +555,7 @@ gtk_text_layout_draw (GtkTextLayout *layout,
GtkTextLine *line = tmp_list->data;
line_display = gtk_text_layout_get_line_display (layout, line);
line_display = gtk_text_layout_get_line_display (layout, line, FALSE);
if (have_selection)
{

View File

@@ -526,7 +526,7 @@ gtk_text_layout_real_wrap (GtkTextLayout *layout,
gtk_text_line_add_data (line, line_data);
}
display = gtk_text_layout_get_line_display (layout, line);
display = gtk_text_layout_get_line_display (layout, line, TRUE);
line_data->width = display->width;
line_data->height = display->height;
gtk_text_layout_free_line_display (layout, line, display);
@@ -751,7 +751,7 @@ set_para_values (GtkTextLayout *layout,
/* FIXME: Handle this; for now, fall-through */
case GTK_WRAPMODE_WORD:
display->total_width = -1;
layout_width = MAX (layout->width, layout->screen_width) - display->x_offset - style->right_margin;
layout_width = layout->screen_width - display->x_offset - style->right_margin;
pango_layout_set_width (display->layout, layout_width * PANGO_SCALE);
break;
case GTK_WRAPMODE_NONE:
@@ -842,7 +842,8 @@ add_text_attrs (GtkTextLayout *layout,
GtkTextStyleValues *style,
gint byte_count,
PangoAttrList *attrs,
gint start)
gint start,
gboolean size_only)
{
PangoAttribute *attr;
@@ -852,12 +853,15 @@ add_text_attrs (GtkTextLayout *layout,
pango_attr_list_insert (attrs, attr);
attr = gtk_text_attr_appearance_new (&style->appearance);
if (!size_only)
{
attr = gtk_text_attr_appearance_new (&style->appearance);
attr->start_index = start;
attr->end_index = start + byte_count;
attr->start_index = start;
attr->end_index = start + byte_count;
pango_attr_list_insert (attrs, attr);
pango_attr_list_insert (attrs, attr);
}
}
static void
@@ -915,7 +919,8 @@ add_cursor (GtkTextLayout *layout,
GtkTextLineDisplay *
gtk_text_layout_get_line_display (GtkTextLayout *layout,
GtkTextLine *line)
GtkTextLine *line,
gboolean size_only)
{
GtkTextLineDisplay *display;
GtkTextLineSegment *seg;
@@ -1016,7 +1021,7 @@ gtk_text_layout_get_line_display (GtkTextLayout *layout,
seg = seg->next;
}
add_text_attrs (layout, style, byte_count, attrs, byte_offset - byte_count);
add_text_attrs (layout, style, byte_count, attrs, byte_offset - byte_count, size_only);
}
else
{
@@ -1169,7 +1174,7 @@ gtk_text_layout_get_iter_at_pixel (GtkTextLayout *layout,
line = gtk_text_btree_get_line (layout->buffer->tree,
gtk_text_btree_line_count (layout->buffer->tree) - 1, NULL);
display = gtk_text_layout_get_line_display (layout, line);
display = gtk_text_layout_get_line_display (layout, line, TRUE);
x -= display->x_offset;
y -= line_top + display->top_margin;
@@ -1231,7 +1236,7 @@ gtk_text_layout_get_cursor_locations (GtkTextLayout *layout,
line = gtk_text_iter_get_line (iter);
line_top = gtk_text_btree_find_line_top (layout->buffer->tree, line, layout);
display = gtk_text_layout_get_line_display (layout, line);
display = gtk_text_layout_get_line_display (layout, line, TRUE);
pango_layout_get_cursor_pos (display->layout, gtk_text_iter_get_line_byte (iter),
strong_pos ? &pango_strong_pos : NULL,
@@ -1274,7 +1279,7 @@ gtk_text_layout_get_iter_location (GtkTextLayout *layout,
tree = gtk_text_iter_get_btree (iter);
line = gtk_text_iter_get_line (iter);
display = gtk_text_layout_get_line_display (layout, line);
display = gtk_text_layout_get_line_display (layout, line, TRUE);
rect->y = gtk_text_btree_find_line_top (tree, line, layout);
@@ -1332,7 +1337,7 @@ find_display_line_below (GtkTextLayout *layout,
while (line && !found_line)
{
GtkTextLineDisplay *display = gtk_text_layout_get_line_display (layout, line);
GtkTextLineDisplay *display = gtk_text_layout_get_line_display (layout, line, TRUE);
gint byte_index = 0;
GSList *tmp_list = pango_layout_get_lines (display->layout);
@@ -1394,7 +1399,7 @@ find_display_line_above (GtkTextLayout *layout,
while (line && !found_line)
{
GtkTextLineDisplay *display = gtk_text_layout_get_line_display (layout, line);
GtkTextLineDisplay *display = gtk_text_layout_get_line_display (layout, line, TRUE);
gint byte_index = 0;
GSList *tmp_list = pango_layout_get_lines (display->layout);
@@ -1503,7 +1508,7 @@ gtk_text_layout_move_iter_to_previous_line (GtkTextLayout *layout,
line = gtk_text_iter_get_line (iter);
line_byte = gtk_text_iter_get_line_byte (iter);
display = gtk_text_layout_get_line_display (layout, line);
display = gtk_text_layout_get_line_display (layout, line, TRUE);
tmp_list = pango_layout_get_lines (display->layout);
layout_line = tmp_list->data;
@@ -1517,7 +1522,7 @@ gtk_text_layout_move_iter_to_previous_line (GtkTextLayout *layout,
gint byte_offset = 0;
gtk_text_layout_free_line_display (layout, line, display);
display = gtk_text_layout_get_line_display (layout, prev_line);
display = gtk_text_layout_get_line_display (layout, prev_line, TRUE);
tmp_list = pango_layout_get_lines (display->layout);
@@ -1594,7 +1599,7 @@ gtk_text_layout_move_iter_to_next_line (GtkTextLayout *layout,
gint byte_offset = 0;
GSList *tmp_list;
display = gtk_text_layout_get_line_display (layout, line);
display = gtk_text_layout_get_line_display (layout, line, TRUE);
tmp_list = pango_layout_get_lines (display->layout);
while (tmp_list && !found_after)
@@ -1649,7 +1654,7 @@ gtk_text_layout_move_iter_to_x (GtkTextLayout *layout,
line = gtk_text_iter_get_line (iter);
line_byte = gtk_text_iter_get_line_byte (iter);
display = gtk_text_layout_get_line_display (layout, line);
display = gtk_text_layout_get_line_display (layout, line, TRUE);
tmp_list = pango_layout_get_lines (display->layout);
while (tmp_list)
@@ -1733,7 +1738,7 @@ gtk_text_layout_move_iter_visually (GtkTextLayout *layout,
{
GtkTextLine *line = gtk_text_iter_get_line (iter);
gint line_byte = gtk_text_iter_get_line_byte (iter);
GtkTextLineDisplay *display = gtk_text_layout_get_line_display (layout, line);
GtkTextLineDisplay *display = gtk_text_layout_get_line_display (layout, line, TRUE);
int byte_count = gtk_text_line_byte_count (line);
int new_index;

View File

@@ -146,7 +146,8 @@ void gtk_text_layout_wrap_loop_start (GtkTextLayout *layout);
void gtk_text_layout_wrap_loop_end (GtkTextLayout *layout);
GtkTextLineDisplay *gtk_text_layout_get_line_display (GtkTextLayout *layout,
GtkTextLine *line);
GtkTextLine *line,
gboolean size_only);
void gtk_text_layout_free_line_display (GtkTextLayout *layout,
GtkTextLine *line,
GtkTextLineDisplay *display);

View File

@@ -2154,8 +2154,6 @@ gtk_text_view_ensure_layout (GtkTextView *text_view)
gtk_widget_ensure_style (widget);
gtk_text_view_set_values_from_style (text_view, style, widget->style);
style->font_desc = pango_font_description_copy (widget->style->font_desc);
style->pixels_above_lines = 2;
style->pixels_below_lines = 2;
style->pixels_inside_wrap = 1;