Merge branch 'a11y' of github.com:ueno/eekboard into a11y
This commit is contained in:
@ -45,6 +45,8 @@ PKG_CHECK_MODULES([LIBFAKEKEY], [libfakekey], ,
|
||||
[AC_MSG_ERROR([libfakekey not found])])
|
||||
PKG_CHECK_MODULES([CSPI], [cspi-1.0], ,
|
||||
[AC_MSG_ERROR([AT-SPI C not found])])
|
||||
PKG_CHECK_MODULES([NOTIFY], [libnotify], ,
|
||||
[AC_MSG_ERROR([libnotify not found])])
|
||||
|
||||
AC_MSG_CHECKING([whether you enable Vala language support])
|
||||
AC_ARG_ENABLE(vala,
|
||||
|
||||
@ -26,7 +26,8 @@ eekboard_CFLAGS = \
|
||||
$(XKB_CFLAGS) \
|
||||
$(LIBXKLAVIER_CFLAGS) \
|
||||
$(LIBFAKEKEY_CFLAGS) \
|
||||
$(CSPI_CFLAGS)
|
||||
$(CSPI_CFLAGS) \
|
||||
$(NOTIFY_CFLAGS)
|
||||
|
||||
eekboard_LDFLAGS = \
|
||||
$(top_builddir)/eek/libeek.la \
|
||||
@ -38,7 +39,8 @@ eekboard_LDFLAGS = \
|
||||
$(XKB_LIBS) \
|
||||
$(LIBXKLAVIER_LIBS) \
|
||||
$(LIBFAKEKEY_LIBS) \
|
||||
$(CSPI_LIBS)
|
||||
$(CSPI_LIBS) \
|
||||
$(NOTIFY_LIBS)
|
||||
|
||||
if HAVE_CLUTTER
|
||||
eekboard_CFLAGS += $(CLUTTER_CFLAGS) $(CLUTTER_GTK_CFLAGS)
|
||||
|
||||
@ -34,6 +34,7 @@
|
||||
#include <libxklavier/xklavier.h>
|
||||
#include <fakekey/fakekey.h>
|
||||
#include <cspi/spi.h>
|
||||
#include <libnotify/notify.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
@ -81,6 +82,7 @@ struct _Eekboard {
|
||||
gboolean accessibility_enabled;
|
||||
Display *display;
|
||||
FakeKey *fakekey;
|
||||
GConfClient *gconfc;
|
||||
GtkWidget *widget, *window;
|
||||
gint width, height;
|
||||
XklEngine *engine;
|
||||
@ -1161,6 +1163,20 @@ print_option_group (XklConfigRegistry *registry,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
on_notify_never_show (NotifyNotification *notification,
|
||||
char *action,
|
||||
gpointer user_data)
|
||||
{
|
||||
Eekboard *eekboard = user_data;
|
||||
GError *error;
|
||||
|
||||
gconf_client_set_bool (eekboard->gconfc,
|
||||
"/apps/eekboard/inhibit-startup-notify",
|
||||
TRUE,
|
||||
&error);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
@ -1170,8 +1186,8 @@ main (int argc, char *argv[])
|
||||
gboolean accessibility_enabled = FALSE;
|
||||
Eekboard *eekboard;
|
||||
GtkWidget *widget, *vbox, *menubar, *window;
|
||||
GConfClient *gconfc;
|
||||
GOptionContext *context;
|
||||
GConfClient *gconfc;
|
||||
GError *error;
|
||||
|
||||
context = g_option_context_new ("eekboard");
|
||||
@ -1189,6 +1205,7 @@ main (int argc, char *argv[])
|
||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||
#endif
|
||||
|
||||
error = NULL;
|
||||
gconfc = gconf_client_get_default ();
|
||||
if (gconf_client_get_bool (gconfc,
|
||||
"/desktop/gnome/interface/accessibility",
|
||||
@ -1274,13 +1291,35 @@ main (int argc, char *argv[])
|
||||
gtk_widget_show_all (window);
|
||||
gtk_widget_set_size_request (widget, -1, -1);
|
||||
|
||||
notify_init ("eekboard");
|
||||
eekboard->window = window;
|
||||
eekboard->gconfc = gconfc;
|
||||
if (eekboard->accessibility_enabled) {
|
||||
fprintf (stderr,
|
||||
NotifyNotification *notification;
|
||||
|
||||
error = NULL;
|
||||
if (!gconf_client_get_bool (eekboard->gconfc,
|
||||
"/apps/eekboard/inhibit-startup-notify",
|
||||
&error)) {
|
||||
notification = notify_notification_new
|
||||
("eekboard started in background",
|
||||
"As GNOME accessibility support enabled, "
|
||||
"eekboard is starting without a window.\n"
|
||||
"To make eekboard show up, click on some window with "
|
||||
"an editable widget.\n");
|
||||
"an editable widget.",
|
||||
NULL,
|
||||
NULL);
|
||||
notify_notification_add_action
|
||||
(notification,
|
||||
"dont-ask",
|
||||
"Don't show up",
|
||||
NOTIFY_ACTION_CALLBACK(on_notify_never_show),
|
||||
eekboard,
|
||||
NULL);
|
||||
error = NULL;
|
||||
notify_notification_show (notification, &error);
|
||||
}
|
||||
|
||||
gtk_widget_hide (window);
|
||||
|
||||
focusListener = SPI_createAccessibleEventListener (a11y_focus_listener,
|
||||
|
||||
Reference in New Issue
Block a user