Add support for GTK3 IM
cover Add support for GTK3 IM
The patch adds --enable-gtk3-im flag which builds a GTK+3 input method module.
I wasn't sure which branch Yocto would be using going forward but there's a corresponding patch for the matchbox-keyboard-0-1 branch in case that's useful:
git://github.com/jku/matchbox-keyboard gtk3-im/matchbox-keyboard-0-1
https://github.com/jku/matchbox-keyboard/tree/gtk3-im/matchbox-keyboard-0-1
- Jussi
The following changes since commit 897d67a440d509c632408ac7c2062559c2011072:
config-parser: Use matching printf format (2016-01-18 12:12:52 +0000)
are available in the git repository at:
git://github.com/jku/matchbox-keyboard gtk3-im/master
https://github.com/jku/matchbox-keyboard/tree/gtk3-im/master
Jussi Kukkonen (1):
gtk-im: Add support for GTK+3 as well as GTK+2
Makefile.am | 6 +----- configure.ac | 29 +++++++++++++++++++++-------- gtk-im/Makefile.am | 29 +++++++++++++++++++++++------ gtk-im/im-context.c | 2 +- gtk-im/im-protocol.c | 10 ++++++---- 5 files changed, 52 insertions(+), 24 deletions(-)
Signature · 1 line
2.8.0.rc3
PATCH 1/1 gtk-im: Add support for GTK+3 as well as GTK+2
* A few changes to avoid deprecated macros, otherwise the code works for both versions
* add --enable-gtk3-im configure flag
--- Makefile.am | 6 +----- configure.ac | 29 +++++++++++++++++++++-------- gtk-im/Makefile.am | 29 +++++++++++++++++++++++------ gtk-im/im-context.c | 2 +- gtk-im/im-protocol.c | 10 ++++++---- 5 files changed, 52 insertions(+), 24 deletions(-)
Makefile.am +1 -5
@@ -1,13 +1,9 @@ -SUBDIRS = src layouts +SUBDIRS = src layouts gtk-im if WANT_EXAMPLES SUBDIRS += examples endif -if WANT_IM -SUBDIRS += gtk-im -endif - if WANT_APPLET SUBDIRS += applet endif
configure.ac +21 -8
@@ -45,10 +45,16 @@ AC_ARG_ENABLE(examples, AM_CONDITIONAL(WANT_EXAMPLES, test x$enable_examples = xyes) AC_ARG_ENABLE(gtk-im, - AC_HELP_STRING([--enable-gtk-im], [enable GTK+ IM support [default=no]]), - enable_im=$enableval, - enable_im=no) -AM_CONDITIONAL(WANT_IM, test x$enable_im = xyes) + AC_HELP_STRING([--enable-gtk-im], [enable GTK2+ IM support [default=no]]), + enable_gtk2_im=$enableval, + enable_gtk2_im=no) +AM_CONDITIONAL(WANT_GTK2_IM, test x$enable_gtk2_im = xyes) + +AC_ARG_ENABLE(gtk3-im, + AC_HELP_STRING([--enable-gtk3-im], [enable GTK3+ IM support [default=no]]), + enable_gtk3_im=$enableval, + enable_gtk3_im=no) +AM_CONDITIONAL(WANT_GTK3_IM, test x$enable_gtk3_im = xyes) AC_ARG_ENABLE(applet, AC_HELP_STRING([--enable-applet], [enable panel applet [default=no]]),
@@ -98,16 +104,22 @@ if test x$enable_cairo = xyes; then AC_DEFINE_UNQUOTED(WANT_CAIRO, 1, [Use Cairo to paint libs]) fi -if test x$enable_examples = xyes || test x$enable_im = xyes || test x$enable_gtk_widget = xyes; then +if test x$enable_examples = xyes || test x$enable_gtk2_im = xyes || test x$enable_gtk_widget = xyes; then PKG_CHECK_MODULES(GTK2, gtk+-2.0) GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` AC_SUBST(GTK_VERSION) - - if test x$enable_im = xyes || test x$enable_gtk_widget = xyes; then + if test x$enable_gtk_widget = xyes; then LIBRARY_REQUIRES="$LIBRARY_REQUIRES gtk+-2.0" fi fi +if test x$enable_gtk3_im = xyes; then + PKG_CHECK_MODULES(GTK3, gtk+-3.0) + GTK3VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-3.0` + AC_SUBST(GTK3VERSION) +fi + + if test x$enable_applet = xyes; then PKG_CHECK_MODULES(APPLET, matchbox-panel) fi
@@ -260,6 +272,7 @@ echo " Building with Cairo: ${enable_cairo} Building Gtk widget: ${enable_gtk_widget} Building Examples: ${enable_examples} - Building GTK+ Input Method: ${enable_im} + Building GTK2+ Input Method: ${enable_gtk2_im} + Building GTK3+ Input Method: ${enable_gtk3_im} Building panel applet: ${enable_applet} "
gtk-im/Makefile.am +23 -6
@@ -1,14 +1,31 @@ AM_CFLAGS = -Wall -imdir = @libdir@/gtk-2.0/@GTK_VERSION@/immodules/ -im_LTLIBRARIES = libmb-im-invoker.la +if WANT_GTK2_IM +gtk2imdir = @libdir@/gtk-2.0/@GTK_VERSION@/immodules/ +gtk2im_LTLIBRARIES = libmbgtk2-im-invoker.la # TODO: remove lib prefix -libmb_im_invoker_la_CPPFLAGS = @GTK2_CFLAGS@ -I${top_srcdir}/src -libmb_im_invoker_la_LDFLAGS = -avoid-version -libmb_im_invoker_la_LIBADD = @GTK2_LIBS@ +libmbgtk2_im_invoker_la_CPPFLAGS = @GTK2_CFLAGS@ -I${top_srcdir}/src +libmbgtk2_im_invoker_la_LDFLAGS = -avoid-version +libmbgtk2_im_invoker_la_LIBADD = @GTK2_LIBS@ -libmb_im_invoker_la_SOURCES = \ +libmbgtk2_im_invoker_la_SOURCES = \ + im-module.c \ + im-context.h im-context.c \ + im-protocol.h im-protocol.c +endif + +if WANT_GTK3_IM +gtk3imdir = @libdir@/gtk-3.0/@GTK3VERSION@/immodules/ +gtk3im_LTLIBRARIES = libmbgtk3-im-invoker.la +# TODO: remove lib prefix + +libmbgtk3_im_invoker_la_CPPFLAGS = @GTK3_CFLAGS@ -I${top_srcdir}/src +libmbgtk3_im_invoker_la_LDFLAGS = -avoid-version +libmbgtk3_im_invoker_la_LIBADD = @GTK3_LIBS@ + +libmbgtk3_im_invoker_la_SOURCES = \ im-module.c \ im-context.h im-context.c \ im-protocol.h im-protocol.c +endif
gtk-im/im-context.c +1 -1
@@ -16,7 +16,7 @@* */ -#include <gtk/gtkimcontextsimple.h> +#include <gtk/gtk.h> #include "im-context.h" #include "im-protocol.h"
gtk-im/im-protocol.c +6 -4
@@ -29,24 +29,26 @@ protocol_send_event (MBKeyboardRemoteOperation op) {XEvent event;int xerror; +Display *display =gdk_x11_get_default_xdisplay (); +Window window =gdk_x11_get_default_root_xwindow ();memset (&event,0 ,sizeof (XEvent)); event.xclient.type = ClientMessage; - event.xclient.window =gdk_x11_get_default_root_xwindow (); + event.xclient.window = window; event.xclient.message_type =gdk_x11_get_xatom_by_name ("_MB_IM_INVOKER_COMMAND" ); event.xclient.format =32 ; event.xclient.data.l[0 ] = op;gdk_error_trap_push (); -XSendEvent (GDK_DISPLAY (), -gdk_x11_get_default_root_xwindow (), +XSendEvent (display, + window, False, SubstructureRedirectMask | SubstructureNotifyMask, &event); -XSync (GDK_DISPLAY (), False); +XSync (display, False);if ((xerror =gdk_error_trap_pop ())) {g_warning ("X error %d" , xerror);
Signature · 1 line
2.8.0.rc3