summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-01-23 14:33:38 +0000
committerMiklos Vajna <vmiklos@suse.cz>2013-02-03 09:03:01 +0000
commit9b70bf62e6b5319e282cd3533c90216aabccfe53 (patch)
treeff64d961a9c0f9bb9c31dbdd4241c3d9c90286d9 /vcl/source
parent6523f78456c9f78fb842b7215eb84a96f4e92472 (diff)
fdo#54629 MultiSalLayout::GetBoundRect always uses level 0 fallback font
...in X11SalGraphics::GetGlyphBoundRect In MultiSalLayout::GetBoundRect we loop through each fallback font and union each level's GetBoundRect to get the result, which seems reasonable, except that for each level that means a call to SalLayout::GetBoundRect which calls X11SalGraphics::GetGlyphBoundRect. Those sublevel SalLayouts don't know that they are sublevels so they never set the level bits on their glyphs. Which results in X11SalGraphics::GetGlyphBoundRect always searching for that glyph in the level 0 font, so there's a mismatch between the font the SalLayout's are created to use and the font that gets used. Now, SalLayout::GetBoundRect is a fairly simple thing, it just calls GetNextGlyphs 1 by 1 and X11SalGraphics::GetGlyphBoundRect on the result of that. So I *think* that if we remove the specialized MultiSalLayout::GetBoundRect in favour of the default implementation, then because MultiSalLayout::GetNextGlyphs is specialized to do-the-right-thing and set up the glyph ids correctly, then we bubble the ids down to X11SalGraphics::GetGlyphBoundRect correctly to get it to use the right font and we get the correct bounding size. defb4d60a2d22fd36a0ff3f077faa6a0932b45a4 defb4d60a2d22fd36a0ff3f077faa6a0932b45a4 Change-Id: Idefb4d60a2d22fd36a0ff3f077faa6a0932b45a4 Reviewed-on: https://gerrit.libreoffice.org/1907 Tested-by: Lior Kaplan <kaplanlior@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@suse.cz>
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/gdi/sallayout.cxx26
1 files changed, 0 insertions, 26 deletions
diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index 140037d8411a..fe5cf8bc9a74 100644
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -2080,30 +2080,4 @@ bool MultiSalLayout::GetOutline( SalGraphics& rGraphics,
return bRet;
}
-// -----------------------------------------------------------------------
-
-bool MultiSalLayout::GetBoundRect( SalGraphics& rGraphics, Rectangle& rRect ) const
-{
- bool bRet = false;
-
- Rectangle aRectangle;
- for( int i = mnLevel; --i >= 0; )
- {
- SalLayout& rLayout = *mpLayouts[ i ];
- rLayout.DrawBase() = maDrawBase;
- rLayout.DrawOffset() += maDrawOffset;
- rLayout.InitFont();
- if( rLayout.GetBoundRect( rGraphics, aRectangle ) )
- {
- rRect.Union( aRectangle );
- bRet = true;
- }
- rLayout.DrawOffset() -= maDrawOffset;
- }
-
- return bRet;
-}
-
-// =======================================================================
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */