diff options
Diffstat (limited to 'community/lightdm-gtk3-greeter/onscreen-keyboard.patch')
-rwxr-xr-x | community/lightdm-gtk3-greeter/onscreen-keyboard.patch | 306 |
1 files changed, 306 insertions, 0 deletions
diff --git a/community/lightdm-gtk3-greeter/onscreen-keyboard.patch b/community/lightdm-gtk3-greeter/onscreen-keyboard.patch new file mode 100755 index 000000000..6db01d3f6 --- /dev/null +++ b/community/lightdm-gtk3-greeter/onscreen-keyboard.patch @@ -0,0 +1,306 @@ +diff -aur lightdm-gtk-greeter-1.5.1.src/data/lightdm-gtk-greeter.conf lightdm-gtk-greeter-1.5.1.patch/data/lightdm-gtk-greeter.conf +--- lightdm-gtk-greeter-1.5.1.src/data/lightdm-gtk-greeter.conf 2013-02-11 00:19:17.000000000 +1100 ++++ lightdm-gtk-greeter-1.5.1.patch/data/lightdm-gtk-greeter.conf 2013-02-20 19:17:39.382817993 +1100 +@@ -9,6 +9,7 @@ + # xft-rgba = Type of subpixel antialiasing (none, rgb, bgr, vrgb or vbgr) + # show-language-selector (true or false) + # show-indicators = semi-colon ";" separated list of allowed indicator modules (e.g. indicator-sound.so) ++# keyboard = Command to launch on screen keyboard. Ensure it does not steal focus. + # + [greeter] + #background= +@@ -21,3 +22,4 @@ + #xft-rgba= + #show-language-selector= + #show-indicators= ++#keyboard= +diff -aur lightdm-gtk-greeter-1.5.1.src/src/lightdm-gtk-greeter.c lightdm-gtk-greeter-1.5.1.patch/src/lightdm-gtk-greeter.c +--- lightdm-gtk-greeter-1.5.1.src/src/lightdm-gtk-greeter.c 2013-02-11 00:48:21.000000000 +1100 ++++ lightdm-gtk-greeter-1.5.1.patch/src/lightdm-gtk-greeter.c 2013-02-20 20:09:30.219150045 +1100 +@@ -23,6 +23,7 @@ + #include <cairo-xlib.h> + #include <gdk-pixbuf/gdk-pixbuf.h> + #include <gdk/gdkx.h> ++#include <glib.h> + + #ifdef HAVE_LIBINDICATOR + #include <libindicator/indicator-object.h> +@@ -44,6 +45,7 @@ + static GtkComboBox *user_combo; + static GtkComboBox *session_combo; + static GtkComboBox *language_combo; ++static GtkCheckMenuItem *keyboard_menuitem; + static gchar *default_font_name, *default_theme_name, *default_icon_theme_name; + static GdkPixbuf *default_background_pixbuf = NULL; + #if GTK_CHECK_VERSION (3, 0, 0) +@@ -52,6 +54,10 @@ + static GdkColor *default_background_color = NULL; + #endif + static gboolean cancelling = FALSE, prompted = FALSE; ++static gchar **a11y_keyboard_command; ++static int a11y_kbd_pid = 0; ++static GPid *a11y_keyboard_pid = &a11y_kbd_pid; ++static GError *a11y_keyboard_error; + + + #ifdef HAVE_LIBINDICATOR +@@ -649,7 +655,10 @@ + if (lightdm_greeter_get_is_authenticated (greeter)) + { + if (prompted) +- start_session (); ++ { ++ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (keyboard_menuitem), FALSE); ++ start_session (); ++ } + } + else + { +@@ -864,6 +873,32 @@ + } + } + ++void a11y_keyboard_cb (GtkWidget *widget); ++G_MODULE_EXPORT ++void ++a11y_keyboard_cb (GtkWidget *widget) ++{ ++ if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget))) ++ { ++ if (!g_spawn_async(NULL, a11y_keyboard_command, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, a11y_keyboard_pid, &a11y_keyboard_error)) ++ { ++ g_debug ("a11y keyboard command error : '%s'", a11y_keyboard_error->message); ++ a11y_kbd_pid = 0; ++ g_clear_error(&a11y_keyboard_error); ++ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), FALSE); ++ } ++ } ++ else ++ { ++ if (a11y_kbd_pid != 0) ++ { ++ kill (a11y_kbd_pid, SIGTERM); ++ g_spawn_close_pid(*a11y_keyboard_pid); ++ a11y_kbd_pid = 0; ++ } ++ } ++} ++ + static void + sigterm_cb (int signum) + { +@@ -1190,6 +1225,13 @@ + g_object_set (gtk_settings_get_default (), "gtk-xft-rgba", value, NULL); + g_free (value); + ++ /* Get a11y on screen keyboard command*/ ++ gint argp; ++ value = g_key_file_get_value (config, "greeter", "keyboard", NULL); ++ g_debug ("a11y keyboard command is '%s'", value); ++ g_shell_parse_argv (value, &argp, &a11y_keyboard_command, NULL); ++ g_free (value); ++ + builder = gtk_builder_new (); + if (!gtk_builder_add_from_string (builder, lightdm_gtk_greeter_ui, + lightdm_gtk_greeter_ui_length, &error)) +@@ -1212,6 +1254,7 @@ + language_combo = GTK_COMBO_BOX (gtk_builder_get_object (builder, "language_combobox")); + panel_window = GTK_WINDOW (gtk_builder_get_object (builder, "panel_window")); + user_avatar = GTK_IMAGE (gtk_builder_get_object (builder, "user_avatar")); ++ keyboard_menuitem = GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "keyboard_menuitem")); + + gtk_label_set_text (GTK_LABEL (gtk_builder_get_object (builder, "hostname_label")), lightdm_get_hostname ()); + +@@ -1264,7 +1307,7 @@ + #endif + gtk_widget_show (hbox); + gtk_container_add (GTK_CONTAINER (menuitem), hbox); +- image = gtk_image_new_from_icon_name ("system-shutdown", GTK_ICON_SIZE_MENU); ++ image = gtk_image_new_from_icon_name ("system-shutdown", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image); + gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0); + +@@ -1276,7 +1319,7 @@ + #endif + gtk_widget_show (hbox); + gtk_container_add (GTK_CONTAINER (menuitem), hbox); +- image = gtk_image_new_from_icon_name ("preferences-desktop-accessibility", GTK_ICON_SIZE_MENU); ++ image = gtk_image_new_from_icon_name ("preferences-desktop-accessibility", GTK_ICON_SIZE_BUTTON); + gtk_widget_show (image); + gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, TRUE, 0); + +@@ -1377,6 +1420,11 @@ + gtk_widget_show (GTK_WIDGET (login_window)); + gdk_window_focus (gtk_widget_get_window (GTK_WIDGET (login_window)), GDK_CURRENT_TIME); + ++ if (a11y_keyboard_command) ++ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (keyboard_menuitem), TRUE); ++ else ++ gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "keyboard_menuitem"))); ++ + gtk_main (); + + if (default_background_pixbuf) +diff -aur lightdm-gtk-greeter-1.5.1.src/src/lightdm-gtk-greeter.glade lightdm-gtk-greeter-1.5.1.patch/src/lightdm-gtk-greeter.glade +--- lightdm-gtk-greeter-1.5.1.src/src/lightdm-gtk-greeter.glade 2013-02-10 23:48:19.000000000 +1100 ++++ lightdm-gtk-greeter-1.5.1.patch/src/lightdm-gtk-greeter.glade 2013-02-20 17:11:01.968469713 +1100 +@@ -215,6 +215,7 @@ + <object class="GtkWindow" id="panel_window"> + <property name="name">panel_window</property> + <property name="can_focus">False</property> ++ <property name="default_height">40</property> + <property name="decorated">False</property> + <property name="has_resize_grip">False</property> + <child> +@@ -309,6 +310,16 @@ + <signal name="toggled" handler="a11y_contrast_cb" swapped="no"/> + </object> + </child> ++ <child> ++ <object class="GtkCheckMenuItem" id="keyboard_menuitem"> ++ <property name="name">keyboard_menuitem</property> ++ <property name="visible">True</property> ++ <property name="can_focus">False</property> ++ <property name="use_action_appearance">False</property> ++ <property name="label" translatable="yes">On Screen Keyboard</property> ++ <signal name="toggled" handler="a11y_keyboard_cb" swapped="no"/> ++ </object> ++ </child> + </object> + </child> + </object> +diff -aur lightdm-gtk-greeter-1.5.1.src/src/lightdm-gtk-greeter-ui.h lightdm-gtk-greeter-1.5.1.patch/src/lightdm-gtk-greeter-ui.h +--- lightdm-gtk-greeter-1.5.1.src/src/lightdm-gtk-greeter-ui.h 2013-02-11 01:46:04.000000000 +1100 ++++ lightdm-gtk-greeter-1.5.1.patch/src/lightdm-gtk-greeter-ui.h 2013-02-20 17:52:56.172967000 +1100 +@@ -108,66 +108,73 @@ + "\">3</property></packing></child></object></child><child type=\"tab\"><" + "placeholder/></child></object></child></object><object class=\"GtkWindo" + "w\" id=\"panel_window\"><property name=\"name\">panel_window</property>" +- "<property name=\"can_focus\">False</property><property name=\"decorated" +- "\">False</property><property name=\"has_resize_grip\">False</property><" +- "child><object class=\"GtkMenuBar\" id=\"menubar\"><property name=\"name" +- "\">menubar</property><property name=\"visible\">True</property><propert" +- "y name=\"can_focus\">False</property><property name=\"pack_direction\">" +- "rtl</property><child><object class=\"GtkMenuItem\" id=\"power_menuitem\"" +- "><property name=\"name\">power_menuitem</property><property name=\"visi" +- "ble\">True</property><property name=\"can_focus\">False</property><prop" +- "erty name=\"use_action_appearance\">False</property><child type=\"subme" +- "nu\"><object class=\"GtkMenu\" id=\"power_menu\"><property name=\"name\"" +- ">power_menu</property><property name=\"visible\">True</property><proper" +- "ty name=\"can_focus\">False</property><child><object class=\"GtkMenuIte" +- "m\" id=\"suspend_menuitem\"><property name=\"name\">suspend_menuitem</p" +- "roperty><property name=\"visible\">True</property><property name=\"can_" +- "focus\">False</property><property name=\"use_action_appearance\">False<" +- "/property><property name=\"label\" translatable=\"yes\">Suspend</proper" +- "ty><signal name=\"activate\" handler=\"suspend_cb\" swapped=\"no\"/></o" +- "bject></child><child><object class=\"GtkMenuItem\" id=\"hibernate_menui" +- "tem\"><property name=\"name\">hibernate_menuitem</property><property na" +- "me=\"visible\">True</property><property name=\"can_focus\">False</prope" +- "rty><property name=\"use_action_appearance\">False</property><property " +- "name=\"label\" translatable=\"yes\">Hibernate</property><signal name=\"" +- "activate\" handler=\"hibernate_cb\" swapped=\"no\"/></object></child><c" +- "hild><object class=\"GtkMenuItem\" id=\"restart_menuitem\"><property na" +- "me=\"name\">restart_menuitem</property><property name=\"visible\">True<" +- "/property><property name=\"can_focus\">False</property><property name=\"" +- "use_action_appearance\">False</property><property name=\"label\" transl" +- "atable=\"yes\">Restart...</property><signal name=\"activate\" handler=\"" +- "restart_cb\" swapped=\"no\"/></object></child><child><object class=\"Gt" +- "kMenuItem\" id=\"shutdown_menuitem\"><property name=\"name\">shutdown_m" +- "enuitem</property><property name=\"visible\">True</property><property n" +- "ame=\"can_focus\">False</property><property name=\"use_action_appearanc" +- "e\">False</property><property name=\"label\" translatable=\"yes\">Shutd" +- "own...</property><signal name=\"activate\" handler=\"shutdown_cb\" swap" +- "ped=\"no\"/></object></child></object></child></object></child><child><" +- "object class=\"GtkMenuItem\" id=\"a11y_menuitem\"><property name=\"name" +- "\">a11y_menuitem</property><property name=\"visible\">True</property><p" +- "roperty name=\"can_focus\">False</property><property name=\"use_action_" +- "appearance\">False</property><child type=\"submenu\"><object class=\"Gt" +- "kMenu\" id=\"a11y_menu\"><property name=\"name\">a11y_menu</property><p" +- "roperty name=\"visible\">True</property><property name=\"can_focus\">Fa" +- "lse</property><child><object class=\"GtkCheckMenuItem\" id=\"large_font" +- "_menuitem\"><property name=\"name\">large_font_menuitem</property><prop" ++ "<property name=\"can_focus\">False</property><property name=\"default_h" ++ "eight\">40</property><property name=\"decorated\">False</property><prop" ++ "erty name=\"has_resize_grip\">False</property><child><object class=\"Gt" ++ "kMenuBar\" id=\"menubar\"><property name=\"name\">menubar</property><pr" ++ "operty name=\"visible\">True</property><property name=\"can_focus\">Fal" ++ "se</property><property name=\"pack_direction\">rtl</property><child><ob" ++ "ject class=\"GtkMenuItem\" id=\"power_menuitem\"><property name=\"name\"" ++ ">power_menuitem</property><property name=\"visible\">True</property><pr" ++ "operty name=\"can_focus\">False</property><property name=\"use_action_a" ++ "ppearance\">False</property><child type=\"submenu\"><object class=\"Gtk" ++ "Menu\" id=\"power_menu\"><property name=\"name\">power_menu</property><" ++ "property name=\"visible\">True</property><property name=\"can_focus\">F" ++ "alse</property><child><object class=\"GtkMenuItem\" id=\"suspend_menuit" ++ "em\"><property name=\"name\">suspend_menuitem</property><property name=" ++ "\"visible\">True</property><property name=\"can_focus\">False</property" ++ "><property name=\"use_action_appearance\">False</property><property nam" ++ "e=\"label\" translatable=\"yes\">Suspend</property><signal name=\"activ" ++ "ate\" handler=\"suspend_cb\" swapped=\"no\"/></object></child><child><o" ++ "bject class=\"GtkMenuItem\" id=\"hibernate_menuitem\"><property name=\"" ++ "name\">hibernate_menuitem</property><property name=\"visible\">True</pr" ++ "operty><property name=\"can_focus\">False</property><property name=\"us" ++ "e_action_appearance\">False</property><property name=\"label\" translat" ++ "able=\"yes\">Hibernate</property><signal name=\"activate\" handler=\"hi" ++ "bernate_cb\" swapped=\"no\"/></object></child><child><object class=\"Gt" ++ "kMenuItem\" id=\"restart_menuitem\"><property name=\"name\">restart_men" ++ "uitem</property><property name=\"visible\">True</property><property nam" ++ "e=\"can_focus\">False</property><property name=\"use_action_appearance\"" ++ ">False</property><property name=\"label\" translatable=\"yes\">Restart." ++ "..</property><signal name=\"activate\" handler=\"restart_cb\" swapped=\"" ++ "no\"/></object></child><child><object class=\"GtkMenuItem\" id=\"shutdo" ++ "wn_menuitem\"><property name=\"name\">shutdown_menuitem</property><prop" + "erty name=\"visible\">True</property><property name=\"can_focus\">False" + "</property><property name=\"use_action_appearance\">False</property><pr" +- "operty name=\"label\" translatable=\"yes\">Large Font</property><signal" +- " name=\"toggled\" handler=\"a11y_font_cb\" swapped=\"no\"/></object></c" +- "hild><child><object class=\"GtkCheckMenuItem\" id=\"high_contrast_menui" +- "tem\"><property name=\"name\">high_contrast_menuitem</property><propert" +- "y name=\"visible\">True</property><property name=\"can_focus\">False</p" +- "roperty><property name=\"use_action_appearance\">False</property><prope" +- "rty name=\"label\" translatable=\"yes\">High Contrast</property><signal" +- " name=\"toggled\" handler=\"a11y_contrast_cb\" swapped=\"no\"/></object" +- "></child></object></child></object></child></object></child></object><o" +- "bject class=\"GtkListStore\" id=\"session_liststore\"><columns><column " +- "type=\"gchararray\"/><column type=\"gchararray\"/></columns></object><o" +- "bject class=\"GtkListStore\" id=\"user_liststore\"><columns><column typ" +- "e=\"gchararray\"/><column type=\"gchararray\"/><column type=\"gint\"/><" +- "/columns></object></interface>" ++ "operty name=\"label\" translatable=\"yes\">Shutdown...</property><signa" ++ "l name=\"activate\" handler=\"shutdown_cb\" swapped=\"no\"/></object></" ++ "child></object></child></object></child><child><object class=\"GtkMenuI" ++ "tem\" id=\"a11y_menuitem\"><property name=\"name\">a11y_menuitem</prope" ++ "rty><property name=\"visible\">True</property><property name=\"can_focu" ++ "s\">False</property><property name=\"use_action_appearance\">False</pro" ++ "perty><child type=\"submenu\"><object class=\"GtkMenu\" id=\"a11y_menu\"" ++ "><property name=\"name\">a11y_menu</property><property name=\"visible\"" ++ ">True</property><property name=\"can_focus\">False</property><child><ob" ++ "ject class=\"GtkCheckMenuItem\" id=\"large_font_menuitem\"><property na" ++ "me=\"name\">large_font_menuitem</property><property name=\"visible\">Tr" ++ "ue</property><property name=\"can_focus\">False</property><property nam" ++ "e=\"use_action_appearance\">False</property><property name=\"label\" tr" ++ "anslatable=\"yes\">Large Font</property><signal name=\"toggled\" handle" ++ "r=\"a11y_font_cb\" swapped=\"no\"/></object></child><child><object clas" ++ "s=\"GtkCheckMenuItem\" id=\"high_contrast_menuitem\"><property name=\"n" ++ "ame\">high_contrast_menuitem</property><property name=\"visible\">True<" ++ "/property><property name=\"can_focus\">False</property><property name=\"" ++ "use_action_appearance\">False</property><property name=\"label\" transl" ++ "atable=\"yes\">High Contrast</property><signal name=\"toggled\" handler" ++ "=\"a11y_contrast_cb\" swapped=\"no\"/></object></child><child><object c" ++ "lass=\"GtkCheckMenuItem\" id=\"keyboard_menuitem\"><property name=\"nam" ++ "e\">keyboard_menuitem</property><property name=\"visible\">True</proper" ++ "ty><property name=\"can_focus\">False</property><property name=\"use_ac" ++ "tion_appearance\">False</property><property name=\"label\" translatable" ++ "=\"yes\">On Screen Keyboard</property><signal name=\"toggled\" handler=" ++ "\"a11y_keyboard_cb\" swapped=\"no\"/></object></child></object></child>" ++ "</object></child></object></child></object><object class=\"GtkListStore" ++ "\" id=\"session_liststore\"><columns><column type=\"gchararray\"/><colu" ++ "mn type=\"gchararray\"/></columns></object><object class=\"GtkListStore" ++ "\" id=\"user_liststore\"><columns><column type=\"gchararray\"/><column " ++ "type=\"gchararray\"/><column type=\"gint\"/></columns></object></interf" ++ "ace>" + }; + +-static const unsigned lightdm_gtk_greeter_ui_length = 10699u; ++static const unsigned lightdm_gtk_greeter_ui_length = 11147u; + |