X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjexer%2FTWidget.java;h=169e5576be85d09a4aedd865ecc680a84d45e2f9;hb=eb29bbb5ec70c43895dd0f053630c7e3cd402cba;hp=12e43444a6f085392903d4335fe6004fc72c6194;hpb=1c19fdeaff911aa6e9e028f3ad4db06c8d0597dd;p=fanfix.git diff --git a/src/jexer/TWidget.java b/src/jexer/TWidget.java index 12e4344..169e557 100644 --- a/src/jexer/TWidget.java +++ b/src/jexer/TWidget.java @@ -438,7 +438,6 @@ public abstract class TWidget implements Comparable { * @return absolute screen column number for the cursor's X position */ public final int getCursorAbsoluteX() { - assert (cursorVisible); return getAbsoluteX() + cursorX; } @@ -448,7 +447,6 @@ public abstract class TWidget implements Comparable { * @return absolute screen row number for the cursor's Y position */ public final int getCursorAbsoluteY() { - assert (cursorVisible); return getAbsoluteY() + cursorY; } @@ -980,6 +978,29 @@ public abstract class TWidget implements Comparable { } } + /** + * Method that subclasses can override to handle mouse button + * double-clicks. + * + * @param mouse mouse button event + */ + public void onMouseDoubleClick(final TMouseEvent mouse) { + // Default: do nothing, pass to children instead + for (int i = children.size() - 1 ; i >= 0 ; i--) { + TWidget widget = children.get(i); + if (widget.mouseWouldHit(mouse)) { + // Dispatch to this child, also activate it + activate(widget); + + // Set x and y relative to the child's coordinates + mouse.setX(mouse.getAbsoluteX() - widget.getAbsoluteX()); + mouse.setY(mouse.getAbsoluteY() - widget.getAbsoluteY()); + widget.handleEvent(mouse); + return; + } + } + } + /** * Method that subclasses can override to handle window/screen resize * events. @@ -1072,6 +1093,10 @@ public abstract class TWidget implements Comparable { onMouseMotion(mouse); break; + case MOUSE_DOUBLE_CLICK: + onMouseDoubleClick(mouse); + break; + default: throw new IllegalArgumentException("Invalid mouse event type: " + mouse.getType());