* @return <code>true</code> if view needs to be repainted.
*/
private synchronized boolean handleMouseClicksAndHover(final ViewPanel viewPanel) {
- MouseEvent mouseEventAndLocationToTrace = getMouseEventAndLocationToTrace(viewPanel);
- if (mouseEventAndLocationToTrace != null)
- {
- viewPanel.getRenderingContext().mouseEvent = mouseEventAndLocationToTrace;
- return true;
+ boolean rerenderNeeded = false;
+ MouseEvent event = findClickLocationToTrace();
+ if (event != null){
+ // process mouse clicks as a first priority
+ rerenderNeeded = true;
+ } else {
+ // when there are no mouse clicks, process mouse hovering
+
+ if (mouseMoved) {
+ mouseMoved = false;
+ // we would like to re-render frame when user moved mouse, to see what objects mouse is hovering over
+ rerenderNeeded = true;
+ }
+
+ if (currentMouseLocation != null) {
+ // mouse click with button 0 amounts to mouse hovering event
+ event = new MouseEvent(currentMouseLocation, 0);
+ }
}
- return false;
- }
- private MouseEvent getMouseEventAndLocationToTrace(ViewPanel viewPanel) {
- MouseEvent unprocessedMouseEvent = findClickLocationToTrace();
- if (unprocessedMouseEvent != null) {
- return unprocessedMouseEvent;
- } else
- return getHoverLocationToTrace(viewPanel);
+ if (viewPanel.getRenderingContext() != null)
+ viewPanel.getRenderingContext().setMouseEvent(event);
+
+ return rerenderNeeded;
}
private MouseEvent findClickLocationToTrace() {
}
}
- private MouseEvent getHoverLocationToTrace(ViewPanel viewPanel) {
- if (mouseMoved) {
- mouseMoved = false;
- if (currentMouseLocation != null) {
- return new MouseEvent(currentMouseLocation, 0);
- // mouse click with button 0 amounts to mouse hovering event
- }
- }
- return null;
- }
-
boolean isKeyPressed(final int keyCode) {
return pressedKeysToPressedTimeMap.containsKey(keyCode);
}