- tile_t *tile;
-
- tile = &game->deck.tiles[game->current_tile];
-
- /* First, invalidate the region where the tile currently is. */
- gtk_widget_queue_draw_area (widget, tile->x - 1, tile->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2);
-
+ if (game->select_mode)
+ {
+ selection_box_t *box;
+ box = &game->selection_box;
+ box->visible = 1;
+
+ gtk_widget_queue_draw_area ( widget, MIN(box->x1, box->x2), MIN(box->y1, box->y2), abs(box->x2 - box->x1), abs(box->y2 - box->y1) );
+
+ box->x2 = event->x;
+ box->y2 = event->y;
+
+ gtk_widget_queue_draw_area ( widget, MIN(box->x1, box->x2), MIN(box->y1, box->y2), abs(box->x2 - box->x1), abs(box->y2 - box->y1) );
+ }
+ else
+ {
+ tile_t *tile;
+ tile = &game->deck.tiles[game->current_tile];
+
+ /* First, invalidate the region where the tile currently is. */
+ gtk_widget_queue_draw_area (widget, tile->x - 1, tile->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2);
+