summaryrefslogtreecommitdiffstats
path: root/src/tk/grid.c
diff options
context:
space:
mode:
authorP. 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)
commitddf513909ce1742021b9c57ea7279a61aeda4899 (patch)
tree63ef4993cdaea7da22255078cfa7858660307e01 /src/tk/grid.c
parent072f42236fb0d2509608a3ad345df2c5cf71f8dd (diff)
downloadmazefight-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.c25
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;