Drop callback iteration for button finding

This commit is contained in:
Dorota Czaplejewicz
2019-08-28 10:33:00 +00:00
parent 4a61ab269b
commit 9ef38ecf30
3 changed files with 91 additions and 65 deletions

View File

@ -913,14 +913,6 @@ eek_renderer_get_foreground_color (EekRenderer *renderer,
color->alpha = gcolor.alpha;
}
struct _FindKeyByPositionCallbackData {
EekPoint point;
EekPoint origin;
gint angle;
struct squeek_button *button;
};
typedef struct _FindKeyByPositionCallbackData FindKeyByPositionCallbackData;
static gboolean
sign (EekPoint *p1, EekPoint *p2, EekPoint *p3)
{
@ -968,17 +960,6 @@ eek_are_bounds_inside (EekBounds bounds, EekPoint point, EekPoint origin, int32_
return 0;
}
static void
find_button_by_position_row_callback (struct squeek_row *row,
gpointer user_data)
{
FindKeyByPositionCallbackData *data = user_data;
if (data->button) {
return;
}
data->button = squeek_row_find_button_by_position(row, data->point, data->origin);
}
/**
* eek_renderer_find_key_by_position:
* @renderer: The renderer normally used to render the key
@ -994,8 +975,6 @@ eek_renderer_find_button_by_position (EekRenderer *renderer,
gdouble x,
gdouble y)
{
FindKeyByPositionCallbackData data;
g_return_val_if_fail (EEK_IS_RENDERER(renderer), NULL);
EekRendererPrivate *priv = eek_renderer_get_instance_private (renderer);
@ -1010,14 +989,9 @@ eek_renderer_find_button_by_position (EekRenderer *renderer,
x > bounds.width ||
y > bounds.height)
return NULL;
data.point.x = x;
data.point.y = y;
data.origin.x = 0;
data.origin.y = 0;
data.button = NULL;
squeek_view_foreach (view, find_button_by_position_row_callback,
&data);
return data.button;
EekPoint point = {
.x = x,
.y = y,
};
return squeek_view_find_button_by_position(view, point);
}