summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-05-30 08:53:00 +0200
committerMichael Stahl <mstahl@redhat.com>2012-05-30 09:02:31 +0200
commit8bafe38c569afa2e1055eb647cb7ff161ddd1230 (patch)
tree69e1c04f9a5c37d16abbc867c9651899098173c8 /vcl
parent33050f597cef81162eede4360b011b41e10ab69f (diff)
i#87757: do not create empty Rectangle bounding box for glyphs:
Enforce a minimum width and height of 1 in GlyphMetric::SetSize(), preventing X11SalGraphics::GetGlyphBoundRect() from returning a Rectangle that has one side set as RECT_EMPTY. This problem has surfaced due to the change of the status bar in ce14342c4292628a641a72d4f63d9c048e030c6a, causing the AccessibleStatusBarItem to fail in getCharacterBounds() because the text of the control, "Words: 0", now contains a space, for which an empty Rectangle bounding box is created, which results in a wrong return value from getCharacterBounds(): LOG> Character bounds outside component LOG> Character rect: 43, -566, 0, 0 LOG> Component rect: 91, 2, 71, 18 It turns out that the following test was disabled due to this problem, so re-enable it now: toolkit.AccessibleFixedText::com::sun::star::accessibility::XAccessibleText
Diffstat (limited to 'vcl')
-rw-r--r--vcl/generic/glyphs/gcach_layout.cxx5
-rw-r--r--vcl/inc/generic/glyphcache.hxx2
2 files changed, 6 insertions, 1 deletions
diff --git a/vcl/generic/glyphs/gcach_layout.cxx b/vcl/generic/glyphs/gcach_layout.cxx
index ef03aa302311..c1b5b102e779 100644
--- a/vcl/generic/glyphs/gcach_layout.cxx
+++ b/vcl/generic/glyphs/gcach_layout.cxx
@@ -43,6 +43,11 @@
namespace { struct SimpleLayoutEngine : public rtl::Static< ServerFontLayoutEngine, SimpleLayoutEngine > {}; }
+void GlyphMetric::SetSize(const Size& s)
+{
+ maSize = Size(std::max<long>(1, s.Width()), std::max<long>(1, s.Height()));
+}
+
// =======================================================================
// layout implementation for ServerFont
// =======================================================================
diff --git a/vcl/inc/generic/glyphcache.hxx b/vcl/inc/generic/glyphcache.hxx
index 1ab2a74eda45..8c0f3b17cacd 100644
--- a/vcl/inc/generic/glyphcache.hxx
+++ b/vcl/inc/generic/glyphcache.hxx
@@ -132,7 +132,7 @@ protected:
friend class GlyphData;
void SetOffset( int nX, int nY ) { maOffset = Point( nX, nY); }
void SetDelta( int nX, int nY ) { maDelta = Point( nX, nY); }
- void SetSize( const Size& s ) { maSize = s; }
+ void SetSize(const Size& s);
void SetCharWidth( long nW ) { mnAdvanceWidth = nW; }
private: