+ if (IS_CURSOR_MOVE(button)) {
+ move_cursor(button, &ui->cur_x, &ui->cur_y, from->w, from->h, 0);
+ ui->cur_visible = 1;
+ return "";
+ }
+ if (IS_CURSOR_SELECT(button)) {
+ int v = from->grid[ui->cur_y * from->w + ui->cur_x];
+
+ if (!ui->cur_visible) {
+ ui->cur_visible = 1;
+ return "";
+ }
+ if (button == CURSOR_SELECT2) {
+ /* As for RIGHT_BUTTON; only works on covered square. */
+ if (v != -2 && v != -1)
+ return NULL;
+ sprintf(buf, "F%d,%d", ui->cur_x, ui->cur_y);
+ return dupstr(buf);
+ }
+ /* Otherwise, treat as LEFT_BUTTON, for a single square. */
+ if (v == -2 || v == -3) {
+ if (from->layout->mines &&
+ from->layout->mines[ui->cur_y * from->w + ui->cur_x])
+ ui->deaths++;
+
+ sprintf(buf, "O%d,%d", ui->cur_x, ui->cur_y);
+ return dupstr(buf);
+ }
+ cx = ui->cur_x; cy = ui->cur_y;
+ ui->validradius = 1;
+ goto uncover;
+ }
+