From: Benjamin Williams Date: Sun, 26 Nov 2006 18:38:36 +0000 (+0000) Subject: selection bug fixed in wxAuiNotebook X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/68fd4f2c14f5bb081627fb8e4efc7ad2e0ca000d selection bug fixed in wxAuiNotebook git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43655 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/aui/auibook.cpp b/src/aui/auibook.cpp index f5c8fd2dff..4ecd4c1617 100644 --- a/src/aui/auibook.cpp +++ b/src/aui/auibook.cpp @@ -2005,7 +2005,11 @@ void wxAuiTabCtrl::OnLeftDown(wxMouseEvent& evt) { int new_selection = GetIdxFromWindow(wnd); - if (new_selection != GetActivePage()) + // wxAuiNotebooks always want to receive this event + // even if the tab is already active, because they may + // have multiple tab controls + if (new_selection != GetActivePage() || + GetParent()->IsKindOf(CLASSINFO(wxAuiNotebook))) { wxAuiNotebookEvent e(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGING, m_windowId); e.SetSelection(new_selection); @@ -2766,6 +2770,10 @@ int wxAuiNotebook::GetSelection() const // SetSelection() sets the currently active page size_t wxAuiNotebook::SetSelection(size_t new_page) { + // don't change the page unless necessary + if (new_page == m_curpage) + return m_curpage; + wxWindow* wnd = m_tabs.GetWindowFromIdx(new_page); if (!wnd) return m_curpage; @@ -3275,6 +3283,10 @@ void wxAuiNotebook::OnTabEndDrag(wxCommandEvent& command_evt) dest_tabs->DoShowHide(); dest_tabs->Refresh(); + // force the set selection function reset the selection + m_curpage = -1; + + // set the active page to the one we just split off SetSelection(m_tabs.GetIdxFromWindow(page_info.window)); UpdateHintWindowSize();