style: Use layout name as css class

This commit is contained in:
Dorota Czaplejewicz
2022-09-03 08:04:40 +00:00
parent 9413150d85
commit c30e951907
10 changed files with 32 additions and 13 deletions

View File

@ -21,6 +21,7 @@
#include "config.h"
#define _XOPEN_SOURCE 500
#include <bsd/string.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
@ -91,12 +92,13 @@ void level_keyboard_free(LevelKeyboard *self) {
}
LevelKeyboard*
level_keyboard_new (struct squeek_layout *layout)
level_keyboard_new (char *style_name, struct squeek_layout *layout)
{
LevelKeyboard *keyboard = g_new0(LevelKeyboard, 1);
if (!keyboard) {
g_error("Failed to create a keyboard");
}
keyboard->layout = layout;
strlcpy(keyboard->style_name, style_name, 19);
return keyboard;
}

View File

@ -38,17 +38,17 @@ struct keymap {
size_t fd_len; // length of the data inside keymap_fd
};
/// Keyboard state holder
/// Keyboard info holder
struct _LevelKeyboard {
char style_name[20]; // The name of the css class on layout
struct squeek_layout *layout; // owned
// FIXME: This no longer needs to exist, keymap was folded into layout.
};
typedef struct _LevelKeyboard LevelKeyboard;
gchar *eek_keyboard_get_keymap(LevelKeyboard *keyboard);
LevelKeyboard*
level_keyboard_new (struct squeek_layout *layout);
level_keyboard_new (char *style_name, struct squeek_layout *layout);
void level_keyboard_free(LevelKeyboard *self);
G_END_DECLS

View File

@ -335,6 +335,7 @@ eek_renderer_new (LevelKeyboard *keyboard,
if (squeek_layout_get_kind(keyboard->layout) == ARRANGEMENT_KIND_WIDE) {
gtk_style_context_add_class(renderer->view_context, "wide");
}
gtk_style_context_add_class(renderer->view_context, (char*)&keyboard->style_name);
gtk_style_context_add_provider (renderer->view_context,
GTK_STYLE_PROVIDER(renderer->css_provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);