Canvas canvas = (Canvas)handle;
// SWT_AWT adds a component listener, but it conflicts. Thus we have to restore the listeners.
ComponentListener[] componentListeners = canvas.getComponentListeners();
Shell shell = SWT_AWT.new_Shell(display, canvas);
for(ComponentListener componentListener: canvas.getComponentListeners()) {
canvas.removeComponentListener(componentListener);
}
for(ComponentListener componentListener: componentListeners) {
canvas.addComponentListener(componentListener);
}
return shell;