@@ -1063,13 +1063,29 @@ wxArrayString CaseWindow::GetInputPages()
10631063bool CaseWindow::SwitchToNavigationMenu (const wxString& name)
10641064{
10651065 // iterate over menu tree items and match "name" or select first item (SAM issue 1618)
1066- wxDataViewItem dvi;// = m_navigationMenu->GetNthChild(wxDataViewItem(0), 0);
1066+ wxDataViewItem dvi, dvi_child ;// = m_navigationMenu->GetNthChild(wxDataViewItem(0), 0);
10671067 bool found = false ;
1068+
10681069 int count = m_navigationMenu->GetChildCount (wxDataViewItem (0 ));
10691070 for (int i = 0 ; i < count && !found; i++) {
10701071 dvi = m_navigationMenu->GetNthChild (wxDataViewItem (0 ), i);
1071- if (dvi.IsOk () && m_navigationMenu->GetItemText (dvi) == name)
1072- found = true ;
1072+ // should be a lambda function but not more than one deep...
1073+ if (m_navigationMenu->IsContainer (dvi)) {
1074+ int count_child = m_navigationMenu->GetChildCount (dvi);
1075+ for (int j = 0 ; j < count_child && !found; j++) {
1076+ dvi_child = m_navigationMenu->GetNthChild (dvi, j);
1077+ wxString stmp = m_navigationMenu->GetItemText (dvi_child); // for debugging
1078+ if (dvi_child.IsOk () && stmp == name) {
1079+ found = true ;
1080+ dvi = dvi_child;
1081+ }
1082+ }
1083+ }
1084+ else {
1085+ wxString stmp = m_navigationMenu->GetItemText (dvi);
1086+ if (dvi.IsOk () && m_navigationMenu->GetItemText (dvi) == name)
1087+ found = true ;
1088+ }
10731089 }
10741090 // first item if not found
10751091 if (!found)
@@ -1081,10 +1097,11 @@ bool CaseWindow::SwitchToNavigationMenu(const wxString& name)
10811097 if (dvi.IsOk ()) {
10821098 m_navigationMenu->SetCurrentItem (dvi);
10831099 m_currentSelection = (dvi);
1100+ m_left_panel->SetFocus ();
10841101 SwitchToInputPage (m_navigationMenu->GetItemText (dvi));
1102+ m_left_panel->Layout ();
10851103 }
10861104
1087-
10881105 return true ;
10891106}
10901107
@@ -1119,6 +1136,7 @@ bool CaseWindow::SwitchToInputPage( const wxString &name )
11191136 int p = m_inputPageList->Find (name);
11201137 m_inputPageList->Select ( p );
11211138 m_inputPageList->Refresh ();
1139+ m_navigationMenu->Layout ();
11221140 m_left_panel->Layout ();// try to force onPaint call for the input page list
11231141
11241142 return true ;
@@ -1157,7 +1175,9 @@ bool CaseWindow::SwitchToPage( const wxString &name )
11571175 else
11581176 {
11591177 m_pageFlipper->SetSelection ( PG_INPUTS );
1160- return SwitchToInputPage ( name );
1178+ // return SwitchToInputPage(name);
1179+ SwitchToInputPage (name);
1180+ m_left_panel->Layout ();
11611181 }
11621182
11631183 return true ;
0 commit comments