Fix a possible crash when closing the Query Tool, and correct some kooky logic. ...
authordpage <dpage@a7884b65-44f6-0310-8a51-81a127f17b15>
Thu, 26 Mar 2009 09:03:53 +0000 (09:03 +0000)
committerdpage <dpage@a7884b65-44f6-0310-8a51-81a127f17b15>
Thu, 26 Mar 2009 09:03:53 +0000 (09:03 +0000)
git-svn-id: svn://svn.pgadmin.org/trunk/pgadmin3@7756 a7884b65-44f6-0310-8a51-81a127f17b15

pgadmin/frm/frmQuery.cpp

index 35c6325ee343f9b21d9e323e4feecc054b64d2f6..b14e8861660a95bff896213fd9ccb26f635cff13 100644 (file)
@@ -506,9 +506,6 @@ frmQuery::~frmQuery()
     // if(tablesBrowser)
     //     delete tablesBrowser;
 
-    if (mainForm)
-        mainForm->RemoveFrame(this);
-
     settings->Write(wxT("frmQuery/Perspective-") + VerFromRev(FRMQUERY_PERPSECTIVE_VER), manager.SavePerspective());
     manager.UnInit();
 
@@ -531,6 +528,15 @@ frmQuery::~frmQuery()
 
     if (pgScript)
         delete pgScript;
+
+    /*
+    * Keep these lines at the end of this function, to avoid generating events before
+    * it gets executed completely.
+    *
+    * To avoid a bug on *nix system.
+    */
+    if (mainForm)
+        mainForm->RemoveFrame(this);
 }
 
 
@@ -1210,17 +1216,19 @@ void frmQuery::updateMenu(wxObject *obj)
     if (closing)
         return;
 
-    if (!obj || obj == sqlQuery)
+    if (obj != msgResult && obj != msgHistory)
     {
-        canUndo=sqlQuery->CanUndo();
-        canRedo=sqlQuery->CanRedo();
-        canPaste=sqlQuery->CanPaste();
+        if (sqlQuery)
+        {
+            canUndo=sqlQuery->CanUndo();
+            canRedo=sqlQuery->CanRedo();
+            canPaste=sqlQuery->CanPaste();
+            canAddFavourite = (sqlQuery->GetLength() > 0);
+        }
 
         canCut = true;
         canClear = true;
         canFind = true;
-
-        canAddFavourite = (sqlQuery->GetLength() > 0);
     }
     else if (obj == msgResult || obj == msgHistory)
     {