+ if (is_active_in_split)
+ {
+ int ctrl_new_page_count = (int)ctrl->GetPageCount();
+
+ if (ctrl_idx >= ctrl_new_page_count)
+ ctrl_idx = ctrl_new_page_count-1;
+
+ if (ctrl_idx >= 0 && ctrl_idx < (int)ctrl->GetPageCount())
+ {
+ // set new page as active in the tab split
+ ctrl->SetActivePage(ctrl_idx);
+
+ // if the page deleted was the current page for the
+ // entire tab control, then record the window
+ // pointer of the new active page for activation
+ if (is_curpage)
+ {
+ new_active = ctrl->GetWindowFromIdx(ctrl_idx);
+ }
+ }
+ }
+
+
+ if (!new_active)
+ {
+ // we haven't yet found a new page to active,
+ // so select the next page from the main tab
+ // catalogue
+
+ if (page_idx < m_tabs.GetPageCount())
+ {
+ new_active = m_tabs.GetPage(page_idx).window;
+ }
+
+ if (!new_active && m_tabs.GetPageCount() > 0)
+ {
+ new_active = m_tabs.GetPage(0).window;
+ }
+ }