Example #1
0
 void DoSetSize(int x, int y,
                int width, int height,
                int WXUNUSED(sizeFlags = wxSIZE_AUTO))
 {
     m_rect = wxRect(x, y, width, height);
     DoSizing();
 }
Example #2
0
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
}