// -----------------------------------------------------------------------
-// wxPG_CHECK_FOO_DBG - debug check with message that does not
-// interrupt program flow.
-#define wxPG_CHECK_RET_DBG(A,B) \
- if ( !(A) ) { wxLogWarning(B); return; }
-#define wxPG_CHECK_MSG_DBG(A,B,C) \
- if ( !(A) ) { wxLogWarning(C); return B; }
-
-
class wxPGEditor;
class wxPGProperty;
class wxPropertyCategory;
*/
virtual void Clear() = 0;
- /** Deselect current selection, if any. Returns true if success
- (ie. validator did not intercept). */
- bool ClearSelection();
+ /**
+ Clears current selection, if any.
+
+ @param validation
+ If set to @false, deselecting the property will always work,
+ even if its editor had invalid value in it.
+
+ @return Returns @true if successful or if there was no selection. May
+ fail if validation was enabled and active editor had invalid
+ value.
+ */
+ bool ClearSelection( bool validation = false);
/** Resets modified status of all properties.
*/
/**
Enables or disables (shows/hides) categories according to parameter
enable.
+
+ @remarks This functions deselects selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
*/
bool EnableCategories( bool enable );
/**
Sorts all items at all levels (except private children).
+
+ @remarks This functions deselects selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
*/
void Sort();
/**
Sorts children of a property.
+
+ @remarks This functions deselects selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
*/
void SortChildren( wxPGPropArg id );
};
- Does not automatically redraw the control, so you may need to call
Refresh() when calling this function after control has been shown for
the first time.
+ - This functions deselects selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
*/
wxPGProperty* Append( wxPGProperty* property );
/**
Deletes all properties.
+
+ @remarks This functions deselects selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
*/
virtual void Clear() = 0;
/**
- Deselect current selection, if any.
+ Clears current selection, if any.
+
+ @param validation
+ If set to @false, deselecting the property will always work,
+ even if its editor had invalid value in it.
- @return Returns @true if success (ie. validator did not intercept).
+ @return Returns @true if successful or if there was no selection. May
+ fail if validation was enabled and active editor had invalid
+ value.
*/
- bool ClearSelection();
+ bool ClearSelection( bool validation = false);
/**
Resets modified status of all properties.
Collapses given category or property with children.
@return Returns @true if actually collapsed.
+
+ @remarks This function may deselect selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
*/
bool Collapse( wxPGPropArg id );
/**
Collapses all items that can be collapsed.
- @return Returns @false if failed (may fail if value in active
- editor cannot be validated).
+ @remarks This functions clears selection. Validation failure option
+ wxPG_VFB_STAY_IN_PROPERTY is not respected, ie. selection
+ is cleared even if editor had invalid value.
*/
bool CollapseAll();
/**
Deletes a property.
+
+ @remarks This functions deselects selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
*/
void DeleteProperty( wxPGPropArg id );
Expands given category or property with children.
@return Returns @true if actually expanded.
+
+ @remarks This function may deselect selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
*/
bool Expand( wxPGPropArg id );
/**
Expands all items that can be expanded.
+
+ @remarks This functions clears selection. Validation failure option
+ wxPG_VFB_STAY_IN_PROPERTY is not respected, ie. selection
+ is cleared even if editor had invalid value.
*/
bool ExpandAll( bool expand = true );
non-categoric) are active, Insert becomes even more slow. This is
especially true if current mode is non-categoric.
+ - This functions deselects selected property, if any. Validation
+ failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie.
+ selection is cleared even if editor had invalid value.
+
Example of use:
@code
bool wxPropertyGrid::SetFont( const wxFont& font )
{
// Must disable active editor.
- if ( m_selected )
- {
- bool selRes = ClearSelection();
- wxPG_CHECK_MSG_DBG( selRes,
- false,
- wxT("failed to deselect a property (editor probably had invalid value)") );
- }
+ ClearSelection(false);
// TODO: Following code is disabled with wxMac because
// it is reported to fail. I (JMS) cannot debug it
void wxPropertyGrid::Clear()
{
- if ( m_selected )
- {
- bool selRes = DoSelectProperty(NULL, wxPG_SEL_DELETING); // This must be before state clear
- wxPG_CHECK_RET_DBG( selRes,
- wxT("failed to deselect a property (editor probably had invalid value)") );
- }
+ ClearSelection(false);
m_pState->DoClear();
bool wxPropertyGrid::EnableCategories( bool enable )
{
- if ( !ClearSelection() )
- return false;
+ ClearSelection(false);
if ( enable )
{
wxPGProperty* oldSelection = m_selected;
- // Deselect
- if ( m_selected )
- {
- bool selRes = ClearSelection();
- wxPG_CHECK_RET_DBG( selRes,
- wxT("failed to deselect a property (editor probably had invalid value)") );
- }
+ ClearSelection(false);
m_pState->m_selected = oldSelection;
void wxPropertyGrid::Sort()
{
- bool selRes = ClearSelection(); // This must be before state clear
- wxPG_CHECK_RET_DBG( selRes,
- wxT("failed to deselect a property (editor probably had invalid value)") );
+ ClearSelection(false); // This must be before state clear
m_pState->Sort();
}
wxPGProperty* pwc = wxStaticCast(p, wxPGProperty);
// If active editor was inside collapsed section, then disable it
- if ( m_selected && m_selected->IsSomeParent (p) )
+ if ( m_selected && m_selected->IsSomeParent(p) )
{
- if ( !ClearSelection() )
- return false;
+ ClearSelection(false);
}
// Store dont-center-splitter flag 'cause we need to temporarily set it
( m_selected == p || m_selected->IsSomeParent(p) )
)
{
- if ( !ClearSelection() )
- return false;
+ ClearSelection(false);
}
m_pState->DoHideProperty(p, hide, flags);
wxPropertyGrid* grid = state->GetGrid();
if ( grid->GetState() == state )
- {
- bool selRes = grid->DoSelectProperty(NULL, wxPG_SEL_DELETING);
- wxPG_CHECK_RET_DBG( selRes,
- wxT("failed to deselect a property (editor probably had invalid value)") );
- }
+ grid->DoSelectProperty(NULL, wxPG_SEL_DELETING|wxPG_SEL_NOVALIDATE);
state->DoDelete( p );
// wxPropertyGridInterface property operations
// -----------------------------------------------------------------------
-bool wxPropertyGridInterface::ClearSelection()
+bool wxPropertyGridInterface::ClearSelection( bool validation )
{
+ int flags = 0;
+ if ( !validation )
+ flags |= wxPG_SEL_NOVALIDATE;
+
wxPropertyGridPageState* state = m_pState;
wxPropertyGrid* pg = state->GetGrid();
if ( pg->GetState() == state )
- return pg->DoClearSelection();
+ return pg->DoSelectProperty(NULL, flags);
else
state->SetSelection(NULL);
return true;
if ( GetSelection() && GetSelection() != state->DoGetRoot() &&
!doExpand )
{
- if ( !pg->ClearSelection() )
- return false;
+ pg->ClearSelection(false);
}
wxPGVIterator it;
#endif
// Make sure nothing is selected.
- if ( propGrid && propGrid->m_selected )
- {
- bool selRes = propGrid->ClearSelection();
- wxPG_CHECK_MSG_DBG( selRes,
- true,
- wxT("failed to deselect a property (editor probably had invalid value)") );
- }
+ if ( propGrid )
+ propGrid->ClearSelection(false);
// NULL parent == root parent
if ( !scheduledParent )