Move libtool versioning to configure so you just have to update one file
[vte.git] / ChangeLog
1 2007-06-21  Christian Persch  <chpe@gnome.org>
2
3         * configure.in:
4         * src/Makefile.am: Move libtool versioning to configure so you just
5         have to update one file for releasing. See bug #396265 comment 17.
6
7 2007-06-18  Behdad Esfahbod  <behdad@gnome.org>
8
9         Released vte-0.16.6.
10
11         * NEWS: Updated.
12
13         * configure.in: Bumped version to 0.16.6.
14
15         * src/Makefile.am: Bumped libtool version to 11:10:2.
16
17 2007-06-12  Chris Wilson  <chris@chris-wilson.co.uk>
18
19         * src/vte.c (vte_terminal_set_size): Call gtk_widget_queue_resize()
20         after updating row/column count.
21
22 2007-06-11  Behdad Esfahbod  <behdad@gnome.org>
23
24         Bug 372743 – vte_terminal_set_colors doesn't work as advertised
25
26         * src/vte.c (vte_terminal_set_colors): Allow 24-color palettes.
27
28 2007-06-09  Behdad Esfahbod  <behdad@gnome.org>
29
30         Bug 445620 – Some characters shows different in different locales.
31         Patch from Zealot
32
33         * src/iso2022.c (_vte_iso2022_state_set_codeset): Update ambiguous
34         width.
35
36 2007-06-04  Behdad Esfahbod  <behdad@gnome.org>
37
38         Released vte-0.16.5.
39
40         * NEWS: Updated.
41
42         * configure.in: Bumped version to 0.16.5.
43
44         * src/Makefile.am: Bumped libtool version to 11:9:2.
45
46 2007-05-30  Chris Wilson  <chris@chris-wilson.co.uk>
47
48         fcrozat pointed out 'some strange "underline" line where cursor is
49         located and blinking'.
50
51         Also reported in bug 442688.
52
53         * src/vte.c (vte_terminal_draw_rows):
54             Continuation of the previous commit: catch a couple more locations
55             where we need to skip past the end of the line. The problem in
56             this case was we tried to use some uninitialised variables whilst
57             trying to draw the cell attributes.
58
59 2007-05-28  Behdad Esfahbod  <behdad@gnome.org>
60
61         Released vte-0.16.4.
62
63         * NEWS: Updated.
64
65         * configure.in: Bumped version to 0.16.4.
66
67         * src/Makefile.am: Bumped libtool version to 11:8:2.
68
69 2007-05-28  Chris Wilson  <chris@chris-wilson.co.uk>
70
71         uws noted on IRC that 'vte trunk does strange thingies with colors'
72
73         * src/vte.c (vte_terminal_draw_rows):
74             When reaching the end-of-row be careful not to reset the
75             current text attributes (color, underlining, etc).
76
77 2007-05-25  Chris Wilson  <chris@chris-wilson.co.uk>
78
79         * src/vte.c (vte_terminal_expand_region),
80         (vte_terminal_paint_area):
81             Only add the borders to the clear area.
82
83 2007-05-23  Chris Wilson  <chris@chris-wilson.co.uk>
84
85         Bug 429278 – Cursor drawn strangely in joe
86
87         * src/vte.c (vte_terminal_expand_region),
88         (vte_terminal_paint_area):
89             Ensure the expanded regions are cell aligned.
90
91 2007-05-23  Chris Wilson  <chris@chris-wilson.co.uk>
92
93         cf Bug 439247 – scrolling vim in full screen is painfully slow and takes up 100% of the cpu
94
95         * src/vte.c (vte_terminal_draw_rows):
96             Fix up the unwanted break of Glyph runs at the end-of-lines.
97
98 2007-05-23  Chris Wilson  <chris@chris-wilson.co.uk>
99
100         Bug 440475 – Display glitch with transparent backgroud
101
102         * src/vte.c (vte_terminal_paint_area):
103             Apply the band-aid fix to clear the area that's about to be
104             repainted. The full solution will to be ensure that the regions
105             after expansion are cell-aligned.
106
107 2007-05-22  Chris Wilson  <chris@chris-wilson.co.uk>
108
109         Bug 375112 – ctrl-key combinations yielding just key
110         Original patch by <samo@altern.org> and refactored by Loïc Minier.
111
112         * src/vte.c (vte_translate_national_ctrlkeys),
113         (vte_terminal_key_press):
114             When cooking a string to pass through to the client obtain the
115             "raw" keyval.
116
117 2007-05-22  Chris Wilson  <chris@chris-wilson.co.uk>
118
119         Bug 440377 – gnome-terminal cannot refresh terminal when accessibility enabled
120         Original patch by Li Yuan.
121
122         * src/vteaccess.c (vte_terminal_accessible_focus_in),
123         (vte_terminal_accessible_focus_out),
124         (vte_terminal_accessible_visibility_notify):
125             Return FALSE rather than void...
126
127 2007-05-17  Chris Wilson  <chris@chris-wilson.co.uk>
128
129         * perf/scroll.vim:
130         * perf/vim.sh:
131             Measure full screen scrolling performance.
132
133 2007-05-15  Chris Wilson  <chris@chris-wilson.co.uk>
134
135         kmaraas reported an issue on IRC where the scrollback was not being
136         updated correctly in the first tab when the terminal was resized via
137         a second tab.
138
139         * src/vte.c (vte_terminal_size_allocate): Check whether we need to
140         recompute the visible lines due to a change in layout geometry.
141
142 2007-04-27  Chris Wilson  <chris@chris-wilson.co.uk>
143
144         Bug 433776 – gnome-terminal crashes when open preedit area
145         Take 2.
146
147         * src/vte.c (vte_terminal_paint): The preedit_cursor is returned by
148         the input modules in characters not in bytes as assumed by the
149         validation.
150
151 2007-04-27  Chris Wilson  <chris@chris-wilson.co.uk>
152
153         Bug 433776 – gnome-terminal crashes when open preedit area
154
155         * src/vte.c (vte_terminal_paint): Use the validated cursor index.
156
157 2007-04-27  Behdad Esfahbod  <behdad@gnome.org>
158
159         Released vte-0.16.3.
160
161         * NEWS: Updated.
162
163         * configure.in: Bumped version to 0.16.3.
164
165         * src/Makefile.am: Bumped libtool version to 11:7:2.
166
167 2007-04-24  Chris Wilson  <chris@chris-wilson.co.uk>
168
169         Bug 429189 – Vte-WARNING's
170
171         * src/vtexft.c (_vte_xft_open_font_for_char):
172                 Convert the warning into a DEBUG.
173
174 2007-04-24  Chris Wilson  <chris@chris-wilson.co.uk>
175
176         Bug 415044 – Use --enable-debug rather than --enable-debugging
177
178         As noted on Bug 414716, the convention is to use --enable-debug
179         to enable extra debugging code.
180
181         * configure.in:
182                 s/debugging/debug/
183
184 2007-04-24  Chris Wilson  <chris@chris-wilson.co.uk>
185
186         Bug 414716 – Refresh issue after changing workspaces
187
188         * src/vte.c (vte_terminal_hierarchy_changed):
189                 Do not respond to toplevel mapping events.
190
191 2007-04-23  Behdad Esfahbod  <behdad@gnome.org>
192
193         Released vte-0.16.2.
194
195         * NEWS: Updated.
196
197         * configure.in: Bumped version to 0.16.2.
198
199         * src/Makefile.am: Bumped libtool version to 11:6:2.
200
201 2007-04-23  Chris Wilson <chris@chris-wilson.co.uk>
202
203         Bug 431799 – Regex highlighting is broken
204
205         * src/vte.c (vte_terminal_emit_contents_changed),
206         (vte_terminal_match_hilite_update), (process_timeout),
207         (update_repeat_timeout), (update_timeout):
208                 Always emit any pending updates before redrawing. This
209                 ensures for example that the match contents are updated
210                 after a simple scroll event.
211
212 2007-04-20  Chris Wilson  <chris@chris-wilson.co.uk>
213
214         * src/vtexft.c (_vte_xft_start), (_vte_xft_clip):
215                 Optimise away the use of a clip mask for the common case
216                 of redrawing the whole terminal.
217
218 2007-04-17  Behdad Esfahbod  <behdad@gnome.org>
219
220         * src/iso2022.c (_vte_iso2022_ambiguous_width): Consider
221         ambiguous-width chars if VTE_CJK_WIDTH env var is set and we are
222         under a CJK locale.
223
224 2007-03-12  Behdad Esfahbod  <behdad@gnome.org>
225
226         Released vte-0.16.1.
227
228         * NEWS: Updated.
229
230         * configure.in: Bumped version to 0.16.1.
231
232         * src/Makefile.am: Bumped libtool version to 11:5:2.
233
234 2007-04-06  Chris Wilson  <chris@chris-wilson.co.uk>
235
236         Bug 426870 – vte often passes NUL to functions requiring valid unichar
237
238         * src/vte.c (_vte_invalidate_cell), (_vte_invalidate_cursor_once),
239         (vte_terminal_paint):
240                 Consistently guard against cell->c == '\0' before calling
241                 _vte_draw_get_char_width.
242
243 2007-04-06  Chris Wilson  <chris@chris-wilson.co.uk>
244
245         Bug 419644 – Links do not get highlighted anymore
246         Also see Bug 404757 – URL matching doesn't work with PCRE
247
248         * configure.in:
249                 Kill --with-pcre as it changes the semantics of the API
250                 and only causes confusion.
251
252 2007-04-05  Chris Wilson  <chris@chris-wilson.co.uk>
253
254         Bug 426541 – crash on IRM escape code
255
256         * src/vte.c (vte_terminal_ensure_cursor),
257         (_vte_terminal_insert_char):
258                 Mishandled insertion - we always extended the row for
259                 inserts even though the row would automagically extend
260                 for the inserted cells. This lead to referencing
261                 uninitialised cells at the end of the row during painting.
262         * src/vte.c (vte_terminal_draw_rows):
263                 Retrieve the cell before inspecting it.
264
265 2007-04-04  Chris Wilson  <chris@chris-wilson.co.uk>
266
267         Bug 424184 – Make scroll wheel send Page Up/Down when it makes sense
268
269         Original patch by Shaun McCance and refined by Baris Cicek.
270
271         * src/vte.c (vte_terminal_scroll):
272                 Send cursor keypress instead of trying to scroll the
273                 alternate screen in vain.
274
275 2007-04-03  Chris Wilson  <chris@chris-wilson.co.uk>
276
277         Bug 425767 – vte_terminal_set_color_highlight should test for
278         NULL before _vte_debug_print
279
280         * src/vte.c (vte_terminal_set_color_cursor),
281         (vte_terminal_set_color_highlight):
282                 Differentiate between set/unset paths.
283
284 2007-03-25  Chris Wilson <chris@chris-wilson.co.uk>
285
286         Bug 422385 – vte appears at the top of the root window even when
287         packed at the bottom of it
288
289         Patch by Dodji Seketeli.
290
291         * src/vte.c (vte_terminal_size_allocate), (vte_terminal_realize):
292                 Honour the allocated position when realizing the widget.
293
294 2007-03-22  Chris Wilson  <chris@chris-wilson.co.uk>
295
296         * src/vtexft.c (_vte_xft_draw_text):
297                 Insert spaces into the Xft glyph stream to avoid the
298                 overhead of restarting a glyph sequence for every word.
299
300 2007-03-21  Chris Wilson  <chris@chris-wilson.co.uk>
301
302         Bug 420935 – glyph can be cropped with not fitting in a cell
303
304         * src/vte.c (vte_terminal_paint):
305                 Don't redraw the invisible cursor 
306                 - avoids nasty artifacts like clipping extra wide glyphs.
307
308 2007-03-19  Chris Wilson  <chris@chris-wilson.co.uk>
309
310         * src/vte.c (vte_terminal_scroll_pages):
311                 Leave 'contents-change' to the scroll handler.
312
313 2007-03-19  Chris Wilson  <chris@chris-wilson.co.uk>
314
315         * src/vte.c (vte_terminal_extend_selection),
316         (vte_terminal_draw_rows):
317                 Accidentally inverted an is-empty? check during the 
318                 elimination of the empty bitfield.
319
320 2007-03-19  Chris Wilson  <chris@chris-wilson.co.uk>
321
322         Bug 420067 – Does not handle expose events whilst processing
323         unseen incoming data
324
325         * src/vte.c (vte_terminal_expose):
326                 Handle the expose immediately if we are only processing
327                 incoming data (ie no redraws pending).
328
329 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
330
331         * src/vteseq.c (vte_sequence_handler_cursor_character_absolute):
332                 Remove a chunk of code that was tried as a mutt band-aid
333                 long ago and was completely wrong.
334
335 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
336
337         Bug 415381 – Improve performance of vte_terminal_insert_char()
338
339         The bulk of the work to remove redundant reads and conditionals
340         from the code. In particular, gcc was emitting bit-by-bit copies
341         for transferring the bitfield since we modified a member immediately
342         afterwards - overcome this by using an explicit memcpy of the
343         bitfields.
344
345         * src/vte-private.h:
346         * src/vte.c (vte_g_array_fill), (vte_terminal_ensure_cursor),
347         (_vte_terminal_insert_char), (vte_terminal_process_incoming),
348         (vte_terminal_send):
349         * src/vteseq.c (vte_sequence_handler_ic):
350
351 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
352
353         cf Bug 415381 – Improve performance of vte_terminal_insert_char()
354
355         * src/vte-private.h: Use a simple boolean rather than counter for
356         text changed style flags.
357         * src/vte.c: And update users.
358         * src/vteseq.c:
359
360 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
361
362         cf Bug 415381 – Improve performance of vte_terminal_insert_char()
363
364         * src/vte-private.h: Embed bitfield into struct
365         * src/vte.c:  And update users.
366         * src/vteseq.c:
367
368 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
369
370         Need to trigger update timeout rather than process timeout
371         otherwise the background is not updated.
372
373         * src/vte.c (vte_terminal_queue_adjustment_changed),
374         (vte_terminal_queue_adjustment_value_changed):
375
376 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
377
378         * src/vtexft.c (_vte_xft_create), (_vte_xft_destroy),
379         (_vte_xft_start), (_vte_xft_end), (_vte_xft_clip),
380         (_vte_xft_clear): Avoid some allocations.
381
382 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
383
384         Bug 418073 – Opacity ignored for vtexft
385
386         * src/vte.c:
387         * src/vtedraw.c (_vte_draw_requires_clear):
388         * src/vtedraw.h:
389         * src/vteft2.c (_vte_ft2_set_background_image):
390         * src/vtegl.c (_vte_gl_create), (_vte_gl_set_background_image):
391         * src/vtepango.c (_vte_pango_set_background_image):
392         * src/vtepangox.c (_vte_pango_x_set_background_image):
393         * src/vtexft.c (_vte_xft_set_background_color),
394         (_vte_xft_set_background_image):
395                 Flood fill the backing pixmap if we need to change it's
396                 opacity as well.
397
398 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
399
400         Bug 418910 – Asymmetric scrolling with mouse wheel
401
402         * configure.in:
403         * src/vte.c: Round-up the delta before applying to ensure consistency
404         between up and down.
405
406 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
407
408         * src/vte.c (vte_terminal_catch_child_exited), (vte_terminal_eof),
409         (vte_terminal_process_incoming): Refactor some common code.
410
411 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
412
413         Bug 416634 – Rendering glitch as autowrapped chars are outside invalidated bbox
414
415         * src/vte.c (_vte_terminal_insert_char),
416         (vte_terminal_process_incoming): Correctly update bbox after
417         autowrapping.
418
419 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
420
421         Bug 416635 – Rendering glitch: double draw of line below exposed region
422
423         * src/vte.c (vte_terminal_expand_region),
424         (vte_terminal_paint_area): Kill a couple of off-by-ones.
425
426 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
427
428         Bug 418588 – Invalid read when drawing preedit cursor
429
430         * src/vte.c (vte_terminal_paint):
431                 No need to read what is drawn and furthermore isn't allocated.
432
433 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
434
435         Bug 417652 – Scrolling bug exposed by nvi
436
437         * src/vte.c (vte_terminal_insert_rows), (_vte_terminal_ensure_row),
438         (vte_terminal_ensure_cursor), (_vte_terminal_update_insert_delta):
439                 Ensure the rows before updating the insert delta and refactor
440                 the common code.
441
442 2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
443
444         Bug 417301 – Terminal widgets don't respond to DPI changes
445
446         * src/vte.c (vte_terminal_fc_settings_changed): Force a font reload
447         after XFT settings have changed.
448
449 2007-03-12  Behdad Esfahbod  <behdad@gnome.org>
450
451         Released vte-0.16.0.
452
453         * NEWS: Updated.
454
455         * configure.in: Bumped version to 0.16.0.
456
457         * src/Makefile.am: Bumped libtool version to 11:4:2.
458
459 2007-03-06  Chris Wilson  <chris@chris-wilson.co.uk>
460
461         * src/vteseq.c (vte_sequence_handler_cm), (vte_sequence_handler_sf):
462                 More work to match mutt's behaviour under xterm.
463
464 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
465
466         * src/vte.c (vte_terminal_io_read):
467                 Use the process estimate to load balance between multiple
468                 active terminals.
469
470 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
471
472         * src/vteseq.c (vte_sequence_handler_cm),
473         (vte_sequence_handler_dc), (vte_sequence_handler_sf),
474         (vte_sequence_handler_cursor_character_absolute):
475                 Tweak the fill of painted cells to match mutt's behaviour
476                 under xterm.
477
478 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
479
480         Bug 414716 – gnome-terminal-2.17.92: terminal window dies...
481
482         * src/vte.c (vte_terminal_map_toplevel),
483         (vte_terminal_hierarchy_changed):
484                 Force the visibility state to unobscured after the toplevel is
485                 remapped.
486
487 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
488
489         * src/vte.c (vte_terminal_size_allocate):
490                 Note to self: Never try to optimize away the redraw.
491
492 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
493
494         * src/vte.c (_vte_terminal_insert_char):
495         * src/vtedraw.c (_vte_draw_text), (_vte_draw_char),
496         (_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle):
497                 Touch up whitespace in debug output.
498
499 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
500
501         * src/vte.c (_vte_invalidate_cells), (vte_terminal_set_visibility),
502         (vte_terminal_paint_area), (vte_terminal_expose):
503                 Make sure the invalidated_all flag is cleared in the expose
504                 event if we handle it immediately.
505
506 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
507
508         * src/vteseq.c (vte_sequence_handler_ce),
509         (vte_sequence_handler_clear_current_line):
510                 Fixup invalidation to end-of-line.
511
512 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
513
514         cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
515
516         * src/vte.c (vte_terminal_draw_rows), (vte_terminal_expand_region):
517                 Include the window padding when painting the cell backgrounds.
518
519 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
520
521         Bug 414586 – Terminal screen blinks when menu is opened for the first time
522
523         Avoid resetting the window background colour when the style is reset.
524         Avoid clearing the window if we are using a simple color and double
525         bufferring (i.e when we know we are using a pre-cleared pixmap).
526
527         * src/vte-private.h:
528         * src/vte.c (vte_terminal_init), (vte_terminal_size_allocate),
529         (vte_terminal_unrealize), (vte_terminal_realize),
530         (vte_terminal_paint_area), (vte_terminal_expose),
531         (vte_terminal_class_init), (vte_terminal_background_update):
532         * src/vtedraw.c (_vte_draw_has_background_image):
533         * src/vtedraw.h:
534         * src/vteft2.c (_vte_ft2_set_background_image):
535         * src/vtegl.c (_vte_gl_set_background_image):
536         * src/vtepango.c (_vte_pango_set_background_image):
537         * src/vtepangox.c (_vte_pango_x_set_background_image):
538         * src/vtexft.c (_vte_xft_set_background_image):
539
540 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
541
542         Bug 414586 – Terminal screen blinks when menu is opened for the first time
543
544         * src/vte.c (_vte_invalidate_cells), (_vte_invalidate_all),
545         (vte_terminal_expose), (add_update_timeout):
546                 Juggle the handling of external exposes/invalidates to avoid
547                 delays in refreshing the display when we are idle.
548
549 2007-03-05  Chris Wilson  <chris@chris-wilson.co.uk>
550
551         cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
552
553         * src/vte.c (_vte_invalidate_cells), (vte_terminal_init),
554         (vte_terminal_expand_region), (vte_terminal_paint_area):
555                 After enlarging the expand region make sure the dirty area
556                 includes the border for edge cells.
557
558 2007-03-04  Chris Wilson  <chris@chris-wilson.co.uk>
559
560         cf Bug 414586 – Terminal screen blinks when menu is opened for the first time
561
562         Distinguish between internal update requests and external. If we
563         need to update due to a user action (such as adjusting the background
564         or color palette) do not impose a futher delay.
565
566         Tidy the color palette modification code to not trigger invalidates if
567         we do not actually modify the palette.
568
569         * src/vte-private.h:
570         * src/vte.c (vte_terminal_set_color_internal),
571         (vte_terminal_set_color_bold), (vte_terminal_set_color_dim),
572         (vte_terminal_set_color_foreground),
573         (vte_terminal_set_color_background),
574         (vte_terminal_set_color_cursor),
575         (vte_terminal_set_color_highlight), (vte_terminal_set_colors),
576         (root_pixmap_changed_cb), (vte_terminal_set_background_saturation),
577         (vte_terminal_set_background_tint_color), (add_update_timeout):
578         * src/vteseq.c (vte_sequence_handler_ce),
579         (vte_sequence_handler_clear_current_line),
580         (vte_sequence_handler_clear_above_current):
581
582 2007-03-02  Chris Wilson  <chris@chris-wilson.co.uk>
583
584         Bug 413068 – new line added to tab when opened
585
586         * src/vte.c (vte_terminal_size_allocate):
587                 Replace the ill-conceived attempt (delta could not be
588                 negative, so insert_delta or scroll_delta would not become
589                 negative either) by only considering changes wrt to the number
590                 of visible lines.
591
592 2007-03-02  Chris Wilson  <chris@chris-wilson.co.uk>
593
594         Bug 413068 – new line added to tab when opened
595
596         * src/vte.c (_vte_terminal_insert_char):
597                 Improve debug output.
598         * src/vte.c (vte_terminal_size_allocate):
599                 Be careful that we don't force insert_delta or scroll_delta
600                 to become negative.
601
602 2007-03-01  Behdad Esfahbod  <behdad@gnome.org>
603
604         Released vte-0.15.6.
605
606         * NEWS: Updated.
607
608         * configure.in: Bumped version to 0.15.6.
609
610         * src/Makefile.am: Bumped libtool version to 11:3:2.
611
612 2007-03-01  Chris Wilson  <chris@chris-wilson.co.uk>
613
614         * src/vte.c (vte_terminal_draw_cells), (vte_terminal_draw_rows),
615         (vte_terminal_paint):
616                 Tweak the clear widths to include the pixel widening due to
617                 psuedo-bold.
618
619 2007-03-01  Chris Wilson  <chris@chris-wilson.co.uk>
620
621         * src/vte-private.h:
622         * src/vte.c (_vte_terminal_ensure_row),
623         (vte_terminal_ensure_cursor), (_vte_terminal_insert_char):
624         * src/vteseq.c (vte_sequence_handler_ta):
625                 Be more careful when filling in gaps.
626
627 2007-03-01  Chris Wilson  <chris@chris-wilson.co.uk>
628
629         Fix X11 headers / libraries detection on bi-arch systems.
630         Patch by Frederic Crozat.
631
632         * configure.in:
633                 Check for x_includes before ac_x_includes, and similary for
634                 ac_x_libraries.
635
636 2007-03-01  Chris Wilson  <chris@chris-wilson.co.uk>
637
638         Bug 410534 – Slow content scrolling, takes 100% of CPU.
639
640         * src/vtexft.c:
641                 Further reduce the cap to 80 after more testing on the
642                 broken fglrx driver.
643
644 2007-02-28  Chris Wilson  <chris@chris-wilson.co.uk>
645
646         Bug 413068 – new line added to tab when opened
647
648         * src/vte.c (vte_terminal_ensure_font), (vte_terminal_realize):
649                 Beware when no font is set before the first request...
650                 Make sure that at least the default font is set.
651
652 2007-02-28  Chris Wilson  <chris@chris-wilson.co.uk>
653
654         Bug 413262 – Incorrectly coloured tabs
655
656         * src/vte-private.h:
657         * src/vte.c (vte_terminal_ensure_cursor),
658         (_vte_terminal_ensure_cursor), (_vte_terminal_insert_char),
659         (_vte_terminal_feed_chunks), (vte_terminal_set_scrollback_lines):
660         * src/vteseq.c (vte_sequence_handler_ta),
661         (vte_sequence_handler_request_terminal_parameters),
662         (vte_sequence_handler_return_terminal_status),
663         (vte_sequence_handler_send_primary_device_attributes):
664                 Fill the tab in the current color, else it will be filled at
665                 the time of writing the next character.
666
667 2007-02-28  Chris Wilson  <chris@chris-wilson.co.uk>
668
669         Bug 413102 – Incorrect highlighting in vim
670
671         * src/vte-private.h:
672         * src/vte.c (_vte_terminal_ensure_row),
673         (_vte_terminal_insert_char):
674         * src/vteseq.c(vte_sequence_handler_cb),
675         (vte_sequence_handler_ce), (vte_sequence_handler_cr),
676         (vte_sequence_handler_ec), (vte_sequence_handler_sf):
677                 Paint the row background when scrolling, this more closely
678                 matches xterm's behaviour.
679
680 2007-02-28  Chris Wilson  <chris@chris-wilson.co.uk>
681
682         Bug 413158 – Cursor trails
683
684         * src/vte.c (_vte_invalidate_cell):
685                 _vte_invalidate_cell() can be called to invalidate any visible
686                 cell so issue the invalidate even for blank cells.
687
688 2007-02-28  Chris Wilson  <chris@chris-wilson.co.uk>
689
690         * src/vte.c (_vte_terminal_insert_char):
691                 Correct the OBO in the number of columns ensured.
692
693 2007-02-28  Chris Wilson  <chris@chris-wilson.co.uk>
694
695         Bug 413078 – Crash during opening a new tab whilst scrolling
696         
697         During input processing it was possible to both remove the timeout and
698         then add a new one. The currently running timeout would believe that
699         it was to continue since the terminal was still active, and so *two*
700         timeouts would be scheduled. Occasionally the second timeout would be
701         called after the first had finished all the work, resulting in the
702         second timeout trying to access a NULL active_terminal list.
703
704         * src/vte.c (add_update_timeout), (remove_from_active_list),
705         (vte_terminal_add_process_timeout), (need_processing),
706         (process_timeout), (update_repeat_timeout), (update_timeout):
707                 Watch for recursive g_source_remove() from within timeouts.
708
709 2007-02-28  Chris Wilson  <chris@chris-wilson.co.uk>
710
711         Bug 410534 – Slow content scrolling, takes 100% of CPU.
712
713         Submitting long glyph runs was causing a dramatic (10x) slow down
714         in the fglrx xserver.
715
716         * src/vtedraw.h:
717         * src/vtexft.c(_vte_xft_draw_text):
718                 Cap the max glyph run length to 300.
719
720 2007-02-28  Chris Wilson  <chris@chris-wilson.co.uk>
721
722         Bug 412717 – Crash when opening a new tab with window maximized
723
724         * src/vte.c (vte_terminal_size_allocate):
725                 We didn't carefully check the values we were clamping the
726                 cursor to and ended up setting it to -1...  Don't do that!
727
728 2007-02-27  Chris Wilson  <chris@chris-wilson.co.uk>
729
730         * src/vteaccess.c (vte_terminal_accessible_text_scrolled):
731                 Consistently guard against the snapshot being NULL.
732
733 2007-02-27  Behdad Esfahbod  <behdad@gnome.org>
734
735         Released vte-0.15.5.
736
737         * NEWS: Updated.
738
739         * configure.in: Bumped version to 0.15.5.
740
741         * src/Makefile.am: Bumped libtool version to 11:2:2.
742
743 2007-02-27  Chris Wilson  <chris@chris-wilson.co.uk>
744
745         Bug 412562 – Crash in vte_terminal_match_hilite_update
746
747         * src/vte.c (vte_terminal_match_check_internal),
748         (vte_terminal_process_incoming), (_vte_terminal_feed_chunks),
749         (vte_terminal_paste_cb), (vte_terminal_match_hilite_update),
750         (vte_terminal_copy_cb):
751                 Fixup a few 64bit-isms, notably format strings and an
752                 undesired unsigned integer promotion causing this crash.
753
754 2007-02-27  Chris Wilson  <chris@chris-wilson.co.uk>
755
756         Bug 410986 – Fails to build with -z defs
757
758         If you link the vtemodule.so to libpython, then programs importing
759         vte will have the symbols twice in memory: one set from python and
760         the other from libpython.
761
762         * configure.in:
763         * python/Makefile.am:
764                 Remove PYTHON_LIBS from linking vtemodule.so.
765                 Convert unresolved symbol errors into warnings so that
766                 building with -Wl,-z,defs continues to work. This is a 
767                 *hack* as it hides real errors if you are updating
768                 vte.{def,override}.
769                 
770 2007-02-27  Chris Wilson  <chris@chris-wilson.co.uk>
771
772         * src/vtexft.c  (_vte_xft_open_font_for_char),
773         (_vte_xft_font_for_char), (_vte_xft_compute_char_width),
774         (_vte_xft_char_width), (_vte_xft_start), (_vte_xft_get_char_width),
775         (_vte_xft_draw_text):
776                 Avoid some computations whilst drawing text.
777
778 2007-02-26  Behdad Esfahbod  <behdad@gnome.org>
779
780         Released vte-0.15.4.
781
782         * NEWS: Updated.
783
784         * configure.in: Bumped version to 0.15.4.
785
786         * src/Makefile.am: Bumped libtool version to 11:1:2.
787
788 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
789
790         Bug 410986 – Fails to build with -z defs
791
792         The forgotten half - the python module also fails to link.
793
794         * acinclude.m4:
795         * python/Makefile.am:
796                 Add PYTHON_LIBS pointing to the customary location and
797                 remember to include them when compiling vtemodule.so.
798
799 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
800
801         Bug 412361 – Yet another mouse selection regression...
802         Part 2.
803
804         * src/vte.c: (vte_terminal_queue_adjustment_value_changed),
805         (_vte_terminal_adjust_adjustments_full),
806         (vte_terminal_scroll_pages), (vte_terminal_autoscroll),
807         (vte_terminal_size_allocate), (vte_terminal_scroll):
808                 We implicitly used a bit of sanity checking when setting the
809                 adjustment value. Ensure the value really is within the
810                 adjustment range before updating scroll_delta.
811
812 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
813
814         Bug 412361 – Yet another mouse selection regression...
815         Part 1.
816
817         * src/vte.c: (vte_terminal_draw_rows):
818                 Restore drawing of the selection below the text.
819
820 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
821
822         * src/vte.c: (vte_terminal_class_init), (time_process_incoming),
823         (process_timeout), (update_repeat_timeout), (update_timeout):
824                 Update max number of processable bytes each time we call
825                 vte_terminal_process_incoming().
826
827 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
828
829         * src/vte.c: (vte_terminal_emit_adjustment_changed),
830         (_vte_terminal_adjust_adjustments_full):
831                 Refactor the common code.
832
833 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
834
835         Push a couple of NULL checks to the callers so to be able to move them
836         outside of the inner-most loops.
837
838         * src/vte.c: (_vte_row_data_find_charcell), (_vte_invalidate_cell),
839         (_vte_terminal_adjust_adjustments),
840         (vte_terminal_get_text_range_maybe_wrapped), (find_start_column),
841         (find_end_column), (vte_terminal_draw_rows):
842
843 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
844
845         Some applications, such as cat, dump as much data to the terminal as
846         possible. In these scenarios it is likely that we will read data from
847         the child much faster than we can process it and the refresh will
848         stutter.
849
850         The ideal solution would be to speed up the data processing so that
851         this overrun was impossible. However, the approach taken here is to
852         estimate how much data we can actually process in our time slice and
853         to stop reading once we have sufficient data.
854
855         * src/vte-private.h:
856         * src/vte.c: (_vte_invalidate_all),
857         (vte_terminal_emit_contents_changed),
858         (vte_terminal_match_contents_clear),
859         (vte_terminal_match_contents_refresh),
860         (vte_terminal_emit_adjustment_changed),
861         (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
862         (vte_terminal_catch_child_exited), (vte_terminal_eof),
863         (vte_terminal_process_incoming), (vte_terminal_io_read),
864         (vte_terminal_handle_scroll), (vte_terminal_init),
865         (vte_terminal_size_allocate), (need_processing), (process_timeout),
866         (update_repeat_timeout), (update_timeout):
867         * src/vteseq.c: (vte_sequence_handler_decset_internal):
868
869 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
870
871         Bug 411000 – Orca repeats old text in gnome-terminal
872
873         The deferred handling of the window scrolling had the unfortunate
874         side-effect of postponing the accessibility 'text-scrolled' signal
875         until after the 'text-inserted' signal. This caused vteaccess to
876         determine that the whole window had been modified and cause orca to
877         reread the entire screen.
878
879         * src/vte-private.h:
880         * src/vte.c: (vte_terminal_emit_contents_changed),
881         (_vte_terminal_queue_contents_changed),
882         (vte_terminal_emit_cursor_moved),
883         (vte_terminal_queue_cursor_moved), (vte_terminal_scroll_pages),
884         (vte_terminal_eof), (vte_terminal_emit_pending_text_signals),
885         (vte_terminal_process_incoming), (vte_terminal_handle_scroll),
886         (vte_terminal_size_allocate), (vte_terminal_unrealize),
887         (vte_terminal_emit_pending_signals):
888         * src/vteaccess.c: (emit_text_caret_moved),
889         (emit_text_changed_insert), (emit_text_changed_delete):
890         * src/vteseq.c: (vte_sequence_handler_decset_internal):
891                 Restore the order of the ally signals. However, Bug 372777
892                 remains unresolved.
893
894 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
895
896         * src/vte.c: (vte_terminal_io_read):
897                 Eeek, correctly compute the buffer length when we no longer
898                 aim to fill it.
899
900 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
901
902         Use a separate debug flag for the ally interface.
903
904         * src/debug.c: (_vte_debug_parse_string):
905         * src/debug.h:
906         * src/vteaccess.c:
907         (vte_terminal_accessible_update_private_data_if_needed),
908         (vte_terminal_accessible_invalidate_cursor),
909         (vte_terminal_accessible_finalize),
910         (vte_terminal_accessible_get_text),
911         (vte_terminal_accessible_get_text_somewhere),
912         (vte_terminal_accessible_text_init),
913         (vte_terminal_accessible_component_init),
914         (vte_terminal_accessible_action_init),
915         (vte_terminal_accessible_factory_new):
916
917 2007-02-26  Chris Wilson  <chris@chris-wilson.co.uk>
918
919         * src/vte-private.h:
920         * src/vte.c: (vte_terminal_io_read):
921                 And finally clamp the maximum number of bytes transferred in
922                 a single chunk.
923
924 2007-02-24  Chris Wilson  <chris@chris-wilson.co.uk>
925
926         * src/vte.c:
927                 Hint that the compiler should inline
928                 vte_terminal_determine_colors().
929
930 2007-02-24  Chris Wilson  <chris@chris-wilson.co.uk>
931
932         cf Bug 410534 – Slow content scrolling, takes 100% of CPU.
933         cf Bug 410463 – Poor interactive performance with multiple terminals
934
935         * src/vte.c: (vte_terminal_io_read):
936                 Do not loop whilst reading in a backlog of child data - should
937                 help prevent monopolisation of vte by a single child and make
938                 vte more responsive to user input on slower computers.
939
940 2007-02-24  Chris Wilson  <chris@chris-wilson.co.uk>
941
942         Bug 159078 – slow highlight
943
944         Do not update the match hilite during a selection-drag.
945         Record unsuccesful regex matches, so we can quickly determine whether
946         the cursor is still inside the blank region.
947
948         * src/vte-private.h:
949         * src/vte.c: (vte_terminal_match_check_internal),
950         (rowcol_inside_match), (vte_terminal_match_check),
951         (_vte_terminal_set_pointer_visible),
952         (vte_terminal_match_hilite_clear),
953         (vte_terminal_match_hilite_show), (vte_terminal_match_hilite_hide),
954         (vte_terminal_match_hilite_update), (vte_terminal_match_hilite),
955         (vte_terminal_motion_notify), (vte_terminal_button_press),
956         (vte_terminal_focus_in), (vte_terminal_focus_out),
957         (vte_terminal_enter), (vte_terminal_leave), (vte_terminal_init),
958         (vte_terminal_unrealize), (vte_terminal_draw_rows),
959         (vte_terminal_paint):
960
961 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
962
963         A couple of compiler warnings and avoid unnecessary arithmetic.
964
965         * src/vte.c: (_vte_terminal_set_default_attributes),
966         (find_start_column), (find_end_column),
967         (vte_terminal_start_selection), (vte_terminal_extend_selection),
968         (vte_terminal_draw_rows), (vte_terminal_paint):
969         * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_for_char),
970         (_vte_xft_char_width), (_vte_xft_unlock_fonts), (_vte_xft_start),
971         (_vte_xft_clip), (_vte_xft_set_text_font), (_vte_xft_draw_text):
972
973 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
974
975         Bug 411276 – SVN trunk compilation error
976         Part 2.
977
978         * configure.in:
979                 Check that the header file defines FcStrFree before checking
980                 for the availability of the function. Complete hack, but
981                 appears to work.
982
983 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
984
985         Bug 411276 – SVN trunk compilation error
986
987         * configure.in:
988                 Ubuntu Edgy appears to have a broken fontconfig-dev package
989                 where the function is exported from the library but is missing
990                 the corresponding prototypes.
991                 So we reorder the determination of the compilation flags
992                 before checking for available functions in the hope that the
993                 tests will then match the results at compile time.
994
995 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
996
997         * src/vte.c: (vte_terminal_io_read):
998                 Prevent a deadlock on recursively grabbing the gdk_mutex.
999
1000 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
1001
1002         Heuristic to avoid a read when it's likely to just return EAGAIN.
1003
1004         * src/vte-private.h:
1005         * src/vte.c: (vte_terminal_io_read), (process_timeout),
1006         (update_repeat_timeout), (update_timeout):
1007
1008 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
1009
1010         Add a new debug flag to monitor draw operations.
1011         Don't issue individual glyphs for is_local_graphic() in the middle of
1012         a run.
1013
1014         * src/debug.c: (_vte_debug_parse_string):
1015         * src/debug.h:
1016         * src/vte.c: (vte_terminal_unichar_is_local_graphic),
1017         (vte_terminal_draw_rows), (vte_terminal_paint):
1018         * src/vtedraw.c: (_vte_draw_init_user), (_vte_draw_init_default),
1019         (_vte_draw_new), (_vte_draw_free), (_vte_draw_get_visual),
1020         (_vte_draw_get_colormap), (_vte_draw_start), (_vte_draw_end),
1021         (_vte_draw_set_background_color), (_vte_draw_set_background_image),
1022         (_vte_draw_requires_repaint), (_vte_draw_clip), (_vte_draw_clear),
1023         (_vte_draw_set_text_font), (_vte_draw_get_text_width),
1024         (_vte_draw_get_text_height), (_vte_draw_get_text_ascent),
1025         (_vte_draw_get_char_width), (_vte_draw_get_using_fontconfig),
1026         (_vte_draw_text), (_vte_draw_char), (_vte_draw_has_char),
1027         (_vte_draw_fill_rectangle), (_vte_draw_draw_rectangle),
1028         (_vte_draw_set_scroll):
1029         * src/vtedraw.h:
1030         * src/vteft2.c: (_vte_ft2_draw_has_char):
1031         * src/vtegl.c: (_vte_gl_draw_has_char):
1032         * src/vtepango.c: (_vte_pango_draw_has_char):
1033         * src/vtepangox.c: (_vte_pango_x_draw_has_char):
1034         * src/vteskel.c: (_vte_skel_draw_has_char):
1035         * src/vtexft.c: (_vte_xft_draw_has_char):
1036
1037 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
1038
1039         * src/vte.c: (vte_terminal_draw_rows):
1040                 Don't break a glyph run for a graphic, issue the draw
1041                 and continue.
1042
1043 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
1044
1045         Cache the font metrics on the vte_xft_font, avoids having to remeasure
1046         when opening a new terminal.
1047
1048         * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_set_text_font):
1049
1050 2007-02-23  Chris Wilson  <chris@chris-wilson.co.uk>
1051
1052         Share XftFonts between terminal backends and preserve faces from the
1053         previous draw - helps prevents font cache thrashing inside libXft.
1054
1055         * src/vtexft.c: (_vte_xft_font_hash), (_vte_xft_font_equal),
1056         (_vte_xft_font_open), (_vte_xft_font_close),
1057         (_vte_xft_font_for_char), (_vte_xft_unlock_fonts),
1058         (_vte_xft_destroy), (_vte_xft_start), (_vte_xft_end),
1059         (ptr_array_zeroed_new), (_vte_xft_set_text_font),
1060         (_vte_xft_get_char_width), (_vte_xft_draw_text),
1061         (_vte_xft_draw_char):
1062
1063 2007-02-22  Chris Wilson  <chris@chris-wilson.co.uk>
1064
1065         Bug 410986 – Fails to build with -z defs
1066         Patch by Loïc Minier.
1067
1068         * src/Makefile.am:
1069                 Add FreeType to the libs.
1070
1071 2007-02-22  Chris Wilson  <chris@chris-wilson.co.uk>
1072
1073         * src/vte.c: (vte_terminal_send):
1074                 Return in the face of error as we appear to hit this in the
1075                 wild.
1076
1077 2007-02-22  Chris Wilson  <chris@chris-wilson.co.uk>
1078
1079         Bug 410819 – slider not correctly positioned after calling less
1080
1081         * src/vte.c: (_vte_terminal_adjust_adjustments),
1082         (_vte_terminal_adjust_adjustments_full),
1083         (vte_terminal_maybe_scroll_to_top), (vte_terminal_size_allocate),
1084         (vte_terminal_set_scrollback_lines):
1085         * src/vteseq.c: (vte_sequence_handler_decset_internal):
1086                 Fixup a lot of issues with changing the number of scrollback
1087                 lines, such as missing value_changed signals for the
1088                 scrollbar and a couple of missing CLAMPs.
1089
1090 2007-02-22  Chris Wilson  <chris@chris-wilson.co.uk>
1091
1092         After adjusting the current profile, the last line gets chomped.
1093
1094         * src/vte.c: (vte_terminal_set_scrollback_lines):
1095
1096 2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>
1097
1098         cf Bug 410534 – Slow content scrolling, takes 100% of CPU.
1099
1100         * src/vte.c: (vte_terminal_scroll),
1101         (vte_terminal_set_scrollback_lines):
1102                 Operate on scroll delta directly as adjustment->value updates
1103                 are not instantaneous and we may have several scroll events
1104                 before the next update.
1105
1106 2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>
1107
1108         Bug 410463 – Poor interactive performance with multiple terminals
1109
1110         * src/vte.c: (vte_terminal_io_read), (process_timeout),
1111         (update_repeat_timeout):
1112                 When multiple terminals are active, poll the IO sources
1113                 from within the process/display timeout (akin to 
1114                 interrupt mitigation).
1115                 Return to normal interrupts when we only have a single active
1116                 terminal - so we don't sacrifice high performance.
1117
1118 2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>
1119
1120         A small bit of callgrinding, avoid the modulus inside
1121         vte_terminal_ensure_cursor() by caching the last row_data.
1122
1123         * src/iso2022.c: (process_cdata):
1124         * src/ring.c: (_vte_ring_new), (_vte_ring_insert),
1125         (_vte_ring_insert_preserve), (_vte_ring_remove):
1126         * src/ring.h:
1127         * src/table.c: (_vte_table_match):
1128         * src/vte.c: (_vte_terminal_ensure_cursor),
1129         (_vte_terminal_insert_char), (vte_terminal_process_incoming):
1130
1131 2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>
1132
1133         Callgrind strikes again...
1134         Inserting a char is a rare operation (especially in the scrolling
1135         benchmark!) so only read the old cell during an insert. This wins
1136         about 5% during a hexdump.
1137
1138         * src/iso2022.c: (_vte_iso2022_find_nextctl),
1139         (_vte_iso2022_fragment_input), (process_cdata):
1140         * src/vte.c: (_vte_terminal_insert_char):
1141         * src/vteseq.c: (vte_sequence_handler_sf):
1142
1143 2007-02-21  Chris Wilson  <chris@chris-wilson.co.uk>
1144
1145         RedHat Bug 113195: First line displayed incorrectly if prompt changes background color
1146
1147         e.g. PS1='\e[46m[\u@\h:\w]\e[m \e[45m'
1148         The issue is when we insert a char on a new row and the background is
1149         not the default, we fill the entire row with the *current* colour.
1150         This behaviour is incorrect, and the fix is to fill to the end of the
1151         line on a carriage return.
1152
1153         * src/vte-private.h:
1154         * src/vte.c: (_vte_terminal_ensure_cursor),
1155         (_vte_terminal_insert_char), (vte_terminal_process_incoming),
1156         (vte_terminal_send):
1157         * src/vteseq.c: (vte_sequence_handler_ce),
1158         (vte_sequence_handler_cr), (vte_sequence_handler_cs),
1159         (vte_sequence_handler_cS),
1160         (vte_sequence_handler_cursor_lower_left),
1161         (vte_sequence_handler_dc), (vte_sequence_handler_ic),
1162         (vte_sequence_handler_sf):
1163
1164 2007-02-20  Chris Wilson  <chris@chris-wilson.co.uk>
1165
1166          RedHat Bug 123845: gnome-terminal not parsing cursor position escape sequence properly
1167
1168         * src/caps.c:
1169         * src/vteseq.c: (vte_sequence_handler_cm):
1170                 Add 'ESC [ Pn H' to cursor-position and provide default
1171                 values.
1172
1173 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1174
1175         Bug 409055 – Terminal stays blank
1176
1177         Due to GTK+ coallescing of XExposeEvents it was possible for our
1178         GdkExposeEvent to arrive before the GdkVisibilityEvent associated with
1179         the mapping of our toplevel and so we discarded the event as we
1180         believed we were still unviewable.
1181
1182         * src/vte.c: (_vte_invalidate_cells), (vte_terminal_expose),
1183         (reset_update_regions):
1184                 Assume that all GdkExposeEvents have been checked for
1185                 suitability before delivery. We know this true for locally
1186                 generated expose events which are extensively checked during
1187                 invalidation, and we presume that X will not generate expose
1188                 events on unmapped or otherwise unviewable windows.
1189
1190 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1191
1192         * src/vte.c: (_vte_terminal_adjust_adjustments),
1193         (_vte_terminal_adjust_adjustments_full):
1194                 Dead code elimination.
1195
1196 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1197
1198         * perf/random.sh:
1199                 A simple script to dump a fixed amount of random data to the
1200                 terminal.
1201
1202 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1203
1204         A few more trivial incremental improvements.
1205
1206         * src/Makefile.am:
1207         * src/iso2022.c: (_vte_iso2022_map_get):
1208                 Switch to a VteTree.
1209         * src/vte.c: (_vte_terminal_update_insert_delta),
1210         (_vte_terminal_insert_char):
1211                 No need to ensure the cursor when scrolling, only before
1212                 insertions.
1213         * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
1214         (_vte_xft_font_for_char), (_vte_xft_end):
1215                 Lock the face over the entire expose.
1216
1217 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1218
1219         Improve handling of parallel 'cat /dev/urandom' - notably a crasher
1220         in the table matcher, repeated g_getenv processing and wasted time
1221         in g_tree_lookup.
1222
1223         * src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
1224         (_vte_iso2022_map_init), (_vte_iso2022_map_get),
1225         (process_8_bit_sequence), (process_cdata),
1226         (_vte_iso2022_process_single), (_vte_iso2022_process):
1227         * src/table.c: (_vte_table_match):
1228         * src/vte-private.h:
1229
1230 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1231
1232         * src/vte.c: (update_timeout):
1233                 In conjunction with the previous fix, since the terminal
1234                 can be removed from the active list by
1235                 vte_terminal_process_incoming() we need to be careful whilst
1236                 iterating along the active list.
1237
1238 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1239
1240         <fcrozat> ickle: hi.. our kernel hacker just found a nice reproducible
1241                 crash in vte :)
1242         <ickle> oh, joy
1243         <fcrozat> very easy to reproduce
1244                 cat /dev/urandom
1245                 wait 2 or 3S
1246                 then press Ctrl-Shift-T to open a new tab
1247                 => crash
1248
1249         * src/vte.c: (process_timeout), (update_repeat_timeout):
1250                 vte_terminal_process_incoming() can trigger a terminal reset
1251                 which will remove the terminal from the active list, and then
1252                 we attempt to remove it again after handling the incoming
1253                 data. The fix is simple - don't delete the link if the the
1254                 terminal is no longer active.
1255
1256 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1257
1258         As noticed on bug 409055, we do not receive a visibility-notify
1259         event when we switch workspaces (or even when the window is iconified).
1260         The workaround for this is to watch for our toplevel being unmapped
1261         and set the fully-obscured flag.
1262
1263         * src/vte.c: (vte_terminal_configure_toplevel),
1264         (vte_terminal_unmap_toplevel), (vte_terminal_hierarchy_changed),
1265         (vte_terminal_set_visibility), (vte_terminal_visibility_notify):
1266
1267 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1268
1269         * src/vte.c: (visibility_state_str),
1270         (vte_terminal_visibility_notify), (vte_terminal_init),
1271         (vte_terminal_realize):
1272                 Add the visibility state to the debug output.
1273
1274 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1275
1276         * configure.in:
1277                 Add the configuration details to config.log as well.
1278
1279 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1280
1281         Bug 409241 – gnome-terminal crashed with SIGSEGV in vte_terminal_draw_graphic()
1282
1283         * src/vte.c: (vte_terminal_paint):
1284                 Lookup fore/back colours before attempting to draw the graphic
1285                 character behind the unfocused cursor.
1286
1287 2007-02-19  Chris Wilson  <chris@chris-wilson.co.uk>
1288
1289         * src/vte.c: (vte_terminal_visibility_notify):
1290                 Add VTE_DEBUG_EVENT info.
1291
1292 2007-02-16  Chris Wilson  <chris@chris-wilson.co.uk>
1293
1294         Bug 407945 – "GNOME" Terminal" regression after "vte" update when using "csh"
1295
1296         When passing multiple versions of the same environment
1297         variable to execve (i.e g_spawn) the result is undefined.
1298         So we solve the ambiguity by using the application passed env to
1299         override values from the current environment.
1300         
1301         * src/pty.c: (collect_variables), (merge_environ),
1302         (_vte_pty_run_on_pty):
1303
1304 2007-02-16  Chris Wilson  <chris@chris-wilson.co.uk>
1305
1306         Bug 408536 – trouble compiling vte 0.15.3
1307
1308         * configure.in:
1309         * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
1310                 Check for availability of FcStrFree() - only used for
1311                 debugging purposes so we can live without it.
1312
1313 2007-02-15  Chris Wilson  <chris@chris-wilson.co.uk>
1314
1315         Guard against a missing default number of rows or columns
1316         inside the termcap.
1317
1318         * src/vte-private.h:
1319         * src/vte.c: (vte_terminal_set_emulation), (vte_terminal_init):
1320
1321 2007-02-15  Chris Wilson  <chris@chris-wilson.co.uk>
1322
1323         Bug 408040 – vte automagic hyperlinks
1324         Patch by Gilles Dartiguelongue.
1325
1326         * src/vteapp.c:
1327                 Correct the typo in the nntp protocol matcher.
1328
1329 2007-02-14  Chris Wilson  <chris@chris-wilson.co.uk>
1330
1331         Bug 407839 – Use of environ breaks build on Solaris
1332         Original patch by Damien Carbery.
1333
1334         * src/pty.c:
1335                 extern char **environ - glibc was 'conveniently' declaring
1336                 it for us...
1337
1338 2007-02-13  Chris Wilson  <chris@chris-wilson.co.uk>
1339
1340         uws reported that scrolling inside screen with a status line was
1341         broken. Indeed any scrolling inside an alternative screen was broken,
1342         e.g. plain vim would not always update the topmost line. The issue was
1343         the interaction with the deferred value-changed signal emission and
1344         failing to correctly maintain the current scroll_delta. The fix is
1345         that we always now apply changes to the scroll_delta and swap
1346         scroll_delta with adjustment->value before the deferred signal
1347         emission to correctly trigger the handle_scroll().
1348
1349         * src/vte-private.h:
1350         * src/vte.c: (_vte_invalidate_cells),
1351         (vte_terminal_emit_adjustment_changed),
1352         (vte_terminal_queue_adjustment_value_changed),
1353         (_vte_terminal_adjust_adjustments),
1354         (_vte_terminal_adjust_adjustments_full),
1355         (vte_terminal_maybe_scroll_to_bottom),
1356         (vte_terminal_process_incoming), (vte_terminal_extend_selection),
1357         (vte_terminal_handle_scroll), (vte_terminal_set_scrollback_lines):
1358         * src/vteseq.c: (vte_sequence_handler_sf):
1359
1360 2007-02-13  Chris Wilson  <chris@chris-wilson.co.uk>
1361
1362         Bug 407358 – regression in mouse selection
1363
1364         * src/vte.c: (vte_terminal_motion_notify):
1365                 When outside the terminal we used an uninitialised variable to
1366                 determine the mouse tracking mode.
1367
1368 2007-02-12  Behdad Esfahbod  <behdad@gnome.org>
1369
1370         Released vte-0.15.3.
1371
1372         * NEWS: Updated.
1373
1374         * configure.in: Bumped version to 0.15.3.
1375
1376         * src/Makefile.am: Bumped libtool version to 11:0:2.
1377
1378 2007-02-12  Chris Wilson  <chris@chris-wilson.co.uk>
1379
1380         * src/vte.c: (vte_terminal_extend_selection),
1381         (vte_terminal_motion_notify):
1382                 Restore autoscroll behaviour.
1383
1384 2007-02-12  Chris Wilson  <chris@chris-wilson.co.uk>
1385
1386         * src/vte.c: (vte_terminal_start_selection):
1387                 Invalidate the selected region when starting in
1388                 select-word or select-line mode.
1389
1390 2007-02-12  Chris Wilson  <chris@chris-wilson.co.uk>
1391
1392         Restore double-click to select word behaviour, broken by r1671 as
1393         the second click occurs in the same place as the first (obviously!).
1394
1395         * src/vte.c: (vte_terminal_extend_selection),
1396         (vte_terminal_autoscroll), (vte_terminal_motion_notify),
1397         (vte_terminal_button_press):
1398
1399 2007-02-12  Chris Wilson  <chris@chris-wilson.co.uk>
1400
1401         Bug 407091 – vte_terminal_fork_command() env argument changed semantic in 0.15.2
1402         Original patch by Michael Vogt.
1403
1404         * src/pty.c: (_vte_pty_run_on_pty):
1405                 Copy the current environment into the child's.
1406
1407 2007-02-11  Chris Wilson  <chris@chris-wilson.co.uk>
1408
1409         Bug 323393 – Hyper-sensitive selection
1410
1411         * src/vte.c: (vte_terminal_extend_selection):
1412                 Don't start (or update) the selection until you
1413                 move off the current cell (character).
1414
1415 2007-02-11  Chris Wilson  <chris@chris-wilson.co.uk>
1416
1417         Bug 406763 – Selecting double-wide characters
1418
1419         * src/vte.c: (start_column), (end_column),
1420         (vte_terminal_start_selection), (vte_terminal_extend_selection),
1421         (vte_terminal_draw_rows):
1422                 Extend selection to include fragment cells i.e. double-wide
1423                 characters.
1424
1425 2007-02-10  Chris Wilson  <chris@chris-wilson.co.uk>
1426
1427         Have a separate adjust_adjustments for when we know that the page
1428         size and step lengths may have changed.
1429
1430         * src/vte.c: (_vte_terminal_adjust_adjustments),
1431         (_vte_terminal_adjust_adjustments_full),
1432         (vte_terminal_set_scrollback_lines), (vte_terminal_reset):
1433
1434 2007-02-10  Chris Wilson  <chris@chris-wilson.co.uk>
1435
1436         * src/vte.c: (_vte_terminal_adjust_adjustments),
1437         (vte_terminal_size_allocate), (vte_terminal_set_scrollback_lines):
1438                 Prevent the display of garbage after resizing and switching
1439                 between alternate screens.
1440                 However, instead of displaying garbage after the cursor, we
1441                 lose some data above the current scroll delta, should we have
1442                 a full history.  Bizarre.
1443
1444 2007-02-09  Chris Wilson  <chris@chris-wilson.co.uk>
1445
1446         * src/vte.c: (_vte_terminal_adjust_adjustments):
1447                 Do not allow to scroll past the last line after reducing
1448                 scrollback lines.
1449         * src/vtexft.c: (_vte_xft_set_text_font):
1450                 Ensure a fallback height is set.
1451
1452 2007-02-09  Chris Wilson  <chris@chris-wilson.co.uk>
1453
1454         * src/vte.c: (vte_terminal_get_text_range_maybe_wrapped):
1455                 Reuse VteRowData whilst in the row.
1456
1457 2007-02-09  Chris Wilson  <chris@chris-wilson.co.uk>
1458
1459         Rework to reduce number of times mutex is taken and shorten the hold.
1460
1461         * src/vte.c: (vte_terminal_queue_adjustment_changed),
1462         (vte_terminal_queue_adjustment_value_changed),
1463         (vte_terminal_io_read), (vte_terminal_paint),
1464         (vte_terminal_add_process_timeout), (vte_terminal_is_processing),
1465         (vte_terminal_start_processing):
1466
1467 2007-02-09  Chris Wilson  <chris@chris-wilson.co.uk>
1468
1469         A number of small bug fixes...
1470         - do not override the user setting of scrollback lines with the
1471         terminal size.
1472         - only set the current screen rather than both and so reset the
1473         scrollback lines when we switch between normal and alternate.
1474         - do not invalidate inside set_scrollback lines as setting does not
1475         actually modify the on-screen contents.
1476         - push the scroll-adjustment to the post-processing emission.
1477         - queue timeouts on value change (should be a no-op)
1478         - reorder emission so that scrolling occurs before invalidating the
1479         window (ie so that the scroll happens this cycle, not next).
1480
1481         Still unsolved: the clamping of the cursor when switching between
1482         alternate screens.
1483
1484         * src/vte-private.h:
1485         * src/vte.c: (vte_terminal_emit_adjustment_changed),
1486         (vte_terminal_queue_adjustment_changed),
1487         (vte_terminal_queue_adjustment_value_changed),
1488         (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
1489         (vte_terminal_maybe_scroll_to_top),
1490         (vte_terminal_maybe_scroll_to_bottom),
1491         (_vte_terminal_ensure_cursor), (_vte_terminal_update_insert_delta),
1492         (vte_terminal_process_incoming), (vte_terminal_extend_selection),
1493         (vte_terminal_autoscroll), (vte_terminal_handle_scroll),
1494         (vte_terminal_size_allocate), (vte_terminal_scroll),
1495         (vte_terminal_background_update),
1496         (vte_terminal_queue_background_update),
1497         (vte_terminal_set_scrollback_lines), (vte_terminal_reset),
1498         (add_process_timeout), (vte_terminal_add_process_timeout),
1499         (vte_terminal_start_processing), (update_repeat_timeout),
1500         (update_timeout):
1501         * src/vteseq.c: (vte_sequence_handler_scroll_up_or_down),
1502         (vte_sequence_handler_decset_internal), (vte_sequence_handler_al),
1503         (vte_sequence_handler_dl), (vte_sequence_handler_sf),
1504         (vte_sequence_handler_sr), (vte_sequence_handler_clear_screen),
1505         (vte_sequence_handler_cursor_character_absolute),
1506         (vte_sequence_handler_insert_lines),
1507         (vte_sequence_handler_delete_lines),
1508         (vte_sequence_handler_screen_alignment_test):
1509
1510 2007-02-08  Chris Wilson  <chris@chris-wilson.co.uk>
1511
1512         * src/vteapp.c: (main): whitespace
1513
1514 2007-02-08  Chris Wilson  <chris@chris-wilson.co.uk>
1515
1516         Bug 363597 – Scrollback in profile dialog doesn't work
1517
1518         * src/vte-private.h:
1519         * src/vte.c: (vte_terminal_init),
1520                 Only use SCROLLBACK_MIN during initialisation, so rename it
1521                 to SCROLLBACK_INIT.
1522         (vte_terminal_set_scrollback_lines):
1523                 Remove MAX(lines, SCROLLBACK_MIN) and update code comments
1524                 to reduce confusion.
1525
1526 2007-02-08  Mariano Suárez-Alvarez  <mariano@gnome.org>
1527
1528         * src/vteapp.c(main): do something useful with --geometry.
1529
1530 2007-02-08  Chris Wilson  <chris@chris-wilson.co.uk>
1531
1532         Use gtk_widget_get_(screen|display) which will itself return a default
1533         if not currently attached.
1534
1535         * src/vtedraw.c: (_vte_draw_get_colormap):
1536         * src/vtefc.c: (_vte_fc_defaults_from_gtk):
1537         * src/vtegl.c: (_vte_gl_check), (_vte_gl_create),
1538         (_vte_gl_destroy), (_vte_gl_start), (_vte_gl_end), (_vte_gl_clear),
1539         (_vte_gl_draw_text), (_vte_gl_rectangle):
1540         * src/vterdb.c: (_vte_rdb_get):
1541         * src/vteseq.c: (vte_sequence_handler_window_manipulation):
1542
1543 2007-02-08  Chris Wilson  <chris@chris-wilson.co.uk>
1544
1545         Some more callgrinding - kill a little bit of overhead.
1546
1547         * src/iso2022.c: (_vte_iso2022_sequence_length),
1548         (_vte_iso2022_fragment_input), (process_control):
1549         * src/matcher.c: (_vte_matcher_free_params_array):
1550         * src/vteconv.c: (_vte_conv):
1551
1552 2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>
1553
1554         Actually return whether or not we found the char in
1555         _vte_xft_font_for_char - saves having to double check afterwards!
1556
1557         * src/vtexft.c: (_vte_xft_font_for_char), (_vte_xft_set_text_font),
1558         (_vte_xft_draw_text):
1559
1560 2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>
1561
1562         As spotted perusing roxterm, we fail to redraw after changing the text
1563         colour.
1564
1565         * src/vte.c: (vte_terminal_set_color_internal):
1566                 Remember to invalidate all!
1567
1568 2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>
1569
1570         * src/vte.c: (vte_terminal_match_check_internal):
1571                 Scan for newlines before and after the current row
1572                 to find the entire line in case of soft-wrapping.
1573
1574 2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>
1575
1576         Bug 345344 – Pattern matching is inefficient
1577         Bug 324246 – Performance degredation with large numbers of highlighted addresses/URLs
1578
1579         * src/vte.c: (vte_terminal_match_check_internal):
1580                 Trim the searched string down to the row containing the
1581                 pointer. During a mutt session this drops the time consumed by
1582                 regexec from ~30% to ~2%.
1583                 Note: multi-line regexes are now unsupported!
1584
1585 2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>
1586
1587         * src/vteseq.c: (_vte_sequence_get_handler):
1588                 Avoid the strlen when possible.
1589
1590 2007-02-07  Chris Wilson  <chris@chris-wilson.co.uk>
1591
1592         Some cleanups and a bug...
1593
1594         vte_terminal_match_hilite() compared the current cell to the last
1595         mouse position without a floor().
1596
1597         * src/vte.c: (vte_terminal_process_incoming),
1598         (vte_terminal_match_hilite), (vte_terminal_select_all),
1599         (vte_terminal_select_none), (vte_terminal_motion_notify),
1600         (vte_terminal_button_press):
1601
1602 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1603
1604         Bug 86119 – "select all" feature
1605         Original patch by Simone Gotti.
1606
1607         * src/vte.c: (vte_terminal_select_all), (vte_terminal_select_none):
1608         * src/vte.h:
1609                 Add 2 new API entry points to select the entire contents
1610                 and clear the current selection.
1611
1612 2007-02-06  Chris Wilson <chris@chris-wilson.co.uk>
1613
1614         Bug 342059 – ASCII escape sequences don't work as expected
1615         Correction by Mariano Suárez-Alvarez.
1616
1617         * src/vteseq.c: (vte_sequence_handler_cursor_character_absolute):
1618                 OBO on the parameter.
1619
1620 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1621
1622         Bug 342059 – ASCII escape sequences don't work as expected
1623         Patch by Mariano Suárez-Alvarez.
1624
1625         * src/vteseq.c: (vte_sequence_handler_cursor_character_absolute):
1626                 Provide a default value.
1627
1628 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1629
1630         And finally as noted on bug 324246#c8 hide the hilite when the mouse
1631         leaves the terminal (show again when it enters and let motion-notify
1632         correct it later).
1633
1634         * src/vte.c: (vte_terminal_enter), (vte_terminal_leave),
1635         (vte_terminal_realize), (vte_terminal_class_init):
1636
1637 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1638
1639         As noted on bug 324246#c8, hide the hilite when the focus disappears.
1640         On focus restore the match for the last mouse coordinates and let
1641         motion-notify take care of the rest.
1642
1643         * src/vte.c: (vte_terminal_match_hilite_update),
1644         (vte_terminal_match_hilite), (vte_terminal_focus_in):
1645
1646 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1647
1648         Convert the exposed rectangles to cells and remerge them.
1649
1650         * src/vte.c: (vte_terminal_expand_region),
1651         (vte_terminal_paint_area), (vte_terminal_paint):
1652
1653 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1654
1655         As noted on Bug 401052#c13, vte fails to completely clear the cell's
1656         previous contents.
1657
1658         * src/vte.c: (_vte_invalidate_cells):
1659                 Grow the invalidate region by a single pixel to accomodate
1660                 antialiased pseudo-bold characters.
1661
1662 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1663
1664         Move status_line_changed to post-processing emission.
1665
1666         * src/vte-private.h:
1667         * src/vte.c: (_vte_terminal_insert_char), (vte_terminal_reset),
1668         (vte_terminal_emit_pending_signals):
1669         * src/vteseq.c: (vte_sequence_handler_ts):
1670
1671 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1672
1673         Clamp down on needless invalidates during selection.
1674
1675         As commented on in Bug 401052#c10
1676
1677         * src/vte.c: (_vte_invalidate_region), (vte_terminal_deselect_all),
1678         (vte_terminal_match_hilite_clear), (vte_terminal_start_selection),
1679         (vte_terminal_extend_selection):
1680
1681 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1682
1683         * src/vte.c: (vte_terminal_draw_rows):
1684                 Don't needlessly break the text run on a space if we are
1685                 not drawing cell attributes.
1686
1687 2007-02-06  Chris Wilson  <chris@chris-wilson.co.uk>
1688
1689         * src/iso2022.c: (_vte_iso2022_is_ambiguous_ht):
1690                 One more G_UNLIKELY
1691         * src/vte.c: (vte_terminal_match_hilite),
1692         (vte_terminal_motion_notify):
1693                 Avoid expensive hiliting if the pointer is not in the window.
1694         * src/vteregex.c: (_vte_regex_exec):
1695                 Prefer g_new(x,n) over g_malloc(sizeof(x)*n)
1696
1697 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1698
1699         Bug 404757 – URL matching doesn't work with PCRE
1700
1701         * configure.in:
1702                 mention the inconsistency in the help string and default to no.
1703
1704 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1705
1706         * src/vte.c: (vte_terminal_draw_rows):
1707                 Don't draw cell attributes across spaces.
1708
1709 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1710
1711         * src/vte.c: (_vte_terminal_insert_char):
1712                 A couple more G_LIKELYs.
1713
1714 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1715
1716         Bug 403028 – decset mode 12 = blinking cursor
1717
1718         * src/vteseq.c: (vte_sequence_handler_decset_internal):
1719                 Following convention, disallow the application's control
1720                 over the blinking cursor in favour of the user's setting.
1721
1722 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1723
1724         Some more small callgrind tweaks - well into the law of diminishing
1725         returns.
1726
1727         * src/iso2022.c: (_vte_iso2022_is_ambiguous_ht),
1728         (_vte_iso2022_is_ambiguous), (process_8_bit_sequence),
1729         (process_cdata), (_vte_iso2022_unichar_width):
1730         * src/matcher.c: (_vte_matcher_free_params_array):
1731         * src/vte.c: (vte_terminal_process_incoming):
1732
1733 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1734
1735         Beware the trivial change. Handle reuse of GValueArray correctly.
1736
1737         * src/matcher.c: (_vte_matcher_match):
1738         * src/table.c: (_vte_table_match):
1739         * src/trie.c: (_vte_trie_match):
1740         * src/vte.c: (vte_terminal_process_incoming):
1741
1742 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1743
1744         * src/table.c: (_vte_table_match):
1745                 And kill the leak as vte_table_match erroneously cleared
1746                 its output arguments.
1747
1748 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1749
1750         The continual reallocation of GValueArray is the last trivially
1751         avoidable g_realloc.
1752
1753         * src/interpret.c: (main):
1754         * src/matcher.c: (_vte_matcher_create), (_vte_matcher_destroy),
1755         (_vte_matcher_match), (_vte_matcher_free_params_array):
1756         * src/matcher.h:
1757         * src/table.c: (_vte_table_extract_string):
1758         * src/trie.c: (_vte_trie_matchx), (_vte_trie_match), (main):
1759         * src/vte.c: (vte_terminal_process_incoming):
1760
1761 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1762
1763         * src/ring.c: (_vte_ring_insert):
1764                 Missed an important compiler warning.
1765
1766 2007-02-05  Chris Wilson  <chris@chris-wilson.co.uk>
1767
1768         cf Bug 342338 – suffers from memory fragmentation
1769
1770         Reuse the last VteRowData instead of immediately freeing it. Avoids
1771         recreating and *regrowing* a new GArray on the heap.
1772
1773         In the simple scrolling benchmarks this can boost performance by as
1774         much as 10%!
1775
1776         * src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
1777         (_vte_ring_remove), (_vte_ring_append):
1778         * src/ring.h:
1779         * src/vte-private.h:
1780         * src/vte.c: (_vte_reset_row_data), (_vte_terminal_ensure_cursor),
1781         (_vte_terminal_insert_char), (vte_terminal_reset_rowdata):
1782         * src/vteseq.c: (vte_insert_line_internal),
1783         (vte_sequence_handler_scroll_up_or_down),
1784         (vte_sequence_handler_cd), (vte_sequence_handler_sf),
1785         (vte_sequence_handler_clear_screen),
1786         (vte_sequence_handler_screen_alignment_test):
1787
1788 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1789
1790         A few more compiler warnings.
1791
1792         * src/buffer.c: (_vte_buffer_peek_gstring):
1793         * src/iso2022.c: (process_control):
1794         * src/vteft2.c: (_vte_ft2_set_text_font):
1795         * src/vteseq.c: (vte_sequence_handler_set_title_internal):
1796         * src/vtetc.c: (_vte_termcap_parse_file):
1797
1798 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1799
1800         Bug 106618 – CJK 'fixed width' font and 's p a c e d o u t' issue
1801
1802         * src/vtedraw.h:
1803         * src/vteglyph.c: (_vte_glyph_cache_set_font_description):
1804         * src/vtepango.c: (_vte_pango_set_text_font):
1805         * src/vtepangox.c: (_vte_pango_x_set_text_font):
1806         * src/vtexft.c: (_vte_xft_set_text_font):
1807                 Detect a change in font between wide-chars and recheck for a
1808                 fixed-width estimate.
1809
1810 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1811
1812         Micro-opts.
1813
1814         * src/table.c: (_vte_table_match):
1815                 No need set to NULL.
1816         * src/vte.c: (_vte_terminal_ensure_cursor):
1817                 If we have added some rows, the last is the current.
1818
1819 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1820
1821         Move window/icon title changed to the post-processing emission - helps
1822         with the artificial benchmark of replaying a recorded jhbuild script.
1823
1824         * src/vte-private.h:
1825         * src/vte.c: (vte_terminal_finalize),
1826         (vte_terminal_emit_icon_title_changed),
1827         (vte_terminal_emit_window_title_changed),
1828         (vte_terminal_emit_pending_signals):
1829         * src/vteseq.c: (vte_sequence_handler_set_title_internal):
1830
1831 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1832
1833         Broke clear-to-end-of-line by lowering the number of cells appended,
1834         instead of the number of cells invalidated.
1835
1836         * src/vte.c: (vte_terminal_draw_rows):
1837         * src/vteseq.c: (vte_sequence_handler_ce):
1838
1839 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1840
1841         cf Bug 83285 – Treacle-slow scrolling in gnome-terminal on unaccelerated X server
1842
1843         Another chunk of performance improvements - the majority focusing on
1844         reducing the amount of work down per interrupt (input data from
1845         child).
1846
1847         To handle reads without addition copies VTE_INPUT_CHUNK_SIZE chunks
1848         are allocated on demand and filled from read with no further copy -
1849         previously the read was into a local buffer and then immediately
1850         copied into a _vte_buffer.
1851         _vte_iso2022_process() is then adjusted to use a ptr+length, rather
1852         than a _vte_buffer and is called for every input chunk (taking special
1853         care over the boundary cases).
1854
1855         * src/interpret.c: (main):
1856         * src/iso2022.c: (_vte_iso2022_fragment_input),
1857         (process_8_bit_sequence), (process_cdata), (_vte_iso2022_process):
1858         * src/iso2022.h:
1859         * src/vte-private.h:
1860         * src/vte.c: (get_chunk), (release_chunk), (prune_chunks),
1861         (_vte_incoming_chunks_release), (_vte_incoming_chunks_length),
1862         (_vte_incoming_chunks_count), (_vte_incoming_chunks_reverse),
1863         (vte_terminal_match_check_internal), (_vte_terminal_ensure_cursor),
1864         (vte_terminal_set_colors), (_vte_terminal_insert_char),
1865         (vte_terminal_catch_child_exited), (vte_terminal_eof),
1866         (vte_terminal_process_incoming), (_vte_terminal_feed_chunks),
1867         (vte_terminal_io_read), (vte_terminal_feed), (vte_terminal_send),
1868         (vte_terminal_init), (vte_terminal_finalize), (vte_terminal_reset),
1869         (remove_from_active_list), (need_processing), (update_regions),
1870         (update_repeat_timeout):
1871         * src/vte.h:
1872         * src/vteseq.c: (vte_sequence_handler_cb),
1873         (vte_sequence_handler_ce), (vte_sequence_handler_ec):
1874
1875 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1876
1877         Store whether the codeset is ambiguous in a state variable,
1878         rather than recomputing the ambiguous width every processing loop.
1879
1880         * src/iso2022.c: (_vte_iso2022_is_ambiguous),
1881         (_vte_iso2022_state_new), (_vte_iso2022_find_nextctl):
1882
1883 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1884
1885         * src/vtexft.c: (_vte_xft_create), (_vte_xft_destroy):
1886                 Remove zero-initialisers after g_slice_new0().
1887         * src/vtexft.c :(_vte_xft_set_text_font):
1888                 Print out the width range.
1889
1890 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1891
1892         * configure.in:
1893                 Missing space between -Wflags.
1894
1895 2007-02-04  Chris Wilson  <chris@chris-wilson.co.uk>
1896
1897         Eliminate the temporary g_sliced parameter list,
1898         in favour of an on-stack list.
1899
1900         * src/table.c: (_vte_table_arginfo_head_init),
1901         (_vte_table_arginfo_alloc), (_vte_table_arginfo_head_revert),
1902         (_vte_table_arginfo_head_reverse),
1903         (_vte_table_arginfo_head_finalize), (_vte_table_addi),
1904         (_vte_table_matchi), (_vte_table_extract_string),
1905         (_vte_table_match):
1906
1907 2007-02-02  Chris Wilson  <chris@chris-wilson.co.uk>
1908
1909         * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
1910                 Dump the chosen fonts to VTE_DEBUG_MISC.
1911         * src/vteft2.c: (_vte_ft2_set_text_font):
1912                 Print out the font metrics ala vtexft.c
1913
1914 2007-02-02  Chris Wilson  <chris@chris-wilson.co.uk>
1915
1916         Bug 322241 – Please switch to pkg-config to check for freetype
1917
1918         * configure.in:
1919                 Prefer to use the freetype2.pc if available.
1920
1921 2007-02-02  Chris Wilson  <chris@chris-wilson.co.uk>
1922
1923         Bug 322240 – Usage of pkg-config privates header
1924
1925         * vte.pc.in:
1926                 Move @FT2_LIBS@ to Libs.private.
1927
1928 2007-02-01  Chris Wilson  <chris@chris-wilson.co.uk>
1929
1930         cf Bug 403275 – crash in Terminal: I was typing reset on th...
1931
1932         Not the crash, just a freeze found whilst trying to reproduce the
1933         bug on trunk.
1934
1935         * src/vte.c: (remove_from_active_list):
1936                 Don't remove the terminal from the active list if it still
1937                 has pending redraws.
1938         
1939         * src/vte.c: (process_timeout), (update_timeout):
1940                 Reorder the loop to remove the terminal from the active list
1941                 if it no longer needs processing.
1942
1943 2007-02-01  Chris Wilson  <chris@chris-wilson.co.uk>
1944
1945         * perf/scroll.vim:
1946                 Extract the bits the test needs out of debian.vim.
1947
1948 2007-02-01  Chris Wilson  <chris@chris-wilson.co.uk>
1949
1950         As spotted on bug 399617c8, we convert an array of unichars to a
1951         string and then iterate over the string interpreting bytes as
1952         unichars.
1953
1954         * src/table.c: (_vte_table_extract_numbers):
1955                 Dispense with the temporary string and process the unichar
1956                 array directly.
1957
1958 2007-02-01  Chris Wilson <chris@chris-wilson.co.uk>
1959
1960         Bug 403159 – XftDrawSetClipRectangles() silently fails on ppc->i386
1961
1962         * src/vtexft.c: (_vte_xft_clip):
1963                 Precompute clip offsets.
1964
1965 2007-02-01  Chris Wilson  <chris@chris-wilson.co.uk>
1966
1967         Bug 382245 – __PyGtk_API multiply defined in python module
1968
1969         * configure.in:
1970                 Add -fno-common to MAYBE_WARN in order to catch future
1971                 errors of this type.
1972         * python/vte.override:
1973                 Define PYGTK_NO_IMPORT.
1974
1975 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
1976
1977         Bug 155687 – Scroll region \E[NN;MMr should set cursor to home
1978
1979         Patch originally by Michele Baldessari.
1980
1981         * src/vteseq.c: (vte_sequence_handler_cs):
1982                 Move the cursor to (0,0) rather than clamping the cursor to 
1983                 be inside the scroll region.
1984
1985 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
1986
1987         In a few places the contents of a GValue were being used without
1988         checking that they were of the expected type.
1989
1990         cf Bug 117945 which mentions stack corruption inside
1991         vte_sequence_handler_delete_lines() - one of the corrected instances.
1992
1993         * src/vteseq.c: (vte_sequence_handler_al),
1994         (vte_sequence_handler_cs), (vte_sequence_handler_cS),
1995         (vte_sequence_handler_dl),
1996         (vte_sequence_handler_character_attributes),
1997         (vte_sequence_handler_insert_lines),
1998         (vte_sequence_handler_delete_lines),
1999         (vte_sequence_handler_device_status_report),
2000         (vte_sequence_handler_dec_device_status_report):
2001                 Check that the GValue holds a long before dereference.
2002
2003 2007-01-31  Chris Wilson <chris@chris-wilson.co.uk>
2004
2005         Back to the old-style io loop as _vte_buffer_append() is too slow - on
2006         a slow system the read can fill before the data is copied (even more
2007         apparent under valgrind).
2008
2009         * src/vte-private.h:
2010         * src/vte.c: (vte_terminal_io_read):
2011
2012 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
2013
2014         Use the display stashed inside the font and not the default display!
2015
2016         * src/vtexft.c: (_vte_xft_char_exists), (_vte_xft_text_extents),
2017         (_vte_xft_font_open), (_vte_xft_font_close),
2018         (_vte_xft_font_for_char), (_vte_xft_draw_text):
2019
2020 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
2021
2022         A mixed bag of cleanups.
2023
2024         * configure.in:
2025         * src/pty.c: (_vte_pty_set_utf8):
2026                 Test for existence of tc[sg]etattr.
2027         * src/vte-private.h:
2028         * src/vte.c: (vte_terminal_emit_adjustment_changed),
2029         (vte_terminal_queue_adjustment_changed),
2030         (vte_terminal_set_color_internal), (vte_terminal_handle_sequence),
2031         (_vte_terminal_enable_input_source), (vte_terminal_io_read),
2032         (vte_terminal_init), (vte_terminal_unrealize),
2033         (vte_terminal_finalize), (vte_terminal_background_update),
2034         (vte_terminal_queue_background_update),
2035         (vte_terminal_emit_pending_signals), (process_timeout),
2036         (update_repeat_timeout), (update_timeout):
2037                 Move idle signal emission to display handlers.
2038         * src/vtedraw.h:
2039                 Add '&' to the single width characters.
2040         * src/vteseq.c: (_vte_sequence_get_handler):
2041         * src/vteseq.h:
2042                 Drop the extraneous GQuark parameter.
2043         * src/vtexft.c: (_vte_xft_set_text_font):
2044                 Avoid use of strlen for a compile-time fixed length string.
2045
2046 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
2047
2048         Bug 147784 – cursor unvisible under mouse highlight
2049
2050         Original patch by Chris Health
2051
2052         * src/vte.c: (vte_terminal_paint):
2053                 Reverse cursor color if it is in the selected region and draw
2054                 it as an outline.
2055
2056 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
2057
2058         Bug 368894 – crash in Terminal: I started gnome-terminal...
2059
2060         * src/vtebg.c: (vte_bg_cache_search), (vte_bg_get_pixmap),
2061         (vte_bg_get_pixbuf):
2062                 When retrieving a cached pixmap check that the visual
2063                 matches the current request.
2064
2065 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
2066
2067         Use gdk_error_trap_{push,pop} around raw Xft calls - about a
2068         path outside of vte_draw_{begin,end}.
2069
2070         * src/vtexft.c: (_vte_xft_set_text_font):
2071
2072 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
2073
2074         Use gdk_error_trap_{push,pop} around raw X11 and Xft calls.
2075         cf Bug 368894.
2076
2077         * src/vtexft.c: (_vte_xft_font_for_char), (_vte_xft_start),
2078         (_vte_xft_end):
2079
2080 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
2081
2082         Use gperf to calculate a more optimal vte_sequence_get_handler().
2083         This reduces vte_sequence_get_handler() from ~13% of the runtime
2084         during 'seq 1 1e6' to ~.5% (cumulative).
2085
2086         * src/Makefile.am:
2087         * src/vteseq-2.c: (vteseq_2_hash), (vteseq_2_lookup):
2088         * src/vteseq-2.gperf:
2089         * src/vteseq-n.c: (vteseq_n_hash), (vteseq_n_lookup):
2090         * src/vteseq-n.gperf:
2091         * src/vteseq.c: (_vte_sequence_get_handler):
2092
2093 2007-01-31  Chris Wilson  <chris@chris-wilson.co.uk>
2094
2095         Rudimentary vim scrolling benchmark.
2096
2097         * perf/Makefile.am:
2098         * perf/UTF-8-demo.txt:
2099         * perf/scroll.vim:
2100         * perf/vim.sh:
2101
2102 2007-01-30  Chris Wilson  <chris@chris-wilson.co.uk>
2103
2104         Bug 402329 – Rendering problem with underlines and cursor
2105
2106         * src/vte.c: (vte_terminal_paint):
2107                 Check hilite state when redrawing character under cursor.
2108
2109 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2110
2111         * src/vte-private.h:
2112         * src/vte.c: (vte_terminal_io_read):
2113                 Clean up the read IO loop.
2114
2115 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2116
2117         NULL return from pcre_study() does not necessarily mean an error
2118         occurred.
2119
2120         * src/vteregex.c: (_vte_regex_compile), (_vte_regex_exec):
2121
2122 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2123
2124         * src/vte.c: (_vte_terminal_set_pointer_visible),
2125         (_vte_terminal_fudge_pango_colors):
2126                 Kill a couple more compiler warnings.
2127
2128 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2129
2130         Bug 336105 – gnome-terminal crashes when termcap not found
2131
2132         * src/matcher.c: (_vte_matcher_init):
2133         * src/vte-private.h:
2134         * src/vte.c: (vte_terminal_set_default_tabstops),
2135         (vte_terminal_key_press), (vte_terminal_set_emulation),
2136         (_vte_terminal_inline_error_message), (vte_terminal_set_termcap),
2137         (vte_terminal_init), (vte_terminal_finalize),
2138         (vte_terminal_draw_cells):
2139                 Detect and issue an inline warning when we fail
2140                 to load a termcap.
2141
2142 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2143
2144         Tighten the invalidated cells.
2145
2146         * src/vte.c: (_vte_terminal_select_text):
2147         * src/vteseq.c: (vte_sequence_handler_cb):
2148
2149 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2150
2151         More compiler warnings.
2152
2153         * src/vtepangox.c: (_vte_pango_x_set_text_font),
2154         (_vte_pango_x_draw_text):
2155         * src/vteregex.c: (_vte_regex_exec):
2156
2157 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2158
2159         Detect availability of PCRE.
2160
2161         * configure.in:
2162         * src/Makefile.am:
2163
2164 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2165
2166         Improve handling of multi-row clears.
2167
2168         * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_draw_rows),
2169         (vte_terminal_paint):
2170
2171 2007-01-29  Chris Wilson <chris@chris-wilson.co.uk>
2172
2173         Add debugging flags for printing out cells contents and attributes as
2174         they are rendered.
2175
2176         * src/debug.c: (_vte_debug_parse_string):
2177         * src/debug.h:
2178         * src/vte.c: (vte_terminal_draw_cells):
2179
2180 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2181
2182         * src/vte.c: (vte_terminal_draw_rows):
2183                 Don't issue glyph items for blank cells.
2184
2185 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2186
2187         * configure.in:
2188                 Add -Wshadow to MAYBE_WARN
2189         * src/ring.c: (_vte_ring_remove):
2190         * src/table.c: (_vte_table_matchi):
2191         * src/vtedraw.c: (_vte_draw_clip):
2192         * src/vteskel.c:
2193                 Clean up some compiler warnings.
2194
2195 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2196
2197         * src/vteskel.c:
2198                 Add the NULL clip func to the skeleton function table.
2199
2200 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2201
2202         Update match hilite before showing the pointer as the choice of
2203         cursor depends on whether the pointer is above a matched region.
2204
2205         * src/vte.c: (vte_terminal_motion_notify),
2206         (vte_terminal_button_press), (vte_terminal_button_release):
2207
2208 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2209
2210         Only update the matched region if we move the pointer outside of the
2211         currently matched region.
2212         And only invalidate the cells underneath the matched region.
2213
2214         * src/vte.c: (_vte_invalidate_region),
2215         (vte_terminal_match_hilite_clear), (cursor_inside_match),
2216         (vte_terminal_match_hilite), (vte_terminal_draw_rows):
2217
2218 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2219
2220         * src/table.c: (_vte_table_free):
2221                 Fix a memleak.
2222
2223 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2224
2225         ==26147== 2,895 (352 direct, 2,543 indirect) bytes in 22 blocks are definitely lost in loss record 107 of 170
2226         ==26147==    at 0x4021380: malloc (vg_replace_malloc.c:149)
2227         ==26147==    by 0x4E85965: g_malloc (gmem.c:131)
2228         ==26147==    by 0x4E95537: g_slice_alloc (gslice.c:777)
2229         ==26147==    by 0x4E7C255: g_list_prepend (glist.c:95)
2230         ==26147==    by 0x428B887: vte_terminal_feed (vte.c:10991)
2231         ==26147==    by 0x429DD20: vte_terminal_io_read (vte.c:3214)
2232         ==26147==    by 0x4EA7A8C: g_io_unix_dispatch (giounix.c:162)
2233         ==26147==    by 0x4E7E481: g_main_context_dispatch (gmain.c:2045)
2234         ==26147==    by 0x4E8145E: g_main_context_iterate (gmain.c:2677)
2235         ==26147==    by 0x4E81808: g_main_loop_run (gmain.c:2881)
2236         ==26147==    by 0x45BA503: gtk_main (gtkmain.c:1148)
2237         ==26147==    by 0x805F7A3: main (terminal.c:1773)
2238
2239         * src/vte.c: (remove_from_active_list), (process_timeout),
2240         (update_repeat_timeout):
2241                 g_list_delete_link() is the one that actually frees the link.
2242                 s/g_list_remove_link/g_list_delete_link/.
2243
2244 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2245
2246         ==26147== Conditional jump or move depends on uninitialised value(s)
2247         ==26147==    at 0x42AB9F7: _vte_rdb_search (vterdb.c:95)
2248         ==26147==    by 0x42ABB40: _vte_rdb_quark (vterdb.c:201)
2249         ==26147==    by 0x42ABB9F: _vte_rdb_get_hintstyle (vterdb.c:241)
2250         ==26147==    by 0x42A7952: _vte_fc_patterns_from_pango_font_desc (vtefc.c:302)
2251         ==26147==    by 0x42B4E9B: _vte_xft_set_text_font (vtexft.c:103)
2252         ==26147==    by 0x42A6BE5: _vte_draw_set_text_font (vtedraw.c:258)
2253         ==26147==    by 0x428C62B: vte_terminal_ensure_font (vte.c:5963)
2254         ==26147==    by 0x4290295: vte_terminal_size_request (vte.c:6613)
2255         ==26147==    by 0x4E25228: g_cclosure_marshal_VOID__BOXED (gmarshal.c:566)
2256         ==26147==    by 0x4E17038: g_type_class_meta_marshal (gclosure.c:567)
2257         ==26147==    by 0x4E188FC: g_closure_invoke (gclosure.c:490)
2258         ==26147==    by 0x4E29779: signal_emit_unlocked_R (gsignal.c:2370)
2259         ==26147== 
2260
2261         * src/vterdb.c: (_vte_rdb_get):
2262                 Check the result of the get_property_string before using the
2263                 returned values.
2264
2265 2007-01-29  Chris Wilson  <chris@chris-wilson.co.uk>
2266
2267         * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_draw_rows):
2268                 Merge draw_cells() with the background clear, as generating
2269                 items for many rows and then splitting again in draw cells is
2270                 simply inefficient.
2271
2272 2007-01-28  Chris Wilson  <chris@chris-wilson.co.uk>
2273
2274         Bug 401215 – Multi-pass renderering
2275
2276         * src/vte.c: (vte_terminal_draw_cells), (vte_terminal_clear_cells),
2277         (vte_terminal_draw_cells_with_attributes),
2278         (vte_terminal_draw_rows), (vte_terminal_paint):
2279                 Break the draw_rows() loop into two passes - first clear the
2280                 background and second render the text.
2281                 Add another function based on draw_cells() that just clears the
2282                 background and make clearing the background optional in
2283                 draw_cells() - updating callers accordingly.
2284                 Adventurous souls are required to clean up draw_rows().
2285
2286 2007-01-27  Chris Wilson  <chris@chris-wilson.co.uk>
2287
2288         Fix compilation *with* debugging enabled.
2289         Grrr.
2290
2291         * src/keymap.c: (_vte_keysym_print):
2292
2293 2007-01-27  Chris Wilson  <chris@chris-wilson.co.uk>
2294
2295         Fix compilation without debugging enabled.
2296
2297         * src/keymap.c: (_vte_keysym_print), (_vte_keymap_map):
2298         * src/vte.c: (display_control_sequence):
2299         * src/vteapp.c: (main):
2300
2301 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2302
2303         * src/debug.h:
2304                 Provide a safe fallback for non-C99 compilers (well actually
2305                 anything that isn't a recent gcc at the moment).
2306
2307 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2308
2309         Bug 157267 – _vte_terminal_fudge_pango_colors() breaks Japanese input style
2310
2311         Patch by ynakai@redhat.com.
2312
2313         * src/vte.c: (_vte_terminal_fudge_pango_colors):
2314                 Check the attributes for each cell rather than assuming the
2315                 pango attributes (and cell attributes) are the same for the
2316                 whole string.
2317
2318 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2319
2320         * src/vteseq.c: (vte_sequence_handler_vb):
2321                 Iterating over all queued exposures and drawing on top of the
2322                 flash does not sense. Simply flush the draw.
2323
2324 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2325
2326         s/_VTE_DEBUG_ON/_VTE_DEBUG_IF/ and don't include
2327         the code block inside the macro.
2328
2329         * src/debug.h:
2330         * src/iso2022.c: (process_control), (_vte_iso2022_process):
2331         * src/keymap.c: (_vte_keymap_map):
2332         * src/matcher.c: (_vte_matcher_init):
2333         * src/pty.c: (_vte_pty_run_on_pty):
2334         * src/table.c: (_vte_table_addi), (_vte_table_matchi),
2335         (_vte_table_extract_numbers), (_vte_table_match):
2336         * src/trie.c: (_vte_trie_addx):
2337         * src/vte.c: (vte_terminal_match_check_internal),
2338         (vte_terminal_match_check), (vte_terminal_handle_sequence),
2339         (vte_terminal_catch_child_exited), (vte_terminal_process_incoming),
2340         (vte_terminal_io_write), (vte_terminal_send),
2341         (vte_terminal_key_press), (vte_terminal_copy_cb),
2342         (vte_terminal_set_font_full), (vte_terminal_realize),
2343         (vte_terminal_paint), (vte_terminal_scroll):
2344         * src/vteapp.c: (main):
2345         * src/vtebg.c: (vte_bg_root_pixmap):
2346
2347 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2348
2349         Bug 400834 – Use a global display/process timeout
2350
2351         Currently each terminal uses it own display timeout. Given that
2352         typical usage is several active terminals, there is an immediate
2353         advantage (context switches, fairness, smoothness) to using a single
2354         common timeout.
2355
2356         * src/debug.c: (_vte_debug_parse_string):
2357         * src/debug.h:
2358                 Add VTE_DEBUG_TIMEOUT
2359         * src/vte-private.h:
2360         * src/vte.c: (update_regions), (_vte_invalidate_cells),
2361         (_vte_invalidate_all), (vte_terminal_init),
2362         (vte_terminal_class_init), (add_update_timeout),
2363         (remove_from_active_list), (remove_update_timeout),
2364         (add_process_timeout), (vte_terminal_stop_processing),
2365         (vte_terminal_is_processing), (process_timeout),
2366         (update_repeat_timeout), (update_timeout):
2367                 Modify to use a global timeout rather than individual
2368                 private timeouts.
2369
2370 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2371
2372         Unable to set background scrolling mode from cmdline due to variable
2373         name confusion.
2374
2375         * src/vteapp.c: (main):
2376                 --scroll should set scroll=TRUE rather than cursor=TRUE!
2377
2378 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2379
2380         Bug 401082 – double-draw issue
2381
2382         The main cause of this bug was not expanding the cleared area to cover
2383         all the cells affected by the draw and forgetting to offset the clear
2384         by VTE_PAD_WIDTH.
2385
2386         To counter the performance hit due to the expanded repaint area, each
2387         backend is presented with the opportunity to apply a clip to the
2388         exposed region before painting.
2389
2390         This also fixes bug 333157,
2391
2392         * src/vte.c: (_vte_invalidate_cells), (vte_terminal_paint_area),
2393         (vte_terminal_paint):
2394         * src/vtedraw.c: (_vte_draw_clip):
2395         * src/vtedraw.h:
2396         * src/vteft2.c: (_vte_ft2_end), (_vte_ft2_clip):
2397         * src/vtegl.c:
2398         * src/vtepango.c: (_vte_pango_clip):
2399         * src/vtepangox.c: (_vte_pango_x_clip):
2400         * src/vtexft.c: (_vte_xft_clip), (_vte_xft_draw_text):
2401
2402 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2403
2404         * src/vte.c: (vte_terminal_match_hilite):
2405         * src/vteseq.c: (vte_sequence_handler_ce),
2406         (vte_sequence_handler_dc), (vte_sequence_handler_ec):
2407                 Tighten the _vte_invalidate_cells() to only those that
2408                 we potentially modify.
2409
2410 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2411
2412         * src/vtexft.c: (_vte_xft_set_text_font):
2413                 Remove the additional pixel inter-character spacing.
2414                 Compactness over clarity ;)
2415
2416 2007-01-26  Chris Wilson  <chris@chris-wilson.co.uk>
2417
2418         Apply a one pixel fudge to the Xft character position and width.
2419         This greatly improves text appearance and hides the misrendering of
2420         pseudo-bold characters.
2421         cf bugs 317691, 333157.
2422
2423         * src/vte.c: (vte_terminal_paint):
2424                 Increase the cursor size to fit around the cell.
2425         * src/vtexft.c: (_vte_xft_set_text_font), (_vte_xft_draw_text):
2426                 Fudge the Xft font positioning.
2427
2428 2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>
2429
2430         Bug 318307 – Cursor colour changes to foreground when unfocused
2431
2432         Whilst setting the colour, tweak the position of the rectangle, and
2433         extended the invalidate region to account for the OBO nature of bold
2434         font.
2435
2436         * src/vte.c: (_vte_invalidate_cells):
2437                 Include the padding to accomodate cell effects.
2438         * src/vte.c: (vte_terminal_paint):
2439                 Use the cursor color for the rectangle when unfocused.
2440
2441 2007-01-26  Behdad Esfahbod  <behdad@gnome.org>
2442
2443         * src/vte.c (vte_terminal_visibility_notify): Correctly handle
2444         visibility events: set invalidated_all to FALSE, and invalidate_all
2445         if fully unobscured.
2446
2447 2007-01-26  Behdad Esfahbod  <behdad@gnome.org>
2448
2449         * src/vte.c (vte_terminal_visibility_notify): Make sure we redraw
2450         after becoming unobscured.  There still is a bug that I've not found,
2451         but after obscuring the widget and coming back, a first redraw
2452         happens, but no update after that.
2453
2454 2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>
2455
2456         * src/vte.c: (vte_terminal_draw_area):
2457                 Occasionally we generate an exposed area which is computed
2458                 as 0x0 cells. Discard early, before we spend an infinity
2459                 drawing nothing.
2460
2461 2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>
2462
2463         Janitorial work - near elimination of #ifdef VTE_DEBUG from within
2464         functions, trimming a thousand lines of code.
2465
2466         We introduce a _vte_debug_print macro to cover the more common
2467         occurrence of printing a message at a certain debug level.
2468         And a _VTE_DEBUG_ON for a conditional code block.
2469
2470         src/debug.h     |   11 
2471         src/iso2022.c   |  201 ++-------
2472         src/keymap.c    |   41 -
2473         src/matcher.c   |   24 -
2474         src/pty.c       |  134 +-----
2475         src/reaper.c    |   21 
2476         src/ring.c      |   78 +--
2477         src/table.c     |   11 
2478         src/trie.c      |   19 
2479         src/vte.c       | 1187 ++++++++++---------------------------------------
2480         src/vteaccess.c |  198 +++------
2481         src/vteapp.c    |   21 
2482         src/vtebg.c     |   43 --
2483         src/vteconv.c   |   60 +-
2484         src/vteconv.h   |   12 
2485         src/vtedraw.c   |    6 
2486         src/vtefc.c     |    4 
2487         src/vteft2.c    |    5 
2488         src/vteglyph.c  |   27 -
2489         src/vtepango.c  |   11 
2490         src/vtepangox.c |    7 
2491         src/vteregex.c  |    2 
2492         src/vteseq.c    |  385 +++++-------------
2493         src/vtexft.c    |   26 -
2494         24 files changed, 789 insertions(+), 1745 deletions(-)
2495
2496         * src/debug.h:
2497         * src/iso2022.c: (_vte_iso2022_ambiguous_width_guess),
2498         (_vte_iso2022_state_new), (_vte_iso2022_state_set_codeset),
2499         (process_8_bit_sequence), (process_cdata), (process_control),
2500         (_vte_iso2022_process):
2501         * src/keymap.c: (_vte_keymap_map):
2502         * src/matcher.c: (_vte_matcher_init), (_vte_matcher_create),
2503         (_vte_matcher_destroy):
2504         * src/pty.c: (vte_pty_child_setup), (_vte_pty_run_on_pty),
2505         (_vte_pty_set_size), (_vte_pty_get_size), (_vte_pty_ptsname),
2506         (_vte_pty_open_unix98), (_vte_pty_open_with_helper),
2507         (_vte_pty_open):
2508         * src/reaper.c: (vte_reaper_emit_signal),
2509         (vte_reaper_child_watch_cb), (vte_reaper_init),
2510         (vte_reaper_finalize):
2511         * src/ring.c: (_vte_ring_insert), (_vte_ring_insert_preserve),
2512         (_vte_ring_remove):
2513         * src/table.c: (_vte_table_addi):
2514         * src/trie.c: (char_class_string_extract), (_vte_trie_addx),
2515         (_vte_trie_add):
2516         * src/vte.c: (update_regions), (_vte_invalidate_cells),
2517         (_vte_invalidate_all), (_vte_invalidate_cell),
2518         (_vte_invalidate_cursor_once),
2519         (vte_terminal_emit_selection_changed), (vte_terminal_emit_commit),
2520         (vte_terminal_emit_emulation_changed),
2521         (vte_terminal_emit_encoding_changed),
2522         (vte_terminal_emit_child_exited),
2523         (_vte_terminal_emit_contents_changed),
2524         (vte_terminal_emit_cursor_moved), (vte_terminal_emit_eof),
2525         (vte_terminal_emit_char_size_changed),
2526         (_vte_terminal_emit_status_line_changed),
2527         (vte_terminal_emit_increase_font_size),
2528         (vte_terminal_emit_decrease_font_size),
2529         (_vte_terminal_emit_text_inserted),
2530         (_vte_terminal_emit_text_deleted),
2531         (vte_terminal_emit_text_modified),
2532         (vte_terminal_emit_text_scrolled), (vte_terminal_deselect_all),
2533         (vte_terminal_match_check_internal), (vte_terminal_match_check),
2534         (vte_terminal_emit_adjustment_changed),
2535         (vte_terminal_queue_adjustment_changed),
2536         (_vte_terminal_adjust_adjustments), (vte_terminal_scroll_pages),
2537         (vte_terminal_maybe_scroll_to_bottom), (vte_terminal_set_encoding),
2538         (_vte_terminal_set_pointer_visible), (vte_terminal_new),
2539         (vte_terminal_generate_bold), (_vte_terminal_insert_char),
2540         (vte_terminal_handle_sequence), (vte_terminal_catch_child_exited),
2541         (vte_terminal_fork_command),
2542         (vte_terminal_emit_pending_text_signals),
2543         (vte_terminal_process_incoming), (vte_terminal_io_read),
2544         (vte_terminal_io_write), (vte_terminal_send),
2545         (vte_terminal_im_commit), (vte_terminal_im_preedit_start),
2546         (vte_terminal_im_preedit_end), (vte_terminal_im_preedit_changed),
2547         (vte_terminal_configure_toplevel),
2548         (vte_terminal_hierarchy_changed), (vte_terminal_style_changed),
2549         (vte_terminal_key_press), (vte_terminal_paste_cb),
2550         (vte_terminal_match_hilite_clear), (vte_terminal_match_hilite),
2551         (vte_terminal_clear_cb), (vte_terminal_copy_cb),
2552         (vte_terminal_copy), (vte_terminal_paste),
2553         (vte_terminal_start_selection), (vte_terminal_extend_selection),
2554         (vte_terminal_autoscroll), (vte_terminal_motion_notify),
2555         (vte_terminal_button_press), (vte_terminal_button_release),
2556         (vte_terminal_focus_in), (vte_terminal_focus_out),
2557         (vte_terminal_set_font_full), (vte_terminal_set_size),
2558         (vte_terminal_handle_scroll), (vte_terminal_set_emulation),
2559         (vte_terminal_set_termcap), (vte_terminal_reset_rowdata),
2560         (vte_terminal_fc_settings_changed), (vte_terminal_init),
2561         (vte_terminal_size_request), (vte_terminal_size_allocate),
2562         (vte_terminal_unrealize), (vte_terminal_finalize),
2563         (vte_terminal_realize), (vte_terminal_draw_cells),
2564         (_vte_terminal_map_pango_color), (vte_terminal_draw_area),
2565         (vte_terminal_paint), (vte_terminal_expose), (vte_terminal_scroll),
2566         (vte_terminal_class_init), (vte_terminal_copy_clipboard),
2567         (vte_terminal_paste_clipboard), (vte_terminal_copy_primary),
2568         (vte_terminal_paste_primary), (vte_terminal_background_update),
2569         (vte_terminal_queue_background_update),
2570         (vte_terminal_set_background_saturation),
2571         (vte_terminal_set_background_tint_color),
2572         (vte_terminal_set_background_transparent),
2573         (vte_terminal_set_background_image),
2574         (vte_terminal_set_background_image_file),
2575         (vte_terminal_set_word_chars), (process_timeout),
2576         (update_repeat_timeout), (update_timeout):
2577         * src/vteaccess.c: (xy_from_offset), (emit_text_caret_moved),
2578         (emit_text_changed_insert), (emit_text_changed_delete),
2579         (vte_terminal_accessible_update_private_data_if_needed),
2580         (vte_terminal_accessible_text_modified),
2581         (vte_terminal_accessible_text_scrolled),
2582         (vte_terminal_accessible_invalidate_cursor),
2583         (vte_terminal_accessible_finalize),
2584         (vte_terminal_accessible_get_text),
2585         (vte_terminal_accessible_get_text_somewhere),
2586         (vte_terminal_accessible_get_run_attributes),
2587         (vte_terminal_accessible_text_init),
2588         (vte_terminal_accessible_component_init),
2589         (vte_terminal_accessible_action_init),
2590         (vte_terminal_accessible_factory_new):
2591         * src/vteapp.c: (destroy_and_quit_eof), (destroy_and_quit_exited),
2592         (take_xconsole_ownership), (main):
2593         * src/vtebg.c: (vte_bg_root_pixmap), (vte_bg_set_root_pixmap),
2594         (_vte_bg_resize_pixbuf):
2595         * src/vteconv.c: (_vte_conv_utf8_utf8), (_vte_conv_open),
2596         (_vte_conv), (_vte_conv_cu), (_vte_conv_uu), (_vte_conv_uc):
2597         * src/vteconv.h:
2598         * src/vtedraw.c: (_vte_draw_new):
2599         * src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description):
2600         * src/vteft2.c: (_vte_ft2_draw_text):
2601         * src/vteglyph.c: (_vte_glyph_cache_free),
2602         (_vte_glyph_cache_set_font_description):
2603         * src/vtepango.c: (_vte_pango_set_text_font),
2604         (_vte_pango_draw_text):
2605         * src/vtepangox.c: (_vte_pango_x_set_text_font):
2606         * src/vteregex.c: (_vte_regex_exec):
2607         * src/vteseq.c: (vte_terminal_emit_deiconify_window),
2608         (vte_terminal_emit_iconify_window),
2609         (vte_terminal_emit_icon_title_changed),
2610         (vte_terminal_emit_window_title_changed),
2611         (vte_terminal_emit_raise_window), (vte_terminal_emit_lower_window),
2612         (vte_terminal_emit_maximize_window),
2613         (vte_terminal_emit_refresh_window),
2614         (vte_terminal_emit_restore_window),
2615         (vte_terminal_emit_move_window), (vte_terminal_emit_resize_window),
2616         (vte_sequence_handler_set_title_internal),
2617         (vte_sequence_handler_decset_internal), (vte_sequence_handler_bt),
2618         (vte_sequence_handler_application_keypad),
2619         (vte_sequence_handler_normal_keypad),
2620         (vte_sequence_handler_reset_mode), (vte_sequence_handler_decset),
2621         (vte_sequence_handler_decreset),
2622         (vte_sequence_handler_erase_in_display),
2623         (vte_sequence_handler_erase_in_line),
2624         (vte_sequence_handler_restore_mode),
2625         (vte_sequence_handler_save_mode),
2626         (vte_sequence_handler_window_manipulation):
2627         * src/vtexft.c: (_vte_xft_set_text_font):
2628
2629 2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>
2630
2631         Bug 317449 – The cursor disappears when clicking on windows above gnome-terminal
2632
2633         Enter a command that causes partial obscuration of the terminal,
2634         though it must cover the cursor. Close the new window, observe the
2635         pointer disappears.
2636
2637         The issue is that we hide the pointer whilst typing and show it after
2638         receiving a mouse movement. However in this case we steal the pointer
2639         away from the terminal without any mouse events and the cursor remains
2640         invisible.
2641
2642         * src/vte.c: (vte_terminal_focus_in):
2643                 Ensure the mouse pointer is visible on focus-in.
2644
2645 2007-01-26  Chris Wilson <chris@chris-wilson.co.uk>
2646
2647         Spend half an hour a day killing warnings...
2648
2649         * configure.in:
2650                 Remove -Wswitch-enum from MAYBE_WARN. I am that lazy.
2651         * src/buffer.c:
2652         * src/iso2022.c: (_vte_iso2022_is_ambiguous),
2653         (_vte_iso2022_ambiguous_width), (_vte_iso2022_map_get),
2654         (_vte_iso2022_find_nextctl), (_vte_iso2022_sequence_length),
2655         (_vte_iso2022_fragment_input), (process_8_bit_sequence),
2656         (process_cdata), (_vte_iso2022_process_single), (process_control),
2657         (_vte_iso2022_process):
2658         * src/keymap.c: (_vte_keymap_map):
2659         * src/table.c:
2660         * src/trie.c: (char_class_none_extract),
2661         (char_class_digit_extract), (char_class_multi_extract),
2662         (char_class_any_extract), (unichar_snlen), (unichar_sncmp),
2663         (char_class_string_extract), (_vte_trie_addx), (_vte_trie_add),
2664         (_vte_trie_matchx), (_vte_trie_match), (_vte_trie_printx),
2665         (_vte_trie_print), (convert_mbstowcs), (main):
2666         * src/vte-private.h:
2667         * src/vte.c: (vte_terminal_find_charcell),
2668         (_vte_row_data_find_charcell), (vte_terminal_emit_commit),
2669         (vte_terminal_match_clear_all), (vte_terminal_match_remove),
2670         (vte_terminal_match_add), (vte_terminal_match_set_cursor),
2671         (vte_terminal_match_check_internal), (vte_terminal_set_colors),
2672         (vte_terminal_emit_pending_text_signals),
2673         (vte_terminal_is_word_char), (vte_terminal_finalize),
2674         (vte_terminal_realize), (_vte_terminal_map_pango_color),
2675         (_vte_terminal_apply_pango_attr),
2676         (_vte_terminal_translate_pango_cells),
2677         (vte_terminal_set_scrollback_lines):
2678         * src/vteseq.c: (vte_sequence_handler_decset_internal):
2679                 Fixup compiler warnings, mostly of the type mixing signed and
2680                 unsigned compares and pointers.
2681
2682 2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>
2683
2684         * src/vte.c: (mark_input_source_invalid),
2685         (_vte_terminal_connect_pty_read), (mark_output_source_invalid),
2686         (_vte_terminal_connect_pty_write):
2687                 Use the GDestroyNotify to mark the source as invalid.
2688         * src/vte.c: (vte_terminal_ensure_font):
2689                 Protect ensure fonts against the VteDraw being destroyed.
2690         * src/vte.c: (vte_terminal_realize):
2691                 Reorder code to setup the style before the fonts.
2692         * src/vte.c: (vte_terminal_class_init):
2693                 The ->show() handler was redundant.
2694
2695 2007-01-25  Behdad Esfahbod  <behdad@gnome.org>
2696
2697         * src/vte.c (_vte_terminal_set_default_attributes),
2698         (_vte_invalidate_cells), (_vte_invalidate_all),
2699         (_vte_invalidate_cell), (_vte_invalidate_cursor_once),
2700         (vte_terminal_visibility_notify), (vte_terminal_handle_scroll):
2701         Replace most of checks for terminal->pvt->visibility_state ==
2702         GDK_VISIBILITY_FULLY_OBSCURED by terminal->pvt->invalidated_all, and
2703         adapt.
2704
2705 2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>
2706
2707         Bug 400759 – update problem with vte trunk
2708
2709         Otherwise known as the I can't count bug.
2710
2711         The number of rows and columns to paint were not properly taking
2712         account of the discrete nature of the cells ie although the floor(x)
2713         moved the start to the left by one, the extra cell was not being added
2714         to the width.
2715
2716         Also since the howmany() macro is pulled from <sys/param.h>, it can
2717         not be guarranteed to exist on all platforms. So in that case, provide
2718         a local copy.
2719
2720         * src/vte.c: (vte_terminal_draw_area):
2721                 Calculate the width as the distance between the explicity
2722                 calculated start and end cells.
2723
2724 2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>
2725
2726         Bug 400671 – crash in Terminal: detaching of tabs
2727
2728         The fontdirty flag needed to be set on unrealize to ensure the fonts
2729         get set on the VteDraw should the terminal be realized again (e.g
2730         drag'n'dropping).
2731
2732         * src/vte.c: (vte_terminal_unrealize):
2733                 Set the fontdirty flag to TRUE.
2734         * src/vtexft.c: (_vte_xft_set_text_font),
2735         (_vte_xft_get_char_width), (_vte_xft_draw_text),
2736         (_vte_xft_draw_char):
2737                 Add safe guards to avoid dereferencing a NULL font as it
2738                 is possible for _vte_xft_font_open() to fail.
2739
2740 2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>
2741
2742         Bug 399137 – UTF-8 problem in VteAccess
2743
2744         Improve the UTF-8 string handling within vteaccess.c
2745         A long and fraught history to this apparently simple change.
2746         Many thanks to Joanmarie Diggs and Rich Burridge for testing the
2747         patches and ensuring they caused no regressions in the ally interface.
2748
2749         * src/vteaccess.c: (emit_text_changed_insert),
2750         (emit_text_changed_delete):
2751                 Use g_utf8_pointer_to_offset() rather than open coding.
2752         * src/vteaccess.c: (vte_terminal_accessible_text_modified):
2753                 Convert the caret into a byte offset before performing the
2754                 ASCII character lookup.
2755                 Iterate backwards over the string using a g_utf8_prev_char,
2756                 and g_utf8_get_char.
2757
2758 2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>
2759
2760         Bug 400493 – Mouse selection seriously broken
2761
2762         The rendering of non-text attributes, e.g highlight, backgrounds,
2763         underlines, was broken by the change to multi-row run of glyphs. This
2764         was most apparent when selecting regions with a mouse.
2765
2766         * src/vte.c: (_vte_invalidate_cursor_once),
2767         (vte_terminal_extend_selection),
2768         (vte_terminal_draw_rows), (vte_terminal_draw_area),
2769         (vte_terminal_paint):
2770                 Some janitorial work (a memleak, whitespace, improving debug
2771                 messages, comments).
2772         * src/vte.c: (vte_terminal_draw_cells):
2773                 Loop over cells and draw attributes for groups of cells on
2774                 each row.
2775
2776 2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>
2777
2778         Bug 400438 – _vte_invalidate_all triggered on GDK_VISIBILITY_UNOBSCURED
2779
2780         * src/vte.c: (vte_terminal_visibility_notify):
2781                 Only force an _vte_invalidate_all if we can trivially detect
2782                 that we have switch from fully obscured to fully unobscured.
2783                 Otherwise, we will just handle the GDK expose in the normal
2784                 manner.
2785         * src/vte.c: (vte_terminal_expose):
2786                 Check the event area to see if we can use _vte_invalidate_all,
2787                 has a slight benefit of discarding further exposed area
2788                 processing.
2789                 
2790
2791 2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>
2792
2793         GDK tries to coalesce multiple expose events into a single event.
2794         This is passed to the application as a large region containing
2795         multiple rectangles. The unfortunate effect of this is having
2796         broken the invalidated region into 2 small components for vim,
2797         the expose event was still operating on a single region covering
2798         both. The reason the effect was invisible to the eye is due to the
2799         double buffer - GDK generated a backing pixmap for the exposed event
2800         and only copied from the pixmap to the window exactly the pixels
2801         exposed. So we regenerated draw commands for the entire area, and
2802         only saved on the later blit.
2803
2804         The improvement to this is only issue draw commands for the individual
2805         rectangles rather than the region as a whole.
2806
2807         * src/vte.c: (vte_terminal_draw_area), (vte_terminal_paint),
2808         (vte_terminal_expose):
2809                 Paint the exposed rectangles not the event clipbox!
2810
2811 2007-01-25  Chris Wilson <chris@chris-wilson.co.uk>
2812
2813         Print out the painted area for VTE_DEBUG_UPDATES.
2814
2815         * src/vte.c: (vte_terminal_paint):
2816
2817 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2818
2819         cf Bug 400072 – Handling of ; in control sequences
2820
2821         Moral of the story: wait until the morning.
2822         Revert r1512, the mistaken attempt at parsing '\e[;30m'.
2823
2824         * src/table.c: (_vte_table_addi), (_vte_table_matchi),
2825         (_vte_table_match):
2826
2827 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2828
2829         cf Bug 399617 – Avoid memory allocations during an expose event.
2830
2831         Currently we cannot generate long glyph runs due to the text
2832         painting being broken up into single rows and setting a low
2833         max run cap. The benefit of longer runs is the backends can
2834         do more caching within a run and potentially generate fewer
2835         render calls and/or less network traffic.
2836
2837         In the simple test case, this increased the performance of a
2838         remote hexdump by 10%.
2839
2840         * src/vte.c: (vte_terminal_draw_rows), (vte_terminal_paint):
2841                 Scan entired exposed area for glyph runs.
2842         * src/vtedraw.h:
2843                 Increase VTE_DRAW_MAX_LENGTH
2844         * src/vtexft.c: (_vte_xft_draw_text):
2845                 Create GlyphSpecs rather than CharFontSpecs, saves a 
2846                 conversion and potential malloc inside libXft, and our
2847                 own malloc.
2848
2849 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2850
2851         Bug 147495 – screen flicker when opening new terminal windows
2852
2853         Last in a series of work to reduce extraneous redraws. I no longer
2854         see the flicker when opening a white terminal.
2855
2856         * src/vte.c: (_vte_terminal_scroll_region):
2857                 Detect when we can just invalidate all.
2858         * src/vte.c: (_vte_terminal_fork_basic):
2859                 Don't force an unnecessary redraw.
2860
2861 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2862
2863         * src/vte.c: (vte_terminal_set_emulation):
2864                 Add a missing '\n' to the debug printerr.
2865         * src/vte.c: (vte_terminal_init):
2866                 Initialize the row count to VTE_MIN_SCROLLBACK (was to 0
2867                 first and then later within the same function to
2868                 VTE_MIN_SCROLLBACK).
2869
2870 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2871
2872         Bug 334755 – Incomplete information from vte_terminal_get_font
2873
2874         In many situations the font_desc stored in the terminal is incomplete.
2875         _vte_fc_transcribe_from_pango_font_description() automagically fills
2876         in default values for the backends but this is hidden from the
2877         application. By filling in default values up front from the widget
2878         font description control is returned to the application and theme
2879         designers.
2880
2881         Patch by Pedro de Medeiros.
2882         Also cf bug 335269.
2883
2884         * src/vte.c: (vte_terminal_set_font_full):
2885                 Pull default font description from widget.
2886         * src/vtefc.c: (_vte_fc_transcribe_from_pango_font_description):
2887                 Remove default values.
2888
2889 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2890
2891         Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
2892         actually revealed a faux-pas in the conversion of the public
2893         interfaces to GPid - that it broke the ABI.
2894
2895         However, the intention is to remove the exposed pid_t, cf bug 400333.
2896
2897         * python/vte.defs:
2898         * python/vte.override:
2899         * src/pty.c: (_vte_pty_open):
2900         * src/pty.h:
2901         * src/vte.c: (_vte_terminal_fork_basic), (vte_terminal_forkpty):
2902         * src/vte.h:
2903                 Revert the exposed GPids back to pid_t.
2904
2905 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2906
2907         ==25123== Invalid read of size 1
2908         ==25123==    at 0x4055992: vte_terminal_accessible_text_modified (vteaccess.c:497)
2909         ==25123==    by 0x46A1248: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
2910         ==25123==    by 0x4693EAA: g_closure_invoke (gclosure.c:490)
2911         ==25123==    by 0x46A4972: signal_emit_unlocked_R (gsignal.c:2440)
2912         ==25123==    by 0x46A5E96: g_signal_emit_valist (gsignal.c:2199)
2913         ==25123==    by 0x46A85ED: g_signal_emit_by_name (gsignal.c:2267)
2914         ==25123==    by 0x403E9E2: _vte_terminal_emit_text_inserted (vte.c:863)
2915         ==25123==    by 0x40517EF: vte_terminal_process_incoming (vte.c:3032)
2916         ==25123==    by 0x40522B5: update_repeat_timeout (vte.c:11332)
2917
2918         * src/vteaccess.c: (vte_terminal_accessible_text_modified):
2919                 Check that the caret is inside the old string before
2920                 accessing.
2921
2922 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2923
2924         Revert changes in conjunction with bug 399137 back to r1487,
2925         which contains Rich Burridge's fix for bug 397724.
2926
2927         * src/vteaccess.c: (emit_text_changed_insert),
2928         (emit_text_changed_delete),
2929         (vte_terminal_accessible_text_modified):
2930
2931 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2932
2933         * src/vteaccess.c: (vte_terminal_accessible_text_modified):
2934                 Valgrind pointed out a couple of places where we tried to
2935                 access before the start of the string.
2936
2937 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2938
2939         Bug 400184 – _vte_pty_open declaration mismatch - breaks on Solaris
2940
2941         Patch by Damien Carbery.
2942
2943         * src/pty.h:
2944                 Update prototype to match new definition.
2945
2946 2007-01-24  Chris Wilson <chris@chris-wilson.co.uk>
2947
2948         <mariano> hm, vte is not matching «ESC [ ; 7 m» :/
2949
2950         * src/table.c: (_vte_table_addi), (_vte_table_matchi),
2951         (_vte_table_match):
2952                 s/GList/GSList/
2953                 g_slist_append -> g_slist_reverse(g_slist_prepend)
2954                 And finally add the subtable to handle the leading ';'
2955                 in the variable length parameters.
2956
2957 2007-01-23  Chris Wilson <chris@chris-wilson.co.uk>
2958
2959         A couple of minor buggets.
2960
2961         * src/iso2022.c: (_vte_iso2022_state_set_codeset):
2962                 Use g_intern_string() instead of from_quark(to_quark(str))
2963         * src/vtepango.c: (_vte_pango_create), (_vte_pango_destroy),
2964         (_vte_pango_start), (_vte_pango_end), (_vte_pango_set_text_font):
2965                 Use the widget pango context (we're guarranteed to have a
2966                 screen by this point) and don't unref it!
2967                 Inspired by Pedro de Medeiros in Bug 335269.
2968
2969 2007-01-23  Chris Wilson <chris@chris-wilson.co.uk>
2970
2971         Regression on Bug 123591:
2972                 mkdir /tmp/aa; cd /tmp/aa; bash; cd ..; rmdir aa
2973                 Open a new tab in g-t -> Failure.       
2974
2975         * src/pty.c: (_vte_pty_run_on_pty):
2976                 Check the error return from g_spawn and try again with the
2977                 pwd if it reports that the child could not change directory.
2978
2979 2007-01-23  Chris Wilson <chris@chris-wilson.co.uk>
2980
2981         * src/pty.c: (_vte_pty_run_on_pty):
2982                 Add all g_spawn parameters to VTE_DEBUG_MISC output.
2983
2984 2007-01-22  Behdad Esfahbod  <behdad@gnome.org>
2985
2986         Released vte-0.15.2.
2987
2988         * NEWS: Updated.
2989
2990         * configure.in: Bumped version to 0.15.2.
2991
2992         * src/Makefile.am: Bumped libtool version to 10:9:1.
2993
2994 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
2995
2996         Bug 399137 - continuation.
2997
2998         * src/vteaccess.c: (vte_terminal_accessible_text_modified):
2999                 Classic bug:
3000                         clen = cp - old
3001                 rather than the more correct
3002                         clen = cp - current
3003
3004 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3005
3006         * src/vteapp.c: (char_size_changed), (char_size_realized), (main):
3007                 Don't try to perform gdk operations on unrealized windows.
3008
3009 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3010
3011         * src/pty.c: (_vte_pty_run_on_pty):
3012                 Print out the argument vector for VTE_DEBUG_MISC.
3013
3014 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3015
3016         * src/pty.c: (_vte_pty_run_on_pty):
3017                 Protect against g_strv_length(NULL)
3018
3019 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3020
3021         Bug 399137 - continuation.
3022
3023         * src/vteaccess.c: (vte_terminal_accessible_text_modified):
3024                 After walking back along the UTF-8 string, remember to update
3025                 the string lengths that are used to detect insertions and
3026                 deletions!
3027
3028 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3029
3030         If the caret is at the end of the buffer, then it set past the
3031         end of the offset array - do not use this as a lookup!
3032
3033         * src/vteaccess.c: (vte_terminal_accessible_text_modified):
3034                 If the caret points to past the last character, set the
3035                 offset to the string's NUL terminator.
3036
3037 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3038
3039         * configure.in:
3040                 Earlier configure.in update introduced a trailing ']', pair
3041                 it with its '['
3042                 
3043
3044 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3045
3046         Bug 132316 – terminal widget's context menu posting isn't exposed as an AtkAction
3047
3048         Original patch by <padraig.obriain@sun.com>
3049
3050         * src/vteaccess.c: (vte_terminal_accessible_free_private_data),
3051         (vte_terminal_accessible_component_init),
3052         (vte_terminal_accessible_do_action),
3053         (vte_terminal_accessible_get_n_actions),
3054         (vte_terminal_accessible_action_get_description),
3055         (vte_terminal_accessible_action_get_name),
3056         (vte_terminal_accessible_action_get_keybinding),
3057         (vte_terminal_accessible_action_set_description),
3058         (vte_terminal_accessible_action_init),
3059         (vte_terminal_accessible_get_type):
3060                 Remove grab_focus and defer to the parent's implementation.
3061                 Add an AtkAction iface.
3062
3063 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3064
3065         Bug 156161 – AccessibleText_getTextAtOffset returns wrong values in gnome-terminal
3066
3067         The code for ATK_TEXT_BOUNDARY_WORD_START and
3068         ATK_TEXT_BOUNDARY_WORD_END is the same.
3069
3070         Patch by <padraig.obriain@sun.com>
3071
3072         * src/vteaccess.c: (vte_terminal_accessible_get_text_somewhere):
3073                 Actually provide an implementation for
3074                 ATK_TEXT_BOUNDARY_WORD_END.
3075
3076 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3077
3078         Bug 399137 – UTF-8 problem in VteAccess
3079
3080         * src/vteaccess.c: (emit_text_changed_insert),
3081         (emit_text_changed_delete):
3082                 use g_utf8_pointer_to_offset() instead of open coding
3083         (vte_terminal_accessible_update_private_data_if_needed):
3084                 add the number of UTF-8 characters to the debug output.
3085         (vte_terminal_accessible_text_modified):
3086                 iterate backwards over the UTF-8 string using
3087                 g_utf8_prev_char() and convert the caret into a byte offset
3088                 before it as such.
3089
3090 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3091
3092         Bug 123591 – vte_terminal_fork_command succeeds even when it does not
3093
3094         * python/vte.defs:
3095         * python/vte.override:
3096         * src/reaper.c: (vte_reaper_child_watch_cb):
3097         * src/vte-private.h:
3098         * src/vte.c: (vte_terminal_catch_child_exited),
3099         (_vte_terminal_fork_basic), (vte_terminal_forkpty):
3100         * src/vte.h:
3101         * src/vteapp.c:
3102                 s/pid_t/GPid/ portable variant, no API/ABI implications
3103         * src/pty.c: (vte_pty_child_setup), (_vte_pty_run_on_pty),
3104         (_vte_pty_fork_on_pty_name), (_vte_pty_fork_on_pty_fd),
3105         (_vte_pty_open_unix98), (_vte_pty_pipe_open), (n_read), (n_write),
3106         (_vte_pty_start_helper), (_vte_pty_open_with_helper),
3107         (_vte_pty_open), (main):
3108                 Replace custom fork() and pipe based syncrohonisation scheme
3109                 with g_spawn_async_with_pipes() as it actually handles all
3110                 failure modes correctly, and gives us overtures of portability.
3111                 
3112
3113 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3114
3115         Hack'n'slash my way through doing a bit of weeding.
3116
3117         Fixed:
3118         - Bug 345514 – -no-undefined doesn't work with latest libtool
3119         - Bug 162003 – vte configure.in X checking can fail
3120                      – though this may cause other regressions!
3121         - Bug 314669 – Please specialize AC_PATH_XTRA
3122
3123         * configure.in:
3124                 Export LIBTOOL_EXPORT_OPTIONS for -no-undefined on windos.
3125                 Add to rather than override X_CFLAGS, X_LIBS
3126                 AC_PATH_XTRA - Find X11 using XFlush() rather than XtMalloc().
3127                 Print configuration details.
3128         * src/Makefile.am:
3129                 Conditional compilation of backends.
3130
3131 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3132
3133         Bug 389538 – crash in Terminal: nothing
3134
3135         * src/vteaccess.c: (vte_terminal_accessible_get_text):
3136                 Guard against negative length strings.
3137
3138 2007-01-22  Chris Wilson <chris@chris-wilson.co.uk>
3139
3140         Bug 161479 – Scroll wheel generates Release events
3141
3142          vte sends release events on scroll but xterm doesn't which breaks
3143          mc among others.
3144
3145          Patch by Benedikt Meurer.
3146
3147         * src/vte.c: (vte_terminal_scroll):
3148                 Remove the offending release event.
3149
3150 2007-01-20  Chris Wilson <chris@chris-wilson.co.uk>
3151
3152         <kmaraas> ickle: sparse complains about dubious 1 bit bitfields
3153                 if you use gboolean instead of guint
3154         <kmaraas> so s/gboolean/guint at line 166 and 174
3155         <mariano> unless that changes the API, of course...
3156         <kmaraas> it doesn't
3157         <mariano> gboolean a:1 is not very correct anyways
3158         <kmaraas> ickle: we've done the same change in other modules
3159         <ickle> if I do it quick, behdad might not even notice ;)
3160
3161         * src/vte.h:
3162                 Convert signed single bit field to unsigned. The code
3163                 was setting it to 1 anyhow (and not -1 as the type indicated).
3164
3165 2007-01-20  Chris Wilson <chris@chris-wilson.co.uk>
3166
3167         Bug 398602 – Build Failure
3168
3169         * src/vte.c: (vte_terminal_expose):
3170                 Fixup typo. [Grrr. Must get git-svn back into sync]
3171
3172 2006-11-19 Rich Burridge <rich.burridge@sun.com>
3173
3174         * src/vteaccess.c:
3175         Fixed bug #397724 - Orca incorrect echo's certain input in 
3176         gnome-terminal when key echo is set to off (on Ubuntu Feisty).
3177
3178 2007-01-20  Chris Wilson <chris@chris-wilson.co.uk>
3179         
3180         * src/vte.c: (vte_terminal_expose):
3181                 Also if the entire terminal is invalidated,
3182                 do not add more GTK+ exposes to it.
3183
3184 2007-01-20  Chris Wilson <chris@chris-wilson.co.uk>
3185
3186         Track when we have invalidated the entire terminal and skip adding
3187         new regions when possible.
3188
3189         * src/vte-private.h:
3190         * src/vte.c: (update_regions), (_vte_invalidate_cells),
3191         (_vte_invalidate_all), (vte_terminal_size_allocate),
3192         (reset_update_regions):
3193
3194 2007-01-20  Chris Wilson <chris@chris-wilson.co.uk>
3195
3196         Bug 398244 – Gnome-terminal opens a huge sized window
3197
3198         * src/vte.c: (vte_terminal_ensure_font),
3199         (vte_terminal_set_font_full), (vte_terminal_size_request),
3200         (vte_terminal_realize), (vte_terminal_get_char_width),
3201         (vte_terminal_get_char_height), (vte_terminal_get_char_descent),
3202         (vte_terminal_get_char_ascent):
3203                 Ensure the font metrics are calculated before use.
3204
3205 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3206
3207         * src/vte.c: (vte_terminal_process_incoming):
3208                 Do not invalidate the old cursor position if it was not
3209                 visible.
3210
3211 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3212
3213         * src/vte.c: (process_timeout):
3214                 Make sure ->process_timeout is set to VTE_INVALID_SOURCE on
3215                 all paths that remove the timeout.
3216
3217 2007-01-19  Chris Wilson  <chris@chris-wilson.co.uk>
3218
3219         Add <> to mark boundaries of process_timeout().
3220
3221         * src/vte.c: (vte_terminal_class_init), (process_timeout):
3222
3223 2007-01-19  Chris Wilson  <chris@chris-wilson.co.uk>
3224
3225         Add {},[] to mark boundaries of update_timeout() and notice that
3226         the display limited update_timeout was not dying.
3227
3228         * src/vte.c: (vte_terminal_class_init), (update_repeat_timeout),
3229         (update_timeout):
3230
3231 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3232
3233         * src/vte.c: (vte_terminal_realize), (remove_process_timeout):
3234                 Small cleanup:
3235                  - protect remove_process_timeout against an invalid source.
3236                  - move static prototypes into common block.
3237                  - gdk_window_show() is done in map not realize.
3238
3239 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3240
3241         * src/vte-private.h:
3242         * src/vte.c: (vte_terminal_process_incoming):
3243                 Introduce a bit of slack in the bbox check to allow
3244                 for a small of amount of cursor motion e.g. due to line
3245                 scrolling. This turns the long sequence of
3246                 '(?!?!??? ... ????!)'
3247                 during a hexdump into the better behaved 
3248                 '.(?!?!?!??!)-+=.(?!?!??!)-+=........'. Although it is
3249                 puzzling why we now how have a block of IO and then two quick
3250                 display upates...
3251
3252 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3253
3254         * src/vte.c: (process_timeout), (update_repeat_timeout),
3255         (update_timeout):
3256                 Repeat _vte_terminal_process_incoming until we have drained
3257                 the incoming buffers or we can handle no more. Fixes a
3258                 problem where the display wouldn't update if we hadn't
3259                 processed enough data (e.g. on startup, displaying the first
3260                 prompt). This bug corresponds with the sequence
3261                 '*-+=..()?!(?!?!?!)-+=' below, which now reads
3262                 '*-+=..()(?!?!?!)-+='
3263
3264 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3265
3266         * src/vte.c: (_vte_invalidate_cursor_once):
3267                 "%ld" for cursor indices.
3268
3269 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3270
3271         * src/vte.c: (_vte_invalidate_cells),
3272         (_vte_invalidate_cursor_once):
3273                 Cursor indices are long.
3274
3275 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3276
3277         * src/vte-private.h:
3278         * src/vte.c: (_vte_invalidate_cell):
3279                 Cursor indices are long.
3280         * src/vte.c: (_vte_terminal_expose):
3281                 Prepend the GTK+ generated expose if we already have an
3282                 display update pending.
3283
3284 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3285
3286         Add a new debug flag to visualize the work flow.
3287         VTE_DEBUG_FLAGS=work generates output like:
3288         Debugging work flow (top input to bottom output):
3289           .  _vte_terminal_process_incoming
3290           (  start _vte_terminal_process_incoming
3291           ?  _vte_invalidate_cells (call)
3292           !  _vte_invalidate_cells (dirty)
3293           *  _vte_invalidate_all
3294           )  end _vte_terminal_process_incoming
3295           -  gdk_window_process_all_updates
3296           +  vte_terminal_expose
3297           =  vte_terminal_paint
3298         *?!**+=*-+=..()?!(?!?!?!)-+=?!-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.().(?!?!?!)-+=.().(?!?!?!)-+=.().().(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!?!)-+=.(?!?!)-+=.............................................................................................................................................................................................................................................................................(?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????!??!)-+=.......................................................................
3299
3300         Which tells me I have two bugs to track:
3301                 1. the initial '..()' is a missing invalidate.
3302                 2. '(?!?!????????????????????!??!)' is not very efficient.
3303
3304         * src/debug.c: (_vte_debug_parse_string):
3305         * src/debug.h:
3306         * src/vte.c: (update_regions), (_vte_invalidate_cells),
3307         (_vte_invalidate_all), (vte_terminal_process_incoming),
3308         (vte_terminal_io_read), (vte_terminal_paint),
3309         (vte_terminal_expose), (vte_terminal_class_init):
3310                 Add VTE_DEBUG_WORK
3311
3312 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3313
3314         Bug 398150 – cursor leaves trail behind in vim
3315
3316         * src/vte-private.h:
3317         * src/vte.c: (_vte_invalidate_cell),
3318         (vte_terminal_process_incoming):
3319         * src/vteseq.c: (vte_sequence_handler_decset_internal):
3320                 Invalidate the old cursor position if we detect the cursor
3321                 moved during the sequence or if the cursor changed state.
3322
3323 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3324
3325         * src/Makefile.am:
3326                 Missing $(X_CFLAGS)
3327
3328 2007-01-19  Chris Wilson <chris@chris-wilson.co.uk>
3329
3330         Bug 398243 – Crash
3331
3332         * src/vtebg.c: (vte_bg_cache_prune_int):
3333                 Use the return from g_list_delete_link to maintain the list
3334                 head.
3335
3336 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3337
3338         * src/vte.c: (_vte_invalidate_cells):
3339                 Check that the start of the invalid region is on screen.
3340
3341 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3342
3343         Bug 398116 – lags behind when widget not visible
3344
3345         * src/vte.c: (vte_terminal_handle_scroll):
3346                 During the spring clean, I converted a few GTK_WIDGET_REALIZED()
3347                 checks to GTK_WIDGET_DRAWABLE()+visibility check.
3348                 Unfortunately, it broke keeping the scroll delta in sync with
3349                 the insert delta. Sync the pair, then perform the check before
3350                 making updates on the visible area.
3351
3352 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3353
3354         Bug 398083 – background not painted correctly when starting up
3355
3356         * src/vte.c: (_vte_invalidate_all):
3357                 Compute drawable area in window co-ordinates and not widget
3358                 co-ordinates.
3359
3360 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3361
3362         * src/vte.c: (vte_terminal_expose):
3363                 Small bit of logic inversion that would have tried to paint
3364                 on unmapped and invisible widgets.
3365
3366 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3367         And the corresponding overrides. [The downsides of losing track of
3368         which machine you are working on.]
3369
3370         * python/vte.override:
3371                 Add (get_text_include_trailing_spaces)
3372
3373 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3374
3375         Add missing export of vte_terminal_get_text_include_trailing_spaces,
3376         needed for building a simple testcase for Bug 397724.
3377         vte.defs needs a bit of love...
3378
3379         * python/vte.defs:
3380                 Add (get_text_include_trailing_spaces)
3381
3382 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3383
3384         * src/vterdb.c: (_vte_rdb_search), (_vte_rdb_boolean):
3385                 Fix a couple of compiler warnings.
3386
3387 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3388
3389         * src/vte.c: (vte_terminal_process_incoming):
3390                 Delete some dead code.
3391
3392 2007-01-18  Chris Wilson <chris@chris-wilson.co.uk>
3393
3394         * configure.in:
3395                 Restore --enable-debugging. 
3396
3397 2007-01-18  Chris Wilson  <chris@chris-wilson.co.uk>
3398
3399         Copy Behdad's MAYBE_WARN comprehensive set of warnings from Cairo,
3400         and fixup the immediate compilation failures.
3401
3402         * configure.in:
3403                 Iterate over a list of warnings and check that they are valid
3404                 for the compiler.
3405                 
3406         * src/debug.c: (_vte_debug_on):
3407                 Kill fflush() [redundant with g_printerr].
3408
3409 2007-01-18  Behdad Esfahbod  <behdad@gnome.org>
3410
3411         * configure.in: Don't call AC_CANONICAL_HOST.  Libtool calls it
3412         already.
3413
3414         * src/Makefile.am: Don't build extra, test, programs by default.
3415         Speeds build up.
3416
3417 2007-01-18  Behdad Esfahbod  <behdad@gnome.org>
3418
3419         * src/ring.c (_vte_ring_insert_preserve):
3420         * src/vte.c (vte_terminal_paint):
3421         Fix loop-optimization warnings.
3422
3423 2007-01-18  Behdad Esfahbod  <behdad@gnome.org>
3424
3425         * src/ssfe.c (cleanupexit), (barf):
3426         * src/vtebg.c (vte_bg_cache_prune_int):
3427         * src/vtetc.c (main):
3428         Fix more warnings.
3429
3430 2007-01-18  Behdad Esfahbod  <behdad@gnome.org>
3431
3432         * src/table.c (main):
3433         * src/trie.c (_vte_trie_addx), (main):
3434         * src/utf8echo.c (main):
3435         Fix int vs long int mismatches in printf args.
3436
3437 2007-01-18  Behdad Esfahbod  <behdad@gnome.org>
3438
3439         * src/iso2022.c (_vte_iso2022_find_nextctl):
3440         * src/reaper.c (vte_reaper_finalize):
3441         * src/vte.c (_vte_terminal_insert_char), (vte_terminal_key_press),
3442         (vte_terminal_init), (vte_terminal_size_allocate):
3443         * src/vteapp.c (main):
3444         * src/vtedraw.c (_vte_draw_init_default):
3445         * src/vteglyph.c (_vte_glyph_cache_free):
3446         * src/vtergb.c (_vte_rgb_copy):
3447         * src/vtexft.c (_vte_xft_font_for_char):
3448         Remove unused variables.
3449
3450 2007-01-18  Chris Wilson  <chris@chris-wilson.co.uk>
3451
3452         Bug 161342 revisited. Reset the box to +-inf and not the current
3453         cursor otherwise you just reproduce the slow behaviour (an overly
3454         large invalidation area).
3455
3456         * src/vte.c: (vte_terminal_process_incoming):
3457                 Reset bbox to +-inf.
3458
3459 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3460
3461         Second breakage: VTE_INVALID_SOURCE !=0 and calling
3462         vte_terminal_set_scrollback_lines with lines == ->scrollback_lines
3463         is not a nop.
3464
3465         * src/vte.c: (vte_terminal_background_update),
3466         (vte_terminal_queue_background_update):
3467                 VTE_INVALID_SOURCE != 0
3468         (vte_terminal_set_scrollback_lines):
3469                 reset the rowdata everytime.
3470
3471 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3472
3473         Bug 397414 - port vteapp to GOption
3474
3475         * src/vteapp.c: (main):
3476                 Translation of getopt switch to GOptionEntry[].
3477                 Missing help for --geometry.
3478
3479 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3480
3481         First breakage spotted: the realized flag is set too late in
3482         the realize handler. Note to self: not everybody uses a black
3483         background.
3484
3485         * src/vte.c: (vte_terminal_realize):
3486                 Restore GTK_WIDGET_SET_FLAGS(REALIZED)
3487
3488 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3489
3490         Bug 395373 - Allow the user to specify backend priorities.
3491
3492         * src/vtedraw.c: (_vte_draw_init_user), (_vte_draw_init_default),
3493         (_vte_draw_new):
3494                 Scan $ENV{VTE_BACKEND} for the user's preferred backend
3495                 and failover to the first working backend.
3496                 Discard checking VTE_USE_*
3497
3498         * src/vtedraw.h:
3499         * src/vteft2.c:
3500         * src/vteft2.h:
3501         * src/vtegl.c:
3502         * src/vtegl.h:
3503         * src/vtepango.c:
3504         * src/vtepango.h:
3505         * src/vtepangox.c:
3506         * src/vtepangox.h:
3507         * src/vteskel.c: (_vte_skel_check), (_vte_skel_create),
3508         (_vte_skel_destroy), (_vte_skel_start):
3509         * src/vteskel.h:
3510         * src/vtexft.c:
3511         * src/vtexft.h:
3512                 Remove the environment variable field, drop the "Vte" prefix
3513                 from the backend names and make the exported structure const.
3514
3515 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3516
3517         As part of Bug 397439.
3518
3519         * src/iso2022.c: (_vte_iso2022_is_ambiguous):
3520         * src/vte-private.h:
3521         * src/vte.c: (_vte_terminal_set_default_attributes),
3522         (vte_terminal_set_default_tabstops), (vte_terminal_set_encoding),
3523         (vte_terminal_set_opacity), (vte_terminal_set_default_colors),
3524         (vte_terminal_emit_pending_text_signals),
3525         (vte_terminal_feed_child_using_modes),
3526         (vte_terminal_hierarchy_changed),
3527         (vte_terminal_send_mouse_button_internal),
3528         (vte_terminal_maybe_send_mouse_drag), (vte_terminal_set_font),
3529         (vte_terminal_set_font_from_string), (vte_terminal_set_size),
3530         (vte_terminal_handle_scroll), (vte_terminal_set_scroll_adjustment),
3531         (vte_terminal_set_emulation), (vte_terminal_set_termcap),
3532         (vte_terminal_init), (vte_terminal_size_allocate),
3533         (vte_terminal_unrealize), (vte_terminal_finalize),
3534         (vte_terminal_realize), (vte_terminal_determine_colors),
3535         (vte_terminal_background_update),
3536         (vte_terminal_queue_background_update),
3537         (vte_terminal_set_background_transparent),
3538         (vte_terminal_set_cursor_blinks),
3539         (vte_terminal_set_scrollback_lines), (vte_terminal_reset),
3540         (vte_terminal_set_pty):
3541         * src/vteseq.c: (vte_sequence_handler_st),
3542         (vte_sequence_handler_vb),
3543         (vte_sequence_handler_device_status_report),
3544         (vte_sequence_handler_dec_device_status_report),
3545         (vte_sequence_handler_window_manipulation):
3546                 Janitorial work to improve code readability and small
3547                 micro-optimisations, such as use the length returned by
3548                 g_snprintf rather then calling strlen on the result or just
3549                 using a constant string.
3550
3551 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3552
3553         As part of Bug 397439.
3554
3555         * src/ring.h:
3556                 Make the debug checks conditional on VTE_DEBUG.
3557
3558 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3559
3560         As part of Bug 397439.
3561
3562         * src/matcher.c: (_vte_matcher_add), (_vte_matcher_create),
3563         (_vte_matcher_destroy), (_vte_matcher_new), (_vte_matcher_match),
3564         (_vte_matcher_print):
3565         * src/matcher.h:
3566         * src/table.c: (_vte_table_new):
3567         * src/table.h:
3568         * src/trie.c: (_vte_trie_new):
3569         * src/trie.h:
3570                 _vte_match_match() is called extremely frequently, and the
3571                 switch shows up on the profiles. Replace the switch with a
3572                 function pointer obtained by introducing function tables for
3573                 the matcher implementations.
3574
3575 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3576
3577         As part of Bug 397439.
3578
3579         * src/vte-private.h:
3580         * src/vte.c: (vte_terminal_set_font_full), (vte_terminal_realize):
3581                 Don't load a font until the terminal is realized.
3582                 Saves decoding 2 or 3 fonts before g-t is mapped.
3583
3584 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3585
3586         As part of Bug 397439.
3587
3588         * src/vteseq.c: (vte_g_array_fill):
3589                 Micro-optimise the loop.
3590
3591 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3592
3593         As part of Bug 397439.
3594
3595         * src/vteft2.c: (_vte_ft2_create), (_vte_ft2_start),
3596         (_vte_ft2_end), (update_bbox), (_vte_ft2_set_text_font),
3597         (_vte_ft2_draw_text):
3598         * src/vtergb.c: (_vte_rgb_buffer_new), (_vte_rgb_buffer_resize),
3599         (_vte_rgb_draw_color_rgb), (_vte_rgb_copy):
3600         * src/vtergb.h:
3601                 Reuse converted glyphs within a run.
3602
3603 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3604
3605         As part of Bug 397439.
3606
3607         * src/vteconv.c: (_vte_conv_utf8_strlen), (_vte_conv):
3608                 Micro-optimise the loops.
3609
3610 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3611
3612         As part of Bug 397439.
3613
3614         * src/vteglyph.c: (_vte_glyph_free), (_vte_cached_glyph_free),
3615         (_vte_glyph_cache_new), (_vte_glyph_cache_free),
3616         (_vte_glyph_cache_set_font_description),
3617         (_vte_glyph_cache_has_char), (_vte_glyph_remap_char),
3618         (_vte_glyph_get_uncached), (_vte_glyph_get), (_vte_glyph_draw):
3619         * src/vteglyph.h:
3620                 Avoid the double glyph lookup in _vte_glyph_get and
3621                 replace the tree with a hash.
3622
3623 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3624
3625         As part of Bug 397439.
3626
3627         * src/iso2022.c: (_vte_iso2022_state_new),
3628         (_vte_iso2022_state_free), (_vte_iso2022_state_set_codeset):
3629         * src/trie.c: (_vte_trie_add), (convert_mbstowcs):
3630         * src/utf8echo.c: (main):
3631         * src/vte.c: (vte_terminal_set_encoding), (vte_terminal_send),
3632         (vte_terminal_init), (vte_terminal_finalize),
3633         (vte_terminal_set_word_chars):
3634         * src/vteconv.c: (_vte_conv_open), (_vte_conv_close), (_vte_conv):
3635         * src/vteconv.h:
3636         * src/vteseq.c: (vte_sequence_handler_set_title_internal):
3637                 s/(VteConv)-1/VTE_INVALID_CONV/
3638
3639 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3640
3641         As part of Bug 397439.
3642
3643         * src/vte.c: (_vte_new_row_data), (_vte_new_row_data_sized),
3644         (_vte_terminal_find_row_data), (_vte_row_data_find_charcell),
3645         (vte_line_is_wrappable), (vte_terminal_extend_selection),
3646         (vte_terminal_draw_row):
3647                 Refactor vte_find_row_data to simplify and improve
3648                 some logic.
3649
3650 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3651
3652         As part of Bug 397439.
3653
3654         * src/vte.c: (vte_g_array_fill), (vte_terminal_emit_commit),
3655         (_vte_terminal_ensure_cursor), (_vte_terminal_insert_char),
3656         (_vte_terminal_fork_basic), (vte_terminal_process_incoming),
3657         (vte_terminal_key_press), (vte_terminal_visibility_notify),
3658         (vte_terminal_apply_metrics), (vte_terminal_paint),
3659         (vte_terminal_expose):
3660                 Callgrind driven rewrite of critical loops.
3661
3662 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3663
3664         As part of Bug 397439.
3665
3666         * src/vte-private.h:
3667         * src/vte.c: (_vte_terminal_connect_pty_write),
3668         (_vte_terminal_disconnect_pty_write), (vte_terminal_io_read),
3669         (vte_terminal_feed), (vte_terminal_feed_child_binary),
3670         (vte_terminal_init), (vte_terminal_unrealize),
3671         (add_process_timeout), (add_update_timeout),
3672         (remove_process_timeout), (vte_terminal_stop_processing),
3673         (vte_terminal_is_processing), (vte_terminal_start_processing),
3674         (process_timeout), (update_repeat_timeout), (update_timeout):
3675                 The rate-limiting step is the display update - we do not need
3676                 to process input faster than we are displaying it. So use the
3677                 update display timeout to process new input (and dirty some
3678                 more pixels).
3679
3680
3681 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3682
3683         As part of Bug 397439.
3684
3685         * src/interpret.c: (main):
3686         * src/iso2022.c: (_vte_iso2022_fragment_input),
3687         (_vte_iso2022_process), (main):
3688         * src/vte.c: (vte_terminal_match_contents_refresh),
3689         (vte_terminal_process_incoming), (vte_terminal_init),
3690         (vte_terminal_set_word_chars):
3691         * src/vteaccess.c:
3692         (vte_terminal_accessible_update_private_data_if_needed):
3693         * src/vtefc.c: (_vte_fc_patterns_from_pango_font_desc):
3694         * src/vtefc.h:
3695         * src/vteglyph.c: (_vte_glyph_cache_new), (_vte_glyph_cache_free),
3696         (_vte_glyph_cache_set_font_description):
3697         * src/vteglyph.h:
3698         * src/vteregex.c: (_vte_regex_sort_matches):
3699         * src/vtexft.c: (_vte_xft_font_open), (_vte_xft_font_close),
3700         (_vte_xft_font_for_char):
3701                 s/g_array_new(TRUE, TRUE/g_array_new(FALSE, FALSE/
3702                 All uses of GArray respect their lengths and do not
3703                 zero-termination or untouched members to be cleared.
3704
3705 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3706
3707         As part of Bug 397439.
3708
3709         * src/iso2022.c: (_vte_iso2022_state_free):
3710         * src/matcher.c: (_vte_matcher_free_params_array):
3711         * src/ring.c: (_vte_ring_free):
3712         * src/table.c: (_vte_table_free):
3713         * src/trie.c: (_vte_trie_match):
3714         * src/vte.c: (_vte_terminal_match_contents_clear),
3715         (_vte_terminal_fork_basic),
3716         (vte_terminal_get_text_range_maybe_wrapped), (vte_terminal_copy),
3717         (vte_terminal_finalize), (vte_terminal_draw_cells_with_attributes):
3718         * src/vteaccess.c: (vte_terminal_accessible_free_private_data):
3719         * src/vtebg.c: (vte_bg_root_pixmap), (vte_bg_cache_item_free):
3720         * src/vteconv.c: (_vte_conv_close):
3721         * src/vtedraw.c: (_vte_draw_free):
3722         * src/vteft2.c: (_vte_ft2_destroy):
3723         * src/vtegl.c: (_vte_gl_destroy):
3724         * src/vteglyph.c: (_vte_glyph_cache_free):
3725         * src/vtepango.c: (_vte_pango_destroy):
3726         * src/vtepangox.c: (_vte_pango_x_destroy):
3727         * src/vtergb.c: (_vte_rgb_buffer_new), (_vte_rgb_buffer_free):
3728         * src/vteseq.c: (vte_sequence_handler_se),
3729         (vte_sequence_handler_so):
3730         * src/vteskel.c: (_vte_skel_destroy):
3731         * src/vtexft.c: (_vte_xft_font_close), (_vte_xft_destroy):
3732                 Do not zero memory in destructors, as glib will zero all
3733                 freed memory if G_DEBUG=gc-friendly.
3734
3735 2007-01-17  Chris Wilson  <chris@chris-wilson.co.uk>
3736
3737         As part of Bug 397439.
3738
3739         * src/reaper.c: (vte_reaper_add_child), (vte_reaper_init),
3740         (vte_reaper_constructor), (vte_reaper_finalize),
3741         (vte_reaper_class_init), (vte_reaper_get), (main):
3742         * src/vte.c: (G_DEFINE_TYPE_WITH_CODE), (_vte_terminal_fork_basic),
3743         (vte_terminal_key_press), (vte_terminal_init), (vte_terminal_show),
3744         (vte_terminal_finalize), (vte_terminal_get_accessible),
3745         (vte_terminal_class_init):
3746         * src/vteaccess.c: (vte_terminal_initialize),
3747         (vte_terminal_accessible_finalize),
3748         (vte_terminal_accessible_class_init),
3749         (vte_terminal_accessible_get_type),
3750         (vte_terminal_accessible_factory_init),
3751         (vte_terminal_accessible_factory_new):
3752         * src/vtebg.c: (vte_bg_native_new), (vte_bg_finalize),
3753         (vte_bg_class_init), (vte_bg_init), (vte_bg_get_for_screen),
3754         (vte_bg_cache_item_free), (vte_bg_cache_prune_int),
3755         (_vte_bg_resize_pixbuf), (vte_bg_set_root_pixmap),
3756         (vte_bg_cache_add), (vte_bg_cache_search), (vte_bg_get_pixmap),
3757         (vte_bg_get_pixbuf):
3758                 Use GObject boiler-plate code (G_DEFINE_TYPE),