view: Move button finding to Rust
This commit is contained in:
@ -114,7 +114,7 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
|
||||
/* redraw pressed key */
|
||||
const GList *list = priv->keyboard->pressed_buttons;
|
||||
for (const GList *head = list; head; head = g_list_next (head)) {
|
||||
struct button_place place = eek_keyboard_get_button_by_state(
|
||||
struct button_place place = squeek_view_find_key(
|
||||
view, squeek_button_get_key(head->data)
|
||||
);
|
||||
render_pressed_button (self, &place);
|
||||
@ -123,7 +123,7 @@ eek_gtk_keyboard_real_draw (GtkWidget *self,
|
||||
/* redraw locked key */
|
||||
list = priv->keyboard->locked_buttons;
|
||||
for (const GList *head = list; head; head = g_list_next (head)) {
|
||||
struct button_place place = eek_keyboard_get_button_by_state(
|
||||
struct button_place place = squeek_view_find_key(
|
||||
view, squeek_button_get_key(
|
||||
((EekModifierKey *)head->data)->button
|
||||
)
|
||||
|
||||
@ -287,37 +287,3 @@ struct squeek_view *level_keyboard_current(LevelKeyboard *keyboard)
|
||||
{
|
||||
return keyboard->views[keyboard->level];
|
||||
}
|
||||
|
||||
struct GetRowData {
|
||||
struct squeek_button *button;
|
||||
struct squeek_row *row;
|
||||
struct squeek_key *needle;
|
||||
};
|
||||
|
||||
void find_key_in_row(struct squeek_row *row, gpointer user_data) {
|
||||
struct GetRowData *data = user_data;
|
||||
if (data->button) {
|
||||
return;
|
||||
}
|
||||
data->button = squeek_row_find_key(row, data->needle);
|
||||
if (data->button) {
|
||||
data->row = row;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TODO: return multiple
|
||||
struct button_place eek_keyboard_get_button_by_state(struct squeek_view *view,
|
||||
struct squeek_key *key) {
|
||||
struct GetRowData data = {
|
||||
.row = NULL,
|
||||
.button = NULL,
|
||||
.needle = key,
|
||||
};
|
||||
squeek_view_foreach(view, find_key_in_row, &data);
|
||||
struct button_place ret = {
|
||||
.row = data.row,
|
||||
.button = data.button,
|
||||
};
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -70,9 +70,6 @@ struct button_place {
|
||||
const struct squeek_button *button;
|
||||
};
|
||||
|
||||
struct button_place eek_keyboard_get_button_by_state(struct squeek_view *view,
|
||||
struct squeek_key *key);
|
||||
|
||||
EekOutline *level_keyboard_get_outline
|
||||
(LevelKeyboard *keyboard,
|
||||
guint oref);
|
||||
|
||||
Reference in New Issue
Block a user