1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-24 02:28:01 +02:00

Allow removing embedded string view when value is out of scope

This commit is contained in:
Brian Fiete 2022-06-01 12:28:04 -07:00
parent 0612c15722
commit 89c8a56400

View file

@ -2454,7 +2454,28 @@ namespace IDE.ui
} }
} }
} }
static void RemoveCustomContent(WatchListViewItem listViewItem)
{
var dataItem = listViewItem.GetSubItem(1) as WatchListViewItem;
var typeItem = listViewItem.GetSubItem(2) as WatchListViewItem;
var listView = listViewItem.mListView as WatchListView;
if (dataItem.mCustomContentWidget != null)
{
dataItem.mCustomContentWidget.RemoveSelf();
DeleteAndNullify!(dataItem.mCustomContentWidget);
listView.mListSizeDirty = true;
listViewItem.mSelfHeight = listView.mFont.GetLineSpacing();
}
if (typeItem.mCustomContentWidget != null)
{
typeItem.mCustomContentWidget.RemoveSelf();
DeleteAndNullify!(typeItem.mCustomContentWidget);
}
}
void IWatchOwner.UpdateWatch(WatchListViewItem listViewItem) void IWatchOwner.UpdateWatch(WatchListViewItem listViewItem)
{ {
if (mDisabled) if (mDisabled)
@ -2862,22 +2883,6 @@ namespace IDE.ui
var dataItem = listViewItem.GetSubItem(1) as WatchListViewItem; var dataItem = listViewItem.GetSubItem(1) as WatchListViewItem;
var typeItem = listViewItem.GetSubItem(2) as WatchListViewItem; var typeItem = listViewItem.GetSubItem(2) as WatchListViewItem;
void RemoveCustomContent()
{
if (dataItem.mCustomContentWidget != null)
{
dataItem.mCustomContentWidget.RemoveSelf();
DeleteAndNullify!(dataItem.mCustomContentWidget);
mListView.mListSizeDirty = true;
listViewItem.mSelfHeight = mListView.mFont.GetLineSpacing();
}
if (typeItem.mCustomContentWidget != null)
{
typeItem.mCustomContentWidget.RemoveSelf();
DeleteAndNullify!(typeItem.mCustomContentWidget);
}
}
if (watch.mStringView != null) if (watch.mStringView != null)
{ {
dataItem.Label = ""; dataItem.Label = "";
@ -2900,7 +2905,7 @@ namespace IDE.ui
} }
else else
{ {
RemoveCustomContent(); RemoveCustomContent(listViewItem);
} }
watch.mHasValue = true; watch.mHasValue = true;
@ -3001,7 +3006,7 @@ namespace IDE.ui
gApp.RefreshWatches(); gApp.RefreshWatches();
} }
public static bool AddDisplayTypeMenu(String label, Menu menu, WatchResultType watchResultType, String referenceId, bool includeDefault) public static bool AddDisplayTypeMenu(String label, WatchListView listView, Menu menu, WatchResultType watchResultType, String referenceId, bool includeDefault)
{ {
bool hasInt = watchResultType.HasFlag(.Int); bool hasInt = watchResultType.HasFlag(.Int);
bool hasFloat = watchResultType.HasFlag(.Float); bool hasFloat = watchResultType.HasFlag(.Float);
@ -3036,7 +3041,15 @@ namespace IDE.ui
if (hasText) if (hasText)
{ {
AddSelectableMenuItem(parentItem, "Default", formatStr.IsEmpty, AddSelectableMenuItem(parentItem, "Default", formatStr.IsEmpty,
new () => SetDisplayType(referenceId, "", intDisplayType, mmDisplayType, floatDisplayType)); new () =>
{
listView.GetRoot().WithSelectedItems(scope (item) =>
{
var watchListViewItem = item as WatchListViewItem;
RemoveCustomContent(watchListViewItem);
});
SetDisplayType(referenceId, "", intDisplayType, mmDisplayType, floatDisplayType);
});
AddSelectableMenuItem(parentItem, "String", formatStr == "str", AddSelectableMenuItem(parentItem, "String", formatStr == "str",
new () => SetDisplayType(referenceId, "str", intDisplayType, mmDisplayType, floatDisplayType)); new () => SetDisplayType(referenceId, "str", intDisplayType, mmDisplayType, floatDisplayType));
} }
@ -3114,7 +3127,7 @@ namespace IDE.ui
var watchEntry = listViewItem.mWatchEntry; var watchEntry = listViewItem.mWatchEntry;
AddDisplayTypeMenu("Default Display", menu, listViewItem.mWatchEntry.mResultType, null, false); AddDisplayTypeMenu("Default Display", listView, menu, listViewItem.mWatchEntry.mResultType, null, false);
//Debug.WriteLine(String.Format("RefType: {0}", watchEntry.mReferenceId)); //Debug.WriteLine(String.Format("RefType: {0}", watchEntry.mReferenceId));
@ -3123,13 +3136,13 @@ namespace IDE.ui
if (watchEntry.mReferenceId != null) if (watchEntry.mReferenceId != null)
{ {
AddDisplayTypeMenu("Watch Display", menu, listViewItem.mWatchEntry.mResultType, watchEntry.mReferenceId, true); AddDisplayTypeMenu("Watch Display", listView, menu, listViewItem.mWatchEntry.mResultType, watchEntry.mReferenceId, true);
int arrayPos = watchEntry.mReferenceId.IndexOf(".[]$"); int arrayPos = watchEntry.mReferenceId.IndexOf(".[]$");
if (arrayPos != -1) if (arrayPos != -1)
{ {
var refId = scope String(watchEntry.mReferenceId, 0, arrayPos + 3); var refId = scope String(watchEntry.mReferenceId, 0, arrayPos + 3);
AddDisplayTypeMenu("Series Watch Display", menu, listViewItem.mWatchEntry.mResultType, refId, true); AddDisplayTypeMenu("Series Watch Display", listView, menu, listViewItem.mWatchEntry.mResultType, refId, true);
} }
} }