#pragma hdrstop
#endif
+#if wxUSE_FONTPICKERCTRL
+
#include "wx/fontpicker.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/textctrl.h"
+#endif
+
#include "wx/fontenum.h"
#include "wx/tokenzr.h"
-
// ============================================================================
// implementation
// ============================================================================
-#if wxUSE_FONTPICKERCTRL
+const char wxFontPickerCtrlNameStr[] = "fontpicker";
+const char wxFontPickerWidgetNameStr[] = "fontpickerwidget";
-DEFINE_EVENT_TYPE(wxEVT_COMMAND_FONTPICKER_CHANGED)
+wxDEFINE_EVENT(wxEVT_COMMAND_FONTPICKER_CHANGED, wxFontPickerEvent);
IMPLEMENT_DYNAMIC_CLASS(wxFontPickerCtrl, wxPickerBase)
IMPLEMENT_DYNAMIC_CLASS(wxFontPickerEvent, wxCommandEvent)
long style, const wxValidator& validator,
const wxString &name )
{
- // by default, the textctrl is, if present, as big as the picker, for wxFontPickerCtrl
- SetTextCtrlProportion(1);
-
- 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;
m_picker = new wxFontPickerWidget(this, wxID_ANY, initial,
wxDefaultPosition, wxDefaultSize,
GetPickerStyle(style));
+ // complete sizer creation
+ wxPickerBase::PostCreation();
+
m_picker->Connect(wxEVT_COMMAND_FONTPICKER_CHANGED,
wxFontPickerEventHandler(wxFontPickerCtrl::OnFontChange),
NULL, this);
if (size.ToDouble(&n))
{
if (n < 1)
- str = str.Left(str.Len() - size.Len()) + wxT("1");
+ str = str.Left(str.length() - size.length()) + wxT("1");
else if (n >= m_nMaxPointSize)
- str = str.Left(str.Len() - size.Len()) +
+ str = str.Left(str.length() - size.length()) +
wxString::Format(wxT("%d"), m_nMaxPointSize);
}
{
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)
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()));
}