refactor: define all signals to header files

This commit is contained in:
DL 2025-06-16 12:15:41 +02:00
parent 7dab18e121
commit 443f323597
12 changed files with 137 additions and 75 deletions

View File

@ -221,7 +221,7 @@ static void toplevel_handle_done(void *data,
assert(shell);
DiyaForeignWindow *win = diya_session_shell_get_window(shell, handle);
assert(win);
g_signal_emit_by_name(shell, "foreign-window-changed", (void *)win);
g_signal_emit_by_name(shell, DIYA_SIGNAL_FOREIGN_WINDOW_CHANGED, (void *)win);
}
static void toplevel_handle_closed(void *data,
struct zwlr_foreign_toplevel_handle_v1 *handle)
@ -230,7 +230,7 @@ static void toplevel_handle_closed(void *data,
assert(shell);
DiyaForeignWindow *win = diya_session_shell_get_window(shell, handle);
assert(win);
g_signal_emit_by_name(shell, "foreign-window-removed", (void *)win);
g_signal_emit_by_name(shell, DIYA_SIGNAL_FOREIGN_WINDOW_REMOVED, (void *)win);
diya_session_shell_remove_window(shell, win);
zwlr_foreign_toplevel_handle_v1_destroy(handle);
}

View File

@ -91,11 +91,64 @@ static void diya_input_class_init(DiyaInputClass *class)
// gobject_class->set_property = diya_input_set_property;
// gobject_class->get_property = diya_input_get_property;
base_class->to_string = diya_input_to_string;
g_signal_new(DIYA_SIGNAL_INPUT_KEYBOARD_ENTER,
DIYA_TYPE_SHELL,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
G_SIGNAL_RUN_FIRST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
1,
G_TYPE_POINTER);
g_signal_new(DIYA_SIGNAL_INPUT_KEYBOARD_LEAVE,
DIYA_TYPE_SHELL,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
G_SIGNAL_RUN_FIRST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
0);
g_signal_new(DIYA_SIGNAL_INPUT_KEY_PRESSED,
DIYA_TYPE_SHELL,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
G_SIGNAL_RUN_FIRST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
3,
G_TYPE_UINT,
G_TYPE_UINT,
G_TYPE_UINT);
g_signal_new(DIYA_SIGNAL_INPUT_KEY_RELEASED,
DIYA_TYPE_SHELL,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
G_SIGNAL_RUN_FIRST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
3,
G_TYPE_UINT,
G_TYPE_UINT,
G_TYPE_UINT);
}
static void wl_keyboard_keymap(void *data, struct wl_keyboard *keyboard, uint32_t format, int32_t fd, uint32_t size)
{
(void) keyboard;
(void)keyboard;
DiyaInput *self = data;
assert(format == WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1);
char *map_shm = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
@ -115,9 +168,9 @@ static void wl_keyboard_enter(void *data, struct wl_keyboard *keyboard,
uint32_t serial, struct wl_surface *surface,
struct wl_array *keys)
{
(void) keyboard;
(void) serial;
(void) surface;
(void)keyboard;
(void)serial;
(void)surface;
DiyaInput *self = data;
g_warning("keyboard enter; keys pressed are:");
uint32_t *key;
@ -135,9 +188,9 @@ static void wl_keyboard_enter(void *data, struct wl_keyboard *keyboard,
static void wl_keyboard_key(void *data, struct wl_keyboard *keyboard,
uint32_t serial, uint32_t time, uint32_t key, uint32_t state)
{
(void) keyboard;
(void) serial;
(void) time;
(void)keyboard;
(void)serial;
(void)time;
DiyaInput *self = data;
char buf[128];
uint32_t keycode = key + 8;
@ -152,10 +205,10 @@ static void wl_keyboard_key(void *data, struct wl_keyboard *keyboard,
static void wl_keyboard_leave(void *data, struct wl_keyboard *keyboard,
uint32_t serial, struct wl_surface *surface)
{
(void) data;
(void) keyboard;
(void) serial;
(void) surface;
(void)data;
(void)keyboard;
(void)serial;
(void)surface;
g_warning("keyboard leave");
}
@ -164,18 +217,18 @@ static void wl_keyboard_modifiers(void *data, struct wl_keyboard *keyboard,
uint32_t mods_latched, uint32_t mods_locked,
uint32_t group)
{
(void) keyboard;
(void) serial;
(void)keyboard;
(void)serial;
DiyaInput *self = data;
xkb_state_update_mask(self->xkb_state,mods_depressed, mods_latched, mods_locked, 0, 0, group);
xkb_state_update_mask(self->xkb_state, mods_depressed, mods_latched, mods_locked, 0, 0, group);
}
static void wl_keyboard_repeat_info(void *data, struct wl_keyboard *keyboard,int32_t rate, int32_t delay)
static void wl_keyboard_repeat_info(void *data, struct wl_keyboard *keyboard, int32_t rate, int32_t delay)
{
(void) data;
(void) keyboard;
(void) rate;
(void) delay;
(void)data;
(void)keyboard;
(void)rate;
(void)delay;
}
static const struct wl_keyboard_listener wl_keyboard_listener = {
@ -206,7 +259,7 @@ static void wl_seat_capabilities(void *data, struct wl_seat *seat, uint32_t capa
static void wl_seat_name(void *data, struct wl_seat *seat, const char *name)
{
(void) seat;
(void)seat;
DiyaInput *self = data;
if (self->name)
{

View File

@ -3,6 +3,11 @@
#include "shell.h"
#define DIYA_SIGNAL_INPUT_KEYBOARD_ENTER "keyboard-enter"
#define DIYA_SIGNAL_INPUT_KEYBOARD_LEAVE "keyboard-leave"
#define DIYA_SIGNAL_INPUT_KEY_PRESSED "key-pressed"
#define DIYA_SIGNAL_INPUT_KEY_RELEASED "key-released"
#define DIYA_TYPE_INPUT (diya_input_get_type ())
G_DECLARE_FINAL_TYPE (DiyaInput, diya_input, DIYA, INPUT, DiyaShellObject)

View File

@ -186,8 +186,8 @@ void diya_session_shell_launcher_init(DiyaSessionShell * shell)
gtk_window_present (GTK_WINDOW (taskbar));
g_signal_connect (shell, "foreign-window-changed", G_CALLBACK (on_foreign_window_change), NULL);
g_signal_connect (shell, "foreign-window-removed", G_CALLBACK (on_foreign_window_removed), NULL);
g_signal_connect (shell, DIYA_SIGNAL_FOREIGN_WINDOW_CHANGED, G_CALLBACK (on_foreign_window_change), NULL);
g_signal_connect (shell, DIYA_SIGNAL_FOREIGN_WINDOW_REMOVED, G_CALLBACK (on_foreign_window_removed), NULL);
GList *apps = g_app_info_get_all ();
GList * l;

View File

@ -103,6 +103,7 @@ static void diya_session_shell_startup(DiyaShell* shell)
static void diya_session_shell_active(DiyaShell* shell)
{
//(void) shell;
diya_shell_monitor_input(shell);
}
@ -128,7 +129,7 @@ static void diya_session_shell_class_init(DiyaSessionShellClass *class)
g_object_class_install_properties (gobject_class, N_PROPERTIES, shell_properties);
g_signal_new("foreign-window-changed",
g_signal_new(DIYA_SIGNAL_FOREIGN_WINDOW_CHANGED,
DIYA_TYPE_SESSION_SHELL,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
@ -140,7 +141,7 @@ static void diya_session_shell_class_init(DiyaSessionShellClass *class)
G_TYPE_NONE,
1,
G_TYPE_POINTER);
g_signal_new("foreign-window-removed",
g_signal_new(DIYA_SIGNAL_FOREIGN_WINDOW_REMOVED,
DIYA_TYPE_SESSION_SHELL,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
@ -152,7 +153,7 @@ static void diya_session_shell_class_init(DiyaSessionShellClass *class)
G_TYPE_NONE,
1,
G_TYPE_POINTER);
g_signal_new("session-locked",
g_signal_new(DIYA_SIGNAL_SESSION_LOCKED,
DIYA_TYPE_SESSION_SHELL,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
@ -163,7 +164,7 @@ static void diya_session_shell_class_init(DiyaSessionShellClass *class)
NULL,
G_TYPE_NONE,
0);
g_signal_new("session-unlocked",
g_signal_new(DIYA_SIGNAL_SESSION_UNLOCKED,
DIYA_TYPE_SESSION_SHELL,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
@ -180,24 +181,14 @@ static void on_session_locked(GtkSessionLockInstance *lock, DiyaSessionShell *sh
(void)lock;
assert(shell);
g_message("Session locked successfully");
g_signal_emit_by_name(shell, "session-locked");
g_signal_emit_by_name(shell, DIYA_SIGNAL_SESSION_LOCKED);
}
/*
static void failed(GtkSessionLockInstance *lock, void *data) {
(void)lock;
(void)data;
g_critical("The session could not be locked");
g_application_quit(G_APPLICATION(app));
}
*/
static void on_session_unlocked(GtkSessionLockInstance *lock, DiyaSessionShell *shell) {
(void)lock;
assert(shell);
g_message("Session unlocked");
g_signal_emit_by_name(shell, "session-unlocked");
g_signal_emit_by_name(shell, DIYA_SIGNAL_SESSION_UNLOCKED);
}
static void diya_session_shell_init(DiyaSessionShell *self)

View File

@ -5,6 +5,11 @@
#include "shell.h"
#include "base.h"
#define DIYA_SIGNAL_FOREIGN_WINDOW_CHANGED "foreign-window-changed"
#define DIYA_SIGNAL_FOREIGN_WINDOW_REMOVED "foreign-window-removed"
#define DIYA_SIGNAL_SESSION_LOCKED "session-locked"
#define DIYA_SIGNAL_SESSION_UNLOCKED "session-unlocked"
#define DIYA_TYPE_SESSION_SHELL (diya_session_shell_get_type ())
G_DECLARE_FINAL_TYPE (DiyaSessionShell, diya_session_shell, DIYA, SESSION_SHELL, DiyaShell)

View File

@ -19,7 +19,7 @@ static void session_unlocked(DiyaSessionShell* shell, void* data)
int main(int argc, char *argv[])
{
DiyaSessionShell *shell = DIYA_SESSION_SHELL(g_object_new(DIYA_TYPE_SESSION_SHELL, "name","dev.iohub.diya.session-shell", NULL));
g_signal_connect(shell, "session-locked", G_CALLBACK(session_locked), NULL);
g_signal_connect(shell, "session-unlocked", G_CALLBACK(session_unlocked), NULL);
g_signal_connect(shell, DIYA_SIGNAL_SESSION_LOCKED, G_CALLBACK(session_locked), NULL);
g_signal_connect(shell, DIYA_SIGNAL_SESSION_UNLOCKED, G_CALLBACK(session_unlocked), NULL);
return diya_shell_run(DIYA_SHELL(shell), argc, argv);
}

View File

@ -5,7 +5,7 @@
#include "input.h"
#include "files-monior.h"
#define diya_shell_config_css_file(priv) (g_strconcat(g_get_user_config_dir(), "/diya/themes/", priv->theme?priv->theme:"default", "/", priv->name, ".css", NULL))
#define diya_shell_config_css_file(priv) (g_strconcat(g_get_user_config_dir(), "/diya/themes/", priv->theme ? priv->theme : "default", "/", priv->name, ".css", NULL))
enum
{
@ -48,7 +48,7 @@ static void diya_shell_dispose(GObject *object)
g_free(priv->name);
priv->name = NULL;
}
if(priv->theme)
if (priv->theme)
{
g_free(priv->theme);
priv->name = NULL;
@ -131,7 +131,7 @@ static void diya_shell_reload_theme(DiyaShell *shell)
}
}
void diya_shell_reload(DiyaShell* self)
void diya_shell_reload(DiyaShell *self)
{
diya_shell_reload_theme(self);
}
@ -154,8 +154,8 @@ void on_diya_shell_theme_file_changed(GFileMonitor *monitor, GFile *file, GFile
case G_FILE_MONITOR_EVENT_RENAMED:
case G_FILE_MONITOR_EVENT_MOVED_IN:
case G_FILE_MONITOR_EVENT_MOVED_OUT:
//case G_FILE_MONITOR_EVENT_CHANGED:
//case G_FILE_MONITOR_EVENT_CREATED:
// case G_FILE_MONITOR_EVENT_CHANGED:
// case G_FILE_MONITOR_EVENT_CREATED:
diya_shell_reload_theme(shell);
break;
default:
@ -177,8 +177,8 @@ static void on_gtk_app_startup(GtkApplication *app, void *data)
DiyaShellClass *class = DIYA_SHELL_GET_CLASS(shell);
// read envar
const char* default_theme = g_getenv(DIYA_ENV_THEME);
if(default_theme)
const char *default_theme = g_getenv(DIYA_ENV_THEME);
if (default_theme)
{
priv->theme = g_strdup(default_theme);
}
@ -260,10 +260,10 @@ static void diya_shell_set_property(GObject *object, guint property_id, const GV
break;
case PROP_SHELL_THEME:
{
const gchar* theme = g_value_get_string(value);
if(!priv->theme || !g_str_equal(priv->theme, theme))
const gchar *theme = g_value_get_string(value);
if (!priv->theme || !g_str_equal(priv->theme, theme))
{
if(priv->theme)
if (priv->theme)
{
g_free(priv->theme);
}
@ -374,13 +374,13 @@ int diya_shell_run(DiyaShell *shell, int argc, char **argv)
* create shell config dir if not exists
*/
// theme dir
gchar* path = g_strconcat(g_get_user_config_dir(), "/diya/themes/", NULL);
g_mkdir_with_parents((const gchar*)path,0755);
gchar *path = g_strconcat(g_get_user_config_dir(), "/diya/themes/", NULL);
g_mkdir_with_parents((const gchar *)path, 0755);
g_free(path);
// keymap dir
path = g_strconcat(g_get_user_config_dir(), "/diya/xkb/", NULL);
g_mkdir_with_parents((const gchar*)path,0755);
g_mkdir_with_parents((const gchar *)path, 0755);
g_free(path);
int status = g_application_run(G_APPLICATION(app), argc, argv);

View File

@ -94,19 +94,6 @@ static void diya_vkb_key_class_init(DiyaVkbKeyClass *class)
// gobject_class->set_property = diya_lock_session_set_property;
// gobject_class->get_property = diya_lock_session_get_property;
base_class->to_string = diya_vkb_key_to_string;
g_signal_new("modifier-changed",
DIYA_TYPE_VIRTUAL_KEYBOARD,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
G_SIGNAL_RUN_FIRST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
0,
NULL);
}
const gchar *diya_vkb_key_get_keycap(DiyaVkbKey *key, uint32_t shift_level)
@ -205,6 +192,18 @@ static void diya_virtual_keyboard_class_init(DiyaVirtualKeyboardClass *class)
// gobject_class->set_property = diya_lock_session_set_property;
// gobject_class->get_property = diya_lock_session_get_property;
base_class->to_string = diya_virtual_keyboard_to_string;
g_signal_new(DIYA_SIGNAL_VKB_MODIFIER_CHANGED,
DIYA_TYPE_VIRTUAL_KEYBOARD,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
G_SIGNAL_RUN_FIRST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
0,
NULL);
}
/*
@ -423,7 +422,7 @@ void diya_virtual_keyboard_send_key(DiyaVirtualKeyboard *self, DiyaVkbKey* key,
}
if(old_mods != self->key_mods)
{
g_signal_emit_by_name(self,"modifier-changed", NULL);
g_signal_emit_by_name(self,DIYA_SIGNAL_VKB_MODIFIER_CHANGED, NULL);
}
}

View File

@ -3,6 +3,9 @@
#include "shell.h"
#define DIYA_SIGNAL_VKB_MODIFIER_CHANGED "modifier-changed"
#define DIYA_SIGNAL_VKB_KEY_PRESSED "pressed"
#define DIYA_SIGNAL_VKB_KEY_RELEASED "released"
typedef enum
{
VKB_KEY_STATE_RELEASED = 0 /*WL_KEYBOARD_KEY_STATE_RELEASED*/,

View File

@ -60,6 +60,12 @@ static void diya_dashboard_widget_init(DiyaDashboardWidget * self)
// gtk_widget_set_can_focus(GTK_WIDGET(self), true);
//gtk_widget_set_name(GTK_WIDGET(dashboard),NAMESPACE);
//gtk_window_set_default_size(GTK_WINDOW(dashboard), 48, 48);
// event controller
//GtkEventController *event_controller = gtk_event_controller_key_new();
//g_signal_connect(event_controller, "key-pressed", G_CALLBACK(on_diya_dashboard_key_press), self);
// gtk_widget_add_controller(GTK_WIDGET(self), event_controller);
}
static void diya_dashboard_set_property(GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)

View File

@ -81,8 +81,8 @@ static void diya_vkb_button_init(DiyaVkbButton *self)
}
// event handle
GtkGesture *controller = gtk_gesture_click_new();
g_signal_connect(controller, "pressed", G_CALLBACK(diya_vkb_button_event), "pressed");
g_signal_connect(controller, "released", G_CALLBACK(diya_vkb_button_event), "released");
g_signal_connect(controller, "pressed", G_CALLBACK(diya_vkb_button_event), DIYA_SIGNAL_VKB_KEY_PRESSED);
g_signal_connect(controller, "released", G_CALLBACK(diya_vkb_button_event), DIYA_SIGNAL_VKB_KEY_RELEASED);
gtk_widget_add_controller(GTK_WIDGET(self), GTK_EVENT_CONTROLLER(controller));
}
@ -203,7 +203,7 @@ static void diya_virtual_keyboard_widget_class_init(DiyaVirtualKeyboardWidgetCla
gobject_class->dispose = diya_virtual_keyboard_widget_dispose;
gtk_widget_class_set_css_name(GTK_WIDGET_CLASS(class), "diya-vkb");
gtk_widget_class_set_layout_manager_type(GTK_WIDGET_CLASS(class), GTK_TYPE_GRID_LAYOUT);
g_signal_new("pressed",
g_signal_new(DIYA_SIGNAL_VKB_KEY_PRESSED,
DIYA_TYPE_VKB_BUTTON,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
@ -215,7 +215,7 @@ static void diya_virtual_keyboard_widget_class_init(DiyaVirtualKeyboardWidgetCla
G_TYPE_NONE,
0,
NULL);
g_signal_new("released",
g_signal_new(DIYA_SIGNAL_VKB_KEY_RELEASED,
DIYA_TYPE_VKB_BUTTON,
G_SIGNAL_DETAILED |
G_SIGNAL_ACTION |
@ -276,7 +276,7 @@ void diya_virtual_keyboard_widget_set_keyboard(DiyaVirtualKeyboardWidget* self,
g_debug("set button key: %s", diya_object_to_string(key));
if(diya_vkb_key_is_modifier(key))
{
button->mod_sig_id = g_signal_connect(self->vkb, "modifier-changed", G_CALLBACK(on_kb_modifier_changed), button);
button->mod_sig_id = g_signal_connect(self->vkb, DIYA_SIGNAL_VKB_MODIFIER_CHANGED, G_CALLBACK(on_kb_modifier_changed), button);
}
}
diya_vkb_button_set_key(button, key);