void DoSetSize(int x, int y, int width, int height, int WXUNUSED(sizeFlags = wxSIZE_AUTO)) { m_rect = wxRect(x, y, width, height); DoSizing(); }
void tpanelnotebook::PostSplitSizeCorrect() { #if TPANEL_COPIOUS_LOGGING LogMsgFormat(LOGT::TPANELTRACE, "TCL: tpanelnotebook::PostSplitSizeCorrect(): START"); #endif wxSize totalsize=GetClientSize(); wxAuiPaneInfoArray& all_panes = m_mgr.GetAllPanes(); size_t pane_count = all_panes.GetCount(); size_t tabctrl_count = 0; std::forward_list<wxAuiPaneInfo *> tabctrlarray; for (size_t i = 0; i < pane_count; ++i) { if (all_panes.Item(i).name != wxT("dummy")) { tabctrl_count++; tabctrlarray.push_front(&(all_panes.Item(i))); #if TPANEL_COPIOUS_LOGGING LogMsgFormat(LOGT::TPANELTRACE, "TCL: PostSplitSizeCorrect1 %d %d %d %d", all_panes.Item(i).dock_direction, all_panes.Item(i).dock_layer, all_panes.Item(i).dock_row, all_panes.Item(i).dock_pos); #endif } } for (auto &it : tabctrlarray) { wxAuiPaneInfo &pane = *it; pane.BestSize(totalsize.GetWidth() / tabctrl_count, totalsize.GetHeight()); pane.MaxSize(totalsize.GetWidth() / tabctrl_count, totalsize.GetHeight()); pane.DockFixed(); if (pane.dock_direction != wxAUI_DOCK_LEFT && pane.dock_direction != wxAUI_DOCK_RIGHT && pane.dock_direction != wxAUI_DOCK_CENTRE) { pane.Right(); pane.dock_row = 0; pane.dock_pos = 1; //trigger code below } if (pane.dock_pos > 0) { //make a new row, bumping up any others to make room if (pane.dock_direction == wxAUI_DOCK_LEFT) { for (auto &jt : tabctrlarray) { if (jt->dock_direction == pane.dock_direction && jt->dock_row > pane.dock_row && jt->dock_layer == pane.dock_layer) { jt->dock_row++; } } pane.dock_pos = 0; pane.dock_row++; } else { for (auto &jt : tabctrlarray) { if (jt->dock_direction == pane.dock_direction && jt->dock_row >= pane.dock_row && jt->dock_layer == pane.dock_layer && jt->dock_pos == 0) { jt->dock_row++; } } pane.dock_pos = 0; } } } for (auto &it : tabctrlarray) { m_mgr.InsertPane(it->window, *it, wxAUI_INSERT_ROW); } m_mgr.Update(); for (size_t i = 0; i < pane_count; ++i) { if (all_panes.Item(i).name != wxT("dummy")) { #if TPANEL_COPIOUS_LOGGING LogMsgFormat(LOGT::TPANELTRACE, "TCL: PostSplitSizeCorrect2 %d %d %d %d", all_panes.Item(i).dock_direction, all_panes.Item(i).dock_layer, all_panes.Item(i).dock_row, all_panes.Item(i).dock_pos); #endif } } DoSizing(); owner->Refresh(); #if TPANEL_COPIOUS_LOGGING LogMsgFormat(LOGT::TPANELTRACE, "TCL: tpanelnotebook::PostSplitSizeCorrect(): END"); #endif }