The code below shows that:
1) HOVER is completely ignored by the composite. How to turn it on?
2) ENTER / EXIT is tracked, but when the mouse enters a child control area, the parent composite receives an EXIT event. How to make the entre area of a composite belong to a composite?
public class TryHover {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Composite composite = new Composite(shell, SWT.BORDER);
composite.setLayout(new GridLayout(1, false));
Label label1 = new Label(composite, SWT.BORDER);
label1.setText("Label 1");
Label label2 = new Label(composite, SWT.BORDER);
label2.setText("Label 2");
composite.addListener(SWT.MouseEnter, new Listener() {
@Override
public void handleEvent(Event event) {
System.out.println("ENTER");
}
});
composite.addListener(SWT.MouseExit, new Listener() {
@Override
public void handleEvent(Event event) {
System.out.println("EXIT");
}
});
composite.addListener(SWT.MouseHover, new Listener() {
@Override
public void handleEvent(Event event) {
System.out.println("HOVER");
}
});
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
}
UPDATE
Yes, you must admit, if the mouse is slow, it also creates a HOVER.
Then the question is only about ENTER / EXIT: how to enable EXIT for child controls?
source
share