+ /**
+ * @return <code>true</code> if view repaint is needed.
+ */
+ public boolean handleDetectedComponentMouseEvents() {
+ if (objectUnderMouse != null) {
+ if (mouseEvent.button == 0) {
+ // mouse over
+ if (currentMouseOverComponent == null) {
+ currentMouseOverComponent = objectUnderMouse;
+ return currentMouseOverComponent.mouseEntered();
+ } else if (currentMouseOverComponent != objectUnderMouse) {
+ boolean viewRepaintNeeded = currentMouseOverComponent.mouseExited();
+ currentMouseOverComponent = objectUnderMouse;
+ return viewRepaintNeeded | currentMouseOverComponent.mouseEntered();
+ }
+ } else {
+ // mouse click
+ return objectUnderMouse.mouseClicked();
+ }
+ } else if (currentMouseOverComponent != null) {
+ boolean viewRepaintNeeded = currentMouseOverComponent.mouseExited();
+ currentMouseOverComponent = null;
+ return viewRepaintNeeded;
+ }
+ return false;
+ }
+