Arguably such annoyingly thin double borders don't make much sense
anyway, because they're essentially 2 hairlines with ~no space between,
but unfortunately older LO versions are able to create them;
since the refactoring in 2d045cdb69,
which changed the BorderWidthImpl::Get* methods to return 0 due to
rounding, they were ignored at least in the HTML import, which is a
regression.
So add a special purpose hack that essentially rounds up the first line
to 1 but not the other lines so the visual result is a hairline single
border.
Change-Id: I20ac4675bcf67ea58a6931a40bff3605390e9c0d
Convert transparent mask to 8bit-grey after scale/rotate/crop
transformation. Use correct perspective at rendering.
Change-Id: I80b19d7bec880b0c58709c7c5bee6199cbc815c9
Writer sets this flag dynamically via Ruler::SetStyle depending on
the text direction, the flag is set by default and gets unset for the
vertical ruler, because the initial text direction is horizontal,
see SwView::StateTabWin.
Ruler::SetStyle calls Ruler::ImplInitExtraField, which modifies mnVirOff,
however mnVirWidth depends on mnVirOff, but gets updated only in Resize.
This patch copies the code from Resize to ImplInitExtraField, we cannot
just call Resize from ImplInitExtraField due to possible infinite recursion.
Change-Id: Ic7bb897059295aebe86c11977c37419017b55787
Part of MultiLineEdit was moved down from stvools to vcl
with name VCLMultiLineEdit. MessBox uses it to display the
message in read-only mode. Some of svtools' classes - which
are necessary to implement VCLMultiLineEdit - were moved to
vcl as a whole, and their includes are rewrite.
Note: ExtTextView and ExtTextEngine classes would be leaved in svtools
if VCLMultiLineEdit is a template class, but two macros: IMPL_LINK
end IMPL_LINK_NOARG make it impossible to use template syntax.
Change-Id: I26543868d8081c225c7125404d23369de3c3afcd
- Update fpicker files that include them.
- Separate Place class into its own header and move it to svtools.
Change-Id: I83a285d4c7fc21d6e76e4d7e47e347dac2bb4344
This pItemDesruptList is pointless now. We're registering the delete-when-idle
items in their ctor's and deregistering in their dtor's which get called from
the idle callback. The idea of pItemDesruptList appears to be for use in
deleting any items at exit time whose idle callback didn't get called already.
Which was done by DeleteOnIdleItems which itself was removed a while ago
because nothing was calling it (for years). Some experiments in making it a
simple singleton and/or one that hooks off default component dispose or
XDesktop dispose shows that its crash city, so lets just remove the unused
stuff outright rather than trying to fight to get some 12+ year unused appendix
used.
Change-Id: Ie0256d6987cf89a2a12db297065af09674547b3e
With this commit I reintroduce one pass scale, rotate and crop that
was located in grfmgr2.cxx (now in Bitmap class) and was used for
preparing bitmaps for displaying on screen. By default the combination
of two filters is used: bilinear, which is a similar algorithm than
the "old" one, but with the same result, and averaging algorithm. Bilinear
filtering is used for bitmap enlarging and shrinking till factor 0.6. Below
this bilinear gives bad results because of limited sampling. For such cases
averaging is used which is a simple algorithm for shrinking. In averaging
the algorithm calculates the average of samples which result is the new
pixel. Currently both algorithms are not optimised.
One pass scale, rotate and crop should only be used for displaying of
images.
Change-Id: I5a1330b58a7cbb6fde8546e16c3e8c140afca565
In Base:
1) Open a big table (hundreds of rows)
2) Only the first 40 to 100 rows are fetched into the cache and shown
(depending on screen / window size).
3) Move to last row (click on icon |>|)
4) The last 40 to 100 rows are fetched into the cache; the data of the
first 40/100 rows is pushed out of the cache.
5) The first 40 to 100 rows are fetched, just so that the call to
rWindow.Paint() can do its job, because they are not in the cache
anymore (!). The last 40/100 rows are pushed out of the cache.
6) The last 40 to 100 rows are fetched into the cache and displayed;
the first 40/100 rows are pushed out of the cache *again*.
Steps 5 and 6 are obviously *very* stupid.
Change-Id: Ic11b893ea9440c2c5a142bd3c77c95d6730aa723