in plugin/src/software/aws/toolkits/eclipse/amazonq/util/QInvocationSession.java [679:731]
public void dispose() {
var widget = viewer.getTextWidget();
sendSessionCompletionResult();
suggestionsContext = null;
resetSessionResultParams();
if (inlineTextFont != null) {
inlineTextFont.dispose();
}
if (inlineTextFontBold != null) {
inlineTextFontBold.dispose();
}
inlineTextFont = null;
inlineTextFontBold = null;
caretMovementReason = CaretMovementReason.UNEXAMINED;
unresolvedTasks.forEach((uuid, task) -> {
boolean cancelled = task.cancel(true);
if (cancelled) {
Activator.getLogger().info(uuid + " cancelled.");
} else {
Activator.getLogger().error(uuid + " failed to cancel.");
}
});
unresolvedTasks.clear();
if (inputListener != null) {
inputListener.beforeRemoval();
widget.removeVerifyKeyListener(inputListener);
widget.removeMouseListener(inputListener);
}
if (terminationListener != null) {
widget.removeFocusListener(terminationListener);
}
if (paintListener != null) {
paintListener.beforeRemoval();
widget.removePaintListener(paintListener);
}
if (caretListener != null) {
widget.removeCaretListener(caretListener);
}
Display.getDefault().asyncExec(() -> {
if (!widget.isDisposed()) {
widget.redraw();
widget.update();
}
});
paintListener = null;
caretListener = null;
inputListener = null;
terminationListener = null;
invocationOffset = -1;
editor = null;
viewer = null;
suggestionAccepted = false;
}