X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a65ffcb229be96bbea86808bab3b1239407e8d9a..d2bb4c8653ae01c57ecd9a8ad899da06f865f5da:/src/common/fontpickercmn.cpp diff --git a/src/common/fontpickercmn.cpp b/src/common/fontpickercmn.cpp index 92cf9898b6..e4bf043341 100644 --- a/src/common/fontpickercmn.cpp +++ b/src/common/fontpickercmn.cpp @@ -39,7 +39,10 @@ // implementation // ============================================================================ -DEFINE_EVENT_TYPE(wxEVT_COMMAND_FONTPICKER_CHANGED) +const char wxFontPickerCtrlNameStr[] = "fontpicker"; +const char wxFontPickerWidgetNameStr[] = "fontpickerwidget"; + +wxDEFINE_EVENT(wxEVT_FONTPICKER_CHANGED, wxFontPickerEvent); IMPLEMENT_DYNAMIC_CLASS(wxFontPickerCtrl, wxPickerBase) IMPLEMENT_DYNAMIC_CLASS(wxFontPickerEvent, wxCommandEvent) @@ -55,7 +58,9 @@ bool wxFontPickerCtrl::Create( wxWindow *parent, wxWindowID id, long style, const wxValidator& validator, const wxString &name ) { - if (!wxPickerBase::CreateBase(parent, id, Font2String(initial), + if (!wxPickerBase::CreateBase(parent, id, + Font2String(initial.IsOk() ? initial + : *wxNORMAL_FONT), pos, size, style, validator, name)) return false; @@ -66,7 +71,7 @@ bool wxFontPickerCtrl::Create( wxWindow *parent, wxWindowID id, // complete sizer creation wxPickerBase::PostCreation(); - m_picker->Connect(wxEVT_COMMAND_FONTPICKER_CHANGED, + m_picker->Connect(wxEVT_FONTPICKER_CHANGED, wxFontPickerEventHandler(wxFontPickerCtrl::OnFontChange), NULL, this); @@ -120,19 +125,12 @@ void wxFontPickerCtrl::UpdatePickerFromTextCtrl() { wxASSERT(m_text); - if (m_bIgnoreNextTextCtrlUpdate) - { - // ignore this update - m_bIgnoreNextTextCtrlUpdate = false; - return; - } - // NB: we don't use the wxFont::wxFont(const wxString &) constructor // since that constructor expects the native font description // string returned by wxFont::GetNativeFontInfoDesc() and not // the user-friendly one returned by wxFont::GetNativeFontInfoUserDesc() wxFont f = String2Font(m_text->GetValue()); - if (!f.Ok()) + if (!f.IsOk()) return; // invalid user input if (M_PICKER->GetSelectedFont() != f) @@ -150,11 +148,9 @@ void wxFontPickerCtrl::UpdateTextCtrlFromPicker() if (!m_text) return; // no textctrl to update - // NOTE: this SetValue() will generate an unwanted wxEVT_COMMAND_TEXT_UPDATED - // which will trigger a unneeded UpdateFromTextCtrl(); thus before using - // SetValue() we set the m_bIgnoreNextTextCtrlUpdate flag... - m_bIgnoreNextTextCtrlUpdate = true; - m_text->SetValue(Font2String(M_PICKER->GetSelectedFont())); + // Take care to use ChangeValue() here and not SetValue() to avoid + // infinite recursion. + m_text->ChangeValue(Font2String(M_PICKER->GetSelectedFont())); }