diff --git a/src/casewin.cpp b/src/casewin.cpp index 8105c44a15..43bd2ca573 100644 --- a/src/casewin.cpp +++ b/src/casewin.cpp @@ -148,7 +148,7 @@ BEGIN_EVENT_TABLE( CaseWindow, wxSplitterWindow ) EVT_DATAVIEW_SELECTION_CHANGED(ID_TechTree, CaseWindow::OnTechTree) EVT_DATAVIEW_ITEM_START_EDITING(ID_TechTree, CaseWindow::OnTreeActivated) EVT_DATAVIEW_ITEM_ACTIVATED(ID_TechTree, CaseWindow::OnTreeActivated) - EVT_LISTBOX( ID_TechTree, CaseWindow::OnCommand) + //EVT_LISTBOX( ID_TechTree, CaseWindow::OnCommand) EVT_BUTTON( ID_EXCL_BUTTON, CaseWindow::OnCommand ) EVT_LISTBOX( ID_EXCL_RADIO, CaseWindow::OnCommand) EVT_CHECKBOX( ID_COLLAPSE, CaseWindow::OnCommand ) @@ -405,13 +405,16 @@ CaseWindow::CaseWindow( wxWindow *parent, Case *c ) wxDataViewItemArray dvic; m_navigationMenu->GetModel()->GetChildren(dvia[0], dvic); m_navigationMenu->SetCurrentItem(dvic[0]); + SwitchToInputPage(m_navigationMenu->GetItemText(m_navigationMenu->GetCurrentItem())); } else if (m_navigationMenu->IsContainer(dvia[1])) { m_navigationMenu->Expand(dvia[1]); wxDataViewItemArray dvic; m_navigationMenu->GetModel()->GetChildren(dvia[1], dvic); m_navigationMenu->SetCurrentItem(dvic[0]); + SwitchToInputPage(m_navigationMenu->GetItemText(m_navigationMenu->GetCurrentItem())); } + m_previousPage = m_navigationMenu->GetCurrentItem(); /*for (int i = 0; i < m_pageGroups.size(); i++) { bin_name = m_pageGroups[i]->BinName; if (Ts_lower.Contains(bin_name.Lower()) && bin_name != "") { @@ -742,12 +745,21 @@ void CaseWindow::OnTechTree(wxDataViewEvent&) m_pageFlipper->SetSelection(0); if (m_navigationMenu->IsContainer(m_navigationMenu->GetCurrentItem())) { - wxDataViewItemArray dvic; + bool keep_open = false; m_navigationMenu->GetModel()->GetChildren(m_navigationMenu->GetCurrentItem(), dvic); + int children_count = dvic.Count(); for (int i = 0; i < dvic.Count(); i++) { - if (dvic[1] == m_previousPage) + if (dvic[i] == m_previousPage) { + keep_open = true; + m_navigationMenu->SetCurrentItem(m_previousPage); return; + } + } + if (!keep_open && m_navigationMenu->IsExpanded(m_navigationMenu->GetCurrentItem())) { + m_navigationMenu->Collapse(m_navigationMenu->GetCurrentItem()); + m_navigationMenu->SetCurrentItem(m_previousPage); + return; } m_navigationMenu->Expand(m_navigationMenu->GetCurrentItem()); m_navigationMenu->SetCurrentItem(m_previousPage); diff --git a/src/main.cpp b/src/main.cpp index 4b15a85cd6..1fe5859d69 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -500,17 +500,20 @@ CaseWindow *MainWindow::CreateCaseWindow( Case *c ) // when creating a new case, at least // show the first input page + /* wxArrayString pages = win->GetInputPages(); if (pages.size() > 0) { if (c->GetConfiguration()->Technology.size() > 1) { // hybrid // TODO: hybrids - trigger onload event for all technologies first page (specifically update wind resource file to run without selecting page) - for (int i = c->GetConfiguration()->Technology.size() - 1; i >= 0; i--) - win->SwitchToInputPage(c->GetConfiguration()->InputPageGroups[i][0]->SideBarLabel); + for (int i = c->GetConfiguration()->Technology.size() - 1; i >= 0; i--) { + win->SwitchToInputPage(c->GetConfiguration()->InputPageGroups[i][0]->SideBarLabel); + //win->SwitchToInputPage(win->m_navigationMenu->GetItemText(win->m_navigationMenu->GetCurrentSelection()) + } } else { win->SwitchToInputPage(pages[0]); } - } + }*/ //mp trying to not overwrite first page switch at start return win; }