GP-1049 - Fixed a modal parenting issue with the Tip of the Day plugin.

This commit is contained in:
dragonmacher 2021-06-17 17:13:24 -04:00
parent 82c8ba1a1c
commit 23958bb12f
2 changed files with 36 additions and 30 deletions

View file

@ -143,6 +143,16 @@ public class GhidraRun implements GhidraLaunchable {
updateSplashScreenStatusMessage("Creating project manager..."); updateSplashScreenStatusMessage("Creating project manager...");
ProjectManager pm = new GhidraProjectManager(); ProjectManager pm = new GhidraProjectManager();
updateSplashScreenStatusMessage("Creating front end tool..."); updateSplashScreenStatusMessage("Creating front end tool...");
// Show this warning before creating the tool. If we create the tool first, then we may
// see odd dialog behavior caused tool plugins creating dialogs during initialization.
if (Application.isTestBuild()) {
Msg.showWarn(GhidraRun.class, null, "Unsupported Ghidra Distribution",
"WARNING! Please be aware that this is an unsupported and uncertified\n" +
"build of Ghidra! This software may be unstable and data created\n" +
"may be incompatible with future releases.");
}
FrontEndTool tool = new FrontEndTool(pm); FrontEndTool tool = new FrontEndTool(pm);
boolean reopen = true; boolean reopen = true;
@ -164,13 +174,6 @@ public class GhidraRun implements GhidraLaunchable {
projectLocator = pm.getLastOpenedProject(); projectLocator = pm.getLastOpenedProject();
} }
if (Application.isTestBuild()) {
Msg.showWarn(GhidraRun.class, tool.getToolFrame(), "Unsupported Ghidra Distribution",
"WARNING! Please be aware that this is an unsupported and uncertified\n" +
"build of Ghidra! This software may be unstable and data created\n" +
"may be incompatible with future releases.");
}
tool.setVisible(true); tool.setVisible(true);
if (projectLocator != null) { if (projectLocator != null) {

View file

@ -1764,9 +1764,12 @@ public class DockingWindowManager implements PropertyChangeListener, Placeholder
bestParent = getBestNonModalParent(provider, bestParent); bestParent = getBestNonModalParent(provider, bestParent);
} }
if (bestParent == null) { // We should no longer need this code. If the above could not find a suitable parent, then
bestParent = getJavaActiveWindow(); // we can allow a null return value, which should signal to Java to pick a reasonable parent.
} // If we put this code back, then make sure the chosen window is not transient.
// if (bestParent == null) {
// bestParent = getActiveNonTransientWindow();
// }
if (bestParent != null && !bestParent.isShowing()) { if (bestParent != null && !bestParent.isShowing()) {
bestParent = null; // don't let non-showing windows be parents bestParent = null; // don't let non-showing windows be parents