Have wxPGTextCtrlEditor::UpdateControl() update wxTextCtrl font boldness based on property's modified-status

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2008-12-26 18:46:08 +00:00
parent 2f1c8faf2c
commit f521bae665
7 changed files with 48 additions and 18 deletions

View File

@@ -1550,8 +1550,6 @@ public:
*/ */
wxDEPRECATED( wxString GetValueString( int argFlags = 0 ) const ); wxDEPRECATED( wxString GetValueString( int argFlags = 0 ) const );
void UpdateControl( wxWindow* primary );
/** /**
Returns wxPGCell of given column. Returns wxPGCell of given column.
*/ */
@@ -2224,6 +2222,8 @@ protected:
// moved to it. // moved to it.
void SubPropsChanged( int oldSelInd = -1 ); void SubPropsChanged( int oldSelInd = -1 );
void UpdateControl( wxWindow* editorWnd );
int GetY2( int lh ) const; int GetY2( int lh ) const;
wxString m_label; wxString m_label;

View File

@@ -1179,6 +1179,11 @@ public:
return m_wndEditor2; return m_wndEditor2;
} }
/**
Refreshes any active editor control.
*/
void RefreshEditor();
// Events from editor controls are forward to this function // Events from editor controls are forward to this function
void HandleCustomEditorEvent( wxEvent &event ); void HandleCustomEditorEvent( wxEvent &event );

View File

@@ -658,6 +658,11 @@ public:
*/ */
bool IsFrozen() const; bool IsFrozen() const;
/**
Refreshes any active editor control.
*/
void RefreshEditor();
/** /**
Redraws given property. Redraws given property.
*/ */

View File

@@ -283,9 +283,22 @@ void wxPGTextCtrlEditor::UpdateControl( wxPGProperty* property, wxWindow* ctrl )
else else
s = property->GetDisplayedString(); s = property->GetDisplayedString();
tc->SetValue(s); tc->SetValue(s);
}
// Update font boldness
wxPropertyGrid* pg = property->GetGrid();
if ( pg->HasFlag(wxPG_BOLD_MODIFIED) )
{
if ( property->HasFlag(wxPG_PROP_MODIFIED) )
tc->SetFont(pg->GetCaptionFont());
else
tc->SetFont(pg->GetFont());
#if defined(__WXMSW__) && !defined(__WXWINCE__)
::SendMessage(GetHwndOf(tc), EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(0, 0));
#endif
}
}
// Provided so that, for example, ComboBox editor can use the same code // Provided so that, for example, ComboBox editor can use the same code
// (multiple inheritance would get way too messy). // (multiple inheritance would get way too messy).

View File

@@ -639,10 +639,10 @@ int wxPGProperty::Index( const wxPGProperty* p ) const
return wxNOT_FOUND; return wxNOT_FOUND;
} }
void wxPGProperty::UpdateControl( wxWindow* primary ) void wxPGProperty::UpdateControl( wxWindow* editorWnd )
{ {
if ( primary ) if ( editorWnd )
GetEditorClass()->UpdateControl(this, primary); GetEditorClass()->UpdateControl(this, editorWnd);
} }
bool wxPGProperty::ValidateValue( wxVariant& WXUNUSED(value), wxPGValidationInfo& WXUNUSED(validationInfo) ) const bool wxPGProperty::ValidateValue( wxVariant& WXUNUSED(value), wxPGValidationInfo& WXUNUSED(validationInfo) ) const
@@ -1336,18 +1336,13 @@ void wxPGProperty::SetFlagRecursively( FlagType flag, bool set )
void wxPGProperty::RefreshEditor() void wxPGProperty::RefreshEditor()
{ {
if ( m_parent && GetParentState() ) if ( !m_parent )
{ return;
wxPropertyGrid* pg = GetParentState()->GetGrid();
if ( pg->GetSelectedProperty() == this )
{
wxWindow* editor = pg->GetEditorControl();
if ( editor )
GetEditorClass()->UpdateControl( this, editor );
}
}
}
wxPropertyGrid* pg = GetGrid();
if ( pg && pg->GetSelectedProperty() == this )
UpdateControl(pg->GetEditorControl());
}
wxVariant wxPGProperty::GetDefaultValue() const wxVariant wxPGProperty::GetDefaultValue() const
{ {

View File

@@ -3636,6 +3636,15 @@ bool wxPropertyGrid::UnfocusEditor()
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
void wxPropertyGrid::RefreshEditor()
{
if ( !m_selected || !m_wndEditor || m_frozen )
return;
m_selected->UpdateControl(m_wndEditor);
}
// -----------------------------------------------------------------------
// This method is not inline because it called dozens of times // This method is not inline because it called dozens of times
// (i.e. two-arg function calls create smaller code size). // (i.e. two-arg function calls create smaller code size).
bool wxPropertyGrid::DoClearSelection() bool wxPropertyGrid::DoClearSelection()

View File

@@ -523,6 +523,9 @@ void wxPropertyGridInterface::ClearModifiedStatus()
pageIndex++; pageIndex++;
} }
// Update active editor control, if any
GetPropertyGrid()->RefreshEditor();
} }
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------