diff options
author | David Tardon <dtardon@redhat.com> | 2013-03-22 16:49:41 +0100 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2013-03-23 08:09:44 +0100 |
commit | 91864e19c84ae9834d6e97ee5ddc4db5bf957681 (patch) | |
tree | 4cb75ff52dd6d760d68315b03c2ea538f3949b84 /distro-configs/LibreOfficeLinux.conf | |
parent | e3ad376f601d3abfc1b9e47dc0419d52785bd9b9 (diff) |
rhbz#876742 speed up table manipulation in Impress
It turns out this is not actually a performance problem but an oversight
in implementation (or a bug, if you want .-)
Every manipulation with a table (e.g., move, resize; actually even a
selection of the table) leads to creation of a full copy of the table
(SdrObject::getFullDragClone()). One of the actions the table copy impl.
does is to call sdr::CellProperties::SetStyleSheet() on every cell of
the new table. CellProperties is derived from
sdr::properties::TextProperties and CellProperties::SetStyleSheet() just
passes the call to TextProperties::SetStyleSheet(). This is where the
trouble begins :-)
The SDR representation of a table, SdrTableObj, is derived from
SdrTextObj. Because of that, SdrTextObj needs to be able to contain more
than one SdrText (because a table needs one for every cell). This is
handled correctly by TextProperties. But, because there is no SDR
representation of a single cell, CellProperties uses the SdrTableObj as
the SDR object it works on. Therefore TextProperties::SetStyleSheet()
processes all SdrText objects of the _whole table_, not just a single
cell. And this is repeated for every other cell...
Change-Id: Iab2e2d0e1e8038710645c0bd24666e6032b0a003
Diffstat (limited to 'distro-configs/LibreOfficeLinux.conf')
0 files changed, 0 insertions, 0 deletions