improve: using GtkRevealer to show/hide virtual keyboard in login shell
This commit is contained in:
parent
b10cfab3ba
commit
e598847994
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user