Merge branch 'locklight' into 'master'

style: Add styling for locked buttons

See merge request Librem5/squeekboard!197
This commit is contained in:
David Boddie
2019-10-03 12:52:28 +00:00
2 changed files with 19 additions and 6 deletions

View File

@ -25,6 +25,11 @@ sq_button.wide {
border-color: #3e3a44
}
sq_button.locked {
background: #ffffff;
color: #2b292f;
}
#Return {
background: #1c71d8;
border-color: #1a5fb4

View File

@ -69,7 +69,7 @@ static void eek_renderer_real_render_button_label (EekRenderer *self,
static void invalidate (EekRenderer *renderer);
static void render_button (EekRenderer *self,
cairo_t *cr, struct button_place *place,
gboolean active);
gboolean pressed, gboolean locked);
struct _CreateKeyboardSurfaceCallbackData {
cairo_t *cr;
@ -99,7 +99,7 @@ create_keyboard_surface_button_callback (struct squeek_button *button,
.row = data->row,
.button = button,
};
render_button (data->renderer, data->cr, &place, FALSE);
render_button (data->renderer, data->cr, &place, FALSE, FALSE);
cairo_restore (data->cr);
}
@ -286,7 +286,8 @@ static void
render_button (EekRenderer *self,
cairo_t *cr,
struct button_place *place,
gboolean active)
gboolean pressed,
gboolean locked)
{
EekRendererPrivate *priv = eek_renderer_get_instance_private (self);
@ -303,15 +304,21 @@ render_button (EekRenderer *self,
/* Set the state to take into account whether the button is active
(pressed) or normal. */
gtk_style_context_set_state(ctx,
active ? GTK_STATE_FLAG_ACTIVE : GTK_STATE_FLAG_NORMAL);
pressed ? GTK_STATE_FLAG_ACTIVE : GTK_STATE_FLAG_NORMAL);
const char *outline_name = squeek_button_get_outline_name(place->button);
if (locked) {
gtk_style_context_add_class(ctx, "locked");
}
gtk_style_context_add_class(ctx, outline_name);
render_button_in_context(self, cr, ctx, place, active);
render_button_in_context(self, cr, ctx, place, pressed);
// Save and restore functions don't work if gtk_render_* was used in between
gtk_style_context_set_state(ctx, GTK_STATE_FLAG_NORMAL);
gtk_style_context_remove_class(ctx, outline_name);
if (locked) {
gtk_style_context_remove_class(ctx, "locked");
}
}
/**
@ -442,7 +449,8 @@ eek_renderer_real_render_button (EekRenderer *self,
struct squeek_key *key = squeek_button_get_key(place->button);
render_button (
self, cr, place,
squeek_key_is_pressed(key) || squeek_key_is_locked (key)
squeek_key_is_pressed(key),
squeek_key_is_locked (key)
);
cairo_restore (cr);
}