- wxPropertyGridInterface::GetExpandedProperties() is removed. You should
now use wxPropertyGridInterface::GetEditableState() instead.
+ - wxPG_EX_DISABLE_TLP_TRACKING is now enabled by default. To get the old
+ behavior (recommended if you don't use a system that reparents the grid
+ on its own), use the wxPG_EX_ENABLE_TLP_TRACKING extra style.
+
- Extended window style wxPG_EX_LEGACY_VALIDATORS was removed.
- wxPropertyGridManager now has same Get/SetSelection() semantics as
selected). Other useful member functions are ClearSelection(),
AddToSelection() and RemoveFromSelection().
*/
-wxPG_EX_MULTIPLE_SELECTION = 0x02000000
+wxPG_EX_MULTIPLE_SELECTION = 0x02000000,
+
+/**
+ This enables top-level window tracking which allows wxPropertyGrid to
+ notify the application of last-minute property value changes by user.
+
+ This style is not enabled by default because it may cause crashes when
+ wxPropertyGrid is used in with wxAUI or similar system.
+
+ @remarks If you are not in fact using any system that may change
+ wxPropertyGrid's top-level parent window on its own, then you
+ are recommended to enable this style.
+*/
+wxPG_EX_ENABLE_TLP_TRACKING = 0x04000000
};
+#if wxPG_COMPATIBILITY_1_4
+ #define wxPG_EX_DISABLE_TLP_TRACKING 0x00000000
+#endif
+
/** Combines various styles.
*/
#define wxPG_DEFAULT_STYLE (0)
selected). Other useful member functions are ClearSelection(),
AddToSelection() and RemoveFromSelection().
*/
-wxPG_EX_MULTIPLE_SELECTION = 0x02000000
+wxPG_EX_MULTIPLE_SELECTION = 0x02000000,
+
+/**
+ This enables top-level window tracking which allows wxPropertyGrid to
+ notify the application of last-minute property value changes by user.
+
+ This style is not enabled by default because it may cause crashes when
+ wxPropertyGrid is used in with wxAUI or similar system.
+
+ @remarks If you are not in fact using any system that may change
+ wxPropertyGrid's top-level parent window on its own, then you
+ are recommended to enable this style.
+*/
+wxPG_EX_ENABLE_TLP_TRACKING = 0x04000000
};
/** Combines various styles.
*/
-#define wxPG_DEFAULT_STYLE (0)
+#define wxPG_DEFAULT_STYLE (0)
/** Combines various styles.
*/
-#define wxPGMAN_DEFAULT_STYLE (0)
+#define wxPGMAN_DEFAULT_STYLE (0)
/** @}
*/
ADD_FLAG(wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES)
ADD_FLAG(wxPG_EX_HIDE_PAGE_BUTTONS)
ADD_FLAG(wxPG_EX_MULTIPLE_SELECTION)
+ ADD_FLAG(wxPG_EX_ENABLE_TLP_TRACKING)
wxMultiChoiceDialog dlg( this, wxT("Select extra window styles to use"),
wxT("wxPropertyGrid Extra Style"), chs );
dlg.SetSelections(sel);
//wxLocale Locale;
//Locale.Init(wxLANGUAGE_FINNISH);
- FormMain* frame = Form1 = new FormMain( wxT("wxPropertyGrid Sample"), wxPoint(0,0), wxSize(300,500) );
- frame->Show(true);
+ FormMain* frame = Form1 = new FormMain( wxT("wxPropertyGrid Sample"), wxPoint(0,0), wxSize(300,500) );
+ frame->Show(true);
//
// Parse command-line
}
}
- return true;
+ return true;
}
// -----------------------------------------------------------------------
wxASSERT(wxPG_EX_INIT_NOCAT == 0x00001000);
- for ( i=12; i<26; i++ )
+ for ( i=12; i<27; i++ )
{
int flag = 1<<i;
RT_MSG(wxString::Format(wxT("ExStyle: 0x%X"),flag));
m_tlp = NULL;
m_tlpClosed = NULL;
m_tlpClosedTime = 0;
- OnTLPChanging(::wxGetTopLevelParent(this));
// set virtual size to this window size
wxSize wndsize = GetSize();
m_canvas->ReleaseMouse();
// Call with NULL to disconnect event handling
- OnTLPChanging(NULL);
+ if ( GetExtraStyle() & wxPG_EX_ENABLE_TLP_TRACKING )
+ {
+ OnTLPChanging(NULL);
- wxASSERT_MSG( !IsEditorsValueModified(),
- wxS("Most recent change in property editor was lost!!! ")
- wxS("(if you don't want this to happen, close your frames ")
- wxS("and dialogs using Close(false).)") );
+ wxASSERT_MSG( !IsEditorsValueModified(),
+ wxS("Most recent change in property editor was ")
+ wxS("lost!!! (if you don't want this to happen, ")
+ wxS("close your frames and dialogs using ")
+ wxS("Close(false).)") );
+ }
#if wxPG_DOUBLE_BUFFER
if ( m_doubleBuffer )
void wxPropertyGrid::SetExtraStyle( long exStyle )
{
+ if ( exStyle & wxPG_EX_ENABLE_TLP_TRACKING )
+ OnTLPChanging(::wxGetTopLevelParent(this));
+ else
+ OnTLPChanging(NULL);
+
if ( exStyle & wxPG_EX_NATIVE_DOUBLE_BUFFERING )
{
#if defined(__WXMSW__)
void wxPropertyGrid::OnTLPChanging( wxWindow* newTLP )
{
+ if ( newTLP == m_tlp )
+ return;
+
wxLongLong currentTime = ::wxGetLocalTimeMillis();
//
//
// Check if top-level parent has changed
- wxWindow* tlp = ::wxGetTopLevelParent(this);
- if ( tlp != m_tlp )
+ if ( GetExtraStyle() & wxPG_EX_ENABLE_TLP_TRACKING )
{
- OnTLPChanging(tlp);
+ wxWindow* tlp = ::wxGetTopLevelParent(this);
+ if ( tlp != m_tlp )
+ OnTLPChanging(tlp);
}
}