- TWindow
- "Smart placement" for new windows
-- ECMATerminal
- - Mouse 1006 mode parsing
Wishlist features (2.0):
- TTerminal
- Handle resize events (pass to child process)
- - xterm mouse handling
- Screen
- Allow complex characters in putCharXY() and detect them in putStrXY().
- TComboBox
*/
private Thread readerThread;
+ /**
+ * The last reported mouse X position.
+ */
+ private int oldMouseX = -1;
+
+ /**
+ * The last reported mouse Y position.
+ */
+ private int oldMouseY = -1;
+
/**
* true if mouse1 was down. Used to report mouse1 on the release event.
*/
public void mouseMoved(final MouseEvent mouse) {
int x = screen.textColumn(mouse.getX());
int y = screen.textRow(mouse.getY());
+ if ((x == oldMouseX) && (y == oldMouseY)) {
+ // Bail out, we've moved some pixels but not a whole text cell.
+ return;
+ }
+ oldMouseX = x;
+ oldMouseY = y;
+
TMouseEvent mouseEvent = new TMouseEvent(TMouseEvent.Type.MOUSE_MOTION,
x, y, x, y, mouse1, mouse2, mouse3, false, false);
* @param mouse mouse event received from the local user
*/
public void mouse(final TMouseEvent mouse) {
+
/*
- * TODO:
- *
- * - Parse the mouse requests from the remote side regarding protocol
- * + encoding
- *
- * - Send mouse events to the other side.
- *
- * - Handle the cursor (double invert).
+ System.err.printf("mouse(): protocol %s encoding %s mouse %s\n",
+ mouseProtocol, mouseEncoding, mouse);
*/
- // System.err.printf("Mouse: %s\n", mouse);
-
- /*
if (mouseEncoding != MouseEncoding.UTF8) {
- // We only support UTF8 encoding, bail out now.
- return;
+ // We will support X10 but only for (160,94) and smaller.
+ if ((mouse.getX() >= 160) || (mouse.getY() >= 94)) {
+ return;
+ }
}
- */
switch (mouseProtocol) {
sb.append((char) 0x1B);
sb.append('[');
sb.append('M');
- if (mouse.getMouse1()) {
+ if (mouse.getType() == TMouseEvent.Type.MOUSE_UP) {
+ sb.append((char) (0x03 + 32));
+ } else if (mouse.getMouse1()) {
sb.append((char) (0x00 + 32));
} else if (mouse.getMouse2()) {
sb.append((char) (0x01 + 32));