Files
main/desktop/misc/lxdm/files/onscreenkeyboard.patch
T

63 lines
2.0 KiB
Diff

X-Git-Url: https://git.lxde.org/gitweb/?p=lxde%2Flxdm.git;a=blobdiff_plain;f=src%2Fgreeter.c;h=0e26b6d42e9ddb1d0d9069d3ae034f8485086668;hp=65c74550b88488f1ad2cabca273cabca0fd0376d;hb=cee37e0d27c07023cb08925330ae2db691e2429c;hpb=7ed5f86780a2de415b590b6ec5136e15b1fd888d
diff --git a/src/greeter.c b/src/greeter.c
index 65c7455..0e26b6d 100644
--- a/src/greeter.c
+++ b/src/greeter.c
@@ -70,6 +70,7 @@ static GtkWidget* user_list;
static GtkWidget* sessions;
static GtkWidget* lang;
+static GtkWidget* onscreenkeyboard_btn;
static GtkWidget* exit_btn;
static GtkWidget* exit_menu;
@@ -81,6 +82,8 @@ static char* pass = NULL;
static char* ui_file = NULL;
static char *ui_nobody = NULL;
+static char* onscreenkeyboard_cmd = NULL;
+
static GIOChannel *greeter_io;
static int auto_login;
@@ -720,6 +723,15 @@ static void on_exit_clicked(GtkButton* exit_btn, gpointer user_data)
0, gtk_get_current_event_time() );
}
+static void on_screenkeyboard_clicked(GtkButton* screenkeyboard_btn,
+ gpointer user_data)
+{
+ gboolean res;
+ /* set the current xkb */
+ res=g_spawn_command_line_async(onscreenkeyboard_cmd, NULL);
+ printf("spawn onscreenkeyboard: %s %d\n", onscreenkeyboard_cmd, res);
+}
+
static void load_exit()
{
GtkWidget* item;
@@ -1248,6 +1260,21 @@ static void create_win()
load_exit();
}
+ onscreenkeyboard_btn = (GtkWidget*)gtk_builder_get_object(builder, "onscreenkeyboard");
+ onscreenkeyboard_cmd = g_key_file_get_string(config, "display", "onscreenkeyboard",NULL);
+
+ if(onscreenkeyboard_cmd && onscreenkeyboard_cmd[0])
+ {
+ gtk_widget_show(onscreenkeyboard_btn);
+ g_signal_connect(onscreenkeyboard_btn, "clicked", G_CALLBACK(on_screenkeyboard_clicked), NULL);
+ }
+ else
+ {
+ if (onscreenkeyboard_btn != NULL) {
+ gtk_widget_hide(onscreenkeyboard_btn);
+ }
+ }
+
ui_get_geometry(window,&rc);
gtk_window_move(GTK_WINDOW(win),rc.x,rc.y);
gtk_window_set_default_size(GTK_WINDOW(win),rc.width,rc.height);