From 30630d4ea52803e6d07e013ee5330b0414b8fd18 Mon Sep 17 00:00:00 2001 From: Artur Wieczorek Date: Tue, 2 Jul 2019 21:34:31 +0200 Subject: [PATCH] Update wxFontDataProperty to conform to the current design of wxPG properties with editor dialog Since wxFontDataProperty derives from wxFontProperty, it should re-implement DisplayEditorDialog() to work as expected. --- samples/propgrid/sampleprops.cpp | 35 +++++++++++++++----------------- samples/propgrid/sampleprops.h | 3 ++- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/samples/propgrid/sampleprops.cpp b/samples/propgrid/sampleprops.cpp index 09060d0f95..591552248c 100644 --- a/samples/propgrid/sampleprops.cpp +++ b/samples/propgrid/sampleprops.cpp @@ -126,28 +126,25 @@ wxVariant wxFontDataProperty::DoGetValue() const return m_value_wxFontData; } -// Must re-create font dialog displayer. -bool wxFontDataProperty::OnEvent( wxPropertyGrid* propgrid, - wxWindow* WXUNUSED(primary), wxEvent& event ) +bool wxFontDataProperty::DisplayEditorDialog(wxPropertyGrid* pg, wxVariant& value) { - if ( propgrid->IsMainButtonEvent(event) ) + wxASSERT_MSG(value.IsType(wxS("wxFontData")), "Function called for incompatible property"); + + wxFontData fontData; + fontData << value; + + fontData.SetInitialFont(fontData.GetChosenFont()); + + wxFontDialog dlg(pg->GetPanel(), fontData); + if ( !m_dlgTitle.empty() ) { - wxVariant useValue = propgrid->GetUncommittedPropertyValue(); + dlg.SetTitle(m_dlgTitle); + } - wxFontData fontData; - fontData << useValue; - - fontData.SetInitialFont(fontData.GetChosenFont()); - - wxFontDialog dlg(propgrid, fontData); - - if ( dlg.ShowModal() == wxID_OK ) - { - wxVariant variant; - variant << dlg.GetFontData(); - SetValueInEvent( variant ); - return true; - } + if ( dlg.ShowModal() == wxID_OK ) + { + value << dlg.GetFontData(); + return true; } return false; } diff --git a/samples/propgrid/sampleprops.h b/samples/propgrid/sampleprops.h index 889eb5de9d..b80bbf3089 100644 --- a/samples/propgrid/sampleprops.h +++ b/samples/propgrid/sampleprops.h @@ -38,9 +38,10 @@ public: int childIndex, wxVariant& childValue ) const wxOVERRIDE; virtual void RefreshChildren() wxOVERRIDE; - virtual bool OnEvent( wxPropertyGrid* propgrid, wxWindow* primary, wxEvent& event ) wxOVERRIDE; protected: + virtual bool DisplayEditorDialog(wxPropertyGrid* pg, wxVariant& value) wxOVERRIDE; + // Value must be stored as variant - otherwise it will be // decreffed to oblivion on GetValue(). wxVariant m_value_wxFontData;