]> git.pld-linux.org Git - packages/vte.git/commitdiff
- reverted to revision 1846; further changes break gnome-terminal, so #415381 vte...
authorMarcin Banasiak <marcin.banasiak@gmail.com>
Sun, 18 Mar 2007 12:57:23 +0000 (12:57 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    vte-branch.diff -> 1.2

vte-branch.diff

index c5c688d8285692d38e43f060162efc1d6e669184..8c0d66062188b777b370f34b10f1b2df244bfa39 100644 (file)
@@ -1,46 +1,7 @@
-diff -urN vte-0.16.0/ChangeLog vte-svn/ChangeLog
+diff -urN vte-0.16.0/ChangeLog vte-1846/ChangeLog
 --- vte-0.16.0/ChangeLog       2007-03-13 00:18:36.000000000 +0100
-+++ vte-svn/ChangeLog  2007-03-17 19:21:20.000000000 +0100
-@@ -1,3 +1,123 @@
-+2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
-+
-+      * src/vteseq.c (vte_sequence_handler_cursor_character_absolute):
-+              Remove a chunk of code that was tried as a mutt band-aid
-+              long ago and was completely wrong.
-+
-+2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
-+
-+      Bug 415381 – Improve performance of vte_terminal_insert_char()
-+
-+      The bulk of the work to remove redundant reads and conditionals
-+      from the code. In particular, gcc was emitting bit-by-bit copies
-+      for transferring the bitfield since we modified a member immediately
-+      afterwards - overcome this by using an explicit memcpy of the
-+      bitfields.
-+
-+      * src/vte-private.h:
-+      * src/vte.c (vte_g_array_fill), (vte_terminal_ensure_cursor),
-+      (_vte_terminal_insert_char), (vte_terminal_process_incoming),
-+      (vte_terminal_send):
-+      * src/vteseq.c (vte_sequence_handler_ic):
-+
-+2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
-+
-+      cf Bug 415381 – Improve performance of vte_terminal_insert_char()
-+
-+      * src/vte-private.h: Use a simple boolean rather than counter for
-+      text changed style flags.
-+      * src/vte.c: And update users.
-+      * src/vteseq.c:
-+
-+2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
-+
-+      cf Bug 415381 – Improve performance of vte_terminal_insert_char()
-+
-+      * src/vte-private.h: Embed bitfield into struct
-+      * src/vte.c:  And update users.
-+      * src/vteseq.c:
-+
++++ vte-1846/ChangeLog 2007-03-18 13:22:43.000000000 +0100
+@@ -1,3 +1,84 @@
 +2007-03-16  Chris Wilson  <chris@chris-wilson.co.uk>
 +
 +      Need to trigger update timeout rather than process timeout
@@ -125,185 +86,234 @@ diff -urN vte-0.16.0/ChangeLog vte-svn/ChangeLog
  2007-03-12  Behdad Esfahbod  <behdad@gnome.org>
  
        Released vte-0.16.0.
-diff -urN vte-0.16.0/po/ChangeLog vte-svn/po/ChangeLog
---- vte-0.16.0/po/ChangeLog    2007-03-13 00:11:59.000000000 +0100
-+++ vte-svn/po/ChangeLog       2007-03-17 19:21:19.000000000 +0100
-@@ -1,3 +1,7 @@
-+2007-03-16  Laurent Dhima  <laurenti@alblinux.net>
-+
-+      * sq.po: Updated Albanian translation.
-+
- 2007-03-12  Luca Ferretti  <elle.uca@libero.it>
-       * it.po: Updated Italian translation by Francesco Marletta.
-diff -urN vte-0.16.0/po/sq.po vte-svn/po/sq.po
---- vte-0.16.0/po/sq.po        2007-02-26 22:05:19.000000000 +0100
-+++ vte-svn/po/sq.po   2007-03-17 19:21:19.000000000 +0100
-@@ -1,116 +1,121 @@
--# Albanian translation for vte
-+# Përkthimi i vte në shqip.
- # This file is distributed under the same license as the vte package.
--# Copyright (C) 2003, 2004 Free Software Foundation, Inc.
--# Damnus <damnus@libero.it>, 2003.
--# Laurent Dhima <laurenti@alblinux.net>, 2003, 2004.
-+# Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
- #
-+# Damnus <damnus@libero.it>, 2003.
-+# Laurent Dhima <laurenti@alblinux.net>, 2003, 2004, 2007.
- msgid ""
- msgstr ""
--"Project-Id-Version: vte.HEAD\n"
-+"Project-Id-Version: vte HEAD\n"
- "Report-Msgid-Bugs-To: \n"
--"POT-Creation-Date: 2006-03-13 00:22-0500\n"
--"PO-Revision-Date: 2004-02-23 10:30+0100\n"
-+"POT-Creation-Date: 2007-03-16 19:03+0100\n"
-+"PO-Revision-Date: 2007-03-16 19:06+0100\n"
- "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
--"Language-Team: Albanian <gnome-albanian-perkthyesit@lists.sourceforge.net>\n"
-+"Language-Team: albanian <gnome-albanian-perkthyesit@lists.sourceforge.net>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
-+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
--#: src/iso2022.c:792 src/iso2022.c:803 src/iso2022.c:852 src/vte.c:1590
-+#: ../src/iso2022.c:784 ../src/iso2022.c:792 ../src/iso2022.c:823
-+#: ../src/vte.c:1790
- #, c-format
- msgid "Unable to convert characters from %s to %s."
- msgstr "I pamundur konvertimi i simboleve nga %s në %s."
--#: src/iso2022.c:1582
-+#: ../src/iso2022.c:1532
- #, c-format
- msgid "Attempt to set invalid NRC map '%c'."
- msgstr "Përpjekje për të vendosur një hartë '%c' NRC të pavlefshme."
- #. Application signalled an "identified coding system" we haven't heard of.  See ECMA-35 for gory details.
--#: src/iso2022.c:1623
-+#: ../src/iso2022.c:1562
- msgid "Unrecognized identified coding system."
- msgstr "U identifikua një sistem kodifikimi i pavlefshëm."
--#: src/iso2022.c:1672 src/iso2022.c:1698
-+#: ../src/iso2022.c:1621 ../src/iso2022.c:1648
- #, c-format
- msgid "Attempt to set invalid wide NRC map '%c'."
--msgstr ""
--"Përpjekje për të vendosur një hartë NRC të zgjeruar të pavlefshme '%c'."
--
--#: src/pty.c:329
--#, c-format
--msgid "Error adding `%s' to environment, continuing."
--msgstr "Gabim duke i shtuar `%s' ambientit, po vazhdoj."
-+msgstr "Përpjekje për të vendosur një hartë NRC të zgjeruar të pavlefshme '%c'."
- #. Give the user some clue as to why session logging is not
- #. * going to work (assuming we can open a pty using some other
- #. * method).
--#: src/pty.c:914
-+#: ../src/pty.c:837
- #, c-format
- msgid "can not run %s"
- msgstr "I pamundur ekzekutimi i %s"
--#: src/reaper.c:156
-+#: ../src/reaper.c:136
- msgid "Error creating signal pipe."
- msgstr "Gabim gjatë krijimit të pipe të sinjalit."
--#: src/trie.c:412
-+#: ../src/trie.c:414
- #, c-format
- msgid "Duplicate (%s/%s)!"
- msgstr "Duplikim (%s/%s)!"
--#: src/vte.c:1016
-+#: ../src/vte.c:1178
- #, c-format
- msgid "Error compiling regular expression \"%s\"."
- msgstr "Gabim gjatë kompilimit të shprehjes së rregullt \"%s\"."
--#: src/vte.c:2472
-+#: ../src/vte.c:2646 ../src/vte.c:2651
- #, c-format
- msgid "No handler for control sequence `%s' defined."
- msgstr "Asnjë trajtues i prezgjedhur për sekuencën e kontrollit `%s'."
- #. Translators: %s is replaced with error message returned by strerror().
--#: src/vte.c:3315
-+#: ../src/vte.c:3616
- #, c-format
- msgid "Error reading from child: %s."
- msgstr "Gabim gjatë leximit nga proçesi bir: %s"
--#: src/vte.c:3437 src/vte.c:4331
-+#: ../src/vte.c:3732
-+msgid "Unable to send data to child, invalid charset convertor"
-+msgstr "I pamundur dërgimi i të dhënave birit, konvertues i pavlefshëm simbolesh"
-+
-+#: ../src/vte.c:3743 ../src/vte.c:4659
- #, c-format
- msgid "Error (%s) converting data for child, dropping."
--msgstr ""
--"Gabim (%s) duke konvertuar të dhënat për proçesin bir, do të lihen si ishin."
-+msgstr "Gabim (%s) duke konvertuar të dhënat për proçesin bir, do të lihen si ishin."
--#: src/vte.c:6284
-+#: ../src/vte.c:6888
- #, c-format
- msgid "Error reading PTY size, using defaults: %s."
--msgstr ""
--"Gabim gjatë leximit të madhësisë PTY, do të përdoret vlera e prezgjedhur: %s."
-+msgstr "Gabim gjatë leximit të madhësisë PTY, do të përdoret vlera e prezgjedhur: %s."
--#: src/vte.c:6320
-+#: ../src/vte.c:6917
- #, c-format
- msgid "Error setting PTY size: %s."
- msgstr "Gabim gjatë vendosjes së madhësisë PTY: %s."
- #. Aaargh.  We're screwed.
--#: src/vte.c:10629
-+#: ../src/vte.c:11335
- msgid "_vte_conv_open() failed setting word characters"
- msgstr "_vte_conv_open() dështoi në vendosjen e gërmave të fjalës"
-+#: ../src/vteseq.c:3926
-+#, c-format
-+msgid "Got unexpected (key?) sequence `%s'."
-+msgstr "U mor një sekuencë ( kyç?) i papritur `%s'."
-+
- #. Bail back to normal mode.
--#: src/vteapp.c:736
-+#: ../src/vteapp.c:774
- msgid "Could not open console.\n"
- msgstr "E pamundur hapja e konsolës.\n"
--#: src/vteglyph.c:579
-+#: ../src/vteapp.c:838
-+msgid "Could not parse the geometry spec passed to --geometry"
-+msgstr "I pamundur analizimi i specifikimeve gjeometrike kaluar tek --geometry"
-+
-+#: ../src/vteglyph.c:562
- #, c-format
- msgid "Unknown pixel mode %d.\n"
- msgstr "Metodë pixel %d e panjohur.\n"
--#: src/vtexft.c:714
-+#: ../src/vtexft.c:264
- #, c-format
--msgid "Can not draw character U+%04x.\n"
--msgstr "I pamundur vizatimi i simbolit U+%04x.\n"
-+msgid "Can not find appropiate font for character U+%04x.\n"
-+msgstr "E pamundur gjetja e një gërme të përshtatshme për simbolin U+%04x.\n"
--#~ msgid "Got unexpected (key?) sequence `%s'."
--#~ msgstr "U mor një sekuencë ( kyç?) i papritur `%s'."
-diff -urN vte-0.16.0/src/cp437.py vte-svn/src/cp437.py
+diff -urN vte-0.16.0/po/Makefile.in.in vte-1846/po/Makefile.in.in
+--- vte-0.16.0/po/Makefile.in.in       2007-02-26 22:05:39.000000000 +0100
++++ vte-1846/po/Makefile.in.in 1970-01-01 01:00:00.000000000 +0100
+@@ -1,221 +0,0 @@
+-# Makefile for program source directory in GNU NLS utilities package.
+-# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+-#
+-# This file file be copied and used freely without restrictions.  It can
+-# be used in projects which are not available under the GNU Public License
+-# but which still want to provide support for the GNU gettext functionality.
+-# Please note that the actual code is *not* freely available.
+-#
+-# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+-#   instead of PACKAGE and to look for po2tbl in ./ not in intl/
+-#
+-# - Modified by jacob berkman <jacob@ximian.com> to install
+-#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+-#
+-# - Modified by Rodney Dawes <dobey@novell.com> for use with intltool
+-#
+-# We have the following line for use by intltoolize:
+-# INTLTOOL_MAKEFILE
+-
+-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+-PACKAGE = @PACKAGE@
+-VERSION = @VERSION@
+-
+-SHELL = /bin/sh
+-
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+-top_builddir = ..
+-VPATH = @srcdir@
+-
+-prefix = @prefix@
+-exec_prefix = @exec_prefix@
+-datadir = @datadir@
+-datarootdir = @datarootdir@
+-libdir = @libdir@
+-DATADIRNAME = @DATADIRNAME@
+-itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+-subdir = po
+-install_sh = @install_sh@
+-# Automake >= 1.8 provides @mkdir_p@.
+-# Until it can be supposed, use the safe fallback:
+-mkdir_p = $(install_sh) -d
+-
+-INSTALL = @INSTALL@
+-INSTALL_DATA = @INSTALL_DATA@
+-
+-GMSGFMT = @GMSGFMT@
+-MSGFMT = @MSGFMT@
+-XGETTEXT = @XGETTEXT@
+-INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+-INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+-MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+-GENPOT   = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+-
+-ALL_LINGUAS = @ALL_LINGUAS@
+-
+-PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
+-
+-POFILES=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+-
+-DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES)
+-EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
+-
+-POTFILES = \
+-#This Gets Replace for some reason
+-
+-CATALOGS=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+-
+-.SUFFIXES:
+-.SUFFIXES: .po .pox .gmo .mo .msg .cat
+-
+-.po.pox:
+-      $(MAKE) $(GETTEXT_PACKAGE).pot
+-      $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+-
+-.po.mo:
+-      $(MSGFMT) -o $@ $<
+-
+-.po.gmo:
+-      file=`echo $* | sed 's,.*/,,'`.gmo \
+-        && rm -f $$file && $(GMSGFMT) -o $$file $<
+-
+-.po.cat:
+-      sed -f ../intl/po2msg.sed < $< > $*.msg \
+-        && rm -f $@ && gencat $@ $*.msg
+-
+-
+-all: all-@USE_NLS@
+-
+-all-yes: $(CATALOGS)
+-all-no:
+-
+-$(GETTEXT_PACKAGE).pot: $(POTFILES)
+-      $(GENPOT)
+-
+-install: install-data
+-install-data: install-data-@USE_NLS@
+-install-data-no: all
+-install-data-yes: all
+-      $(mkdir_p) $(DESTDIR)$(itlocaledir)
+-      if test -n "$(PO_LINGUAS)"; then \
+-        linguas="$(PO_LINGUAS)"; \
+-      else \
+-        linguas="$(ALL_LINGUAS)"; \
+-      fi; \
+-      for lang in $$linguas; do \
+-        dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+-        $(mkdir_p) $$dir; \
+-        if test -r $$lang.gmo; then \
+-          $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+-          echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+-        else \
+-          $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+-          echo "installing $(srcdir)/$$lang.gmo as" \
+-               "$$dir/$(GETTEXT_PACKAGE).mo"; \
+-        fi; \
+-        if test -r $$lang.gmo.m; then \
+-          $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+-          echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+-        else \
+-          if test -r $(srcdir)/$$lang.gmo.m ; then \
+-            $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
+-              $$dir/$(GETTEXT_PACKAGE).mo.m; \
+-            echo "installing $(srcdir)/$$lang.gmo.m as" \
+-                 "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
+-          else \
+-            true; \
+-          fi; \
+-        fi; \
+-      done
+-
+-# Empty stubs to satisfy archaic automake needs
+-dvi info tags TAGS ID:
+-
+-# Define this as empty until I found a useful application.
+-installcheck:
+-
+-uninstall:
+-      if test -n "$(PO_LINGUAS)"; then \
+-        linguas="$(PO_LINGUAS)"; \
+-      else \
+-        linguas="$(ALL_LINGUAS)"; \
+-      fi; \
+-      for lang in $$linguas; do \
+-        rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+-        rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+-      done
+-
+-check: all $(GETTEXT_PACKAGE).pot
+-
+-mostlyclean:
+-      rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+-      rm -f .intltool-merge-cache
+-
+-clean: mostlyclean
+-
+-distclean: clean
+-      rm -f Makefile Makefile.in POTFILES stamp-it
+-      rm -f *.mo *.msg *.cat *.cat.m *.gmo
+-
+-maintainer-clean: distclean
+-      @echo "This command is intended for maintainers to use;"
+-      @echo "it deletes files that may require special tools to rebuild."
+-      rm -f Makefile.in.in
+-
+-distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+-dist distdir: $(DISTFILES)
+-      dists="$(DISTFILES)"; \
+-      extra_dists="$(EXTRA_DISTFILES)"; \
+-      for file in $$extra_dists; do \
+-        test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
+-      done; \
+-      for file in $$dists; do \
+-        test -f $$file || file="$(srcdir)/$$file"; \
+-        ln $$file $(distdir) 2> /dev/null \
+-          || cp -p $$file $(distdir); \
+-      done
+-
+-update-po: Makefile
+-      $(MAKE) $(GETTEXT_PACKAGE).pot
+-      tmpdir=`pwd`; \
+-      if test -n "$(PO_LINGUAS)"; then \
+-        linguas="$(PO_LINGUAS)"; \
+-      else \
+-        linguas="$(ALL_LINGUAS)"; \
+-      fi; \
+-      for lang in $$linguas; do \
+-        echo "$$lang:"; \
+-        result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+-        if $$result; then \
+-          if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+-            rm -f $$tmpdir/$$lang.new.po; \
+-            else \
+-            if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+-              :; \
+-            else \
+-              echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+-              rm -f $$tmpdir/$$lang.new.po; \
+-              exit 1; \
+-            fi; \
+-          fi; \
+-        else \
+-          echo "msgmerge for $$lang.gmo failed!"; \
+-          rm -f $$tmpdir/$$lang.new.po; \
+-        fi; \
+-      done
+-
+-Makefile POTFILES: stamp-it
+-      @if test ! -f $@; then \
+-        rm -f stamp-it; \
+-        $(MAKE) stamp-it; \
+-      fi
+-
+-stamp-it: Makefile.in.in ../config.status POTFILES.in
+-      cd .. \
+-        && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
+-             $(SHELL) ./config.status
+-
+-# Tell versions [3.59,3.63) of GNU make not to export all variables.
+-# Otherwise a system limit (for SysV at least) may be exceeded.
+-.NOEXPORT:
+diff -urN vte-0.16.0/src/cp437.py vte-1846/src/cp437.py
 --- vte-0.16.0/src/cp437.py    1970-01-01 01:00:00.000000000 +0100
-+++ vte-svn/src/cp437.py       2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/cp437.py      2007-03-18 13:22:32.000000000 +0100
 @@ -0,0 +1,9 @@
 +#!/usr/bin/python
 +print '%s' % '\e(U'
@@ -314,9 +324,9 @@ diff -urN vte-0.16.0/src/cp437.py vte-svn/src/cp437.py
 +              print ""
 +      i = i + 1
 +print '%s' % '\e(B\e)0\e*B\e+B'
-diff -urN vte-0.16.0/src/genwidths.py vte-svn/src/genwidths.py
+diff -urN vte-0.16.0/src/genwidths.py vte-1846/src/genwidths.py
 --- vte-0.16.0/src/genwidths.py        1970-01-01 01:00:00.000000000 +0100
-+++ vte-svn/src/genwidths.py   2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/genwidths.py  2007-03-18 13:22:32.000000000 +0100
 @@ -0,0 +1,35 @@
 +#!/usr/bin/python
 +import os, re, string
@@ -353,9 +363,9 @@ diff -urN vte-0.16.0/src/genwidths.py vte-svn/src/genwidths.py
 +      print >> out, "\t0x%x," % (string.atol(specific, 16))
 +print >> out, "};"
 +
-diff -urN vte-0.16.0/src/marshal.c vte-svn/src/marshal.c
+diff -urN vte-0.16.0/src/marshal.c vte-1846/src/marshal.c
 --- vte-0.16.0/src/marshal.c   2007-02-26 22:06:36.000000000 +0100
-+++ vte-svn/src/marshal.c      1970-01-01 01:00:00.000000000 +0100
++++ vte-1846/src/marshal.c     1970-01-01 01:00:00.000000000 +0100
 @@ -1,203 +0,0 @@
 -
 -#include      <glib-object.h>
@@ -560,9 +570,9 @@ diff -urN vte-0.16.0/src/marshal.c vte-svn/src/marshal.c
 -            data2);
 -}
 -
-diff -urN vte-0.16.0/src/marshal.h vte-svn/src/marshal.h
+diff -urN vte-0.16.0/src/marshal.h vte-1846/src/marshal.h
 --- vte-0.16.0/src/marshal.h   2007-02-26 22:06:36.000000000 +0100
-+++ vte-svn/src/marshal.h      1970-01-01 01:00:00.000000000 +0100
++++ vte-1846/src/marshal.h     1970-01-01 01:00:00.000000000 +0100
 @@ -1,53 +0,0 @@
 -
 -#ifndef ___vte_marshal_MARSHAL_H__
@@ -617,9 +627,9 @@ diff -urN vte-0.16.0/src/marshal.h vte-svn/src/marshal.h
 -
 -#endif /* ___vte_marshal_MARSHAL_H__ */
 -
-diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
+diff -urN vte-0.16.0/src/vte.c vte-1846/src/vte.c
 --- vte-0.16.0/src/vte.c       2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vte.c  2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/vte.c 2007-03-18 13:22:32.000000000 +0100
 @@ -18,6 +18,8 @@
  
  #include "../config.h"
@@ -639,91 +649,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  static void vte_terminal_emit_pending_signals(VteTerminal *terminal);
  static inline gboolean vte_cell_is_selected(VteTerminal *terminal,
                                     glong col, glong row, gpointer data);
-@@ -245,7 +246,7 @@
- /* Append a single item to a GArray a given number of times. Centralizing all
-  * of the places we do this may let me do something more clever later. */
- static void
--vte_g_array_fill(GArray *array, gpointer item, guint final_size)
-+vte_g_array_fill(GArray *array, gconstpointer item, guint final_size)
- {
-       if (array->len >= final_size) {
-               return;
-@@ -318,22 +319,21 @@
-       screen = terminal->pvt->screen;
-       screen->defaults.c = 0;
--      screen->defaults.columns = 1;
--      screen->defaults.fragment = 0;
--      screen->defaults.empty = 1;
--      screen->defaults.fore = VTE_DEF_FG;
--      screen->defaults.back = VTE_DEF_BG;
--      screen->defaults.reverse = 0;
--      screen->defaults.bold = 0;
--      screen->defaults.invisible = 0;
--      screen->defaults.protect = 0;
--      screen->defaults.standout = 0;
--      screen->defaults.underline = 0;
--      screen->defaults.strikethrough = 0;
--      screen->defaults.half = 0;
--      screen->defaults.blink = 0;
-+      screen->defaults.attr.columns = 1;
-+      screen->defaults.attr.fragment = 0;
-+      screen->defaults.attr.fore = VTE_DEF_FG;
-+      screen->defaults.attr.back = VTE_DEF_BG;
-+      screen->defaults.attr.reverse = 0;
-+      screen->defaults.attr.bold = 0;
-+      screen->defaults.attr.invisible = 0;
-+      screen->defaults.attr.protect = 0;
-+      screen->defaults.attr.standout = 0;
-+      screen->defaults.attr.underline = 0;
-+      screen->defaults.attr.strikethrough = 0;
-+      screen->defaults.attr.half = 0;
-+      screen->defaults.attr.blink = 0;
-       /* Alternate charset isn't an attribute, though we treat it as one.
--       * screen->defaults.alternate = 0; */
-+       * screen->defaults.attr.alternate = 0; */
-       screen->basic_defaults = screen->defaults;
-       screen->color_defaults = screen->defaults;
-       screen->fill_defaults = screen->defaults;
-@@ -612,13 +612,13 @@
-               struct vte_charcell *cell;
-               cell = _vte_row_data_find_charcell(row_data, col);
-               if (cell != NULL) {
--                      while (cell->fragment && col> 0) {
-+                      while (cell->attr.fragment && col> 0) {
-                               cell = _vte_row_data_find_charcell(row_data, --col);
-                       }
--                      columns = cell->columns;
-+                      columns = cell->attr.columns;
-                       if (_vte_draw_get_char_width(terminal->pvt->draw,
-                                               cell->c,
--                                              cell->columns) >
-+                                              cell->attr.columns) >
-                                       terminal->char_width * columns) {
-                               columns++;
-                       }
-@@ -664,17 +664,17 @@
-               cell = vte_terminal_find_charcell(terminal,
-                                                 column,
-                                                 screen->cursor_current.row);
--              while ((cell != NULL) && (cell->fragment) && (column > 0)) {
-+              while ((cell != NULL) && (cell->attr.fragment) && (column > 0)) {
-                       column--;
-                       cell = vte_terminal_find_charcell(terminal,
-                                                         column,
-                                                         row);
-               }
-               if (cell != NULL) {
--                      columns = cell->columns;
-+                      columns = cell->attr.columns;
-                       if (_vte_draw_get_char_width(terminal->pvt->draw,
-                                                    cell->c,
--                                                   cell->columns) >
-+                                                   cell->attr.columns) >
-                           terminal->char_width * columns) {
-                               columns++;
-                       }
-@@ -1613,19 +1613,19 @@
+@@ -1613,19 +1614,19 @@
  }
  
  /* Queue an adjustment-changed signal to be delivered when convenient. */
@@ -747,7 +673,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        }
  }
  
-@@ -1855,13 +1855,32 @@
+@@ -1855,13 +1856,32 @@
        return terminal->pvt->encoding;
  }
  
@@ -781,7 +707,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        gint delta;
        glong v;
  
-@@ -1875,18 +1894,7 @@
+@@ -1875,18 +1895,7 @@
                /* Figure out how many rows we need to add. */
                delta = v - _vte_ring_next(screen->row_data) + 1;
                if (delta > 0) {
@@ -801,7 +727,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                        _vte_terminal_adjust_adjustments(terminal);
                } else {
                        /* Find the row the cursor is in. */
-@@ -1920,18 +1928,7 @@
+@@ -1920,18 +1929,7 @@
                /* Figure out how many rows we need to add. */
                delta = v - _vte_ring_next(screen->row_data) + 1;
                if (delta > 0) {
@@ -821,16 +747,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                        _vte_terminal_adjust_adjustments(terminal);
                } else {
                        /* Find the row the cursor is in. */
-@@ -1950,7 +1947,7 @@
-       }
-       v += columns;
-       if (G_LIKELY (row->cells->len < v)) { /* expand for character */
--              vte_g_array_fill (row->cells, &screen->color_defaults, v);
-+              g_array_set_size (row->cells, v);
-       }
-       screen->cursor_current.col = v;
-@@ -1969,8 +1966,12 @@
+@@ -1969,8 +1967,12 @@
  
        /* The total number of lines.  Add one to the cursor offset
         * because it's zero-based. */
@@ -845,50 +762,24 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  
        /* Make sure that the bottom row is visible, and that it's in
         * the buffer (even if it's empty).  This usually causes the
-@@ -2444,55 +2445,45 @@
+@@ -2444,7 +2446,7 @@
  }
  
  /* Insert a single character into the stored data array. */
 -void
 +gboolean
  _vte_terminal_insert_char(VteTerminal *terminal, gunichar c,
--                       gboolean force_insert_mode, gboolean invalidate_now,
--                       gboolean paint_cells, gint forced_width)
-+                       gboolean insert, gboolean invalidate_now)
- {
-+      struct vte_charcell_attr attr;
-       VteRowData *row;
--      struct vte_charcell cell;
--      int columns, i;
+                        gboolean force_insert_mode, gboolean invalidate_now,
+                        gboolean paint_cells, gint forced_width)
+@@ -2454,6 +2456,7 @@
+       int columns, i;
        long col;
-+      int columns, i;
        VteScreen *screen;
--      gboolean insert;
 +      gboolean line_wrapped = FALSE; /* cursor moved before char inserted */
+       gboolean insert;
  
        screen = terminal->pvt->screen;
--      insert = screen->insert_mode | force_insert_mode;
-+      insert |= screen->insert_mode;
-       invalidate_now |= insert;
-       /* If we've enabled the special drawing set, map the characters to
-        * Unicode. */
--      if (G_UNLIKELY (screen->defaults.alternate)) {
-+      if (G_UNLIKELY (screen->defaults.attr.alternate)) {
-               _vte_debug_print(VTE_DEBUG_SUBSTITUTION,
-                               "Attempting charset substitution"
-                               "for 0x%04x.\n", c);
-               /* See if there's a mapping for it. */
--              cell.c = _vte_iso2022_process_single(terminal->pvt->iso2022,
--                                                   c, '0');
--              if (cell.c != c) {
--                      forced_width = _vte_iso2022_get_encoded_width(cell.c);
--                      c = cell.c & ~(VTE_ISO2022_ENCODED_WIDTH_MASK);
--              }
-+              c = _vte_iso2022_process_single(terminal->pvt->iso2022, c, '0');
-       }
-       /* If this character is destined for the status line, save it. */
+@@ -2479,7 +2482,7 @@
        if (G_UNLIKELY (screen->status_line)) {
                g_string_append_unichar(screen->status_line_contents, c);
                screen->status_line_changed = TRUE;
@@ -897,24 +788,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        }
  
        /* Figure out how many columns this character should occupy. */
--      if (G_LIKELY (forced_width == 0)) {
--              if (VTE_ISO2022_HAS_ENCODED_WIDTH(c)) {
--                      columns = _vte_iso2022_get_encoded_width(c);
--              } else {
--                      columns = _vte_iso2022_unichar_width(c);
--              }
-+      if (G_UNLIKELY (VTE_ISO2022_HAS_ENCODED_WIDTH(c))) {
-+              columns = _vte_iso2022_get_encoded_width(c);
-+              c &= ~VTE_ISO2022_ENCODED_WIDTH_MASK;
-       } else {
--              columns = MIN(forced_width, 1);
-+              columns = _vte_iso2022_unichar_width(c);
-       }
--      c &= ~(VTE_ISO2022_ENCODED_WIDTH_MASK);
-       /* If we're autowrapping here, do it. */
-       col = screen->cursor_current.col;
-@@ -2511,6 +2502,7 @@
+@@ -2511,6 +2514,7 @@
                        col = screen->cursor_current.col =
                                terminal->column_count - columns;
                }
@@ -922,129 +796,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        }
  
        /* Make sure we have enough rows to hold this data. */
-@@ -2520,76 +2512,56 @@
-       _vte_debug_print(VTE_DEBUG_IO|VTE_DEBUG_PARSE,
-                       "Inserting %ld '%c' (%d/%d) (%ld+%d, %ld), delta = %ld; ",
-                       (long)c, c < 256 ? c : ' ',
--                      screen->defaults.fore, screen->defaults.back,
-+                      screen->defaults.attr.fore,
-+                      screen->defaults.attr.back,
-                       col, columns, (long)screen->cursor_current.row,
-                       (long)screen->insert_delta);
--      /* Make sure we're not getting random stuff past the right
--       * edge of the screen at this point, because the user can't
--       * see it. */
--      i = 0;
--      do {
--              /* If we're in insert mode, insert a new cell here
--               * and use it. */
-+      if (insert) {
-+              g_array_insert_val(row->cells, col,
-+                              screen->color_defaults);
-+      }
-+      memcpy (&attr, &screen->defaults.attr, sizeof (attr));
-+      attr.columns = columns;
-+
-+      if (G_UNLIKELY (c == '_' && terminal->pvt->flags.ul)) {
-+              struct vte_charcell *pcell =
-+                      &g_array_index (row->cells, struct vte_charcell, col);
-+              /* Handle overstrike-style underlining. */
-+              if (pcell->c != 0) {
-+                      /* restore previous contents */
-+                      c = pcell->c;
-+                      attr.columns = pcell->attr.columns;
-+                      attr.fragment = pcell->attr.fragment;
-+
-+                      attr.underline = 1;
-+              }
-+      }
-+      g_array_index(row->cells, struct vte_charcell, col).c = c;
-+      g_array_index(row->cells, struct vte_charcell, col).attr = attr;
-+      col++;
-+
-+      /* insert wide-char fragments */
-+      for (i = 1; i < columns; i++) {
-+              attr.fragment = 1;
-               if (insert) {
--                      cell = screen->color_defaults;
--                      g_array_insert_val(row->cells, col, cell);
-+                      g_array_insert_val(row->cells, col,
-+                              screen->color_defaults);
-               }
--              cell.c = c;
--              cell.columns = columns;
--              if (paint_cells) {
--                      cell.fore = screen->defaults.fore;
--                      cell.back = screen->defaults.back;
--              }
--              cell.standout = screen->defaults.standout;
--              cell.underline = screen->defaults.underline;
--              cell.strikethrough = screen->defaults.strikethrough;
--              cell.reverse = screen->defaults.reverse;
--              cell.blink = screen->defaults.blink;
--              cell.half = screen->defaults.half;
--              cell.bold = screen->defaults.bold;
--              cell.invisible = screen->defaults.invisible;
--              cell.protect = screen->defaults.protect;
--              cell.alternate = 0;
--              cell.empty = 0;
--              cell.fragment = i != 0;
--
--              if (G_UNLIKELY (i == 0 &&
--                                      c == '_' &&
--                                      terminal->pvt->flags.ul)) {
--                      struct vte_charcell *pcell =
--                              &g_array_index (row->cells, struct vte_charcell, col);
--                      /* Handle overstrike-style underlining. */
--                      if (pcell->c != 0) {
--                              /* restore previous contents */
--                              cell.c = pcell->c;
--                              cell.columns = pcell->columns;
--                              cell.fragment = pcell->fragment;
--                              cell.empty = pcell->empty;
--
--                              cell.underline = 1;
--                      }
--              }
--              g_array_index(row->cells, struct vte_charcell, col) = cell;
--
--              /* And take a step to the to the right. */
-+              g_array_index(row->cells, struct vte_charcell, col).c = c;
-+              g_array_index(row->cells, struct vte_charcell, col).attr = attr;
-               col++;
--      } while (++i < columns);
-+      }
-       if (G_UNLIKELY (row->cells->len > terminal->column_count)) {
-               g_array_set_size(row->cells, terminal->column_count);
-       }
-       /* Signal that this part of the window needs drawing. */
--      if (invalidate_now) {
--              if (insert) {
--                      _vte_invalidate_cells(terminal,
--                                           col - columns, terminal->column_count,
--                                           screen->cursor_current.row, 1);
--              } else {
--                      _vte_invalidate_cells(terminal,
--                                           col - columns, columns,
--                                           screen->cursor_current.row, 1);
--              }
-+      if (G_UNLIKELY (invalidate_now)) {
-+              _vte_invalidate_cells(terminal,
-+                              col - columns,
-+                              insert ? terminal->column_count : columns,
-+                              screen->cursor_current.row, 1);
-       }
-@@ -2605,11 +2577,12 @@
-       }
-       /* We added text, so make a note of it. */
--      terminal->pvt->text_inserted_count++;
-+      terminal->pvt->text_inserted_flag = TRUE;
+@@ -2610,6 +2614,7 @@
        _vte_debug_print(VTE_DEBUG_IO|VTE_DEBUG_PARSE,
                        "insertion delta => %ld.\n",
                        (long)screen->insert_delta);
@@ -1052,7 +804,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  }
  
  static void
-@@ -2730,10 +2703,7 @@
+@@ -2730,10 +2735,7 @@
                 * then flush the buffers in case we're about to run a new
                 * command, disconnecting the timeout. */
                if (terminal->pvt->incoming != NULL) {
@@ -1064,7 +816,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                        _vte_incoming_chunks_release (terminal->pvt->incoming);
                        terminal->pvt->incoming = NULL;
                        terminal->pvt->input_bytes = 0;
-@@ -3042,12 +3012,8 @@
+@@ -3042,12 +3044,8 @@
         * disconnecting the timeout. */
        vte_terminal_stop_processing (terminal);
        if (terminal->pvt->incoming) {
@@ -1078,35 +830,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        }
        g_array_set_size(terminal->pvt->pending, 0);
  
-@@ -3112,29 +3078,23 @@
-               vte_terminal_emit_text_modified(terminal);
-               terminal->pvt->text_modified_flag = FALSE;
-       }
--      if (terminal->pvt->text_inserted_count) {
-+      if (terminal->pvt->text_inserted_flag) {
-               _vte_debug_print(VTE_DEBUG_SIGNALS,
--                              "Emitting buffered `text-inserted' "
--                              "(%ld).\n", terminal->pvt->text_inserted_count);
-+                              "Emitting buffered `text-inserted'\n");
-               _vte_terminal_emit_text_inserted(terminal);
--              terminal->pvt->text_inserted_count = 0;
-+              terminal->pvt->text_inserted_flag = FALSE;
-       }
--      if (terminal->pvt->text_deleted_count) {
-+      if (terminal->pvt->text_deleted_flag) {
-               _vte_debug_print(VTE_DEBUG_SIGNALS,
--                              "Emitting buffered `text-deleted' "
--                              "(%ld).\n", terminal->pvt->text_deleted_count);
-+                              "Emitting buffered `text-deleted'\n");
-               _vte_terminal_emit_text_deleted(terminal);
--              terminal->pvt->text_deleted_count = 0;
-+              terminal->pvt->text_deleted_flag = FALSE;
-       }
--
--      terminal->pvt->text_modified_flag = FALSE;
--      terminal->pvt->text_inserted_count = 0;
--      terminal->pvt->text_deleted_count = 0;
- }
+@@ -3134,7 +3132,7 @@
  
  /* Process incoming data, first converting it to unicode characters, and then
   * processing control sequences. */
@@ -1115,7 +839,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  vte_terminal_process_incoming(VteTerminal *terminal)
  {
        VteScreen *screen;
-@@ -3244,7 +3204,7 @@
+@@ -3244,7 +3242,7 @@
        bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT;
        bbox_topleft.x = bbox_topleft.y = G_MAXINT;
  
@@ -1124,7 +848,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                const char *match;
                GQuark quark;
                const gunichar *next;
-@@ -3265,10 +3225,10 @@
+@@ -3265,10 +3263,10 @@
                if ((match != NULL) && (match[0] != '\0')) {
                        /* Call the right sequence handler for the requested
                         * behavior. */
@@ -1139,15 +863,15 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                        /* Skip over the proper number of unicode chars. */
                        start = (next - wbuf);
                        modified = TRUE;
-@@ -3364,9 +3324,36 @@
+@@ -3364,9 +3362,37 @@
                                        screen->cursor_current.row);
  
                        /* Insert the character. */
 -                      _vte_terminal_insert_char(terminal, c,
--                                               FALSE, FALSE,
--                                               TRUE, 0);
 +                      if (G_UNLIKELY (_vte_terminal_insert_char(terminal, c,
-+                                               FALSE, FALSE))) {
+                                                FALSE, FALSE,
+-                                               TRUE, 0);
++                                               TRUE, 0))){
 +                              /* line wrapped, correct bbox */
 +                              if (invalidated_text &&
 +                                              (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK  ||
@@ -1179,7 +903,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                        /* Add the cells over which we have moved to the region
                         * which we need to refresh for the user. */
                        bbox_bottomright.x = MAX(bbox_bottomright.x,
-@@ -3418,23 +3405,6 @@
+@@ -3418,23 +3444,6 @@
                }
        }
  
@@ -1203,7 +927,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        /* Remove most of the processed characters. */
        if (start < wcount) {
                unichars = g_array_new(FALSE, FALSE, sizeof(gunichar));
-@@ -3450,7 +3420,6 @@
+@@ -3450,7 +3459,6 @@
                /* If we're out of data, we needn't pause to let the
                 * controlling application respond to incoming data, because
                 * the main loop is already going to do that. */
@@ -1211,7 +935,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        }
  
        if (modified) {
-@@ -3486,6 +3455,26 @@
+@@ -3486,6 +3494,26 @@
                _vte_terminal_queue_contents_changed(terminal);
        }
  
@@ -1238,7 +962,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        if ((cursor.col != terminal->pvt->screen->cursor_current.col) ||
            (cursor.row != terminal->pvt->screen->cursor_current.row)) {
                /* invalidate the old and new cursor positions */
-@@ -3517,7 +3506,6 @@
+@@ -3517,7 +3545,6 @@
                        (long) unichars->len,
                        (long) _vte_incoming_chunks_length(terminal->pvt->incoming),
                        _vte_incoming_chunks_count(terminal->pvt->incoming));
@@ -1246,7 +970,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  }
  
  static inline void
-@@ -3643,7 +3631,7 @@
+@@ -3643,7 +3670,7 @@
        }
  
        return !eof &&
@@ -1255,7 +979,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                terminal->pvt->input_bytes < terminal->pvt->max_input_bytes;
  }
  
-@@ -3712,7 +3700,6 @@
+@@ -3712,7 +3739,6 @@
        }
  
        if (_vte_buffer_length(terminal->pvt->outgoing) == 0) {
@@ -1263,123 +987,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                leave_open = FALSE;
        } else {
                leave_open = TRUE;
-@@ -3803,9 +3790,7 @@
-                                       _vte_terminal_insert_char(terminal,
-                                                                ucs4[i],
-                                                                FALSE,
--                                                               TRUE,
--                                                               TRUE,
--                                                               0);
-+                                                               TRUE);
-                               }
-                               g_free(ucs4);
-                       }
-@@ -4538,7 +4523,7 @@
- {
-       struct vte_charcell *pcell = NULL;
-       gboolean word_char;
--      if ((pcell = vte_terminal_find_charcell(terminal, acol, arow)) != NULL && !pcell->empty) {
-+      if ((pcell = vte_terminal_find_charcell(terminal, acol, arow)) != NULL && pcell->c != 0) {
-               word_char = vte_terminal_is_word_char(terminal, pcell->c);
-               /* Lets not group non-wordchars together (bug #25290) */
-@@ -4546,7 +4531,7 @@
-                       return FALSE;
-               pcell = vte_terminal_find_charcell(terminal, bcol, brow);
--              if (pcell == NULL || pcell->empty) {
-+              if (pcell == NULL || pcell->c == 0) {
-                       return FALSE;
-               }
-               if (word_char != vte_terminal_is_word_char(terminal,
-@@ -5197,26 +5182,26 @@
-                               /* If it's not part of a multi-column character,
-                                * and passes the selection criterion, add it to
-                                * the selection. */
--                              if (!pcell->fragment &&
-+                              if (!pcell->attr.fragment &&
-                                               is_selected(terminal, col, row, data)) {
-                                       /* Store the attributes of this character. */
--                                      fore = palette[pcell->fore];
--                                      back = palette[pcell->back];
-+                                      fore = palette[pcell->attr.fore];
-+                                      back = palette[pcell->attr.back];
-                                       attr.fore.red = fore.red;
-                                       attr.fore.green = fore.green;
-                                       attr.fore.blue = fore.blue;
-                                       attr.back.red = back.red;
-                                       attr.back.green = back.green;
-                                       attr.back.blue = back.blue;
--                                      attr.underline = pcell->underline;
--                                      attr.strikethrough = pcell->strikethrough;
-+                                      attr.underline = pcell->attr.underline;
-+                                      attr.strikethrough = pcell->attr.strikethrough;
-                                       /* Store the character. */
-                                       string = g_string_append_unichar(string,
-                                                       pcell->c ?
-                                                       pcell->c :
-                                                       ' ');
--                                      if (pcell->empty) {
-+                                      if (pcell->c == 0) {
-                                               last_empty = string->len;
-                                               last_emptycol = col;
-                                       } else {
-@@ -5252,10 +5237,10 @@
-                               while ((pcell = _vte_row_data_find_charcell(row_data, col))) {
-                                       col++;
--                                      if (pcell->fragment)
-+                                      if (pcell->attr.fragment)
-                                               continue;
--                                      if (!pcell->empty)
-+                                      if (pcell->c != 0)
-                                               break;
-                               }
-                       }
-@@ -5502,7 +5487,7 @@
-       VteRowData *row_data = _vte_terminal_find_row_data (terminal, row);
-       if (row_data != NULL) {
-               struct vte_charcell *cell = _vte_row_data_find_charcell(row_data, col);
--              while (cell != NULL && cell->fragment && col > 0) {
-+              while (cell != NULL && cell->attr.fragment && col > 0) {
-                       cell = _vte_row_data_find_charcell(row_data, --col);
-               }
-       }
-@@ -5515,11 +5500,11 @@
-       gint columns = 0;
-       if (row_data != NULL) {
-               struct vte_charcell *cell = _vte_row_data_find_charcell(row_data, col);
--              while (cell != NULL && cell->fragment && col > 0) {
-+              while (cell != NULL && cell->attr.fragment && col > 0) {
-                       cell = _vte_row_data_find_charcell(row_data, --col);
-               }
-               if (cell) {
--                      columns = cell->columns - 1;
-+                      columns = cell->attr.columns - 1;
-               }
-       }
-       return MIN(col + columns, terminal->column_count);
-@@ -5725,7 +5710,7 @@
-                       for (i = 0; i < rowdata->cells->len; i++) {
-                               cell = &g_array_index(rowdata->cells,
-                                               struct vte_charcell, i);
--                              if (!cell->empty)
-+                              if (cell->c == 0)
-                                       last_nonempty = i;
-                       }
-                       /* Now find the first empty after it. */
-@@ -5759,7 +5744,7 @@
-                       for (i = 0; i < rowdata->cells->len; i++) {
-                               cell = &g_array_index(rowdata->cells,
-                                               struct vte_charcell, i);
--                              if (!cell->empty)
-+                              if (cell->c != 0)
-                                       last_nonempty = i;
-                       }
-                       /* Now find the first empty after it. */
-@@ -7203,11 +7188,20 @@
+@@ -7203,11 +7229,20 @@
  vte_terminal_fc_settings_changed(GtkSettings *settings, GParamSpec *spec,
                                 VteTerminal *terminal)
  {
@@ -1401,276 +1009,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  }
  
  /* Connect to notifications from our settings object that font hints have
-@@ -7627,8 +7621,8 @@
-       terminal->pvt->contents_changed_pending = FALSE;
-       terminal->pvt->cursor_moved_pending = FALSE;
-       terminal->pvt->text_modified_flag = FALSE;
--      terminal->pvt->text_inserted_count = 0;
--      terminal->pvt->text_deleted_count = 0;
-+      terminal->pvt->text_inserted_flag = FALSE;
-+      terminal->pvt->text_deleted_flag = FALSE;
-       /* Clear modifiers. */
-       terminal->pvt->modifiers = 0;
-@@ -7950,27 +7944,27 @@
-        * reverse colors, else use the defaults.  This means that many callers
-        * who specify highlight or cursor should also specify reverse. */
-       if (cursor && !highlight && terminal->pvt->cursor_color_set) {
--              *fore = cell ? cell->back : VTE_DEF_BG;
-+              *fore = cell ? cell->attr.back : VTE_DEF_BG;
-               *back = VTE_CUR_BG;
-       } else
-       if (highlight && !cursor && terminal->pvt->highlight_color_set) {
--              *fore = cell ? cell->fore : VTE_DEF_FG;
-+              *fore = cell ? cell->attr.fore : VTE_DEF_FG;
-               *back = VTE_DEF_HL;
-       } else
--      if (reverse ^ ((cell != NULL) && (cell->reverse))) {
--              *fore = cell ? cell->back : VTE_DEF_BG;
--              *back = cell ? cell->fore : VTE_DEF_FG;
-+      if (reverse ^ ((cell != NULL) && (cell->attr.reverse))) {
-+              *fore = cell ? cell->attr.back : VTE_DEF_BG;
-+              *back = cell ? cell->attr.fore : VTE_DEF_FG;
-       } else {
--              *fore = cell ? cell->fore : VTE_DEF_FG;
--              *back = cell ? cell->back : VTE_DEF_BG;
-+              *fore = cell ? cell->attr.fore : VTE_DEF_FG;
-+              *back = cell ? cell->attr.back : VTE_DEF_BG;
-       }
-       /* Handle invisible, bold, and standout text by adjusting colors. */
-       if (cell) {
--              if (cell->invisible) {
-+              if (cell->attr.invisible) {
-                       *fore = *back;
-               }
--              if (cell->bold) {
-+              if (cell->attr.bold) {
-                       if (*fore == VTE_DEF_FG) {
-                               *fore = VTE_BOLD_FG;
-                       } else
-@@ -7978,7 +7972,7 @@
-                               *fore += VTE_COLOR_BRIGHT_OFFSET;
-                       }
-               }
--              if (cell->half) {
-+              if (cell->attr.half) {
-                       if (*fore == VTE_DEF_FG) {
-                               *fore = VTE_DIM_FG;
-                       } else
-@@ -7986,7 +7980,7 @@
-                               *fore = corresponding_dim_index[*fore];;
-                       }
-               }
--              if (cell->standout) {
-+              if (cell->attr.standout) {
-                       if (*back < VTE_LEGACY_COLOR_SET_SIZE) {
-                               *back += VTE_COLOR_BRIGHT_OFFSET;
-                       }
-@@ -9117,9 +9111,9 @@
-                               (props[i].bg.red == 0) &&
-                               (props[i].bg.green == 0) &&
-                               (props[i].bg.blue == 0)) {
--                      cells[i].fore = terminal->pvt->screen->color_defaults.fore;
--                      cells[i].back = terminal->pvt->screen->color_defaults.back;
--                      cells[i].reverse = TRUE;
-+                      cells[i].attr.fore = terminal->pvt->screen->color_defaults.attr.fore;
-+                      cells[i].attr.back = terminal->pvt->screen->color_defaults.attr.back;
-+                      cells[i].attr.reverse = TRUE;
-               }
-       }
- }
-@@ -9143,10 +9137,10 @@
-                    i < attr->end_index && i < n_cells;
-                    i++) {
-                       if (attr->klass->type == PANGO_ATTR_FOREGROUND) {
--                              cells[i].fore = ival;
-+                              cells[i].attr.fore = ival;
-                       }
-                       if (attr->klass->type == PANGO_ATTR_BACKGROUND) {
--                              cells[i].back = ival;
-+                              cells[i].attr.back = ival;
-                       }
-               }
-               break;
-@@ -9156,7 +9150,7 @@
-               for (i = attr->start_index;
-                    (i < attr->end_index) && (i < n_cells);
-                    i++) {
--                      cells[i].strikethrough = (ival != FALSE);
-+                      cells[i].attr.strikethrough = (ival != FALSE);
-               }
-               break;
-       case PANGO_ATTR_UNDERLINE:
-@@ -9165,7 +9159,7 @@
-               for (i = attr->start_index;
-                    (i < attr->end_index) && (i < n_cells);
-                    i++) {
--                      cells[i].underline = (ival != PANGO_UNDERLINE_NONE);
-+                      cells[i].attr.underline = (ival != PANGO_UNDERLINE_NONE);
-               }
-               break;
-       case PANGO_ATTR_WEIGHT:
-@@ -9174,7 +9168,7 @@
-               for (i = attr->start_index;
-                    (i < attr->end_index) && (i < n_cells);
-                    i++) {
--                      cells[i].bold = (ival >= PANGO_WEIGHT_BOLD);
-+                      cells[i].attr.bold = (ival >= PANGO_WEIGHT_BOLD);
-               }
-               break;
-       default:
-@@ -9267,9 +9261,9 @@
-                                       fore,
-                                       back,
-                                       TRUE, draw_default_bg,
--                                      cells[j].bold,
--                                      cells[j].underline,
--                                      cells[j].strikethrough,
-+                                      cells[j].attr.bold,
-+                                      cells[j].attr.underline,
-+                                      cells[j].attr.strikethrough,
-                                       FALSE, FALSE, column_width, height);
-               j += g_unichar_to_utf8(items[i].c, scratch_buf);
-       }
-@@ -9332,7 +9326,7 @@
-               if (row_data != NULL) {
-                       cell = _vte_row_data_find_charcell(row_data, i);
-                       if (cell != NULL) {
--                              while (cell->fragment && i > 0) {
-+                              while (cell->attr.fragment && i > 0) {
-                                       cell = _vte_row_data_find_charcell(row_data, --i);
-                               }
-                       }
-@@ -9348,14 +9342,14 @@
-                                               FALSE,
-                                               &fore, &back);
--                              bold = cell && cell->bold;
--                              j = i + (cell ? cell->columns : 1);
-+                              bold = cell && cell->attr.bold;
-+                              j = i + (cell ? cell->attr.columns : 1);
-                               while (j < end_column){
-                                       /* Don't render fragments of multicolumn characters
-                                        * which have the same attributes as the initial
-                                        * portions. */
--                                      if (cell != NULL && cell->fragment) {
-+                                      if (cell != NULL && cell->attr.fragment) {
-                                               j++;
-                                               continue;
-                                       }
-@@ -9373,8 +9367,8 @@
-                                       if (nback != back) {
-                                               break;
-                                       }
--                                      bold = cell && cell->bold;
--                                      j += cell ? cell->columns : 1;
-+                                      bold = cell && cell->attr.bold;
-+                                      j += cell ? cell->attr.columns : 1;
-                               }
-                               if (back != VTE_DEF_BG) {
-                                       GdkColor color;
-@@ -9467,7 +9461,7 @@
-               if (cell == NULL) {
-                       goto fg_next_row;
-               }
--              while (cell->fragment && i > 0) {
-+              while (cell->attr.fragment && i > 0) {
-                       cell = _vte_row_data_find_charcell(row_data, --i);
-               }
-@@ -9480,7 +9474,7 @@
-                       }
-                       while (cell->c == 0 ||
-                                       cell->c == ' ' ||
--                                      cell->fragment) {
-+                                      cell->attr.fragment) {
-                               if (++i >= end_column) {
-                                       goto fg_next_row;
-                               }
-@@ -9496,9 +9490,9 @@
-                                       selected,
-                                       FALSE,
-                                       &fore, &back);
--                      underline = cell->underline;
--                      strikethrough = cell->strikethrough;
--                      bold = cell->bold;
-+                      underline = cell->attr.underline;
-+                      strikethrough = cell->attr.strikethrough;
-+                      bold = cell->attr.bold;
-                       if (terminal->pvt->show_match) {
-                               hilite = vte_cell_is_between(i, row,
-                                               terminal->pvt->match_start.column,
-@@ -9511,7 +9505,7 @@
-                       }
-                       items[0].c = cell->c;
--                      items[0].columns = cell->columns;
-+                      items[0].columns = cell->attr.columns;
-                       items[0].x = start_x + i * column_width;
-                       items[0].y = y;
-                       j = i + items[0].columns;
-@@ -9558,7 +9552,7 @@
-                                       /* Don't render blank cells or fragments of multicolumn characters
-                                        * which have the same attributes as the initial
-                                        * portions. */
--                                      if (cell->fragment) {
-+                                      if (cell->attr.fragment) {
-                                               j++;
-                                               continue;
-                                       }
-@@ -9580,26 +9574,26 @@
-                                                                       start_x + j * column_width,
-                                                                       y,
-                                                                       column_width,
--                                                                      cell->columns,
-+                                                                      cell->attr.columns,
-                                                                       row_height)) {
--                                                      j += cell->columns;
-+                                                      j += cell->attr.columns;
-                                                       continue;
-                                               }
-                                       }
-                                       if (nfore != fore) {
-                                               break;
-                                       }
--                                      nbold = cell->bold;
-+                                      nbold = cell->attr.bold;
-                                       if (nbold != bold) {
-                                               break;
-                                       }
-                                       /* Break up underlined/not-underlined text. */
--                                      nunderline = cell->underline;
-+                                      nunderline = cell->attr.underline;
-                                       if (nunderline != underline) {
-                                               break;
-                                       }
--                                      nstrikethrough = cell->strikethrough;
-+                                      nstrikethrough = cell->attr.strikethrough;
-                                       if (nstrikethrough != strikethrough) {
-                                               break;
-                                       }
-@@ -9618,7 +9612,7 @@
-                                       }
-                                       /* Add this cell to the draw list. */
-                                       items[item_count].c = cell->c;
--                                      items[item_count].columns = cell->columns;
-+                                      items[item_count].columns = cell->attr.columns;
-                                       items[item_count].x = start_x + j * column_width;
-                                       items[item_count].y = y;
-                                       j +=  items[item_count].columns;
-@@ -9647,7 +9641,7 @@
-                                       j = start_column;
-                                       cell = _vte_row_data_find_charcell(row_data, j);
-                               } while (cell == NULL);
--                              while (cell->fragment && j > 0) {
-+                              while (cell->attr.fragment && j > 0) {
-                                       cell = _vte_row_data_find_charcell(row_data, --j);
-                               }
-                       } while (TRUE);
-@@ -9712,7 +9706,7 @@
+@@ -9712,7 +9747,7 @@
        if (col_stop == terminal->column_count)
                rect.width = terminal->widget.allocation.width;
        else
@@ -1679,7 +1018,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        rect.width -= rect.x;
        if (row == 0)
                rect.y = 0;
-@@ -9721,7 +9715,7 @@
+@@ -9721,7 +9756,7 @@
        if (row_stop == terminal->row_count)
                rect.height = terminal->widget.allocation.height;
        else
@@ -1688,7 +1027,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        rect.height -= rect.y;
        gdk_region_union_with_rect(region, &rect);
  
-@@ -9748,16 +9742,14 @@
+@@ -9748,16 +9783,14 @@
        height = terminal->char_height;
        delta = screen->scroll_delta;
  
@@ -1707,7 +1046,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                       terminal->column_count);
        if (col_stop <= col) {
                return;
-@@ -9774,7 +9766,7 @@
+@@ -9774,7 +9807,7 @@
                        (col_stop - col) * width,
                        (row_stop - row) * height);
        if (!GTK_WIDGET_DOUBLE_BUFFERED (terminal) ||
@@ -1716,21 +1055,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                _vte_draw_clear (terminal->pvt->draw,
                                area->x, area->y,
                                area->width, area->height);
-@@ -9905,23 +9897,22 @@
-               /* Find the character "under" the cursor. */
-               cell = vte_terminal_find_charcell(terminal, col, drow);
--              while ((cell != NULL) && (cell->fragment) && (col > 0)) {
-+              while ((cell != NULL) && (cell->attr.fragment) && (col > 0)) {
-                       col--;
-                       cell = vte_terminal_find_charcell(terminal, col, drow);
-               }
-               /* Draw the cursor. */
-               item.c = cell ? (cell->c ? cell->c : ' ') : ' ';
--              item.columns = cell ? cell->columns : 1;
-+              item.columns = cell ? cell->attr.columns : 1;
-               item.x = col * width;
+@@ -9917,10 +9950,9 @@
                item.y = row * height;
                cursor_width = item.columns * width;
                if (cell) {
@@ -1738,52 +1063,13 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
 -                                         _vte_draw_get_char_width(terminal->pvt->draw,
 -                                                                  cell->c,
 -                                                                  cell->columns));
--                      cursor_width += cell->bold; /* pseudo-bolding */
 +                      gint cw = _vte_draw_get_char_width (terminal->pvt->draw,
-+                                      cell->c, cell->attr.columns);
++                                      cell->c, cell->columns);
 +                      cursor_width = MAX(cursor_width, cw);
-+                      cursor_width += cell->attr.bold; /* pseudo-bolding */
+                       cursor_width += cell->bold; /* pseudo-bolding */
                }
                _vte_draw_clear(terminal->pvt->draw,
-                               col * width + VTE_PAD_WIDTH,
-@@ -9975,9 +9966,9 @@
-                                       vte_terminal_draw_cells(terminal,
-                                                       &item, 1,
-                                                       fore, back, TRUE, FALSE,
--                                                      cell->bold,
--                                                      cell->underline,
--                                                      cell->strikethrough,
-+                                                      cell->attr.bold,
-+                                                      cell->attr.underline,
-+                                                      cell->attr.strikethrough,
-                                                       hilite,
-                                                       FALSE,
-                                                       width,
-@@ -10016,9 +10007,9 @@
-                                       vte_terminal_draw_cells(terminal,
-                                                       &item, 1,
-                                                       fore, back, TRUE, FALSE,
--                                                      cell->bold,
--                                                      cell->underline,
--                                                      cell->strikethrough,
-+                                                      cell->attr.bold,
-+                                                      cell->attr.underline,
-+                                                      cell->attr.strikethrough,
-                                                       hilite,
-                                                       FALSE,
-                                                       width,
-@@ -10086,8 +10077,8 @@
-                                       row * height + VTE_PAD_WIDTH,
-                                       width * columns,
-                                       height);
--                      fore = screen->defaults.fore;
--                      back = screen->defaults.back;
-+                      fore = screen->defaults.attr.fore;
-+                      back = screen->defaults.attr.back;
-                       vte_terminal_draw_cells_with_attributes(terminal,
-                                                               items, len,
-                                                               terminal->pvt->im_preedit_attrs,
-@@ -10104,18 +10095,6 @@
+@@ -10104,18 +10136,6 @@
                                                        FALSE,
                                                        TRUE,
                                                        width, height);
@@ -1802,7 +1088,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                        }
                        g_free(items);
                }
-@@ -10130,14 +10109,19 @@
+@@ -10130,14 +10150,19 @@
  vte_terminal_expose(GtkWidget *widget, GdkEventExpose *event)
  {
        VteTerminal *terminal = VTE_TERMINAL (widget);
@@ -1825,7 +1111,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                /* if we expect to redraw the widget soon,
                 * just add this event to the list */
                if (!terminal->pvt->invalidated_all) {
-@@ -10163,6 +10147,7 @@
+@@ -10163,6 +10188,7 @@
  {
        GtkAdjustment *adj;
        VteTerminal *terminal;
@@ -1833,7 +1119,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        glong new_value;
        GdkModifierType modifiers;
        int button;
-@@ -10216,21 +10201,19 @@
+@@ -10216,21 +10242,19 @@
  
        /* Perform a history scroll. */
        adj = terminal->adjustment;
@@ -1860,20 +1146,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        vte_terminal_queue_adjustment_value_changed (terminal, new_value);
  
        return TRUE;
-@@ -11530,10 +11513,10 @@
-        * it's not a real attribute, but we need to treat it as one here. */
-       terminal->pvt->screen = &terminal->pvt->alternate_screen;
-       _vte_terminal_set_default_attributes(terminal);
--      terminal->pvt->screen->defaults.alternate = FALSE;
-+      terminal->pvt->screen->defaults.attr.alternate = FALSE;
-       terminal->pvt->screen = &terminal->pvt->normal_screen;
-       _vte_terminal_set_default_attributes(terminal);
--      terminal->pvt->screen->defaults.alternate = FALSE;
-+      terminal->pvt->screen->defaults.attr.alternate = FALSE;
-       /* Clear the scrollback buffers and reset the cursors. */
-       if (clear_history) {
-               _vte_ring_free(terminal->pvt->normal_screen.row_data, TRUE);
-@@ -12120,11 +12103,8 @@
+@@ -12120,11 +12144,8 @@
  {
        gdouble elapsed;
        glong target;
@@ -1886,7 +1159,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
        elapsed = g_timer_elapsed (process_timer, NULL) * 1000;
        target = VTE_MAX_PROCESS_TIME / elapsed * terminal->pvt->input_bytes;
        terminal->pvt->max_input_bytes =
-@@ -12174,12 +12154,11 @@
+@@ -12174,12 +12195,11 @@
                        active = TRUE;
                        if (VTE_MAX_PROCESS_TIME && !multiple_active) {
                                time_process_incoming (terminal);
@@ -1902,7 +1175,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
                if (!active && terminal->pvt->update_regions == NULL) {
                        if (terminal->pvt->active != NULL) {
                                _vte_debug_print(VTE_DEBUG_TIMEOUT,
-@@ -12292,18 +12271,18 @@
+@@ -12292,18 +12312,18 @@
                        }
                        _vte_terminal_enable_input_source (terminal);
                }
@@ -1928,7 +1201,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  
                again = update_regions (terminal);
                if (!again) {
-@@ -12376,7 +12355,6 @@
+@@ -12376,7 +12396,6 @@
        multiple_active = active_terminals->next != NULL;
        for (l = active_terminals; l != NULL; l = next) {
                VteTerminal *terminal = l->data;
@@ -1936,7 +1209,7 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  
                next = g_list_next (l);
  
-@@ -12392,18 +12370,18 @@
+@@ -12392,18 +12411,18 @@
                        }
                        _vte_terminal_enable_input_source (terminal);
                }
@@ -1962,9 +1235,9 @@ diff -urN vte-0.16.0/src/vte.c vte-svn/src/vte.c
  
                redraw |= update_regions (terminal);
        }
-diff -urN vte-0.16.0/src/vtedraw.c vte-svn/src/vtedraw.c
+diff -urN vte-0.16.0/src/vtedraw.c vte-1846/src/vtedraw.c
 --- vte-0.16.0/src/vtedraw.c   2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vtedraw.c      2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/vtedraw.c     2007-03-18 13:22:32.000000000 +0100
 @@ -226,9 +226,9 @@
  }
  
@@ -1977,9 +1250,9 @@ diff -urN vte-0.16.0/src/vtedraw.c vte-svn/src/vtedraw.c
  }
  
  gboolean
-diff -urN vte-0.16.0/src/vtedraw.h vte-svn/src/vtedraw.h
+diff -urN vte-0.16.0/src/vtedraw.h vte-1846/src/vtedraw.h
 --- vte-0.16.0/src/vtedraw.h   2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vtedraw.h      2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/vtedraw.h     2007-03-18 13:22:32.000000000 +0100
 @@ -100,7 +100,7 @@
        GtkWidget *widget;
        gboolean started;
@@ -1998,9 +1271,9 @@ diff -urN vte-0.16.0/src/vtedraw.h vte-svn/src/vtedraw.h
  gboolean _vte_draw_requires_repaint(struct _vte_draw *draw);
  gboolean _vte_draw_clip(struct _vte_draw *draw, GdkRegion *region);
  void _vte_draw_clear(struct _vte_draw *draw,
-diff -urN vte-0.16.0/src/vteft2.c vte-svn/src/vteft2.c
+diff -urN vte-0.16.0/src/vteft2.c vte-1846/src/vteft2.c
 --- vte-0.16.0/src/vteft2.c    2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vteft2.c       2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/vteft2.c      2007-03-18 13:22:32.000000000 +0100
 @@ -164,7 +164,7 @@
                g_object_unref(data->pixbuf);
        }
@@ -2010,9 +1283,9 @@ diff -urN vte-0.16.0/src/vteft2.c vte-svn/src/vteft2.c
  }
  
  static void
-diff -urN vte-0.16.0/src/vtegl.c vte-svn/src/vtegl.c
+diff -urN vte-0.16.0/src/vtegl.c vte-1846/src/vtegl.c
 --- vte-0.16.0/src/vtegl.c     2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vtegl.c        2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/vtegl.c       2007-03-18 13:22:32.000000000 +0100
 @@ -119,7 +119,6 @@
        Display *display;
        GdkScreen *gscreen;
@@ -2037,9 +1310,9 @@ diff -urN vte-0.16.0/src/vtegl.c vte-svn/src/vtegl.c
  }
  
  static void
-diff -urN vte-0.16.0/src/vtepango.c vte-svn/src/vtepango.c
+diff -urN vte-0.16.0/src/vtepango.c vte-1846/src/vtepango.c
 --- vte-0.16.0/src/vtepango.c  2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vtepango.c     2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/vtepango.c    2007-03-18 13:22:32.000000000 +0100
 @@ -175,13 +175,13 @@
        if (data->pixmap != NULL) {
                g_object_unref(data->pixmap);
@@ -2056,9 +1329,9 @@ diff -urN vte-0.16.0/src/vtepango.c vte-svn/src/vtepango.c
                        data->pixmapw > 0 && data->pixmaph > 0;
        }
  }
-diff -urN vte-0.16.0/src/vtepangox.c vte-svn/src/vtepangox.c
+diff -urN vte-0.16.0/src/vtepangox.c vte-1846/src/vtepangox.c
 --- vte-0.16.0/src/vtepangox.c 2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vtepangox.c    2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/vtepangox.c   2007-03-18 13:22:32.000000000 +0100
 @@ -208,13 +208,13 @@
        if (data->pixmap != NULL) {
                g_object_unref(data->pixmap);
@@ -2075,636 +1348,21 @@ diff -urN vte-0.16.0/src/vtepangox.c vte-svn/src/vtepangox.c
                        data->pixmapw > 0 && data->pixmaph > 0;
        }
  }
-diff -urN vte-0.16.0/src/vte-private.h vte-svn/src/vte-private.h
+diff -urN vte-0.16.0/src/vte-private.h vte-1846/src/vte-private.h
 --- vte-0.16.0/src/vte-private.h       2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vte-private.h  2007-03-17 18:22:53.000000000 +0100
-@@ -95,27 +95,29 @@
- struct vte_charcell {
-       gunichar c;             /* The Unicode character. */
--      guint32 columns: 2;     /* Number of visible columns (as determined
--                                 by g_unicode_iswide(c)). */
--      guint32 fore: 9;        /* Indices in the color palette for the */
--      guint32 back: 9;        /* foreground and background of the cell. */
--
--      guint32 fragment: 1;    /* The nth fragment of a wide character. */
--      guint32 standout: 1;    /* Single-bit attributes. */
--      guint32 underline: 1;
--      guint32 strikethrough: 1;
--
--      guint32 reverse: 1;
--      guint32 blink: 1;
--      guint32 half: 1;
--      guint32 bold: 1;
--
--      guint32 invisible: 1;
--      guint32 protect: 1;
--      guint32 alternate: 1;
--      guint32 empty : 1;
-+      struct vte_charcell_attr {
-+              guint32 columns: 2;     /* Number of visible columns
-+                                         (as determined
-+                                         by g_unicode_iswide(c)). */
-+              guint32 fore: 9;        /* Index into color palette */
-+              guint32 back: 9;        /* Index into color palette. */
-+
-+              guint32 fragment: 1;    /* A continuation cell. */
-+              guint32 standout: 1;    /* Single-bit attributes. */
-+              guint32 underline: 1;
-+              guint32 strikethrough: 1;
-+
-+              guint32 reverse: 1;
-+              guint32 blink: 1;
-+              guint32 half: 1;
-+              guint32 bold: 1;
-+
-+              guint32 invisible: 1;
-+              guint32 protect: 1;
-+              guint32 alternate: 1;
--      /* no more bits left.  any addition will enlarge the struct */
-+              /* 31 bits */
-+      } attr;
- };
- /* A match regex, with a tag. */
-@@ -275,8 +277,8 @@
-       gboolean smooth_scroll;
-       GHashTable *tabstops;
-       gboolean text_modified_flag;
--      glong text_inserted_count;
--      glong text_deleted_count;
-+      gboolean text_inserted_flag;
-+      gboolean text_deleted_flag;
-       /* Scrolling options. */
-       gboolean scroll_background;
-@@ -395,11 +397,9 @@
++++ vte-1846/src/vte-private.h 2007-03-18 13:22:32.000000000 +0100
+@@ -395,7 +395,7 @@
  void _vte_terminal_queue_contents_changed(VteTerminal *terminal);
  void _vte_terminal_emit_text_deleted(VteTerminal *terminal);
  void _vte_terminal_emit_text_inserted(VteTerminal *terminal);
 -void _vte_terminal_insert_char(VteTerminal *terminal, gunichar c,
 +gboolean _vte_terminal_insert_char(VteTerminal *terminal, gunichar c,
                               gboolean force_insert_mode,
--                             gboolean invalidate_cells,
--                             gboolean paint_cells,
--                             gint forced_width);
-+                             gboolean invalidate_cells);
- void _vte_terminal_scroll_region(VteTerminal *terminal,
-                                long row, glong count, glong delta);
- void _vte_terminal_set_default_attributes(VteTerminal *terminal);
-diff -urN vte-0.16.0/src/vteseq.c vte-svn/src/vteseq.c
---- vte-0.16.0/src/vteseq.c    2007-03-09 19:19:10.000000000 +0100
-+++ vte-svn/src/vteseq.c       2007-03-17 18:22:53.000000000 +0100
-@@ -341,8 +341,8 @@
-       _vte_terminal_adjust_adjustments(terminal);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_inserted_count++;
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_inserted_flag = TRUE;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -719,7 +719,6 @@
-               /* Reset scrollbars and repaint everything. */
-               terminal->adjustment->value =
-                       terminal->pvt->screen->scroll_delta;
--              terminal->pvt->adjustment_value_changed_pending = TRUE;
-               vte_terminal_set_scrollback_lines(terminal,
-                               terminal->pvt->scrollback_lines);
-               _vte_terminal_queue_contents_changed(terminal);
-@@ -862,7 +861,7 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.alternate = 0;
-+      terminal->pvt->screen->defaults.attr.alternate = 0;
-       return FALSE;
- }
-@@ -917,7 +916,7 @@
-       _vte_terminal_scroll_region(terminal, start, end - start + 1, param);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -938,7 +937,7 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.alternate = 1;
-+      terminal->pvt->screen->defaults.attr.alternate = 1;
-       return FALSE;
- }
-@@ -1042,7 +1041,7 @@
-                             screen->cursor_current.row, 1);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -1114,7 +1113,7 @@
-       }
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -1149,7 +1148,7 @@
-                             screen->cursor_current.row, 1);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -1190,7 +1189,7 @@
-       vte_sequence_handler_ho(terminal, NULL, 0, NULL);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -1271,7 +1270,7 @@
-       }
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -1314,10 +1313,10 @@
-       }
-       /* Catch garbage. */
-       rows = terminal->row_count;
--      if ((start <= 0) || (start >= rows)) {
-+      if (start <= 0 || start >= rows) {
-               start = 0;
-       }
--      if ((end <= 0) || (end >= rows)) {
-+      if (end <= 0 || end >= rows) {
-               end = rows - 1;
-       }
-       /* Set the right values. */
-@@ -1325,12 +1324,13 @@
-       screen->scrolling_region.end = end;
-       screen->scrolling_restricted = TRUE;
-       /* Special case -- run wild, run free. */
--      if ((screen->scrolling_region.start == 0) &&
--          (screen->scrolling_region.end == rows - 1)) {
-+      if (screen->scrolling_region.start == 0 &&
-+          screen->scrolling_region.end == rows - 1) {
-               screen->scrolling_restricted = FALSE;
-       }
-       screen->cursor_current.row = screen->insert_delta + start;
-       screen->cursor_current.col = 0;
-+
-       return FALSE;
- }
-@@ -1486,7 +1486,7 @@
-               /* Remove the column. */
-               if (col < len) {
-                       g_array_remove_index(rowdata->cells, col);
--                      if (screen->fill_defaults.back != VTE_DEF_BG) {
-+                      if (screen->fill_defaults.attr.back != VTE_DEF_BG) {
-                               vte_g_array_fill (rowdata->cells,
-                                               &screen->fill_defaults,
-                                               terminal->column_count);
-@@ -1500,7 +1500,7 @@
-       }
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -1558,7 +1558,7 @@
-       _vte_terminal_scroll_region(terminal, start, end - start + 1, -param);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -1674,7 +1674,7 @@
-       }
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -1749,7 +1749,7 @@
-       save = screen->cursor_current;
--      _vte_terminal_insert_char(terminal, ' ', TRUE, TRUE, TRUE, 0);
-+      _vte_terminal_insert_char(terminal, ' ', TRUE, TRUE);
-       screen->cursor_current = save;
-@@ -1887,7 +1887,7 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.blink = 1;
-+      terminal->pvt->screen->defaults.attr.blink = 1;
-       return FALSE;
- }
-@@ -1898,8 +1898,8 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.bold = 1;
--      terminal->pvt->screen->defaults.half = 0;
-+      terminal->pvt->screen->defaults.attr.bold = 1;
-+      terminal->pvt->screen->defaults.attr.half = 0;
-       return FALSE;
- }
-@@ -1921,8 +1921,8 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.half = 1;
--      terminal->pvt->screen->defaults.bold = 0;
-+      terminal->pvt->screen->defaults.attr.half = 1;
-+      terminal->pvt->screen->defaults.attr.bold = 0;
-       return FALSE;
- }
-@@ -1933,7 +1933,7 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.invisible = 1;
-+      terminal->pvt->screen->defaults.attr.invisible = 1;
-       return FALSE;
- }
-@@ -1944,7 +1944,7 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.protect = 1;
-+      terminal->pvt->screen->defaults.attr.protect = 1;
-       return FALSE;
- }
-@@ -1955,7 +1955,7 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.reverse = 1;
-+      terminal->pvt->screen->defaults.attr.reverse = 1;
-       return FALSE;
- }
-@@ -2152,7 +2152,7 @@
-               vte_sequence_handler_ue(terminal, match, match_quark, params);
-       } else {
-               /* Otherwise just set standout mode. */
--              terminal->pvt->screen->defaults.standout = 0;
-+              terminal->pvt->screen->defaults.attr.standout = 0;
-       }
-       g_free(blink);
-@@ -2184,10 +2184,9 @@
-               start = screen->insert_delta;
-               end = start + terminal->row_count - 1;
-       }
--
-       if (screen->cursor_current.row == end) {
-               /* Match xterm and fill to the end of row when scrolling. */
--              if (screen->fill_defaults.back != VTE_DEF_BG) {
-+              if (screen->fill_defaults.attr.back != VTE_DEF_BG) {
-                       VteRowData *rowdata;
-                       rowdata = _vte_terminal_ensure_row (terminal);
-                       vte_g_array_fill (rowdata->cells,
-@@ -2243,7 +2242,7 @@
-               }
-               /* Match xterm and fill the new row when scrolling. */
--              if (screen->fill_defaults.back != VTE_DEF_BG) {
-+              if (screen->fill_defaults.attr.back != VTE_DEF_BG) {
-                       VteRowData *rowdata;
-                       rowdata = _vte_terminal_ensure_row (terminal);
-                       vte_g_array_fill (rowdata->cells,
-@@ -2317,7 +2316,7 @@
-               vte_sequence_handler_us(terminal, match, match_quark, params);
-       } else {
-               /* Otherwise just set standout mode. */
--              terminal->pvt->screen->defaults.standout = 1;
-+              terminal->pvt->screen->defaults.attr.standout = 1;
-       }
-       g_free(blink);
-@@ -2499,7 +2498,7 @@
-       cell = vte_terminal_find_charcell(terminal,
-                                         column,
-                                         screen->cursor_current.row);
--      while ((cell != NULL) && (cell->fragment) && (column > 0)) {
-+      while ((cell != NULL) && (cell->attr.fragment) && (column > 0)) {
-               column--;
-               cell = vte_terminal_find_charcell(terminal,
-                                                 column,
-@@ -2507,10 +2506,10 @@
-       }
-       if (cell != NULL) {
-               /* Set this character to be underlined. */
--              cell->underline = 1;
-+              cell->attr.underline = 1;
-               /* Cause the character to be repainted. */
-               _vte_invalidate_cells(terminal,
--                                    column, cell->columns,
-+                                    column, cell->attr.columns,
-                                     screen->cursor_current.row, 1);
-               /* Move the cursor right. */
-               vte_sequence_handler_nd(terminal, match, match_quark, params);
-@@ -2529,7 +2528,7 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.underline = 0;
-+      terminal->pvt->screen->defaults.attr.underline = 0;
-       return FALSE;
- }
-@@ -2575,7 +2574,7 @@
-                       GQuark match_quark,
-                       GValueArray *params)
- {
--      terminal->pvt->screen->defaults.underline = 1;
-+      terminal->pvt->screen->defaults.attr.underline = 1;
-       return FALSE;
- }
-@@ -2673,47 +2672,47 @@
-                       _vte_terminal_set_default_attributes(terminal);
-                       break;
-               case 1:
--                      terminal->pvt->screen->defaults.bold = 1;
--                      terminal->pvt->screen->defaults.half = 0;
-+                      terminal->pvt->screen->defaults.attr.bold = 1;
-+                      terminal->pvt->screen->defaults.attr.half = 0;
-                       break;
-               case 2:
--                      terminal->pvt->screen->defaults.half = 1;
--                      terminal->pvt->screen->defaults.bold = 0;
-+                      terminal->pvt->screen->defaults.attr.half = 1;
-+                      terminal->pvt->screen->defaults.attr.bold = 0;
-                       break;
-               case 4:
--                      terminal->pvt->screen->defaults.underline = 1;
-+                      terminal->pvt->screen->defaults.attr.underline = 1;
-                       break;
-               case 5:
--                      terminal->pvt->screen->defaults.blink = 1;
-+                      terminal->pvt->screen->defaults.attr.blink = 1;
-                       break;
-               case 7:
--                      terminal->pvt->screen->defaults.reverse = 1;
-+                      terminal->pvt->screen->defaults.attr.reverse = 1;
-                       break;
-               case 8:
--                      terminal->pvt->screen->defaults.invisible = 1;
-+                      terminal->pvt->screen->defaults.attr.invisible = 1;
-                       break;
-               case 9:
--                      terminal->pvt->screen->defaults.strikethrough = 1;
-+                      terminal->pvt->screen->defaults.attr.strikethrough = 1;
-                       break;
-               case 21: /* Error in old versions of linux console. */
-               case 22: /* ECMA 48. */
--                      terminal->pvt->screen->defaults.bold = 0;
--                      terminal->pvt->screen->defaults.half = 0;
-+                      terminal->pvt->screen->defaults.attr.bold = 0;
-+                      terminal->pvt->screen->defaults.attr.half = 0;
-                       break;
-               case 24:
--                      terminal->pvt->screen->defaults.underline = 0;
-+                      terminal->pvt->screen->defaults.attr.underline = 0;
-                       break;
-               case 25:
--                      terminal->pvt->screen->defaults.blink = 0;
-+                      terminal->pvt->screen->defaults.attr.blink = 0;
-                       break;
-               case 27:
--                      terminal->pvt->screen->defaults.reverse = 0;
-+                      terminal->pvt->screen->defaults.attr.reverse = 0;
-                       break;
-               case 28:
--                      terminal->pvt->screen->defaults.invisible = 0;
-+                      terminal->pvt->screen->defaults.attr.invisible = 0;
-                       break;
-               case 29:
--                      terminal->pvt->screen->defaults.strikethrough = 0;
-+                      terminal->pvt->screen->defaults.attr.strikethrough = 0;
-                       break;
-               case 30:
-               case 31:
-@@ -2723,7 +2722,7 @@
-               case 35:
-               case 36:
-               case 37:
--                      terminal->pvt->screen->defaults.fore = param - 30;
-+                      terminal->pvt->screen->defaults.attr.fore = param - 30;
-                       break;
-               case 38:
-               {
-@@ -2737,17 +2736,17 @@
-                                       break;
-                               }
-                               param1 = g_value_get_long(value1);
--                              terminal->pvt->screen->defaults.fore = param1;
-+                              terminal->pvt->screen->defaults.attr.fore = param1;
-                               i += 2;
-                       }
-                       break;
-               }
-               case 39:
-                       /* default foreground, no underscore */
--                      terminal->pvt->screen->defaults.fore = VTE_DEF_FG;
-+                      terminal->pvt->screen->defaults.attr.fore = VTE_DEF_FG;
-                       /* By ECMA 48, this underline off has no business
-                          being here, but the Linux console specifies it. */
--                      terminal->pvt->screen->defaults.underline = 0;
-+                      terminal->pvt->screen->defaults.attr.underline = 0;
-                       break;
-               case 40:
-               case 41:
-@@ -2757,7 +2756,7 @@
-               case 45:
-               case 46:
-               case 47:
--                      terminal->pvt->screen->defaults.back = param - 40;
-+                      terminal->pvt->screen->defaults.attr.back = param - 40;
-                       break;
-               case 48:
-               {
-@@ -2771,14 +2770,14 @@
-                                       break;
-                               }
-                               param1 = g_value_get_long(value1);
--                              terminal->pvt->screen->defaults.back = param1;
-+                              terminal->pvt->screen->defaults.attr.back = param1;
-                               i += 2;
-                       }
-                       break;
-               }
-               case 49:
-                       /* default background */
--                      terminal->pvt->screen->defaults.back = VTE_DEF_BG;
-+                      terminal->pvt->screen->defaults.attr.back = VTE_DEF_BG;
-                       break;
-               case 90:
-               case 91:
-@@ -2788,7 +2787,7 @@
-               case 95:
-               case 96:
-               case 97:
--                      terminal->pvt->screen->defaults.fore = param - 90 + VTE_COLOR_BRIGHT_OFFSET;
-+                      terminal->pvt->screen->defaults.attr.fore = param - 90 + VTE_COLOR_BRIGHT_OFFSET;
-                       break;
-               case 100:
-               case 101:
-@@ -2798,7 +2797,7 @@
-               case 105:
-               case 106:
-               case 107:
--                      terminal->pvt->screen->defaults.back = param - 100 + VTE_COLOR_BRIGHT_OFFSET;
-+                      terminal->pvt->screen->defaults.attr.back = param - 100 + VTE_COLOR_BRIGHT_OFFSET;
-                       break;
-               }
-       }
-@@ -2807,14 +2806,14 @@
-               _vte_terminal_set_default_attributes(terminal);
-       }
-       /* Save the new colors. */
--      terminal->pvt->screen->color_defaults.fore =
--              terminal->pvt->screen->defaults.fore;
--      terminal->pvt->screen->color_defaults.back =
--              terminal->pvt->screen->defaults.back;
--      terminal->pvt->screen->fill_defaults.fore =
--              terminal->pvt->screen->defaults.fore;
--      terminal->pvt->screen->fill_defaults.back =
--              terminal->pvt->screen->defaults.back;
-+      terminal->pvt->screen->color_defaults.attr.fore =
-+              terminal->pvt->screen->defaults.attr.fore;
-+      terminal->pvt->screen->color_defaults.attr.back =
-+              terminal->pvt->screen->defaults.attr.back;
-+      terminal->pvt->screen->fill_defaults.attr.fore =
-+              terminal->pvt->screen->defaults.attr.fore;
-+      terminal->pvt->screen->fill_defaults.attr.back =
-+              terminal->pvt->screen->defaults.attr.back;
-       return FALSE;
- }
-@@ -2854,7 +2853,7 @@
-               }
-       }
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -2894,7 +2893,7 @@
-       /* Redraw everything. */
-       _vte_invalidate_all(terminal);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -2911,15 +2910,6 @@
-       screen = terminal->pvt->screen;
--      /* Match xterm and fill to the end of row when moving. */
--      if (screen->fill_defaults.back != VTE_DEF_BG) {
--              VteRowData *rowdata;
--              rowdata = _vte_terminal_ensure_row (terminal);
--              vte_g_array_fill (rowdata->cells,
--                              &screen->fill_defaults,
--                              terminal->column_count);
--      }
--
-         val = 0;
-       if ((params != NULL) && (params->n_values > 0)) {
-               value = g_value_array_get_nth(params, 0);
-@@ -3292,7 +3282,7 @@
-               break;
-       }
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return again;
- }
-@@ -3337,7 +3327,7 @@
-               break;
-       }
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return again;
- }
-@@ -3410,7 +3400,7 @@
-       /* Adjust the scrollbars if necessary. */
-       _vte_terminal_adjust_adjustments(terminal);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_inserted_count++;
-+      terminal->pvt->text_inserted_flag = TRUE;
-       return FALSE;
- }
-@@ -3463,7 +3453,7 @@
-       /* Adjust the scrollbars if necessary. */
-       _vte_terminal_adjust_adjustments(terminal);
-       /* We've modified the display.  Make a note of it. */
--      terminal->pvt->text_deleted_count++;
-+      terminal->pvt->text_deleted_flag = TRUE;
-       return FALSE;
- }
-@@ -3688,10 +3678,9 @@
-               }
-               _vte_terminal_emit_text_deleted(terminal);
-               /* Fill this row. */
--              cell = screen->basic_defaults;
-               cell.c = 'E';
--              cell.columns = 1;
--              cell.empty = 0;
-+              memcpy (&cell.attr, &screen->basic_defaults.attr, sizeof (cell.attr));
-+              cell.attr.columns = 1;
-               vte_g_array_fill(rowdata->cells, &cell, terminal->column_count);
-               _vte_terminal_emit_text_inserted(terminal);
-       }
-diff -urN vte-0.16.0/src/vtexft.c vte-svn/src/vtexft.c
+                              gboolean invalidate_cells,
+                              gboolean paint_cells,
+diff -urN vte-0.16.0/src/vtexft.c vte-1846/src/vtexft.c
 --- vte-0.16.0/src/vtexft.c    2007-03-08 17:47:15.000000000 +0100
-+++ vte-svn/src/vtexft.c       2007-03-17 18:22:53.000000000 +0100
++++ vte-1846/src/vtexft.c      2007-03-18 13:22:32.000000000 +0100
 @@ -39,8 +39,6 @@
  #define FONT_INDEX_FUDGE 1
  #define CHAR_WIDTH_FUDGE 1
@@ -2928,9 +1586,9 @@ diff -urN vte-0.16.0/src/vtexft.c vte-svn/src/vtexft.c
  }
  
  static GPtrArray *
-diff -urN vte-0.16.0/termcaps/xterm-color vte-svn/termcaps/xterm-color
+diff -urN vte-0.16.0/termcaps/xterm-color vte-1846/termcaps/xterm-color
 --- vte-0.16.0/termcaps/xterm-color    1970-01-01 01:00:00.000000000 +0100
-+++ vte-svn/termcaps/xterm-color       2007-03-17 19:21:20.000000000 +0100
++++ vte-1846/termcaps/xterm-color      2007-03-18 13:22:43.000000000 +0100
 @@ -0,0 +1,27 @@
 +# This is a cut-down version of the termcap file from my box.
 +
This page took 0.273786 seconds and 4 git commands to generate.