Hi Julian- We are also using the MDI library for a large ERP-style application and experienced the same issue you are describing. The problem for us related to the "updateStyles()" method in the MDIWindow class in the library. It seems when the code was checking for "hasFocus" there was a lot of unnecessary (for our needs anyways) re-setting of styles using the ".setStyle" notation. This is a slow operation when you have windows with a lot of controls or heavy controls like the DataGrid. We made modifications to the MDIWindow class because we could not edit what we needed through sub-classing because the "_hasFocus" stuff wasn't accessible. So we made it accessible then overwrote it in a new sub-class that doesn't do anything (omits the "updateStyles()" call. But this made the min,max,resize window controls out of whack because they weren't getting updated. So we solved that issue by sub-classing the MDIWindowControlsContainer and overriding "updateDisplayList" to position everything correctly no matter what state the window was in.
After making these changes everything was superfast as far as switching focus between windows, tiling windows, minimizing, maximizing, no matter how many controls or rows/columns for the datagrids. So, we made our changes for our specific needs which are probably not suitable for everyone, but if you minimize or eliminate the unnnecessary calls to "updateStyles()" in MDIWindow you should see a major improvement. Especially without having to switch to another library or write something on your own. The FlexMDI is a great library. HTH- Steve