diff --git a/pgadmin/dlg/dlgProperty.cpp b/pgadmin/dlg/dlgProperty.cpp index dd8baf6..7312e97 100644 --- a/pgadmin/dlg/dlgProperty.cpp +++ b/pgadmin/dlg/dlgProperty.cpp @@ -803,6 +803,7 @@ bool dlgProperty::tryUpdate(wxTreeItemId collectionItem) void dlgProperty::ShowObject() { + mainForm->ObjectBrowserRefreshing(true); pgObject *data = GetObject(); // We might have a parent to refresh. If so, the children will @@ -911,6 +912,7 @@ void dlgProperty::ShowObject() if (currobj) mainForm->Refresh(currobj); } + mainForm->ObjectBrowserRefreshing(false); } diff --git a/pgadmin/frm/events.cpp b/pgadmin/frm/events.cpp index 23f9e60..150f3c1 100644 --- a/pgadmin/frm/events.cpp +++ b/pgadmin/frm/events.cpp @@ -362,6 +362,13 @@ void frmMain::OnPropRightClick(wxListEvent &event) void frmMain::OnTreeSelChanged(wxTreeEvent &event) { + /* + * Do not honour the tree selection change, while a property dialog is + * closed and refresh is in progress + */ + if (m_refreshing) + return; + denyCollapseItem = wxTreeItemId(); // Reset the listviews/SQL pane if (event.GetItem()) diff --git a/pgadmin/frm/frmMain.cpp b/pgadmin/frm/frmMain.cpp index de68212..4b8db5a 100644 --- a/pgadmin/frm/frmMain.cpp +++ b/pgadmin/frm/frmMain.cpp @@ -96,6 +96,7 @@ frmMain::frmMain(const wxString &title) msgLevel = 0; lastPluginUtility = NULL; pluginUtilityCount = 0; + m_refreshing = false; dlgName = wxT("frmMain"); SetMinSize(wxSize(600, 450)); diff --git a/pgadmin/include/frm/frmMain.h b/pgadmin/include/frm/frmMain.h index 7043886..cff48e2 100644 --- a/pgadmin/include/frm/frmMain.h +++ b/pgadmin/include/frm/frmMain.h @@ -161,6 +161,10 @@ public: void SetItemBackgroundColour(wxTreeItemId item, wxColour colour); wxString GetNodePath(wxTreeItemId node); + void ObjectBrowserRefreshing(bool refresh) + { + m_refreshing = refresh; + } private: wxAuiManager manager; @@ -188,6 +192,8 @@ private: wxString timermsg; long msgLevel; + bool m_refreshing; + wxTreeItemId denyCollapseItem; pgObject *currentObject; wxControl *currentControl;