2007-02-12 Behdad Esfahbod 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 * src/vte.c: (vte_terminal_extend_selection), (vte_terminal_motion_notify): Restore autoscroll behaviour. 2007-02-12 Chris Wilson * 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 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 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 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 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 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 * 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 * 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 * src/vte.c: (vte_terminal_get_text_range_maybe_wrapped): Reuse VteRowData whilst in the row. 2007-02-09 Chris Wilson 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 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 * src/vteapp.c: (main): whitespace 2007-02-08 Chris Wilson 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 * src/vteapp.c(main): do something useful with --geometry. 2007-02-08 Chris Wilson 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 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 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 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 * 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 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 * src/vteseq.c: (_vte_sequence_get_handler): Avoid the strlen when possible. 2007-02-07 Chris Wilson 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 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 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 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 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 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 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 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 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 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 * 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 * 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 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 * src/vte.c: (vte_terminal_draw_rows): Don't draw cell attributes across spaces. 2007-02-05 Chris Wilson * src/vte.c: (_vte_terminal_insert_char): A couple more G_LIKELYs. 2007-02-05 Chris Wilson 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 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 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 * src/table.c: (_vte_table_match): And kill the leak as vte_table_match erroneously cleared its output arguments. 2007-02-05 Chris Wilson 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 * src/ring.c: (_vte_ring_insert): Missed an important compiler warning. 2007-02-05 Chris Wilson 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 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 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 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 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 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 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 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 * 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 * configure.in: Missing space between -Wflags. 2007-02-04 Chris Wilson 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 * 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 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 Bug 322240 – Usage of pkg-config privates header * vte.pc.in: Move @FT2_LIBS@ to Libs.private. 2007-02-01 Chris Wilson 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 * perf/scroll.vim: Extract the bits the test needs out of debian.vim. 2007-02-01 Chris Wilson 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 Bug 403159 – XftDrawSetClipRectangles() silently fails on ppc->i386 * src/vtexft.c: (_vte_xft_clip): Precompute clip offsets. 2007-02-01 Chris Wilson 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 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 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 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 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 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 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 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 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 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 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 Rudimentary vim scrolling benchmark. * perf/Makefile.am: * perf/UTF-8-demo.txt: * perf/scroll.vim: * perf/vim.sh: 2007-01-30 Chris Wilson 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 * src/vte-private.h: * src/vte.c: (vte_terminal_io_read): Clean up the read IO loop. 2007-01-29 Chris Wilson 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 * src/vte.c: (_vte_terminal_set_pointer_visible), (_vte_terminal_fudge_pango_colors): Kill a couple more compiler warnings. 2007-01-29 Chris Wilson 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 Tighten the invalidated cells. * src/vte.c: (_vte_terminal_select_text): * src/vteseq.c: (vte_sequence_handler_cb): 2007-01-29 Chris Wilson 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 Detect availability of PCRE. * configure.in: * src/Makefile.am: 2007-01-29 Chris Wilson 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 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 * src/vte.c: (vte_terminal_draw_rows): Don't issue glyph items for blank cells. 2007-01-29 Chris Wilson * 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 * src/vteskel.c: Add the NULL clip func to the skeleton function table. 2007-01-29 Chris Wilson 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 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 * src/table.c: (_vte_table_free): Fix a memleak. 2007-01-29 Chris Wilson ==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 ==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 * 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 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 Fix compilation *with* debugging enabled. Grrr. * src/keymap.c: (_vte_keysym_print): 2007-01-27 Chris Wilson 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 * 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 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 * 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 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 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 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 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 * 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 * src/vtexft.c: (_vte_xft_set_text_font): Remove the additional pixel inter-character spacing. Compactness over clarity ;) 2007-01-26 Chris Wilson 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 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 * 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 * 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 * 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 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 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 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 * 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 * 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 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 , 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 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 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 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 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 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 Print out the painted area for VTE_DEBUG_UPDATES. * src/vte.c: (vte_terminal_paint): 2007-01-24 Chris Wilson 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 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 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 * 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 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 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 ==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 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 * 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 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 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 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 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 * src/pty.c: (_vte_pty_run_on_pty): Add all g_spawn parameters to VTE_DEBUG_MISC output.