Patches for tables

Simon Larochelle <[email protected]>
Newsgroups gmane.editors.abiword.devel
Message-ID <CAF8-HjEKqH9khjv_5sZAWbr+p+zoy812_U9xGijUPPx=4YsHSg@mail.gmail.com>
I made a patch to fix several issues with tables in abiword. The patch
speeds up abiword when big tables are used (tables that are broken
over tens of pages). A document with such a table can be loaded much
faster than before and I can now edit a document with very little
delays on most commands. I still have some important slowdowns for
example when trying to erase the big table or when selecting a segment
of the table.

The patch also fixes several issues with broken tables such as
- cells that extend on more than 2 pages
- breaking of nested tables
- breaking is done preferably along cell boundaries (the breaking is
done along cell boundaries if the resulting amount of white space at
the bottom of the page column is less than a given fraction of the
page column (this fraction is a new table property); the breaking is
done inside the cells otherwise).
- breaking inside a cell has also been improved.
- the line at the bottom of a broken table segment was sometimes
printed at the wrong place. This is now fixed.
- tables with footnotes: the space occupied by the footnotes are now
accounted correctly when breaking the table

Finally I fixed about half of the other bugs in the Editing - Tables category.

Can I commit this patch to the SVN repository or should I wait after
the release of version 3.0? The patch is fairly big. Here is the
diff-stat (N.B.: the patch is composed of about 30 smaller patches in
my git repository)

 src/af/xap/gtk/xap_Gtk2Compat.h         |    1 +
 src/af/xap/gtk/xap_UnixFrameImpl.cpp    |    7 +-
 src/af/xap/xp/xav_Listener.h            |    3 +-
 src/text/fmt/xp/fb_ColumnBreaker.cpp    |   72 +-
 src/text/fmt/xp/fl_BlockLayout.cpp      |   14 +-
 src/text/fmt/xp/fl_BlockLayout.h        |    2 +-
 src/text/fmt/xp/fl_ContainerLayout.cpp  |   40 +
 src/text/fmt/xp/fl_ContainerLayout.h    |    4 +
 src/text/fmt/xp/fl_DocListener.cpp      |    7 +-
 src/text/fmt/xp/fl_FootnoteLayout.cpp   |    3 +-
 src/text/fmt/xp/fl_FrameLayout.cpp      |    4 +-
 src/text/fmt/xp/fl_Layout.cpp           |   14 +-
 src/text/fmt/xp/fl_Layout.h             |    3 +
 src/text/fmt/xp/fl_TOCLayout.cpp        |    3 +-
 src/text/fmt/xp/fl_TableLayout.cpp      |  110 +-
 src/text/fmt/xp/fl_TableLayout.h        |   11 +-
 src/text/fmt/xp/fp_Column.cpp           |    2 +-
 src/text/fmt/xp/fp_Line.cpp             |   15 +-
 src/text/fmt/xp/fp_Page.cpp             |   65 +-
 src/text/fmt/xp/fp_Run.cpp              |    5 +-
 src/text/fmt/xp/fp_TableContainer.cpp   | 2427 +++++++++++++------------------
 src/text/fmt/xp/fp_TableContainer.h     |   68 +-
 src/text/fmt/xp/fv_View.cpp             |  112 +-
 src/text/fmt/xp/fv_View.h               |   28 +-
 src/text/fmt/xp/fv_View_cmd.cpp         | 1146 ++++++---------
 src/text/fmt/xp/fv_View_protected.cpp   |  153 +-
 src/text/ptbl/xp/pd_Document.cpp        |   24 +
 src/text/ptbl/xp/pd_Document.h          |    4 +-
 src/text/ptbl/xp/pp_Property.cpp        |    1 +
 src/text/ptbl/xp/pp_PropertyMap.cpp     |    1 +
 src/text/ptbl/xp/pp_PropertyMap.h       |    1 +
 src/text/ptbl/xp/pt_PT_DeleteSpan.cpp   |   34 +-
 src/text/ptbl/xp/pt_PT_InsertStrux.cpp  |    1 +
 src/text/ptbl/xp/pt_PieceTable.cpp      |   28 +
 src/text/ptbl/xp/pt_PieceTable.h        |    3 +
 src/wp/ap/xp/ap_EditMethods.cpp         |   30 +-
 src/wp/ap/xp/ap_LeftRuler.cpp           |    6 +-
 src/wp/ap/xp/ap_ML_ContextText.h        |    8 +-
 src/wp/ap/xp/ap_Menu_ActionSet.cpp      |    4 +-
 src/wp/ap/xp/ap_Menu_Id_List.h          |    4 +-
 src/wp/ap/xp/ap_Menu_Layouts_Embedded.h |    4 +-
 src/wp/ap/xp/ap_Menu_Layouts_MainMenu.h |    4 +-
 src/wp/ap/xp/ap_String_Id.h             |   10 +-
 src/wp/ap/xp/ap_TopRuler.cpp            |    5 +-
 src/wp/impexp/xp/ie_imp_RTF.cpp         |   20 +-
 45 files changed, 2002 insertions(+), 2509 deletions(-)


Simon
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.