Improved auto list numbering

Fixed selection bugs


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55176 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2008-08-22 15:21:50 +00:00
parent 44bcee116e
commit e2d0875aa7
3 changed files with 94 additions and 14 deletions

View File

@@ -614,18 +614,76 @@ wxString wxRichTextStyleListBox::CreateHTML(wxRichTextStyleDefinition* def) cons
str << wxT("<td nowrap>");
#ifdef __WXMSW__
int size = 3;
int size = 2;
#else
int size = 4;
int size = 3;
#endif
int stdFontSize = 12;
// Guess a standard font size
int stdFontSize = 0;
// First see if we have a default/normal style to base the size on
wxString normalTranslated(_("normal"));
wxString defaultTranslated(_("default"));
size_t i;
for (i = 0; i < m_styleNames.GetCount(); i++)
{
wxString name = m_styleNames[i].Lower();
if (name.Find(wxT("normal")) != wxNOT_FOUND || name.Find(normalTranslated) != wxNOT_FOUND ||
name.Find(wxT("default")) != wxNOT_FOUND || name.Find(defaultTranslated) != wxNOT_FOUND)
{
wxRichTextStyleDefinition* d = GetStyleSheet()->FindStyle(m_styleNames[i]);
if (d)
{
wxRichTextAttr attr2(d->GetStyleMergedWithBase(GetStyleSheet()));
if (attr2.HasFontSize())
{
stdFontSize = attr2.GetFontSize();
break;
}
}
}
}
if (stdFontSize == 0)
{
// Look at sizes up to 20 points, and see which is the most common
wxArrayInt sizes;
size_t maxSize = 20;
for (i = 0; i <= maxSize; i++)
sizes.Add(0);
for (i = 0; i < m_styleNames.GetCount(); i++)
{
wxRichTextStyleDefinition* d = GetStyleSheet()->FindStyle(m_styleNames[i]);
if (d)
{
wxRichTextAttr attr2(d->GetStyleMergedWithBase(GetStyleSheet()));
if (attr2.HasFontSize())
{
if (attr2.GetFontSize() <= (int) maxSize)
sizes[attr2.GetFontSize()] ++;
}
}
}
int mostCommonSize = 0;
for (i = 0; i <= maxSize; i++)
{
if (sizes[i] > mostCommonSize)
mostCommonSize = i;
}
if (mostCommonSize > 0)
stdFontSize = mostCommonSize;
}
if (stdFontSize == 0)
stdFontSize = 12;
int thisFontSize = ((attr.GetFlags() & wxTEXT_ATTR_FONT_SIZE) != 0) ? attr.GetFontSize() : stdFontSize;
if (thisFontSize < stdFontSize)
size ++;
else if (thisFontSize > stdFontSize)
size --;
else if (thisFontSize > stdFontSize)
size ++;
str += wxT("<font");