Hi Zdenek,
I tested this and still both problems exist (Add server and query tool
-core dump)
Can you test it once?
Dave Page wrote:
Zdenek Kotala wrote:
I'm still not sure how you're getting into that code when you close
the form though...
The root cause is destructor of frmQuery dialog. It removes all
connection from combo box exclude last item - "new connection". Each
deletion invoke frmQuery::OnChangeConnection event and the
OnChangeConnection method invokes "new connection dialog" in the last
step. And because there are some empty combo boxes on this dialog,
gtk generates core.
Ah, of course - well spotted.
My suggestion is disable event generation for cbConnection in the
destructor.
Agreed. Can one or both of you test the attached patch please?
Thanks, Dave.
------------------------------------------------------------------------
Index: frmQuery.cpp
===================================================================
--- frmQuery.cpp (revision 5791)
+++ frmQuery.cpp (working copy)
@@ -62,7 +62,6 @@
BEGIN_EVENT_TABLE(frmQuery, pgFrame)
EVT_ERASE_BACKGROUND( frmQuery::OnEraseBackground)
EVT_SIZE( frmQuery::OnSize)
- EVT_COMBOBOX(CTRLID_CONNECTION, frmQuery::OnChangeConnection)
EVT_CLOSE( frmQuery::OnClose)
EVT_SET_FOCUS( frmQuery::OnSetFocus)
EVT_MENU(MNU_NEW, frmQuery::OnNew)
@@ -280,6 +279,7 @@
outputPane->AddPage(msgResult, _("Messages"));
outputPane->AddPage(msgHistory, _("History"));
+ this->Connect(CTRLID_CONNECTION, wxEVT_COMMAND_COMBOBOX_SELECTED,
wxCommandEventHandler(frmQuery::OnChangeConnection));
sqlQuery->Connect(wxID_ANY,
wxEVT_SET_FOCUS,wxFocusEventHandler(frmQuery::OnFocus));
sqlResult->Connect(wxID_ANY, wxEVT_SET_FOCUS,
wxFocusEventHandler(frmQuery::OnFocus));
msgResult->Connect(wxID_ANY, wxEVT_SET_FOCUS,
wxFocusEventHandler(frmQuery::OnFocus));
@@ -369,6 +369,7 @@
sqlResult->Disconnect(wxID_ANY, wxEVT_SET_FOCUS,
wxFocusEventHandler(frmQuery::OnFocus));
msgResult->Disconnect(wxID_ANY, wxEVT_SET_FOCUS,
wxFocusEventHandler(frmQuery::OnFocus));
msgHistory->Disconnect(wxID_ANY, wxEVT_SET_FOCUS,
wxFocusEventHandler(frmQuery::OnFocus));
+ this->Disconnect(CTRLID_CONNECTION, wxEVT_COMMAND_COMBOBOX_SELECTED,
wxCommandEventHandler(frmQuery::OnChangeConnection));
if (mainForm)
mainForm->RemoveFrame(this);
@@ -632,10 +633,6 @@
void frmQuery::OnChangeConnection(wxCommandEvent &ev)
{
- // On Solaris, this event seems to get fired when the form closes(!!)
- if(!IsVisible())
- return;
-
unsigned int sel=cbConnection->GetCurrentSelection();
if (sel == cbConnection->GetCount()-1)
{
------------------------------------------------------------------------
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend