Corrected wxRTC font dialog spin button behaviour

This commit is contained in:
JulianSmart
2015-08-18 16:36:16 +01:00
parent 9cfda3ca4d
commit 84b3644680
4 changed files with 65 additions and 16 deletions

View File

@@ -2075,7 +2075,7 @@ public:
list (ok, newPos). list (ok, newPos).
@endWxPerlOnly @endWxPerlOnly
*/ */
bool DeleteSelectedContent(long* newPos= NULL); virtual bool DeleteSelectedContent(long* newPos= NULL);
/** /**
Transforms logical (unscrolled) position to physical window position. Transforms logical (unscrolled) position to physical window position.

View File

@@ -2021,7 +2021,7 @@ public:
list (ok, newPos). list (ok, newPos).
@endWxPerlOnly @endWxPerlOnly
*/ */
bool DeleteSelectedContent(long* newPos= NULL); virtual bool DeleteSelectedContent(long* newPos= NULL);
/** /**
Transforms logical (unscrolled) position to physical window position. Transforms logical (unscrolled) position to physical window position.

View File

@@ -334,6 +334,8 @@ void wxRichTextFontPage::CreateControls()
////@end wxRichTextFontPage content construction ////@end wxRichTextFontPage content construction
m_fontSizeSpinButtons->SetRange(0, 999);
if ((GetAllowedTextEffects() & wxTEXT_ATTR_EFFECT_RTL) == 0) if ((GetAllowedTextEffects() & wxTEXT_ATTR_EFFECT_RTL) == 0)
m_rtlParentSizer->Show(m_rtlCtrl, false); m_rtlParentSizer->Show(m_rtlCtrl, false);
if ((GetAllowedTextEffects() & wxTEXT_ATTR_EFFECT_SUPPRESS_HYPHENATION) == 0) if ((GetAllowedTextEffects() & wxTEXT_ATTR_EFFECT_SUPPRESS_HYPHENATION) == 0)
@@ -579,6 +581,7 @@ bool wxRichTextFontPage::TransferDataToWindow()
{ {
wxString strSize = wxString::Format(wxT("%d"), attr->GetFontSize()); wxString strSize = wxString::Format(wxT("%d"), attr->GetFontSize());
m_sizeTextCtrl->SetValue(strSize); m_sizeTextCtrl->SetValue(strSize);
m_fontSizeSpinButtons->SetValue(attr->GetFontSize());
m_sizeUnitsCtrl->SetSelection(0); m_sizeUnitsCtrl->SetSelection(0);
if (m_sizeListBox->FindString(strSize) != wxNOT_FOUND) if (m_sizeListBox->FindString(strSize) != wxNOT_FOUND)
m_sizeListBox->SetStringSelection(strSize); m_sizeListBox->SetStringSelection(strSize);
@@ -587,6 +590,7 @@ bool wxRichTextFontPage::TransferDataToWindow()
{ {
wxString strSize = wxString::Format(wxT("%d"), attr->GetFontSize()); wxString strSize = wxString::Format(wxT("%d"), attr->GetFontSize());
m_sizeTextCtrl->SetValue(strSize); m_sizeTextCtrl->SetValue(strSize);
m_fontSizeSpinButtons->SetValue(attr->GetFontSize());
m_sizeUnitsCtrl->SetSelection(1); m_sizeUnitsCtrl->SetSelection(1);
m_sizeListBox->SetSelection(wxNOT_FOUND); m_sizeListBox->SetSelection(wxNOT_FOUND);
} }
@@ -950,9 +954,16 @@ void wxRichTextFontPage::OnSizeTextCtrlUpdated( wxCommandEvent& WXUNUSED(event)
if (m_dontUpdate) if (m_dontUpdate)
return; return;
m_dontUpdate = true;
wxString strSize = m_sizeTextCtrl->GetValue(); wxString strSize = m_sizeTextCtrl->GetValue();
if (!strSize.IsEmpty() && m_sizeListBox->FindString(strSize) != wxNOT_FOUND) if (!strSize.IsEmpty() && m_sizeListBox->FindString(strSize) != wxNOT_FOUND)
m_sizeListBox->SetStringSelection(strSize); m_sizeListBox->SetStringSelection(strSize);
if (!strSize.IsEmpty())
m_fontSizeSpinButtons->SetValue(wxAtoi(strSize));
m_dontUpdate = false;
UpdatePreview(); UpdatePreview();
} }
@@ -967,6 +978,8 @@ void wxRichTextFontPage::OnSizeListBoxSelected( wxCommandEvent& event )
m_dontUpdate = true; m_dontUpdate = true;
m_sizeTextCtrl->SetValue(event.GetString()); m_sizeTextCtrl->SetValue(event.GetString());
if (!event.GetString().IsEmpty())
m_fontSizeSpinButtons->SetValue(wxAtoi(event.GetString()));
m_dontUpdate = oldDontUpdate; m_dontUpdate = oldDontUpdate;
@@ -1127,17 +1140,33 @@ void wxRichTextFontPage::OnRichtextfontpageSizeUnitsSelected( wxCommandEvent& WX
void wxRichTextFontPage::OnRichtextfontpageSpinbuttonsUp( wxSpinEvent& WXUNUSED(event) ) void wxRichTextFontPage::OnRichtextfontpageSpinbuttonsUp( wxSpinEvent& WXUNUSED(event) )
{ {
if (m_dontUpdate)
return;
m_dontUpdate = true;
wxString text = m_sizeTextCtrl->GetValue(); wxString text = m_sizeTextCtrl->GetValue();
int size = 12;
if (!text.IsEmpty()) if (!text.IsEmpty())
{ {
int size = wxAtoi(text); size = wxAtoi(text);
if (size > 0) size ++;
{
size ++;
m_sizeTextCtrl->SetValue(wxString::Format(wxT("%d"), size));
UpdatePreview();
}
} }
if (size < 1 || size > 999)
size = 12;
if (m_fontSizeSpinButtons->GetValue() != size)
m_fontSizeSpinButtons->SetValue(size);
wxString newText(wxString::Format(wxT("%d"), size));
m_sizeTextCtrl->SetValue(newText);
if (!newText.IsEmpty() && m_sizeListBox->FindString(newText) != wxNOT_FOUND)
m_sizeListBox->SetStringSelection(newText);
UpdatePreview();
m_dontUpdate = false;
} }
/*! /*!
@@ -1146,17 +1175,34 @@ void wxRichTextFontPage::OnRichtextfontpageSpinbuttonsUp( wxSpinEvent& WXUNUSED(
void wxRichTextFontPage::OnRichtextfontpageSpinbuttonsDown( wxSpinEvent& WXUNUSED(event) ) void wxRichTextFontPage::OnRichtextfontpageSpinbuttonsDown( wxSpinEvent& WXUNUSED(event) )
{ {
if (m_dontUpdate)
return;
m_dontUpdate = true;
wxString text = m_sizeTextCtrl->GetValue(); wxString text = m_sizeTextCtrl->GetValue();
int size = 12;
if (!text.IsEmpty()) if (!text.IsEmpty())
{ {
int size = wxAtoi(text); size = wxAtoi(text);
if (size > 0) if (size > 1)
{
size --; size --;
m_sizeTextCtrl->SetValue(wxString::Format(wxT("%d"), size));
UpdatePreview();
}
} }
if (size < 1 || size > 999)
size = 12;
if (m_fontSizeSpinButtons->GetValue() != size)
m_fontSizeSpinButtons->SetValue(size);
wxString newText(wxString::Format(wxT("%d"), size));
m_sizeTextCtrl->SetValue(newText);
if (!newText.IsEmpty() && m_sizeListBox->FindString(newText) != wxNOT_FOUND)
m_sizeListBox->SetStringSelection(newText);
UpdatePreview();
m_dontUpdate = false;
} }
/*! /*!

View File

@@ -535,7 +535,10 @@ bool wxRichTextPlainText::ExportXML(wxOutputStream& stream, int indent, wxRichTe
#else #else
int c = (int) wxUChar(text[i]); int c = (int) wxUChar(text[i]);
#endif #endif
if ((c < 32 || c == 34) && /* c != 9 && */ c != 10 && c != 13) if (((c < 32 || c == 34) && /* c != 9 && */ c != 10 && c != 13)
// XML ranges
|| (!(c >= 32 && c <= 55295) && !(c >= 57344 && c <= 65533))
)
{ {
if (i > 0) if (i > 0)
{ {