X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cedd7b22f4efca68479ec4bb79a9ce5f80164a3b..a653c966d4dfdb2e0b404ed7991c9c1abf0dcada:/src/aui/floatpane.cpp diff --git a/src/aui/floatpane.cpp b/src/aui/floatpane.cpp index 1a7357f824..2c4a256215 100644 --- a/src/aui/floatpane.cpp +++ b/src/aui/floatpane.cpp @@ -73,10 +73,11 @@ wxAuiFloatingFrame::wxAuiFloatingFrame(wxWindow* parent, wxAuiFloatingFrame::~wxAuiFloatingFrame() { // if we do not do this, then we can crash... - if(m_owner_mgr && m_owner_mgr->m_action_window == this) + if (m_owner_mgr && m_owner_mgr->m_action_window == this) { m_owner_mgr->m_action_window = NULL; } + m_mgr.UnInit(); } @@ -133,7 +134,7 @@ void wxAuiFloatingFrame::SetPaneWindow(const wxAuiPaneInfo& pane) size = pane.min_size; if (size == wxDefaultSize) size = m_pane_window->GetSize(); - if (pane.HasGripper()) + if (m_owner_mgr && pane.HasGripper()) { if (pane.HasGripperTop()) size.y += m_owner_mgr->m_art->GetMetric(wxAUI_DOCKART_GRIPPER_SIZE); @@ -143,6 +144,11 @@ void wxAuiFloatingFrame::SetPaneWindow(const wxAuiPaneInfo& pane) SetClientSize(size); } + + if (pane.IsFixed()) + { + SetWindowStyleFlag(GetWindowStyleFlag() & ~wxRESIZE_BORDER); + } } wxAuiManager* wxAuiFloatingFrame::GetOwnerManager() const @@ -153,13 +159,20 @@ wxAuiManager* wxAuiFloatingFrame::GetOwnerManager() const void wxAuiFloatingFrame::OnSize(wxSizeEvent& event) { - m_owner_mgr->OnFloatingPaneResized(m_pane_window, event.GetSize()); + if (m_owner_mgr) + { + m_owner_mgr->OnFloatingPaneResized(m_pane_window, event.GetSize()); + } } void wxAuiFloatingFrame::OnClose(wxCloseEvent& evt) { - m_owner_mgr->OnFloatingPaneClosed(m_pane_window, evt); - if (!evt.GetVeto()) { + if (m_owner_mgr) + { + m_owner_mgr->OnFloatingPaneClosed(m_pane_window, evt); + } + if (!evt.GetVeto()) + { m_mgr.DetachPane(m_pane_window); Destroy(); } @@ -271,25 +284,34 @@ void wxAuiFloatingFrame::OnIdle(wxIdleEvent& event) void wxAuiFloatingFrame::OnMoveStart() { // notify the owner manager that the pane has started to move - m_owner_mgr->OnFloatingPaneMoveStart(m_pane_window); + if (m_owner_mgr) + { + m_owner_mgr->OnFloatingPaneMoveStart(m_pane_window); + } } void wxAuiFloatingFrame::OnMoving(const wxRect& WXUNUSED(window_rect), wxDirection dir) { // notify the owner manager that the pane is moving - m_owner_mgr->OnFloatingPaneMoving(m_pane_window, dir); + if (m_owner_mgr) + { + m_owner_mgr->OnFloatingPaneMoving(m_pane_window, dir); + } m_lastDirection = dir; } void wxAuiFloatingFrame::OnMoveFinished() { // notify the owner manager that the pane has finished moving - m_owner_mgr->OnFloatingPaneMoved(m_pane_window, m_lastDirection); + if (m_owner_mgr) + { + m_owner_mgr->OnFloatingPaneMoved(m_pane_window, m_lastDirection); + } } void wxAuiFloatingFrame::OnActivate(wxActivateEvent& event) { - if (event.GetActive()) + if (m_owner_mgr && event.GetActive()) { m_owner_mgr->OnFloatingPaneActivated(m_pane_window); }