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,6 +91,59 @@ 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)

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

@ -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);