-void BufferView::storeExpandedState(NetworkId networkId, bool expanded) {
- _expandedState[networkId] = expanded;
+void BufferView::setExpandedState(const QModelIndex &networkIdx) {
+ if(model()->data(networkIdx, NetworkModel::ItemTypeRole) != NetworkModel::NetworkItemType)
+ return;
+
+ if(model()->rowCount(networkIdx) == 0)
+ return;
+
+ NetworkId networkId = model()->data(networkIdx, NetworkModel::NetworkIdRole).value<NetworkId>();
+
+ bool networkActive = model()->data(networkIdx, NetworkModel::ItemActiveRole).toBool();
+ bool expandNetwork = networkActive;
+ if(_expandedState.contains(networkId)) {
+ int oldState = _expandedState[networkId];
+ if((bool)(oldState & WasActive) == networkActive)
+ expandNetwork = (bool)(oldState & WasExpanded);
+ }
+
+ storeExpandedState(networkIdx); // this call is needed to keep track of the isActive state
+ if(expandNetwork != isExpanded(networkIdx))
+ setExpanded(networkIdx, expandNetwork);