- 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) );
+
+ int i;
+ tile_t *curr_tile;
+ for (i = 0; i < game->deck.num_tiles; i++)
+ {
+ if ((event->x >= game->deck.tiles[i].x &&
+ event->x <= game->deck.tiles[i].x + TILE_WIDTH) &&
+ (event->y >= game->deck.tiles[i].y &&
+ event->y <= game->deck.tiles[i].y + TILE_HEIGHT))
+ {
+ curr_tile = &game->deck.tiles[i];
+ curr_tile->selected = 1;
+ gtk_widget_queue_draw_area (widget, curr_tile->x - 1, curr_tile->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2);
+ }
+ }
+ }
+ 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);
+