Merge pull request #320 from pauldmccarthy/agw_osx_segfault_fix

A couple of fixes to lib/agw/aui to prevent segfaults under OSX
This commit is contained in:
Robin Dunn
2017-04-24 18:43:14 -07:00
committed by GitHub
2 changed files with 16 additions and 4 deletions

View File

@@ -5581,7 +5581,7 @@ class AuiNotebook(wx.Panel):
else:
main_idx = self._tabs.GetIdxFromWindow(close_wnd)
self.DeletePage(main_idx)
wx.CallAfter(self.DeletePage, main_idx)
# notify owner that the tab has been closed
e2 = AuiNotebookEvent(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSED, self.GetId())

View File

@@ -7376,7 +7376,12 @@ class AuiManager(wx.EvtHandler):
if paneInfo.IsMaximized():
self.RestorePane(paneInfo)
paneInfo.Float()
self.Update()
# The call to Update may result in
# the notebook that generated this
# event being deleted, so we have
# to do the call asynchronously.
wx.CallAfter(self.Update)
self._action_window = paneInfo.window
@@ -7417,8 +7422,15 @@ class AuiManager(wx.EvtHandler):
if e.GetVeto():
return
self.ClosePane(p)
self.Update()
# Close/update asynchronously, because
# the notebook which generated the event
# (and triggered this method call) will
# be deleted.
def close():
self.ClosePane(p)
self.Update()
wx.CallAfter(close)
else:
event.Skip()