private void OnTreeUpdated(MemTreeNode root) { m_HeapTree.SetRoot(root); m_StripStatus.Text = "Ready"; m_ReplayProgress.Value = 0; m_RefreshButton.Enabled = true; m_TimeControl.Enabled = true; string selected_name = null; if (m_HeapCombo.SelectedItem != null) { selected_name = ((HeapComboItem)m_HeapCombo.SelectedItem).Name; } // Update heap combo box. m_HeapCombo.Items.Clear(); object new_sel_item = null; foreach (var heap in m_Trace.Heaps.Values) { int r = 1; foreach (var range in heap.CoreRanges) { var item = new HeapComboItem { Name = String.Format("{0} (R:{1})", heap.Name, r++), StartAddress = range.BaseAddress, EndAddress = range.BaseAddress + range.SizeBytes, }; m_HeapCombo.Items.Add(item); if (null != selected_name && item.Name == selected_name) { new_sel_item = item; } } } if (new_sel_item != null) { m_HeapCombo.SelectedItem = new_sel_item; } m_FragWidget.OnRangeUpdated(); }