@@ -707,44 +707,50 @@ HierarchyControlPanel::update_required ()
707707}
708708
709709void
710- HierarchyControlPanel::select_active (int cellview_index)
710+ HierarchyControlPanel::select_active (int cellview_index, bool silent )
711711{
712712 if (cellview_index != m_active_index) {
713713 mp_selector->setCurrentIndex (cellview_index);
714- selection_changed (cellview_index);
714+ change_active_cellview (cellview_index);
715+ if (! silent) {
716+ emit active_cellview_changed (cellview_index);
717+ }
715718 }
716719}
717720
718721void
719- HierarchyControlPanel::selection_changed (int index)
722+ HierarchyControlPanel::change_active_cellview (int index)
720723{
721- if (index != m_active_index) {
724+ search_editing_finished ();
722725
723- search_editing_finished () ;
726+ m_active_index = index ;
724727
725- m_active_index = index;
726-
727- bool split_mode = m_split_mode;
728- // for more than max_cellviews_in_split_mode cellviews, switch to overlay mode
729- if (int (m_cellviews.size ()) > max_cellviews_in_split_mode) {
730- split_mode = false ;
731- }
728+ bool split_mode = m_split_mode;
729+ // for more than max_cellviews_in_split_mode cellviews, switch to overlay mode
730+ if (int (m_cellviews.size ()) > max_cellviews_in_split_mode) {
731+ split_mode = false ;
732+ }
732733
733- int i = 0 ;
734- for (std::vector <QFrame *>::const_iterator f = mp_cell_list_frames.begin (); f != mp_cell_list_frames.end (); ++f, ++i) {
735- (*f)->setVisible (i == index || split_mode);
736- if (i == index) {
737- mp_cell_lists [i]->setFocus ();
738- }
734+ int i = 0 ;
735+ for (std::vector <QFrame *>::const_iterator f = mp_cell_list_frames.begin (); f != mp_cell_list_frames.end (); ++f, ++i) {
736+ (*f)->setVisible (i == index || split_mode);
737+ if (i == index) {
738+ mp_cell_lists [i]->setFocus ();
739739 }
740+ }
740741
741- i = 0 ;
742- for (std::vector <QToolButton *>::const_iterator f = mp_cell_list_headers.begin (); f != mp_cell_list_headers.end (); ++f, ++i) {
743- (*f)->setChecked (i == index);
744- }
742+ i = 0 ;
743+ for (std::vector <QToolButton *>::const_iterator f = mp_cell_list_headers.begin (); f != mp_cell_list_headers.end (); ++f, ++i) {
744+ (*f)->setChecked (i == index);
745+ }
746+ }
745747
748+ void
749+ HierarchyControlPanel::selection_changed (int index)
750+ {
751+ if (index != m_active_index) {
752+ change_active_cellview (index);
746753 emit active_cellview_changed (index);
747-
748754 }
749755}
750756
0 commit comments