diff options
author | P. J. McDermott <pj@pehjota.net> | 2021-08-04 20:17:59 (EDT) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2021-08-04 20:17:59 (EDT) |
commit | ddf513909ce1742021b9c57ea7279a61aeda4899 (patch) | |
tree | 63ef4993cdaea7da22255078cfa7858660307e01 /src/tk/grid.c | |
parent | 072f42236fb0d2509608a3ad345df2c5cf71f8dd (diff) | |
download | mazefight-ddf513909ce1742021b9c57ea7279a61aeda4899.zip mazefight-ddf513909ce1742021b9c57ea7279a61aeda4899.tar.gz mazefight-ddf513909ce1742021b9c57ea7279a61aeda4899.tar.bz2 |
tk: Implement mouse button up event
Diffstat (limited to 'src/tk/grid.c')
-rw-r--r-- | src/tk/grid.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/tk/grid.c b/src/tk/grid.c index 5994929..67fa677 100644 --- a/src/tk/grid.c +++ b/src/tk/grid.c @@ -79,12 +79,33 @@ _mftk_grid_layout(struct mftk_widget *w) } static int -_mftk_grid_event(struct mftk_widget *w, SDL_Event *e) +_mftk_grid_event(struct mftk_widget *w, SDL_Event *e, int x, int y) { - struct mftk_grid *g = (struct mftk_grid *) w; + struct mftk_grid *g = (struct mftk_grid *) w; + SDL_Point p; + SDL_Rect rect; + int r; + int c; + struct mftk_widget *child; switch (e->type) { case SDL_MOUSEBUTTONUP: + p.x = e->button.x; + p.y = e->button.y; + for (r = 0; r < g->rows; ++r) { + for (c = 0; c < g->cols; ++c) { + child = g->children[r * g->cols + c]; + rect.x = x + g->children_x[c]; + rect.y = y + g->children_y[r]; + rect.w = child->w; + rect.h = child->h; + if (SDL_PointInRect(&p, &rect) + == SDL_TRUE) { + return mftk_widget_event(child, + e, x, y); + } + } + } break; default: break; |