2007-02-12  Behdad Esfahbod  <behdad@gnome.org>

	Released vte-0.15.3.

	* NEWS: Updated.

	* configure.in: Bumped version to 0.15.3.

	* src/Makefile.am: Bumped libtool version to 11:0:2.

2007-02-12  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_extend_selection),
	(vte_terminal_motion_notify):
		Restore autoscroll behaviour.

2007-02-12  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_start_selection):
		Invalidate the selected region when starting in
		select-word or select-line mode.

2007-02-12  Chris Wilson  <chris@chris-wilson.co.uk>

	Restore double-click to select word behaviour, broken by r1671 as
	the second click occurs in the same place as the first (obviously!).

	* src/vte.c: (vte_terminal_extend_selection),
	(vte_terminal_autoscroll), (vte_terminal_motion_notify),
	(vte_terminal_button_press):

2007-02-12  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 407091 – vte_terminal_fork_command() env argument changed semantic in 0.15.2
	Original patch by Michael Vogt.

	* src/pty.c: (_vte_pty_run_on_pty):
		Copy the current environment into the child's.

2007-02-11  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 323393 – Hyper-sensitive selection

	* src/vte.c: (vte_terminal_extend_selection):
		Don't start (or update) the selection until you
		move off the current cell (character).

2007-02-11  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 406763 – Selecting double-wide characters

	* src/vte.c: (start_column), (end_column),
	(vte_terminal_start_selection), (vte_terminal_extend_selection),
	(vte_terminal_draw_rows):
		Extend selection to include fragment cells i.e. double-wide
		characters.

2007-02-10  Chris Wilson  <chris@chris-wilson.co.uk>

	Have a separate adjust_adjustments for when we know that the page
	size and step lengths may have changed.

	* src/vte.c: (_vte_terminal_adjust_adjustments),
	(_vte_terminal_adjust_adjustments_full),
	(vte_terminal_set_scrollback_lines), (vte_terminal_reset):

2007-02-10  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (_vte_terminal_adjust_adjustments),
	(vte_terminal_size_allocate), (vte_terminal_set_scrollback_lines):
		Prevent the display of garbage after resizing and switching
		between alternate screens.
		However, instead of displaying garbage after the cursor, we
		lose some data above the current scroll delta, should we have
		a full history.  Bizarre.

2007-02-09  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (_vte_terminal_adjust_adjustments):
		Do not allow to scroll past the last line after reducing
		scrollback lines.
	* src/vtexft.c: (_vte_xft_set_text_font):
		Ensure a fallback height is set.

2007-02-09  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_get_text_range_maybe_wrapped):
		Reuse VteRowData whilst in the row.

2007-02-09  Chris Wilson  <chris@chris-wilson.co.uk>

	Rework to reduce number of times mutex is taken and shorten the hold.

	* src/vte.c: (vte_terminal_queue_adjustment_changed),
	(vte_terminal_queue_adjustment_value_changed),
	(vte_terminal_io_read), (vte_terminal_paint),
	(vte_terminal_add_process_timeout), (vte_terminal_is_processing),
	(vte_terminal_start_processing):

2007-02-09  Chris Wilson  <chris@chris-wilson.co.uk>

	A number of small bug fixes...
	- do not override the user setting of scrollback lines with the
	terminal size.
	- only set the current screen rather than both and so reset the
	scrollback lines when we switch between normal and alternate.
	- do not invalidate inside set_scrollback lines as setting does not
	actually modify the on-screen contents.
	- push the scroll-adjustment to the post-processing emission.
	- queue timeouts on value change (should be a no-op)
	- reorder emission so that scrolling occurs before invalidating the
	window (ie so that the scroll happens this cycle, not next).

	Still unsolved: the clamping of the cursor when switching between
	alternate screens.

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_emit_adjustment_changed),
	(vte_terminal_queue_adjustment_changed),
	(vte_terminal_queue_adjustment_value_changed),
	(_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
	(vte_terminal_maybe_scroll_to_top),
	(vte_terminal_maybe_scroll_to_bottom),
	(_vte_terminal_ensure_cursor), (_vte_terminal_update_insert_delta),
	(vte_terminal_process_incoming), (vte_terminal_extend_selection),
	(vte_terminal_autoscroll), (vte_terminal_handle_scroll),
	(vte_terminal_size_allocate), (vte_terminal_scroll),
	(vte_terminal_background_update),
	(vte_terminal_queue_background_update),
	(vte_terminal_set_scrollback_lines), (vte_terminal_reset),
	(add_process_timeout), (vte_terminal_add_process_timeout),
	(vte_terminal_start_processing), (update_repeat_timeout),
	(update_timeout):
	* src/vteseq.c: (vte_sequence_handler_scroll_up_or_down),
	(vte_sequence_handler_decset_internal), (vte_sequence_handler_al),
	(vte_sequence_handler_dl), (vte_sequence_handler_sf),
	(vte_sequence_handler_sr), (vte_sequence_handler_clear_screen),
	(vte_sequence_handler_cursor_character_absolute),
	(vte_sequence_handler_insert_lines),
	(vte_sequence_handler_delete_lines),
	(vte_sequence_handler_screen_alignment_test):

2007-02-08  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vteapp.c: (main): whitespace

2007-02-08  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 363597 – Scrollback in profile dialog doesn't work

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_init),
		Only use SCROLLBACK_MIN during initialisation, so rename it
		to SCROLLBACK_INIT.
	(vte_terminal_set_scrollback_lines):
		Remove MAX(lines, SCROLLBACK_MIN) and update code comments
		to reduce confusion.

2007-02-08  Mariano Suárez-Alvarez  <mariano@gnome.org>

	* src/vteapp.c(main): do something useful with --geometry.

2007-02-08  Chris Wilson  <chris@chris-wilson.co.uk>

	Use gtk_widget_get_(screen|display) which will itself return a default
	if not currently attached.

	* src/vtedraw.c: (_vte_draw_get_colormap):
	* src/vtefc.c: (_vte_fc_defaults_from_gtk):
	* src/vtegl.c: (_vte_gl_check), (_vte_gl_create),
	(_vte_gl_destroy), (_vte_gl_start), (_vte_gl_end), (_vte_gl_clear),
	(_vte_gl_draw_text), (_vte_gl_rectangle):
	* src/vterdb.c: (_vte_rdb_get):
	* src/vteseq.c: (vte_sequence_handler_window_manipulation):

2007-02-08  Chris Wilson  <chris@chris-wilson.co.uk>

	Some more callgrinding - kill a little bit of overhead.

	* src/iso2022.c: (_vte_iso2022_sequence_length),
	(_vte_iso2022_fragment_input), (process_control):
	* src/matcher.c: (_vte_matcher_free_params_array):
	* src/vteconv.c: (_vte_conv):

2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>

	Actually return whether or not we found the char in
	_vte_xft_font_for_char - saves having to double check afterwards!

	* src/vtexft.c: (_vte_xft_font_for_char), (_vte_xft_set_text_font),
	(_vte_xft_draw_text):

2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>

	As spotted perusing roxterm, we fail to redraw after changing the text
	colour.

	* src/vte.c: (vte_terminal_set_color_internal):
		Remember to invalidate all!

2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_match_check_internal):
		Scan for newlines before and after the current row
		to find the entire line in case of soft-wrapping.

2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 345344 – Pattern matching is inefficient
	Bug 324246 – Performance degredation with large numbers of highlighted addresses/URLs

	* src/vte.c: (vte_terminal_match_check_internal):
		Trim the searched string down to the row containing the
		pointer. During a mutt session this drops the time consumed by
		regexec from ~30% to ~2%.
		Note: multi-line regexes are now unsupported!

2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vteseq.c: (_vte_sequence_get_handler):
		Avoid the strlen when possible.

2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>

	Some cleanups and a bug...

	vte_terminal_match_hilite() compared the current cell to the last
	mouse position without a floor().

	* src/vte.c: (vte_terminal_process_incoming),
	(vte_terminal_match_hilite), (vte_terminal_select_all),
	(vte_terminal_select_none), (vte_terminal_motion_notify),
	(vte_terminal_button_press):

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 86119 – "select all" feature
	Original patch by Simone Gotti.

	* src/vte.c: (vte_terminal_select_all), (vte_terminal_select_none):
	* src/vte.h:
		Add 2 new API entry points to select the entire contents
		and clear the current selection.

2007-02-06  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 342059 – ASCII escape sequences don't work as expected
	Correction by Mariano Suárez-Alvarez.

	* src/vteseq.c: (vte_sequence_handler_cursor_character_absolute):
		OBO on the parameter.

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 342059 – ASCII escape sequences don't work as expected
	Patch by Mariano Suárez-Alvarez.

	* src/vteseq.c: (vte_sequence_handler_cursor_character_absolute):
		Provide a default value.

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	And finally as noted on bug 324246#c8 hide the hilite when the mouse
	leaves the terminal (show again when it enters and let motion-notify
	correct it later).

	* src/vte.c: (vte_terminal_enter), (vte_terminal_leave),
	(vte_terminal_realize), (vte_terminal_class_init):

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	As noted on bug 324246#c8, hide the hilite when the focus disappears.
	On focus restore the match for the last mouse coordinates and let
	motion-notify take care of the rest.

	* src/vte.c: (vte_terminal_match_hilite_update),
	(vte_terminal_match_hilite), (vte_terminal_focus_in):

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	Convert the exposed rectangles to cells and remerge them.

	* src/vte.c: (vte_terminal_expand_region),
	(vte_terminal_paint_area), (vte_terminal_paint):

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	As noted on Bug 401052#c13, vte fails to completely clear the cell's
	previous contents.

	* src/vte.c: (_vte_invalidate_cells):
		Grow the invalidate region by a single pixel to accomodate
		antialiased pseudo-bold characters.

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	Move status_line_changed to post-processing emission.

	* src/vte-private.h:
	* src/vte.c: (_vte_terminal_insert_char), (vte_terminal_reset),
	(vte_terminal_emit_pending_signals):
	* src/vteseq.c: (vte_sequence_handler_ts):

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	Clamp down on needless invalidates during selection.

	As commented on in Bug 401052#c10

	* src/vte.c: (_vte_invalidate_region), (vte_terminal_deselect_all),
	(vte_terminal_match_hilite_clear), (vte_terminal_start_selection),
	(vte_terminal_extend_selection):

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_draw_rows):
		Don't needlessly break the text run on a space if we are
		not drawing cell attributes.

2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/iso2022.c: (_vte_iso2022_is_ambiguous_ht):
		One more G_UNLIKELY
	* src/vte.c: (vte_terminal_match_hilite),
	(vte_terminal_motion_notify):
		Avoid expensive hiliting if the pointer is not in the window.
	* src/vteregex.c: (_vte_regex_exec):
		Prefer g_new(x,n) over g_malloc(sizeof(x)*n)

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 404757 – URL matching doesn't work with PCRE

	* configure.in:
		mention the inconsistency in the help string and default to no.

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_draw_rows):
		Don't draw cell attributes across spaces.

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (_vte_terminal_insert_char):
		A couple more G_LIKELYs.

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 403028 – decset mode 12 = blinking cursor

	* src/vteseq.c: (vte_sequence_handler_decset_internal):
		Following convention, disallow the application's control
		over the blinking cursor in favour of the user's setting.

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	Some more small callgrind tweaks - well into the law of diminishing
	returns.

	* src/iso2022.c: (_vte_iso2022_is_ambiguous_ht),
	(_vte_iso2022_is_ambiguous), (process_8_bit_sequence),
	(process_cdata), (_vte_iso2022_unichar_width):
	* src/matcher.c: (_vte_matcher_free_params_array):
	* src/vte.c: (vte_terminal_process_incoming):

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	Beware the trivial change. Handle reuse of GValueArray correctly.

	* src/matcher.c: (_vte_matcher_match):
	* src/table.c: (_vte_table_match):
	* src/trie.c: (_vte_trie_match):
	* src/vte.c: (vte_terminal_process_incoming):

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/table.c: (_vte_table_match):
		And kill the leak as vte_table_match erroneously cleared
		its output arguments.

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	The continual reallocation of GValueArray is the last trivially
	avoidable g_realloc.

	* src/interpret.c: (main):
	* src/matcher.c: (_vte_matcher_create), (_vte_matcher_destroy),
	(_vte_matcher_match), (_vte_matcher_free_params_array):
	* src/matcher.h:
	* src/table.c: (_vte_table_extract_string):
	* src/trie.c: (_vte_trie_matchx), (_vte_trie_match), (main):
	* src/vte.c: (vte_terminal_process_incoming):

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/ring.c: (_vte_ring_insert):
		Missed an important compiler warning.

2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>

	cf Bug 342338 – suffers from memory fragmentation

	Reuse the last VteRowData instead of immediately freeing it. Avoids
	recreating and *regrowing* a new GArray on the heap.

	In the simple scrolling benchmarks this can boost performance by as
	much as 10%!

	* src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
	(_vte_ring_remove), (_vte_ring_append):
	* src/ring.h:
	* src/vte-private.h:
	* src/vte.c: (_vte_reset_row_data), (_vte_terminal_ensure_cursor),
	(_vte_terminal_insert_char), (vte_terminal_reset_rowdata):
	* src/vteseq.c: (vte_insert_line_internal),
	(vte_sequence_handler_scroll_up_or_down),
	(vte_sequence_handler_cd), (vte_sequence_handler_sf),
	(vte_sequence_handler_clear_screen),
	(vte_sequence_handler_screen_alignment_test):

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	A few more compiler warnings.

	* src/buffer.c: (_vte_buffer_peek_gstring):
	* src/iso2022.c: (process_control):
	* src/vteft2.c: (_vte_ft2_set_text_font):
	* src/vteseq.c: (vte_sequence_handler_set_title_internal):
	* src/vtetc.c: (_vte_termcap_parse_file):

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 106618 – CJK 'fixed width' font and 's p a c e d o u t' issue

	* src/vtedraw.h:
	* src/vteglyph.c: (_vte_glyph_cache_set_font_description):
	* src/vtepango.c: (_vte_pango_set_text_font):
	* src/vtepangox.c: (_vte_pango_x_set_text_font):
	* src/vtexft.c: (_vte_xft_set_text_font):
		Detect a change in font between wide-chars and recheck for a
		fixed-width estimate.

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	Micro-opts.

	* src/table.c: (_vte_table_match):
		No need set to NULL.
	* src/vte.c: (_vte_terminal_ensure_cursor):
		If we have added some rows, the last is the current.

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	Move window/icon title changed to the post-processing emission - helps
	with the artificial benchmark of replaying a recorded jhbuild script.

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_finalize),
	(vte_terminal_emit_icon_title_changed),
	(vte_terminal_emit_window_title_changed),
	(vte_terminal_emit_pending_signals):
	* src/vteseq.c: (vte_sequence_handler_set_title_internal):

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	Broke clear-to-end-of-line by lowering the number of cells appended,
	instead of the number of cells invalidated.

	* src/vte.c: (vte_terminal_draw_rows):
	* src/vteseq.c: (vte_sequence_handler_ce):

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	cf Bug 83285 – Treacle-slow scrolling in gnome-terminal on unaccelerated X server

	Another chunk of performance improvements - the majority focusing on
	reducing the amount of work down per interrupt (input data from
	child).

	To handle reads without addition copies VTE_INPUT_CHUNK_SIZE chunks
	are allocated on demand and filled from read with no further copy -
	previously the read was into a local buffer and then immediately
	copied into a _vte_buffer.
	_vte_iso2022_process() is then adjusted to use a ptr+length, rather
	than a _vte_buffer and is called for every input chunk (taking special
	care over the boundary cases).

	* src/interpret.c: (main):
	* src/iso2022.c: (_vte_iso2022_fragment_input),
	(process_8_bit_sequence), (process_cdata), (_vte_iso2022_process):
	* src/iso2022.h:
	* src/vte-private.h:
	* src/vte.c: (get_chunk), (release_chunk), (prune_chunks),
	(_vte_incoming_chunks_release), (_vte_incoming_chunks_length),
	(_vte_incoming_chunks_count), (_vte_incoming_chunks_reverse),
	(vte_terminal_match_check_internal), (_vte_terminal_ensure_cursor),
	(vte_terminal_set_colors), (_vte_terminal_insert_char),
	(vte_terminal_catch_child_exited), (vte_terminal_eof),
	(vte_terminal_process_incoming), (_vte_terminal_feed_chunks),
	(vte_terminal_io_read), (vte_terminal_feed), (vte_terminal_send),
	(vte_terminal_init), (vte_terminal_finalize), (vte_terminal_reset),
	(remove_from_active_list), (need_processing), (update_regions),
	(update_repeat_timeout):
	* src/vte.h:
	* src/vteseq.c: (vte_sequence_handler_cb),
	(vte_sequence_handler_ce), (vte_sequence_handler_ec):

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	Store whether the codeset is ambiguous in a state variable,
	rather than recomputing the ambiguous width every processing loop.

	* src/iso2022.c: (_vte_iso2022_is_ambiguous),
	(_vte_iso2022_state_new), (_vte_iso2022_find_nextctl):

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vtexft.c: (_vte_xft_create), (_vte_xft_destroy):
		Remove zero-initialisers after g_slice_new0().
	* src/vtexft.c :(_vte_xft_set_text_font):
		Print out the width range.

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	* configure.in:
		Missing space between -Wflags.

2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>

	Eliminate the temporary g_sliced parameter list,
	in favour of an on-stack list.

	* src/table.c: (_vte_table_arginfo_head_init),
	(_vte_table_arginfo_alloc), (_vte_table_arginfo_head_revert),
	(_vte_table_arginfo_head_reverse),
	(_vte_table_arginfo_head_finalize), (_vte_table_addi),
	(_vte_table_matchi), (_vte_table_extract_string),
	(_vte_table_match):

2007-02-02  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
		Dump the chosen fonts to VTE_DEBUG_MISC.
	* src/vteft2.c: (_vte_ft2_set_text_font):
		Print out the font metrics ala vtexft.c

2007-02-02  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 322241 – Please switch to pkg-config to check for freetype

	* configure.in:
		Prefer to use the freetype2.pc if available.

2007-02-02  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 322240 – Usage of pkg-config privates header

	* vte.pc.in:
		Move @FT2_LIBS@ to Libs.private.

2007-02-01  Chris Wilson  <chris@chris-wilson.co.uk>

	cf Bug 403275 – crash in Terminal: I was typing reset on th...

	Not the crash, just a freeze found whilst trying to reproduce the
	bug on trunk.

	* src/vte.c: (remove_from_active_list):
		Don't remove the terminal from the active list if it still
		has pending redraws.
	
	* src/vte.c: (process_timeout), (update_timeout):
		Reorder the loop to remove the terminal from the active list
		if it no longer needs processing.

2007-02-01  Chris Wilson  <chris@chris-wilson.co.uk>

	* perf/scroll.vim:
		Extract the bits the test needs out of debian.vim.

2007-02-01  Chris Wilson  <chris@chris-wilson.co.uk>

	As spotted on bug 399617c8, we convert an array of unichars to a
	string and then iterate over the string interpreting bytes as
	unichars.

	* src/table.c: (_vte_table_extract_numbers):
		Dispense with the temporary string and process the unichar
		array directly.

2007-02-01  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 403159 – XftDrawSetClipRectangles() silently fails on ppc->i386

	* src/vtexft.c: (_vte_xft_clip):
		Precompute clip offsets.

2007-02-01  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 382245 – __PyGtk_API multiply defined in python module

	* configure.in:
		Add -fno-common to MAYBE_WARN in order to catch future
		errors of this type.
	* python/vte.override:
		Define PYGTK_NO_IMPORT.

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 155687 – Scroll region \E[NN;MMr should set cursor to home

	Patch originally by Michele Baldessari.

	* src/vteseq.c: (vte_sequence_handler_cs):
		Move the cursor to (0,0) rather than clamping the cursor to 
		be inside the scroll region.

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	In a few places the contents of a GValue were being used without
	checking that they were of the expected type.

	cf Bug 117945 which mentions stack corruption inside
	vte_sequence_handler_delete_lines() - one of the corrected instances.

	* src/vteseq.c: (vte_sequence_handler_al),
	(vte_sequence_handler_cs), (vte_sequence_handler_cS),
	(vte_sequence_handler_dl),
	(vte_sequence_handler_character_attributes),
	(vte_sequence_handler_insert_lines),
	(vte_sequence_handler_delete_lines),
	(vte_sequence_handler_device_status_report),
	(vte_sequence_handler_dec_device_status_report):
		Check that the GValue holds a long before dereference.

2007-01-31  Chris Wilson <chris@chris-wilson.co.uk>

	Back to the old-style io loop as _vte_buffer_append() is too slow - on
	a slow system the read can fill before the data is copied (even more
	apparent under valgrind).

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_io_read):

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	Use the display stashed inside the font and not the default display!

	* src/vtexft.c: (_vte_xft_char_exists), (_vte_xft_text_extents),
	(_vte_xft_font_open), (_vte_xft_font_close),
	(_vte_xft_font_for_char), (_vte_xft_draw_text):

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	A mixed bag of cleanups.

	* configure.in:
	* src/pty.c: (_vte_pty_set_utf8):
		Test for existence of tc[sg]etattr.
	* src/vte-private.h:
	* src/vte.c: (vte_terminal_emit_adjustment_changed),
	(vte_terminal_queue_adjustment_changed),
	(vte_terminal_set_color_internal), (vte_terminal_handle_sequence),
	(_vte_terminal_enable_input_source), (vte_terminal_io_read),
	(vte_terminal_init), (vte_terminal_unrealize),
	(vte_terminal_finalize), (vte_terminal_background_update),
	(vte_terminal_queue_background_update),
	(vte_terminal_emit_pending_signals), (process_timeout),
	(update_repeat_timeout), (update_timeout):
		Move idle signal emission to display handlers.
	* src/vtedraw.h:
		Add '&' to the single width characters.
	* src/vteseq.c: (_vte_sequence_get_handler):
	* src/vteseq.h:
		Drop the extraneous GQuark parameter.
	* src/vtexft.c: (_vte_xft_set_text_font):
		Avoid use of strlen for a compile-time fixed length string.

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 147784 – cursor unvisible under mouse highlight

	Original patch by Chris Health

	* src/vte.c: (vte_terminal_paint):
		Reverse cursor color if it is in the selected region and draw
		it as an outline.

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 368894 – crash in Terminal: I started gnome-terminal...

	* src/vtebg.c: (vte_bg_cache_search), (vte_bg_get_pixmap),
	(vte_bg_get_pixbuf):
		When retrieving a cached pixmap check that the visual
		matches the current request.

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	Use gdk_error_trap_{push,pop} around raw Xft calls - about a
	path outside of vte_draw_{begin,end}.

	* src/vtexft.c: (_vte_xft_set_text_font):

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	Use gdk_error_trap_{push,pop} around raw X11 and Xft calls.
	cf Bug 368894.

	* src/vtexft.c: (_vte_xft_font_for_char), (_vte_xft_start),
	(_vte_xft_end):

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	Use gperf to calculate a more optimal vte_sequence_get_handler().
	This reduces vte_sequence_get_handler() from ~13% of the runtime
	during 'seq 1 1e6' to ~.5% (cumulative).

	* src/Makefile.am:
	* src/vteseq-2.c: (vteseq_2_hash), (vteseq_2_lookup):
	* src/vteseq-2.gperf:
	* src/vteseq-n.c: (vteseq_n_hash), (vteseq_n_lookup):
	* src/vteseq-n.gperf:
	* src/vteseq.c: (_vte_sequence_get_handler):

2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>

	Rudimentary vim scrolling benchmark.

	* perf/Makefile.am:
	* perf/UTF-8-demo.txt:
	* perf/scroll.vim:
	* perf/vim.sh:

2007-01-30  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 402329 – Rendering problem with underlines and cursor

	* src/vte.c: (vte_terminal_paint):
		Check hilite state when redrawing character under cursor.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte-private.h:
	* src/vte.c: (vte_terminal_io_read):
		Clean up the read IO loop.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	NULL return from pcre_study() does not necessarily mean an error
	occurred.

	* src/vteregex.c: (_vte_regex_compile), (_vte_regex_exec):

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (_vte_terminal_set_pointer_visible),
	(_vte_terminal_fudge_pango_colors):
		Kill a couple more compiler warnings.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 336105 – gnome-terminal crashes when termcap not found

	* src/matcher.c: (_vte_matcher_init):
	* src/vte-private.h:
	* src/vte.c: (vte_terminal_set_default_tabstops),
	(vte_terminal_key_press), (vte_terminal_set_emulation),
	(_vte_terminal_inline_error_message), (vte_terminal_set_termcap),
	(vte_terminal_init), (vte_terminal_finalize),
	(vte_terminal_draw_cells):
		Detect and issue an inline warning when we fail
		to load a termcap.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	Tighten the invalidated cells.

	* src/vte.c: (_vte_terminal_select_text):
	* src/vteseq.c: (vte_sequence_handler_cb):

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	More compiler warnings.

	* src/vtepangox.c: (_vte_pango_x_set_text_font),
	(_vte_pango_x_draw_text):
	* src/vteregex.c: (_vte_regex_exec):

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	Detect availability of PCRE.

	* configure.in:
	* src/Makefile.am:

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	Improve handling of multi-row clears.

	* src/vte.c: (vte_terminal_draw_cells), (vte_terminal_draw_rows),
	(vte_terminal_paint):

2007-01-29  Chris Wilson <chris@chris-wilson.co.uk>

	Add debugging flags for printing out cells contents and attributes as
	they are rendered.

	* src/debug.c: (_vte_debug_parse_string):
	* src/debug.h:
	* src/vte.c: (vte_terminal_draw_cells):

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_draw_rows):
		Don't issue glyph items for blank cells.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	* configure.in:
		Add -Wshadow to MAYBE_WARN
	* src/ring.c: (_vte_ring_remove):
	* src/table.c: (_vte_table_matchi):
	* src/vtedraw.c: (_vte_draw_clip):
	* src/vteskel.c:
		Clean up some compiler warnings.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vteskel.c:
		Add the NULL clip func to the skeleton function table.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	Update match hilite before showing the pointer as the choice of
	cursor depends on whether the pointer is above a matched region.

	* src/vte.c: (vte_terminal_motion_notify),
	(vte_terminal_button_press), (vte_terminal_button_release):

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	Only update the matched region if we move the pointer outside of the
	currently matched region.
	And only invalidate the cells underneath the matched region.

	* src/vte.c: (_vte_invalidate_region),
	(vte_terminal_match_hilite_clear), (cursor_inside_match),
	(vte_terminal_match_hilite), (vte_terminal_draw_rows):

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/table.c: (_vte_table_free):
		Fix a memleak.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	==26147== 2,895 (352 direct, 2,543 indirect) bytes in 22 blocks are definitely lost in loss record 107 of 170
	==26147==    at 0x4021380: malloc (vg_replace_malloc.c:149)
	==26147==    by 0x4E85965: g_malloc (gmem.c:131)
	==26147==    by 0x4E95537: g_slice_alloc (gslice.c:777)
	==26147==    by 0x4E7C255: g_list_prepend (glist.c:95)
	==26147==    by 0x428B887: vte_terminal_feed (vte.c:10991)
	==26147==    by 0x429DD20: vte_terminal_io_read (vte.c:3214)
	==26147==    by 0x4EA7A8C: g_io_unix_dispatch (giounix.c:162)
	==26147==    by 0x4E7E481: g_main_context_dispatch (gmain.c:2045)
	==26147==    by 0x4E8145E: g_main_context_iterate (gmain.c:2677)
	==26147==    by 0x4E81808: g_main_loop_run (gmain.c:2881)
	==26147==    by 0x45BA503: gtk_main (gtkmain.c:1148)
	==26147==    by 0x805F7A3: main (terminal.c:1773)

	* src/vte.c: (remove_from_active_list), (process_timeout),
	(update_repeat_timeout):
		g_list_delete_link() is the one that actually frees the link.
		s/g_list_remove_link/g_list_delete_link/.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	==26147== Conditional jump or move depends on uninitialised value(s)
	==26147==    at 0x42AB9F7: _vte_rdb_search (vterdb.c:95)
	==26147==    by 0x42ABB40: _vte_rdb_quark (vterdb.c:201)
	==26147==    by 0x42ABB9F: _vte_rdb_get_hintstyle (vterdb.c:241)
	==26147==    by 0x42A7952: _vte_fc_patterns_from_pango_font_desc (vtefc.c:302)
	==26147==    by 0x42B4E9B: _vte_xft_set_text_font (vtexft.c:103)
	==26147==    by 0x42A6BE5: _vte_draw_set_text_font (vtedraw.c:258)
	==26147==    by 0x428C62B: vte_terminal_ensure_font (vte.c:5963)
	==26147==    by 0x4290295: vte_terminal_size_request (vte.c:6613)
	==26147==    by 0x4E25228: g_cclosure_marshal_VOID__BOXED (gmarshal.c:566)
	==26147==    by 0x4E17038: g_type_class_meta_marshal (gclosure.c:567)
	==26147==    by 0x4E188FC: g_closure_invoke (gclosure.c:490)
	==26147==    by 0x4E29779: signal_emit_unlocked_R (gsignal.c:2370)
	==26147== 

	* src/vterdb.c: (_vte_rdb_get):
		Check the result of the get_property_string before using the
		returned values.

2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_draw_cells), (vte_terminal_draw_rows):
		Merge draw_cells() with the background clear, as generating
		items for many rows and then splitting again in draw cells is
		simply inefficient.

2007-01-28  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 401215 – Multi-pass renderering

	* src/vte.c: (vte_terminal_draw_cells), (vte_terminal_clear_cells),
	(vte_terminal_draw_cells_with_attributes),
	(vte_terminal_draw_rows), (vte_terminal_paint):
		Break the draw_rows() loop into two passes - first clear the
		background and second render the text.
		Add another function based on draw_cells() that just clears the
		background and make clearing the background optional in
		draw_cells() - updating callers accordingly.
		Adventurous souls are required to clean up draw_rows().

2007-01-27  Chris Wilson  <chris@chris-wilson.co.uk>

	Fix compilation *with* debugging enabled.
	Grrr.

	* src/keymap.c: (_vte_keysym_print):

2007-01-27  Chris Wilson  <chris@chris-wilson.co.uk>

	Fix compilation without debugging enabled.

	* src/keymap.c: (_vte_keysym_print), (_vte_keymap_map):
	* src/vte.c: (display_control_sequence):
	* src/vteapp.c: (main):

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/debug.h:
		Provide a safe fallback for non-C99 compilers (well actually
		anything that isn't a recent gcc at the moment).

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 157267 – _vte_terminal_fudge_pango_colors() breaks Japanese input style

	Patch by ynakai@redhat.com.

	* src/vte.c: (_vte_terminal_fudge_pango_colors):
		Check the attributes for each cell rather than assuming the
		pango attributes (and cell attributes) are the same for the
		whole string.

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vteseq.c: (vte_sequence_handler_vb):
		Iterating over all queued exposures and drawing on top of the
		flash does not sense. Simply flush the draw.

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	s/_VTE_DEBUG_ON/_VTE_DEBUG_IF/ and don't include
	the code block inside the macro.

	* src/debug.h:
	* src/iso2022.c: (process_control), (_vte_iso2022_process):
	* src/keymap.c: (_vte_keymap_map):
	* src/matcher.c: (_vte_matcher_init):
	* src/pty.c: (_vte_pty_run_on_pty):
	* src/table.c: (_vte_table_addi), (_vte_table_matchi),
	(_vte_table_extract_numbers), (_vte_table_match):
	* src/trie.c: (_vte_trie_addx):
	* src/vte.c: (vte_terminal_match_check_internal),
	(vte_terminal_match_check), (vte_terminal_handle_sequence),
	(vte_terminal_catch_child_exited), (vte_terminal_process_incoming),
	(vte_terminal_io_write), (vte_terminal_send),
	(vte_terminal_key_press), (vte_terminal_copy_cb),
	(vte_terminal_set_font_full), (vte_terminal_realize),
	(vte_terminal_paint), (vte_terminal_scroll):
	* src/vteapp.c: (main):
	* src/vtebg.c: (vte_bg_root_pixmap):

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 400834 – Use a global display/process timeout

	Currently each terminal uses it own display timeout. Given that
	typical usage is several active terminals, there is an immediate
	advantage (context switches, fairness, smoothness) to using a single
	common timeout.

	* src/debug.c: (_vte_debug_parse_string):
	* src/debug.h:
		Add VTE_DEBUG_TIMEOUT
	* src/vte-private.h:
	* src/vte.c: (update_regions), (_vte_invalidate_cells),
	(_vte_invalidate_all), (vte_terminal_init),
	(vte_terminal_class_init), (add_update_timeout),
	(remove_from_active_list), (remove_update_timeout),
	(add_process_timeout), (vte_terminal_stop_processing),
	(vte_terminal_is_processing), (process_timeout),
	(update_repeat_timeout), (update_timeout):
		Modify to use a global timeout rather than individual
		private timeouts.

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Unable to set background scrolling mode from cmdline due to variable
	name confusion.

	* src/vteapp.c: (main):
		--scroll should set scroll=TRUE rather than cursor=TRUE!

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Bug 401082 – double-draw issue

	The main cause of this bug was not expanding the cleared area to cover
	all the cells affected by the draw and forgetting to offset the clear
	by VTE_PAD_WIDTH.

	To counter the performance hit due to the expanded repaint area, each
	backend is presented with the opportunity to apply a clip to the
	exposed region before painting.

	This also fixes bug 333157,

	* src/vte.c: (_vte_invalidate_cells), (vte_terminal_paint_area),
	(vte_terminal_paint):
	* src/vtedraw.c: (_vte_draw_clip):
	* src/vtedraw.h:
	* src/vteft2.c: (_vte_ft2_end), (_vte_ft2_clip):
	* src/vtegl.c:
	* src/vtepango.c: (_vte_pango_clip):
	* src/vtepangox.c: (_vte_pango_x_clip):
	* src/vtexft.c: (_vte_xft_clip), (_vte_xft_draw_text):

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_match_hilite):
	* src/vteseq.c: (vte_sequence_handler_ce),
	(vte_sequence_handler_dc), (vte_sequence_handler_ec):
		Tighten the _vte_invalidate_cells() to only those that
		we potentially modify.

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	* src/vtexft.c: (_vte_xft_set_text_font):
		Remove the additional pixel inter-character spacing.
		Compactness over clarity ;)

2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>

	Apply a one pixel fudge to the Xft character position and width.
	This greatly improves text appearance and hides the misrendering of
	pseudo-bold characters.
	cf bugs 317691, 333157.

	* src/vte.c: (vte_terminal_paint):
		Increase the cursor size to fit around the cell.
	* src/vtexft.c: (_vte_xft_set_text_font), (_vte_xft_draw_text):
		Fudge the Xft font positioning.

2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 318307 – Cursor colour changes to foreground when unfocused

	Whilst setting the colour, tweak the position of the rectangle, and
	extended the invalidate region to account for the OBO nature of bold
	font.

	* src/vte.c: (_vte_invalidate_cells):
		Include the padding to accomodate cell effects.
	* src/vte.c: (vte_terminal_paint):
		Use the cursor color for the rectangle when unfocused.

2007-01-26  Behdad Esfahbod  <behdad@gnome.org>

	* src/vte.c (vte_terminal_visibility_notify): Correctly handle
	visibility events: set invalidated_all to FALSE, and invalidate_all
	if fully unobscured.

2007-01-26  Behdad Esfahbod  <behdad@gnome.org>

	* src/vte.c (vte_terminal_visibility_notify): Make sure we redraw
	after becoming unobscured.  There still is a bug that I've not found,
	but after obscuring the widget and coming back, a first redraw
	happens, but no update after that.

2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_draw_area):
		Occasionally we generate an exposed area which is computed
		as 0x0 cells. Discard early, before we spend an infinity
		drawing nothing.

2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>

	Janitorial work - near elimination of #ifdef VTE_DEBUG from within
	functions, trimming a thousand lines of code.

	We introduce a _vte_debug_print macro to cover the more common
	occurrence of printing a message at a certain debug level.
	And a _VTE_DEBUG_ON for a conditional code block.

	src/debug.h     |   11 
	src/iso2022.c   |  201 ++-------
	src/keymap.c    |   41 -
	src/matcher.c   |   24 -
	src/pty.c       |  134 +-----
	src/reaper.c    |   21 
	src/ring.c      |   78 +--
	src/table.c     |   11 
	src/trie.c      |   19 
	src/vte.c       | 1187 ++++++++++---------------------------------------
	src/vteaccess.c |  198 +++------
	src/vteapp.c    |   21 
	src/vtebg.c     |   43 --
	src/vteconv.c   |   60 +-
	src/vteconv.h   |   12 
	src/vtedraw.c   |    6 
	src/vtefc.c     |    4 
	src/vteft2.c    |    5 
	src/vteglyph.c  |   27 -
	src/vtepango.c  |   11 
	src/vtepangox.c |    7 
	src/vteregex.c  |    2 
	src/vteseq.c    |  385 +++++-------------
	src/vtexft.c    |   26 -
	24 files changed, 789 insertions(+), 1745 deletions(-)

	* src/debug.h:
	* src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
	(_vte_iso2022_state_new), (_vte_iso2022_state_set_codeset),
	(process_8_bit_sequence), (process_cdata), (process_control),
	(_vte_iso2022_process):
	* src/keymap.c: (_vte_keymap_map):
	* src/matcher.c: (_vte_matcher_init), (_vte_matcher_create),
	(_vte_matcher_destroy):
	* src/pty.c: (vte_pty_child_setup), (_vte_pty_run_on_pty),
	(_vte_pty_set_size), (_vte_pty_get_size), (_vte_pty_ptsname),
	(_vte_pty_open_unix98), (_vte_pty_open_with_helper),
	(_vte_pty_open):
	* src/reaper.c: (vte_reaper_emit_signal),
	(vte_reaper_child_watch_cb), (vte_reaper_init),
	(vte_reaper_finalize):
	* src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
	(_vte_ring_remove):
	* src/table.c: (_vte_table_addi):
	* src/trie.c: (char_class_string_extract), (_vte_trie_addx),
	(_vte_trie_add):
	* src/vte.c: (update_regions), (_vte_invalidate_cells),
	(_vte_invalidate_all), (_vte_invalidate_cell),
	(_vte_invalidate_cursor_once),
	(vte_terminal_emit_selection_changed), (vte_terminal_emit_commit),
	(vte_terminal_emit_emulation_changed),
	(vte_terminal_emit_encoding_changed),
	(vte_terminal_emit_child_exited),
	(_vte_terminal_emit_contents_changed),
	(vte_terminal_emit_cursor_moved), (vte_terminal_emit_eof),
	(vte_terminal_emit_char_size_changed),
	(_vte_terminal_emit_status_line_changed),
	(vte_terminal_emit_increase_font_size),
	(vte_terminal_emit_decrease_font_size),
	(_vte_terminal_emit_text_inserted),
	(_vte_terminal_emit_text_deleted),
	(vte_terminal_emit_text_modified),
	(vte_terminal_emit_text_scrolled), (vte_terminal_deselect_all),
	(vte_terminal_match_check_internal), (vte_terminal_match_check),
	(vte_terminal_emit_adjustment_changed),
	(vte_terminal_queue_adjustment_changed),
	(_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
	(vte_terminal_maybe_scroll_to_bottom), (vte_terminal_set_encoding),
	(_vte_terminal_set_pointer_visible), (vte_terminal_new),
	(vte_terminal_generate_bold), (_vte_terminal_insert_char),
	(vte_terminal_handle_sequence), (vte_terminal_catch_child_exited),
	(vte_terminal_fork_command),
	(vte_terminal_emit_pending_text_signals),
	(vte_terminal_process_incoming), (vte_terminal_io_read),
	(vte_terminal_io_write), (vte_terminal_send),
	(vte_terminal_im_commit), (vte_terminal_im_preedit_start),
	(vte_terminal_im_preedit_end), (vte_terminal_im_preedit_changed),
	(vte_terminal_configure_toplevel),
	(vte_terminal_hierarchy_changed), (vte_terminal_style_changed),
	(vte_terminal_key_press), (vte_terminal_paste_cb),
	(vte_terminal_match_hilite_clear), (vte_terminal_match_hilite),
	(vte_terminal_clear_cb), (vte_terminal_copy_cb),
	(vte_terminal_copy), (vte_terminal_paste),
	(vte_terminal_start_selection), (vte_terminal_extend_selection),
	(vte_terminal_autoscroll), (vte_terminal_motion_notify),
	(vte_terminal_button_press), (vte_terminal_button_release),
	(vte_terminal_focus_in), (vte_terminal_focus_out),
	(vte_terminal_set_font_full), (vte_terminal_set_size),
	(vte_terminal_handle_scroll), (vte_terminal_set_emulation),
	(vte_terminal_set_termcap), (vte_terminal_reset_rowdata),
	(vte_terminal_fc_settings_changed), (vte_terminal_init),
	(vte_terminal_size_request), (vte_terminal_size_allocate),
	(vte_terminal_unrealize), (vte_terminal_finalize),
	(vte_terminal_realize), (vte_terminal_draw_cells),
	(_vte_terminal_map_pango_color), (vte_terminal_draw_area),
	(vte_terminal_paint), (vte_terminal_expose), (vte_terminal_scroll),
	(vte_terminal_class_init), (vte_terminal_copy_clipboard),
	(vte_terminal_paste_clipboard), (vte_terminal_copy_primary),
	(vte_terminal_paste_primary), (vte_terminal_background_update),
	(vte_terminal_queue_background_update),
	(vte_terminal_set_background_saturation),
	(vte_terminal_set_background_tint_color),
	(vte_terminal_set_background_transparent),
	(vte_terminal_set_background_image),
	(vte_terminal_set_background_image_file),
	(vte_terminal_set_word_chars), (process_timeout),
	(update_repeat_timeout), (update_timeout):
	* src/vteaccess.c: (xy_from_offset), (emit_text_caret_moved),
	(emit_text_changed_insert), (emit_text_changed_delete),
	(vte_terminal_accessible_update_private_data_if_needed),
	(vte_terminal_accessible_text_modified),
	(vte_terminal_accessible_text_scrolled),
	(vte_terminal_accessible_invalidate_cursor),
	(vte_terminal_accessible_finalize),
	(vte_terminal_accessible_get_text),
	(vte_terminal_accessible_get_text_somewhere),
	(vte_terminal_accessible_get_run_attributes),
	(vte_terminal_accessible_text_init),
	(vte_terminal_accessible_component_init),
	(vte_terminal_accessible_action_init),
	(vte_terminal_accessible_factory_new):
	* src/vteapp.c: (destroy_and_quit_eof), (destroy_and_quit_exited),
	(take_xconsole_ownership), (main):
	* src/vtebg.c: (vte_bg_root_pixmap), (vte_bg_set_root_pixmap),
	(_vte_bg_resize_pixbuf):
	* src/vteconv.c: (_vte_conv_utf8_utf8), (_vte_conv_open),
	(_vte_conv), (_vte_conv_cu), (_vte_conv_uu), (_vte_conv_uc):
	* src/vteconv.h:
	* src/vtedraw.c: (_vte_draw_new):
	* src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description):
	* src/vteft2.c: (_vte_ft2_draw_text):
	* src/vteglyph.c: (_vte_glyph_cache_free),
	(_vte_glyph_cache_set_font_description):
	* src/vtepango.c: (_vte_pango_set_text_font),
	(_vte_pango_draw_text):
	* src/vtepangox.c: (_vte_pango_x_set_text_font):
	* src/vteregex.c: (_vte_regex_exec):
	* src/vteseq.c: (vte_terminal_emit_deiconify_window),
	(vte_terminal_emit_iconify_window),
	(vte_terminal_emit_icon_title_changed),
	(vte_terminal_emit_window_title_changed),
	(vte_terminal_emit_raise_window), (vte_terminal_emit_lower_window),
	(vte_terminal_emit_maximize_window),
	(vte_terminal_emit_refresh_window),
	(vte_terminal_emit_restore_window),
	(vte_terminal_emit_move_window), (vte_terminal_emit_resize_window),
	(vte_sequence_handler_set_title_internal),
	(vte_sequence_handler_decset_internal), (vte_sequence_handler_bt),
	(vte_sequence_handler_application_keypad),
	(vte_sequence_handler_normal_keypad),
	(vte_sequence_handler_reset_mode), (vte_sequence_handler_decset),
	(vte_sequence_handler_decreset),
	(vte_sequence_handler_erase_in_display),
	(vte_sequence_handler_erase_in_line),
	(vte_sequence_handler_restore_mode),
	(vte_sequence_handler_save_mode),
	(vte_sequence_handler_window_manipulation):
	* src/vtexft.c: (_vte_xft_set_text_font):

2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 317449 – The cursor disappears when clicking on windows above gnome-terminal

	Enter a command that causes partial obscuration of the terminal,
	though it must cover the cursor. Close the new window, observe the
	pointer disappears.

	The issue is that we hide the pointer whilst typing and show it after
	receiving a mouse movement. However in this case we steal the pointer
	away from the terminal without any mouse events and the cursor remains
	invisible.

	* src/vte.c: (vte_terminal_focus_in):
		Ensure the mouse pointer is visible on focus-in.

2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>

	Spend half an hour a day killing warnings...

	* configure.in:
		Remove -Wswitch-enum from MAYBE_WARN. I am that lazy.
	* src/buffer.c:
	* src/iso2022.c: (_vte_iso2022_is_ambiguous),
	(_vte_iso2022_ambiguous_width), (_vte_iso2022_map_get),
	(_vte_iso2022_find_nextctl), (_vte_iso2022_sequence_length),
	(_vte_iso2022_fragment_input), (process_8_bit_sequence),
	(process_cdata), (_vte_iso2022_process_single), (process_control),
	(_vte_iso2022_process):
	* src/keymap.c: (_vte_keymap_map):
	* src/table.c:
	* src/trie.c: (char_class_none_extract),
	(char_class_digit_extract), (char_class_multi_extract),
	(char_class_any_extract), (unichar_snlen), (unichar_sncmp),
	(char_class_string_extract), (_vte_trie_addx), (_vte_trie_add),
	(_vte_trie_matchx), (_vte_trie_match), (_vte_trie_printx),
	(_vte_trie_print), (convert_mbstowcs), (main):
	* src/vte-private.h:
	* src/vte.c: (vte_terminal_find_charcell),
	(_vte_row_data_find_charcell), (vte_terminal_emit_commit),
	(vte_terminal_match_clear_all), (vte_terminal_match_remove),
	(vte_terminal_match_add), (vte_terminal_match_set_cursor),
	(vte_terminal_match_check_internal), (vte_terminal_set_colors),
	(vte_terminal_emit_pending_text_signals),
	(vte_terminal_is_word_char), (vte_terminal_finalize),
	(vte_terminal_realize), (_vte_terminal_map_pango_color),
	(_vte_terminal_apply_pango_attr),
	(_vte_terminal_translate_pango_cells),
	(vte_terminal_set_scrollback_lines):
	* src/vteseq.c: (vte_sequence_handler_decset_internal):
		Fixup compiler warnings, mostly of the type mixing signed and
		unsigned compares and pointers.

2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>

	* src/vte.c: (mark_input_source_invalid),
	(_vte_terminal_connect_pty_read), (mark_output_source_invalid),
	(_vte_terminal_connect_pty_write):
		Use the GDestroyNotify to mark the source as invalid.
	* src/vte.c: (vte_terminal_ensure_font):
		Protect ensure fonts against the VteDraw being destroyed.
	* src/vte.c: (vte_terminal_realize):
	 	Reorder code to setup the style before the fonts.
	* src/vte.c: (vte_terminal_class_init):
		The ->show() handler was redundant.

2007-01-25  Behdad Esfahbod  <behdad@gnome.org>

	* src/vte.c (_vte_terminal_set_default_attributes),
	(_vte_invalidate_cells), (_vte_invalidate_all),
	(_vte_invalidate_cell), (_vte_invalidate_cursor_once),
	(vte_terminal_visibility_notify), (vte_terminal_handle_scroll):
	Replace most of checks for terminal->pvt->visibility_state ==
	GDK_VISIBILITY_FULLY_OBSCURED by terminal->pvt->invalidated_all, and
	adapt.

2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 400759 – update problem with vte trunk

	Otherwise known as the I can't count bug.

	The number of rows and columns to paint were not properly taking
	account of the discrete nature of the cells ie although the floor(x)
	moved the start to the left by one, the extra cell was not being added
	to the width.

	Also since the howmany() macro is pulled from <sys/param.h>, it can
	not be guarranteed to exist on all platforms. So in that case, provide
	a local copy.

	* src/vte.c: (vte_terminal_draw_area):
		Calculate the width as the distance between the explicity
		calculated start and end cells.

2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 400671 – crash in Terminal: detaching of tabs

	The fontdirty flag needed to be set on unrealize to ensure the fonts
	get set on the VteDraw should the terminal be realized again (e.g
	drag'n'dropping).

	* src/vte.c: (vte_terminal_unrealize):
		Set the fontdirty flag to TRUE.
	* src/vtexft.c: (_vte_xft_set_text_font),
	(_vte_xft_get_char_width), (_vte_xft_draw_text),
	(_vte_xft_draw_char):
		Add safe guards to avoid dereferencing a NULL font as it
		is possible for _vte_xft_font_open() to fail.

2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 399137 – UTF-8 problem in VteAccess

	Improve the UTF-8 string handling within vteaccess.c
	A long and fraught history to this apparently simple change.
	Many thanks to Joanmarie Diggs and Rich Burridge for testing the
	patches and ensuring they caused no regressions in the ally interface.

	* src/vteaccess.c: (emit_text_changed_insert),
	(emit_text_changed_delete):
		Use g_utf8_pointer_to_offset() rather than open coding.
	* src/vteaccess.c: (vte_terminal_accessible_text_modified):
		Convert the caret into a byte offset before performing the
		ASCII character lookup.
		Iterate backwards over the string using a g_utf8_prev_char,
		and g_utf8_get_char.

2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 400493 – Mouse selection seriously broken

	The rendering of non-text attributes, e.g highlight, backgrounds,
	underlines, was broken by the change to multi-row run of glyphs. This
	was most apparent when selecting regions with a mouse.

	* src/vte.c: (_vte_invalidate_cursor_once),
	(vte_terminal_extend_selection),
	(vte_terminal_draw_rows), (vte_terminal_draw_area),
	(vte_terminal_paint):
		Some janitorial work (a memleak, whitespace, improving debug
		messages, comments).
	* src/vte.c: (vte_terminal_draw_cells):
		Loop over cells and draw attributes for groups of cells on
		each row.

2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 400438 – _vte_invalidate_all triggered on GDK_VISIBILITY_UNOBSCURED

	* src/vte.c: (vte_terminal_visibility_notify):
		Only force an _vte_invalidate_all if we can trivially detect
		that we have switch from fully obscured to fully unobscured.
		Otherwise, we will just handle the GDK expose in the normal
		manner.
	* src/vte.c: (vte_terminal_expose):
		Check the event area to see if we can use _vte_invalidate_all,
		has a slight benefit of discarding further exposed area
		processing.
		

2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>

	GDK tries to coalesce multiple expose events into a single event.
	This is passed to the application as a large region containing
	multiple rectangles. The unfortunate effect of this is having
	broken the invalidated region into 2 small components for vim,
	the expose event was still operating on a single region covering
	both. The reason the effect was invisible to the eye is due to the
	double buffer - GDK generated a backing pixmap for the exposed event
	and only copied from the pixmap to the window exactly the pixels
	exposed. So we regenerated draw commands for the entire area, and
	only saved on the later blit.

	The improvement to this is only issue draw commands for the individual
	rectangles rather than the region as a whole.

	* src/vte.c: (vte_terminal_draw_area), (vte_terminal_paint),
	(vte_terminal_expose):
		Paint the exposed rectangles not the event clipbox!

2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>

	Print out the painted area for VTE_DEBUG_UPDATES.

	* src/vte.c: (vte_terminal_paint):

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	cf Bug 400072 – Handling of ; in control sequences

	Moral of the story: wait until the morning.
	Revert r1512, the mistaken attempt at parsing '\e[;30m'.

	* src/table.c: (_vte_table_addi), (_vte_table_matchi),
	(_vte_table_match):

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	cf Bug 399617 – Avoid memory allocations during an expose event.

	Currently we cannot generate long glyph runs due to the text
	painting being broken up into single rows and setting a low
	max run cap. The benefit of longer runs is the backends can
	do more caching within a run and potentially generate fewer
	render calls and/or less network traffic.

	In the simple test case, this increased the performance of a
	remote hexdump by 10%.

	* src/vte.c: (vte_terminal_draw_rows), (vte_terminal_paint):
		Scan entired exposed area for glyph runs.
	* src/vtedraw.h:
		Increase VTE_DRAW_MAX_LENGTH
	* src/vtexft.c: (_vte_xft_draw_text):
		Create GlyphSpecs rather than CharFontSpecs, saves a 
		conversion and potential malloc inside libXft, and our
		own malloc.

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 147495 – screen flicker when opening new terminal windows

	Last in a series of work to reduce extraneous redraws. I no longer
	see the flicker when opening a white terminal.

	* src/vte.c: (_vte_terminal_scroll_region):
		Detect when we can just invalidate all.
	* src/vte.c: (_vte_terminal_fork_basic):
		Don't force an unnecessary redraw.

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	* src/vte.c: (vte_terminal_set_emulation):
		Add a missing '\n' to the debug printerr.
	* src/vte.c: (vte_terminal_init):
		Initialize the row count to VTE_MIN_SCROLLBACK (was to 0
		first and then later within the same function to
		VTE_MIN_SCROLLBACK).

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 334755 – Incomplete information from vte_terminal_get_font

	In many situations the font_desc stored in the terminal is incomplete.
	_vte_fc_transcribe_from_pango_font_description() automagically fills
	in default values for the backends but this is hidden from the
	application. By filling in default values up front from the widget
	font description control is returned to the application and theme
	designers.

	Patch by Pedro de Medeiros.
	Also cf bug 335269.

	* src/vte.c: (vte_terminal_set_font_full):
		Pull default font description from widget.
	* src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description):
		Remove default values.

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
	actually revealed a faux-pas in the conversion of the public
	interfaces to GPid - that it broke the ABI.

	However, the intention is to remove the exposed pid_t, cf bug 400333.

	* python/vte.defs:
	* python/vte.override:
	* src/pty.c: (_vte_pty_open):
	* src/pty.h:
	* src/vte.c: (_vte_terminal_fork_basic), (vte_terminal_forkpty):
	* src/vte.h:
		Revert the exposed GPids back to pid_t.

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	==25123== Invalid read of size 1
	==25123==    at 0x4055992: vte_terminal_accessible_text_modified (vteaccess.c:497)
	==25123==    by 0x46A1248: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
	==25123==    by 0x4693EAA: g_closure_invoke (gclosure.c:490)
	==25123==    by 0x46A4972: signal_emit_unlocked_R (gsignal.c:2440)
	==25123==    by 0x46A5E96: g_signal_emit_valist (gsignal.c:2199)
	==25123==    by 0x46A85ED: g_signal_emit_by_name (gsignal.c:2267)
	==25123==    by 0x403E9E2: _vte_terminal_emit_text_inserted (vte.c:863)
	==25123==    by 0x40517EF: vte_terminal_process_incoming (vte.c:3032)
	==25123==    by 0x40522B5: update_repeat_timeout (vte.c:11332)

	* src/vteaccess.c: (vte_terminal_accessible_text_modified):
		Check that the caret is inside the old string before
		accessing.

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	Revert changes in conjunction with bug 399137 back to r1487,
	which contains Rich Burridge's fix for bug 397724.

	* src/vteaccess.c: (emit_text_changed_insert),
	(emit_text_changed_delete),
	(vte_terminal_accessible_text_modified):

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	* src/vteaccess.c: (vte_terminal_accessible_text_modified):
		Valgrind pointed out a couple of places where we tried to
		access before the start of the string.

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris

	Patch by Damien Carbery.

	* src/pty.h:
		Update prototype to match new definition.

2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>

	<mariano> hm, vte is not matching «ESC [ ; 7 m» :/

	* src/table.c: (_vte_table_addi), (_vte_table_matchi),
	(_vte_table_match):
		s/GList/GSList/
		g_slist_append -> g_slist_reverse(g_slist_prepend)
		And finally add the subtable to handle the leading ';'
		in the variable length parameters.

2007-01-23  Chris Wilson <chris@chris-wilson.co.uk>

	A couple of minor buggets.

	* src/iso2022.c: (_vte_iso2022_state_set_codeset):
		Use g_intern_string() instead of from_quark(to_quark(str))
	* src/vtepango.c: (_vte_pango_create), (_vte_pango_destroy),
	(_vte_pango_start), (_vte_pango_end), (_vte_pango_set_text_font):
		Use the widget pango context (we're guarranteed to have a
		screen by this point) and don't unref it!
		Inspired by Pedro de Medeiros in Bug 335269.

2007-01-23  Chris Wilson <chris@chris-wilson.co.uk>

	Regression on Bug 123591:
		mkdir /tmp/aa; cd /tmp/aa; bash; cd ..; rmdir aa
		Open a new tab in g-t -> Failure.	

	* src/pty.c: (_vte_pty_run_on_pty):
		Check the error return from g_spawn and try again with the
		pwd if it reports that the child could not change directory.

2007-01-23  Chris Wilson <chris@chris-wilson.co.uk>

	* src/pty.c: (_vte_pty_run_on_pty):
		Add all g_spawn parameters to VTE_DEBUG_MISC output.