X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=kub.c;fp=kub.c;h=a029c137b845d6228a4cf9d61ce531ef0b2ba85b;hb=7c79fd8f543f46d54b5823620faa604b436f967b;hp=a4d5dceae3e750fd2e87afe64bf6fbce5638497f;hpb=936a590e44f49282717fa02b4fd74421997f8ba7;p=kub diff --git a/kub.c b/kub.c index a4d5dce..a029c13 100644 --- a/kub.c +++ b/kub.c @@ -536,7 +536,7 @@ static gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, event->y >= tile_y && event->y <= (tile_y + TILE_HEIGHT) ) { game->select_mode = 0; - + curr_tile = &game->deck.tiles[game->current_tile]; game->deck.tiles[game->current_tile].selected = 0; gtk_widget_queue_draw_area (widget, curr_tile->x - 1, curr_tile->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); @@ -610,7 +610,19 @@ static gboolean on_button_release_event (GtkWidget *widget, GdkEventButton *even tile_y2 >= y_min && tile_y2 <= y_max) || /*or top-right corner of tile selected*/ (tile_x2 >= x_min && tile_x2 <= x_max && - tile_y >= y_min && tile_y <= y_max) ) + tile_y >= y_min && tile_y <= y_max) || + /*or left edge*/ + (y_min >= tile_y && y_min <= tile_y2 && + x_min <= tile_x && x_max >= tile_x) || + /*or top edge*/ + (x_min >= tile_x && x_min <= tile_x2 && + y_min <= tile_y && y_max >= tile_y) || + /*or right edge*/ + (y_min >= tile_y && y_min <= tile_y2 && + x_min >= tile_x && x_min <= tile_x2) || + /*or bottom edge*/ + (x_min >= tile_x && x_min <= tile_x2 && + y_min >= tile_y && y_min <= tile_y) ) { group.tiles[group.num_tiles] = game->deck.tiles[i]; group.num_tiles++; @@ -635,12 +647,27 @@ static gboolean on_button_motion_event (GtkWidget *widget, GdkEventMotion *event 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) ); + 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 {