From e598847994e026bc935cab1017df20e53b9d5345 Mon Sep 17 00:00:00 2001 From: DanyLE Date: Sat, 14 Jun 2025 15:23:14 +0200 Subject: [PATCH] improve: using GtkRevealer to show/hide virtual keyboard in login shell --- src/login-shell.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/login-shell.c b/src/login-shell.c index a4fd046..c8a162d 100644 --- a/src/login-shell.c +++ b/src/login-shell.c @@ -19,6 +19,7 @@ struct _DiyaLoginShell GtkWidget *status; guint bus_watch_id; GtkWidget *vkb_widget; + GtkWidget *revealer; GList *windows; }; @@ -166,11 +167,6 @@ static void do_login(GtkButton *button, DiyaLoginShell *self) // g_application_quit(G_APPLICATION(self->app)); } -static void show_vkb(GtkToggleButton *button, DiyaLoginShell *self) -{ - gtk_widget_set_visible(GTK_WIDGET(self->vkb_widget), gtk_toggle_button_get_active(button)); -} - static void add_new_monitor(DiyaLoginShell *self, GdkMonitor *monitor, gint position) { GtkWindow *window = GTK_WINDOW(gtk_application_window_new(diya_shell_get_application(DIYA_SHELL(self)))); @@ -231,7 +227,6 @@ static void add_new_monitor(DiyaLoginShell *self, GdkMonitor *monitor, gint posi gtk_grid_attach(GTK_GRID(child_grid), button, 1, 0, 1, 1); gtk_box_append(GTK_BOX(box), child_grid); gtk_widget_set_tooltip_text(button, "Show virtual keyboard"); - g_signal_connect (button, "toggled",G_CALLBACK (show_vkb),self); gtk_widget_set_can_focus(GTK_WIDGET(button), false); self->status = gtk_label_new(NULL); @@ -245,9 +240,15 @@ static void add_new_monitor(DiyaLoginShell *self, GdkMonitor *monitor, gint posi gtk_widget_set_halign(box, GTK_ALIGN_CENTER); gtk_box_set_spacing(GTK_BOX(box), 10); + self->revealer = gtk_revealer_new(); self->vkb_widget = diya_virtual_keyboard_widget_new(diya_shell_get_virtual_keyboard(DIYA_SHELL(self), "fr")); - gtk_box_append(GTK_BOX(box), self->vkb_widget); - gtk_widget_set_visible(self->vkb_widget, false); + gtk_revealer_set_child(GTK_REVEALER(self->revealer), self->vkb_widget); + gtk_revealer_set_reveal_child(GTK_REVEALER(self->revealer), false); + gtk_revealer_set_transition_type(GTK_REVEALER(self->revealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP); + gtk_box_append(GTK_BOX(box), self->revealer); + + g_object_bind_property(button, "active", self->revealer, "reveal-child",G_BINDING_BIDIRECTIONAL); + //gtk_widget_set_visible(self->vkb_widget, false); gtk_grid_attach(GTK_GRID(grid), box, 0, 1, 1, 1); gtk_widget_set_hexpand(box, true);