return;
if (fAdditionalInfoController.getInternalAccessor().getInformationControlReplacer() == null)
fAdditionalInfoController.hideInformationControl();
else if (!fAdditionalInfoController.getInternalAccessor().isReplaceInProgress()) {
IInformationControl infoControl= fAdditionalInfoController.getCurrentInformationControl2();
// During isReplaceInProgress(), events can come from the replacing information control
if (event.widget instanceof Control && infoControl instanceof IInformationControlExtension5) {
Control control= (Control) event.widget;
IInformationControlExtension5 iControl5= (IInformationControlExtension5) infoControl;
if (!(iControl5.containsControl(control)))
fAdditionalInfoController.hideInformationControl();
else if (event.type == SWT.MouseWheel)
fAdditionalInfoController.getInternalAccessor().replaceInformationControl(false);
} else if (infoControl != null && infoControl.isFocusControl()) {
fAdditionalInfoController.getInternalAccessor().replaceInformationControl(true);
}
}
break;
case SWT.MouseUp:
if (fAdditionalInfoController == null || fAdditionalInfoController.getInternalAccessor().isReplaceInProgress())
break;
if (event.widget instanceof Control) {
Control control= (Control) event.widget;
IInformationControl infoControl= fAdditionalInfoController.getCurrentInformationControl2();
if (infoControl instanceof IInformationControlExtension5) {
final IInformationControlExtension5 iControl5= (IInformationControlExtension5) infoControl;
if (iControl5.containsControl(control)) {
if (infoControl instanceof IDelayedInputChangeProvider) {
final IDelayedInputChangeProvider delayedICP= (IDelayedInputChangeProvider) infoControl;
final IInputChangedListener inputChangeListener= new DelayedInputChangeListener(delayedICP, fAdditionalInfoController.getInternalAccessor().getInformationControlReplacer());
delayedICP.setDelayedInputChangeListener(inputChangeListener);
// cancel automatic input updating after a small timeout:
control.getShell().getDisplay().timerExec(1000, new Runnable() {
public void run() {
delayedICP.setDelayedInputChangeListener(null);
}
});
}
// XXX: workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=212392 :
control.getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
fAdditionalInfoController.getInternalAccessor().replaceInformationControl(true);
}
});
}
}
}
break;
case SWT.Deactivate:
if (fAdditionalInfoController == null)
break;
InformationControlReplacer replacer= fAdditionalInfoController.getInternalAccessor().getInformationControlReplacer();
if (replacer != null && fContentAssistant != null) {
IInformationControl iControl= replacer.getCurrentInformationControl2();
if (event.widget instanceof Control && iControl instanceof IInformationControlExtension5) {
Control control= (Control) event.widget;
IInformationControlExtension5 iControl5= (IInformationControlExtension5) iControl;
if (iControl5.containsControl(control)) {
control.getDisplay().asyncExec(new Runnable() {