OOoWriterDesignProblems

From Apache OpenOffice Wiki
Jump to: navigation, search

Writer Icon.png

Writer Project

Please view the guidelines
before contributing.

Popular Subcategories:

Internal Documentation:

API Documentation:

Ongoing Efforts:

Sw.OpenOffice.org

StarWriter Design Problems

This page is dedicated to long standing Writer design problems, as well as to possible solutions.

This page is intended to cover:

  1. design problems
  2. how they affect customers and development
  3. possible approaches for resolving the problems

Table Model

Problems:

  • Impossible to create certain table shapes
    • affects import filters (WW8, XML, ...)
    • tables in tables --> solved for SO8/OOo 2.0
      • the ww8 import currently has to imports tables in tables as tables in frames in a table, which is a complex and unsatisfactory hack.
  • even if some tables can be made, it may only be possible with \

a very particular sequence of split and merges, meaning that most \ users will fail

  • tables cells can't span across a page boundary --> solved for SO8/OOo 2.0
  • hard to make the user understand, since everyone expects CALS/HTML-style tables nowadays
  • impossible to create certain grids (cells loose contact if vertical cells inbetween are being merged)
  • table borders are handled by the cells, which leads to weird results on page breaks.
    • a solution might be a table border which gets combined with the individual cell borders
    • cell border styles might be useful
  • impossible to move a table, if it starts on the top of a page


Redlining

  • massive performance problem with hidden redlines
    • conflict between redlining and undo
  • redlining in tables doesn't work --> solved (in what version?)
  • complicated and bug-ridden code, many crashes
    • massive duplication of code
    • many subtle difference in behaviour depending on redline enabled or not
  • search & replace finds texts in deleted redlines when redlines are displayed
  • word count finds text in redlines

Lists and Numbering

  • placing a paragraph in a list strips first line indent from that paragraph, making full import a list entry from word difficult/impossible (see es ideaboard posting on the problem)

Undo

  • many actions not undoable
    • e.g. changes to styles
    • non-undoable actions delete the entire Undo stack
  • massive duplication of code for UI actions
    • once in the regular SwDoc methods
    • once in the undo-object constructor
    • once in the redo-methods
    • and also corresponding code in the undo method itself

Layout

  • loop problems due to missing notification control mechanism

Performance issues

  • those svarray.hxx derived macro based vectors/arrays etc are real bottlenecks when they grow in size. stl ones are a good deal faster. Replacing many of them with stl equivalents gave good speed improvements in the ww8 filter.

Drawing shapes

  • Drawing shapes cannot be properly placed in headers/footers, a real problem for import of word documents. --> already solved for SO7/OO 1.1
  • Drawing shapes cannot be grouped with writer graphics/text frames (e.g. #i5713#)
  • There are both text frames and drawing text boxes. Both have different capabilities, drawing boxes can be grouped with other shapes, but cannot appear in headers and cannot have writer lists and tables etc included inside them.

new document vs inserting file

  • Some things behave differently in "inserting file" mode vs a new document. Some make total sense, e.g. modifying styles in use is not acceptable for inserted content, but its still not totally clear to me (CaolanMcNamara) what are the exact differences for some other types of content, e.g. CreateContactObject in ww8\ww8graf.cxx
  • insert vs load+copy: I'm not really convinced this whole 'insertion' mode goo is necessary at all. It certainly adds complication to the filters, and I don't really see a benefit vs. always loading a complete document and then copying into the existing. I asked JP about this at one point of time, and his answer was basically that there were lots of performance reasons (e.g. copying OLE + graphics vs. inserting them directly), most of which are hitory by now (e.g. due to reference counting copying of OLE and graphics is cheap nowadays). --DanielVogelheim

tabstops in fields

  • See issue 3232. These are disabled at present, word uses them as the seperator between bullet and content in lists, they are currently import/exported as the spacing attribute, but its not the same as word will honour a normal tab stop set on the paragraph when placing the content after a bullet entry. Similiar effects exist with table of contents im/ex.

ww filter vs rtf filter

  • there is much duplicated code in the two ms filters. The should be equivalent to eachother. The rtf format is basically the same as the winword filter, e.g. list formats and other complex items would benefit from being merged, getting rtf improvements for free when ww improvements are gained.

Long standing question: See at StarOfficeTables. --NikolaiPretzell

Personal tools