More changes to various controls for more reliably

preventing them from emitting event when their
     state was changed programatically.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12467 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2001-11-17 23:50:58 +00:00
parent bc87fd68e3
commit 9864c56ded
16 changed files with 74 additions and 72 deletions

View File

@@ -49,6 +49,8 @@ void gtk_radiobutton_clicked_callback( GtkToggleButton *button, wxRadioButton *r
if (g_blockEventsOnDrag) return;
if (!button->active) return;
if (rb->m_blockEvent) return;
wxCommandEvent event( wxEVT_COMMAND_RADIOBUTTON_SELECTED, rb->GetId());
event.SetInt( rb->GetValue() );
@@ -69,22 +71,24 @@ bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& lab
m_acceptsFocus = TRUE;
m_needParent = TRUE;
m_isRadioButton = TRUE;
m_blockEvent = FALSE;
if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, validator, name ))
{
wxFAIL_MSG( wxT("wxRadioButton creation failed") );
return FALSE;
return FALSE;
}
if (HasFlag(wxRB_GROUP))
{
/* start a new group */
// start a new group
m_radioButtonGroup = (GSList*) NULL;
}
else
{
/* search backward for last group start */
// search backward for last group start
wxRadioButton *chief = (wxRadioButton*) NULL;
wxWindowList::Node *node = parent->GetChildren().GetLast();
while (node)
@@ -99,12 +103,12 @@ bool wxRadioButton::Create( wxWindow *parent, wxWindowID id, const wxString& lab
}
if (chief)
{
/* we are part of the group started by chief */
// we are part of the group started by chief
m_radioButtonGroup = gtk_radio_button_group( GTK_RADIO_BUTTON(chief->m_widget) );
}
else
{
/* start a new group */
// start a new group
m_radioButtonGroup = (GSList*) NULL;
}
}
@@ -156,8 +160,7 @@ void wxRadioButton::SetValue( bool val )
if (val == GetValue())
return;
gtk_signal_disconnect_by_func( GTK_OBJECT(m_widget),
GTK_SIGNAL_FUNC(gtk_radiobutton_clicked_callback), (gpointer*)this );
m_blockEvent = TRUE;
if (val)
{
@@ -170,8 +173,7 @@ void wxRadioButton::SetValue( bool val )
// as FALSE. Failing silently is probably TRTTD here.
}
gtk_signal_connect( GTK_OBJECT(m_widget), "clicked",
GTK_SIGNAL_FUNC(gtk_radiobutton_clicked_callback), (gpointer*)this );
m_blockEvent = FALSE;
}
bool wxRadioButton::GetValue() const