Fix wxFont construction from default wxFontInfo in wxMSW.

Don't use -1 as the real point size.

Also update the font sample to allow testing such font.

Closes #16468.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77495 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2014-08-28 12:55:02 +00:00
parent ce9fa570f0
commit eaf46c3213
2 changed files with 11 additions and 2 deletions

View File

@@ -111,6 +111,7 @@ public:
void OnStrikethrough(wxCommandEvent& event); void OnStrikethrough(wxCommandEvent& event);
void OnwxPointerFont(wxCommandEvent& event); void OnwxPointerFont(wxCommandEvent& event);
void OnFontDefault(wxCommandEvent& event);
void OnwxSystemSettingsFont(wxCommandEvent& event); void OnwxSystemSettingsFont(wxCommandEvent& event);
void OnTestTextValue(wxCommandEvent& event); void OnTestTextValue(wxCommandEvent& event);
@@ -189,6 +190,7 @@ enum
Font_wxSMALL_FONT, Font_wxSMALL_FONT,
Font_wxITALIC_FONT, Font_wxITALIC_FONT,
Font_wxSWISS_FONT, Font_wxSWISS_FONT,
Font_wxFont_Default,
Font_Standard, Font_Standard,
// wxSystemSettings::GetFont possible objects: // wxSystemSettings::GetFont possible objects:
@@ -243,6 +245,7 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Font_wxSMALL_FONT, MyFrame::OnwxPointerFont) EVT_MENU(Font_wxSMALL_FONT, MyFrame::OnwxPointerFont)
EVT_MENU(Font_wxITALIC_FONT, MyFrame::OnwxPointerFont) EVT_MENU(Font_wxITALIC_FONT, MyFrame::OnwxPointerFont)
EVT_MENU(Font_wxSWISS_FONT, MyFrame::OnwxPointerFont) EVT_MENU(Font_wxSWISS_FONT, MyFrame::OnwxPointerFont)
EVT_MENU(Font_wxFont_Default, MyFrame::OnFontDefault)
EVT_MENU(Font_wxSYS_OEM_FIXED_FONT, MyFrame::OnwxSystemSettingsFont) EVT_MENU(Font_wxSYS_OEM_FIXED_FONT, MyFrame::OnwxSystemSettingsFont)
EVT_MENU(Font_wxSYS_ANSI_FIXED_FONT, MyFrame::OnwxSystemSettingsFont) EVT_MENU(Font_wxSYS_ANSI_FIXED_FONT, MyFrame::OnwxSystemSettingsFont)
@@ -360,6 +363,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
menuStdFonts->Append(Font_wxSMALL_FONT, wxT("wxSMALL_FONT"), wxT("Small font used by wxWidgets")); menuStdFonts->Append(Font_wxSMALL_FONT, wxT("wxSMALL_FONT"), wxT("Small font used by wxWidgets"));
menuStdFonts->Append(Font_wxITALIC_FONT, wxT("wxITALIC_FONT"), wxT("Italic font used by wxWidgets")); menuStdFonts->Append(Font_wxITALIC_FONT, wxT("wxITALIC_FONT"), wxT("Italic font used by wxWidgets"));
menuStdFonts->Append(Font_wxSWISS_FONT, wxT("wxSWISS_FONT"), wxT("Swiss font used by wxWidgets")); menuStdFonts->Append(Font_wxSWISS_FONT, wxT("wxSWISS_FONT"), wxT("Swiss font used by wxWidgets"));
menuStdFonts->Append(Font_wxFont_Default, wxT("wxFont()"), wxT("wxFont constructed from default wxFontInfo"));
menuSelect->Append(Font_Standard, wxT("Standar&d fonts"), menuStdFonts); menuSelect->Append(Font_Standard, wxT("Standar&d fonts"), menuStdFonts);
wxMenu *menuSettingFonts = new wxMenu; wxMenu *menuSettingFonts = new wxMenu;
@@ -780,6 +784,11 @@ void MyFrame::OnwxPointerFont(wxCommandEvent& event)
DoChangeFont(font); DoChangeFont(font);
} }
void MyFrame::OnFontDefault(wxCommandEvent& WXUNUSED(event))
{
DoChangeFont(wxFont(wxFontInfo()));
}
void MyFrame::OnwxSystemSettingsFont(wxCommandEvent& event) void MyFrame::OnwxSystemSettingsFont(wxCommandEvent& event)
{ {
wxFont font; wxFont font;

View File

@@ -360,7 +360,7 @@ void wxFontRefData::Init(int pointSize,
if ( m_sizeUsingPixels ) if ( m_sizeUsingPixels )
SetPixelSize(pixelSize); SetPixelSize(pixelSize);
else else
SetPointSize(pointSize); SetPointSize(pointSize == -1 ? wxNORMAL_FONT->GetPointSize() : pointSize);
SetStyle(style); SetStyle(style);
SetWeight(weight); SetWeight(weight);
@@ -841,7 +841,7 @@ bool wxFont::DoCreate(int pointSize,
// wxDEFAULT is a valid value for the font size too so we must treat it // wxDEFAULT is a valid value for the font size too so we must treat it
// specially here (otherwise the size would be 70 == wxDEFAULT value) // specially here (otherwise the size would be 70 == wxDEFAULT value)
if ( pointSize == wxDEFAULT || pointSize == -1 ) if ( pointSize == wxDEFAULT )
{ {
pointSize = wxNORMAL_FONT->GetPointSize(); pointSize = wxNORMAL_FONT->GetPointSize();
} }