Support ellipsizing of markup text in wxDVC
Fix wxDataViewTextRenderer to at least partially respect ellipsize mode when using markup text. Generic implementation only supports wxELLIPSIZE_END and wxELLIPSIZE_NONE at the moment, but the wxOSX and wxGTK ones have full support.
This commit is contained in:
committed by
Václav Slavík
parent
92a1f643ba
commit
58fc33d7c2
@@ -237,18 +237,22 @@ public:
|
||||
wxMarkupParserRenderItemOutput(wxWindow *win,
|
||||
wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int rendererFlags)
|
||||
int rendererFlags,
|
||||
wxEllipsizeMode ellipsizeMode)
|
||||
: wxMarkupParserRenderOutput(dc, rect, wxMarkupText::Render_Default),
|
||||
m_win(win),
|
||||
m_rendererFlags(rendererFlags),
|
||||
m_renderer(&wxRendererNative::Get())
|
||||
{
|
||||
// TODO: Support all ellipsizing modes
|
||||
m_ellipsizeMode = ellipsizeMode == wxELLIPSIZE_NONE ? wxELLIPSIZE_NONE : wxELLIPSIZE_END;
|
||||
}
|
||||
|
||||
virtual void OnText(const wxString& text) wxOVERRIDE
|
||||
{
|
||||
wxRect rect(m_rect);
|
||||
rect.x = m_pos;
|
||||
rect.SetRight(m_rect.GetRight());
|
||||
|
||||
m_renderer->DrawItemText(m_win,
|
||||
m_dc,
|
||||
@@ -256,7 +260,7 @@ public:
|
||||
rect,
|
||||
wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL,
|
||||
m_rendererFlags,
|
||||
wxELLIPSIZE_NONE);
|
||||
m_ellipsizeMode);
|
||||
|
||||
m_pos += m_dc.GetTextExtent(text).x;
|
||||
}
|
||||
@@ -264,6 +268,7 @@ public:
|
||||
private:
|
||||
wxWindow* const m_win;
|
||||
int const m_rendererFlags;
|
||||
wxEllipsizeMode m_ellipsizeMode;
|
||||
wxRendererNative* const m_renderer;
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxMarkupParserRenderItemOutput);
|
||||
@@ -310,9 +315,10 @@ void wxMarkupText::Render(wxDC& dc, const wxRect& rect, int flags)
|
||||
void wxMarkupText::RenderItemText(wxWindow *win,
|
||||
wxDC& dc,
|
||||
const wxRect& rect,
|
||||
int rendererFlags)
|
||||
int rendererFlags,
|
||||
wxEllipsizeMode ellipsizeMode)
|
||||
{
|
||||
wxMarkupParserRenderItemOutput out(win, dc, rect, rendererFlags);
|
||||
wxMarkupParserRenderItemOutput out(win, dc, rect, rendererFlags, ellipsizeMode);
|
||||
wxMarkupParser parser(out);
|
||||
parser.Parse(m_markup);
|
||||
}
|
||||
|
Reference in New Issue
Block a user