+ erasing = (button == RIGHT_RELEASE);
+ } else if (IS_CURSOR_MOVE(button)) {
+ move_cursor(button, &ui->cur_x, &ui->cur_y, from->w, from->h, 0);
+ ui->cur_visible = TRUE;
+ active = TRUE;
+ if (!ui->cur_dragging) return "";
+ coord_round((float)ui->cur_x + 0.5F, (float)ui->cur_y + 0.5F, &xc, &yc);
+ } else if (IS_CURSOR_SELECT(button)) {
+ if (ui->drag_start_x >= 0 && !ui->cur_dragging) {
+ /*
+ * If a mouse drag is in progress, ignore attempts to
+ * start a keyboard one.
+ */
+ return NULL;
+ }
+ if (!ui->cur_visible) {
+ assert(!ui->cur_dragging);
+ ui->cur_visible = TRUE;
+ return "";
+ }
+ coord_round((float)ui->cur_x + 0.5F, (float)ui->cur_y + 0.5F, &xc, &yc);
+ erasing = (button == CURSOR_SELECT2);
+ if (ui->cur_dragging) {
+ ui->cur_dragging = FALSE;
+ enddrag = TRUE;
+ active = TRUE;
+ } else {
+ ui->cur_dragging = TRUE;
+ startdrag = TRUE;
+ active = TRUE;
+ }
+ } else if (button != LEFT_DRAG && button != RIGHT_DRAG) {