Convert image tags to text using their alt attribute in wxHTML.

This is useful when copying wxHtmlWindow contents to clipboard, for example.

Closes #14557.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-09-30 22:20:11 +00:00
parent b8885bb39b
commit 9915cdc960

View File

@@ -298,6 +298,11 @@ public:
virtual wxHtmlLinkInfo *GetLink(int x = 0, int y = 0) const; virtual wxHtmlLinkInfo *GetLink(int x = 0, int y = 0) const;
void SetImage(const wxImage& img); void SetImage(const wxImage& img);
// If "alt" text is set, it will be used when converting this cell to text.
void SetAlt(const wxString& alt);
virtual wxString ConvertToText(wxHtmlSelection *sel) const;
#if wxUSE_GIF && wxUSE_TIMER #if wxUSE_GIF && wxUSE_TIMER
void AdvanceAnimation(wxTimer *timer); void AdvanceAnimation(wxTimer *timer);
virtual void Layout(int w); virtual void Layout(int w);
@@ -320,6 +325,7 @@ private:
double m_scale; double m_scale;
wxHtmlImageMapCell *m_imageMap; wxHtmlImageMapCell *m_imageMap;
wxString m_mapName; wxString m_mapName;
wxString m_alt;
wxDECLARE_NO_COPY_CLASS(wxHtmlImageCell); wxDECLARE_NO_COPY_CLASS(wxHtmlImageCell);
}; };
@@ -474,6 +480,16 @@ void wxHtmlImageCell::SetImage(const wxImage& img)
#endif #endif
} }
void wxHtmlImageCell::SetAlt(const wxString& alt)
{
m_alt = alt;
}
wxString wxHtmlImageCell::ConvertToText(wxHtmlSelection* WXUNUSED(sel)) const
{
return m_alt;
}
#if wxUSE_GIF && wxUSE_TIMER #if wxUSE_GIF && wxUSE_TIMER
void wxHtmlImageCell::AdvanceAnimation(wxTimer *timer) void wxHtmlImageCell::AdvanceAnimation(wxTimer *timer)
{ {
@@ -703,6 +719,7 @@ TAG_HANDLER_BEGIN(IMG, "IMG,MAP,AREA")
al, mn); al, mn);
m_WParser->ApplyStateToCell(cel); m_WParser->ApplyStateToCell(cel);
cel->SetId(tag.GetParam(wxT("id"))); // may be empty cel->SetId(tag.GetParam(wxT("id"))); // may be empty
cel->SetAlt(tag.GetParam(wxT("alt")));
m_WParser->GetContainer()->InsertCell(cel); m_WParser->GetContainer()->InsertCell(cel);
if (str) if (str)
delete str; delete str;