improve: using GtkRevealer to show/hide virtual keyboard in login shell

This commit is contained in:
DanyLE 2025-06-14 15:23:14 +02:00
parent b10cfab3ba
commit e598847994

View File

@ -19,6 +19,7 @@ struct _DiyaLoginShell
GtkWidget *status; GtkWidget *status;
guint bus_watch_id; guint bus_watch_id;
GtkWidget *vkb_widget; GtkWidget *vkb_widget;
GtkWidget *revealer;
GList *windows; GList *windows;
}; };
@ -166,11 +167,6 @@ static void do_login(GtkButton *button, DiyaLoginShell *self)
// g_application_quit(G_APPLICATION(self->app)); // 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) 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)))); 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_grid_attach(GTK_GRID(child_grid), button, 1, 0, 1, 1);
gtk_box_append(GTK_BOX(box), child_grid); gtk_box_append(GTK_BOX(box), child_grid);
gtk_widget_set_tooltip_text(button, "Show virtual keyboard"); 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); gtk_widget_set_can_focus(GTK_WIDGET(button), false);
self->status = gtk_label_new(NULL); 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_widget_set_halign(box, GTK_ALIGN_CENTER);
gtk_box_set_spacing(GTK_BOX(box), 10); 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")); 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_revealer_set_child(GTK_REVEALER(self->revealer), self->vkb_widget);
gtk_widget_set_visible(self->vkb_widget, false); 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_grid_attach(GTK_GRID(grid), box, 0, 1, 1, 1);
gtk_widget_set_hexpand(box, true); gtk_widget_set_hexpand(box, true);