Skip to content

LT-22282: Add a Sense: Fix crash when multiple Flex windows#821

Merged
mark-sil merged 1 commit intomainfrom
LT-22282
Apr 8, 2026
Merged

LT-22282: Add a Sense: Fix crash when multiple Flex windows#821
mark-sil merged 1 commit intomainfrom
LT-22282

Conversation

@mark-sil
Copy link
Copy Markdown
Contributor

@mark-sil mark-sil commented Apr 8, 2026

Fix a crash when adding a Sense and there are multiple main Flex windows open.

This is a kludge to work around the problem.
Without this code the call to set m_listForm.Visible to false, in ComboListBox.HideComboBox(), will result in Windows choosing the wrong main Flex window to activate when there are multiple main Flex windows open. That causes the wrong MainWindowDelegate to receive the OnActivated() notification, which leads to SetCurrentStack() being called for the wrong undo stack. Then a little later, but still in the "m_listForm.Visible = false" call, we end up in PushUowOnUndoStack() for the wrong undo stack. The correct main Flex window is activated after we get out of the "m_listForm.Visible = false" call and its undo call stack is set to current, but we have a "UnsavedBundle" on the wrong call stack, which eventually leads to the crash reported in LT-22282.

A possible better long term solution would be to execute all the menu choices through an event system and dispose of the ComboListBox immediately after the menu choice is made, instead of hiding it. Probably can do this when graphite is no longer needed, and we can use a regular menu.


This change is Reviewable

Fix a crash when adding a Sense and there are multiple main Flex
windows open.

This is a kludge to work around the problem.
Without this code the call to set m_listForm.Visible to false, in
ComboListBox.HideComboBox(), will result in Windows choosing the
wrong main Flex window to activate when there are multiple main
Flex windows open. That causes the wrong MainWindowDelegate to
receive the OnActivated() notification, which leads to
SetCurrentStack() being called for the wrong undo stack. Then a
little later, but still in the "m_listForm.Visible = false" call,
we end up in PushUowOnUndoStack() for the wrong undo stack. The
correct main Flex window is activated after we get out of the
"m_listForm.Visible = false" call and its undo call stack is set
to current, but we have a "UnsavedBundle" on the wrong call stack,
which eventually leads to the crash reported in LT-22282.

A possible better long term solution would be to execute all the
menu choices through an event system and dispose of the ComboListBox
immediately after the menu choice is made, instead of hiding it.
Probably can do this when graphite is no longer needed, and we
can use a regular menu.
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 8, 2026

NUnit Tests

    1 files  ±0      1 suites  ±0   6m 16s ⏱️ +28s
4 103 tests ±0  4 032 ✅ ±0  71 💤 ±0  0 ❌ ±0 
4 112 runs  ±0  4 041 ✅ ±0  71 💤 ±0  0 ❌ ±0 

Results for commit c30ed52. ± Comparison against base commit 7cb3fe9.

@mark-sil mark-sil merged commit ce304d7 into main Apr 8, 2026
6 checks passed
@mark-sil mark-sil deleted the LT-22282 branch April 8, 2026 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants