onscreenkeyboard.patch 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. 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
  2. diff --git a/src/greeter.c b/src/greeter.c
  3. index 65c7455..0e26b6d 100644
  4. --- a/src/greeter.c
  5. +++ b/src/greeter.c
  6. @@ -70,6 +70,7 @@ static GtkWidget* user_list;
  7. static GtkWidget* sessions;
  8. static GtkWidget* lang;
  9. +static GtkWidget* onscreenkeyboard_btn;
  10. static GtkWidget* exit_btn;
  11. static GtkWidget* exit_menu;
  12. @@ -81,6 +82,8 @@ static char* pass = NULL;
  13. static char* ui_file = NULL;
  14. static char *ui_nobody = NULL;
  15. +static char* onscreenkeyboard_cmd = NULL;
  16. +
  17. static GIOChannel *greeter_io;
  18. static int auto_login;
  19. @@ -720,6 +723,15 @@ static void on_exit_clicked(GtkButton* exit_btn, gpointer user_data)
  20. 0, gtk_get_current_event_time() );
  21. }
  22. +static void on_screenkeyboard_clicked(GtkButton* screenkeyboard_btn,
  23. + gpointer user_data)
  24. +{
  25. + gboolean res;
  26. + /* set the current xkb */
  27. + res=g_spawn_command_line_async(onscreenkeyboard_cmd, NULL);
  28. + printf("spawn onscreenkeyboard: %s %d\n", onscreenkeyboard_cmd, res);
  29. +}
  30. +
  31. static void load_exit()
  32. {
  33. GtkWidget* item;
  34. @@ -1248,6 +1260,21 @@ static void create_win()
  35. load_exit();
  36. }
  37. + onscreenkeyboard_btn = (GtkWidget*)gtk_builder_get_object(builder, "onscreenkeyboard");
  38. + onscreenkeyboard_cmd = g_key_file_get_string(config, "display", "onscreenkeyboard",NULL);
  39. +
  40. + if(onscreenkeyboard_cmd && onscreenkeyboard_cmd[0])
  41. + {
  42. + gtk_widget_show(onscreenkeyboard_btn);
  43. + g_signal_connect(onscreenkeyboard_btn, "clicked", G_CALLBACK(on_screenkeyboard_clicked), NULL);
  44. + }
  45. + else
  46. + {
  47. + if (onscreenkeyboard_btn != NULL) {
  48. + gtk_widget_hide(onscreenkeyboard_btn);
  49. + }
  50. + }
  51. +
  52. ui_get_geometry(window,&rc);
  53. gtk_window_move(GTK_WINDOW(win),rc.x,rc.y);
  54. gtk_window_set_default_size(GTK_WINDOW(win),rc.width,rc.height);