[PATCH 12/12] text: Split text and input-method protocols

Jan Arne Petersen jpetersen at openismus.com
Thu Aug 30 10:16:17 PDT 2012


From: Jan Arne Petersen <jpetersen at openismus.com>

It makes sense to split the interfaces in a text and a input-method
protocol for now (only the text protocol needs to be used in toolkits).
---
 clients/.gitignore        |  2 ++
 clients/Makefile.am       |  6 ++--
 clients/keyboard.c        |  2 +-
 protocol/Makefile.am      |  5 +--
 protocol/input-method.xml | 81 +++++++++++++++++++++++++++++++++++++++++++++++
 protocol/text.xml         | 80 ++++++++++++++++------------------------------
 src/.gitignore            |  2 ++
 src/Makefile.am           |  4 +++
 src/text-backend.c        |  1 +
 9 files changed, 125 insertions(+), 58 deletions(-)
 create mode 100644 protocol/input-method.xml

diff --git a/clients/.gitignore b/clients/.gitignore
index 014c0fb..07e71e7 100644
--- a/clients/.gitignore
+++ b/clients/.gitignore
@@ -28,5 +28,7 @@ wscreensaver
 editor
 text-protocol.c
 text-client-protocol.h
+input-method-protocol.c
+input-method-client-protocol.h
 keyboard
 weston-info
diff --git a/clients/Makefile.am b/clients/Makefile.am
index 71a37bd..bbe14f3 100644
--- a/clients/Makefile.am
+++ b/clients/Makefile.am
@@ -111,8 +111,8 @@ keyboard_SOURCES = 				\
 	keyboard.c				\
 	desktop-shell-client-protocol.h		\
 	desktop-shell-protocol.c		\
-	text-client-protocol.h			\
-	text-protocol.c
+	input-method-protocol.c			\
+	input-method-client-protocol.h
 keyboard_LDADD = $(toolkit_libs)
 
 weston_info_SOURCES =				\
@@ -140,6 +140,8 @@ BUILT_SOURCES =					\
 	text-cursor-position-protocol.c		\
 	text-protocol.c				\
 	text-client-protocol.h			\
+	input-method-protocol.c			\
+	input-method-client-protocol.h		\
 	desktop-shell-client-protocol.h		\
 	desktop-shell-protocol.c		\
 	tablet-shell-client-protocol.h		\
diff --git a/clients/keyboard.c b/clients/keyboard.c
index 50ede54..4e5e0b0 100644
--- a/clients/keyboard.c
+++ b/clients/keyboard.c
@@ -29,7 +29,7 @@
 #include <cairo.h>
 
 #include "window.h"
-#include "text-client-protocol.h"
+#include "input-method-client-protocol.h"
 #include "desktop-shell-client-protocol.h"
 
 struct virtual_keyboard {
diff --git a/protocol/Makefile.am b/protocol/Makefile.am
index 22cb2c9..94f0ea7 100644
--- a/protocol/Makefile.am
+++ b/protocol/Makefile.am
@@ -2,5 +2,6 @@ EXTRA_DIST =					\
 	desktop-shell.xml			\
 	screenshooter.xml			\
 	tablet-shell.xml			\
-	xserver.xml					\
-	text.xml
+	xserver.xml				\
+	text.xml				\
+	input-method.xml
diff --git a/protocol/input-method.xml b/protocol/input-method.xml
new file mode 100644
index 0000000..be68d85
--- /dev/null
+++ b/protocol/input-method.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<protocol name="input_method">
+  <copyright>
+    Copyright © 2012 Intel Corporation
+
+    Permission to use, copy, modify, distribute, and sell this
+    software and its documentation for any purpose is hereby granted
+    without fee, provided that the above copyright notice appear in
+    all copies and that both that copyright notice and this permission
+    notice appear in supporting documentation, and that the name of
+    the copyright holders not be used in advertising or publicity
+    pertaining to distribution of the software without specific,
+    written prior permission.  The copyright holders make no
+    representations about the suitability of this software for any
+    purpose.  It is provided "as is" without express or implied
+    warranty.
+
+    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+    THIS SOFTWARE.
+  </copyright>
+
+
+  <interface name="input_method_context" version="1">
+    <description summary="input method context">
+      Corresponds to a text model on input method side. An input method context
+      is created on text mode activation on the input method side. It allows to
+      receive information about the text model from the application via events.
+      Input method contexts do not keep state after deactivation and should be
+      destroyed after deactivation is handled.
+    </description>
+    <request name="destroy" type="destructor"/>
+    <request name="commit_string">
+      <description summary="commit string">
+        Send the commit string text to the applications text model.
+      </description>
+      <arg name="text" type="string"/>
+      <arg name="index" type="uint"/>
+    </request>
+    <event name="surrounding_text">
+      <description summary="surrounding text event">
+        The plain surrounding text around the input position. Cursor is the
+        position within the surrounding text. Anchor is the position of the
+        selection anchor within the surrounding text. If there is no selected
+        text anchor is the same as cursor.
+      </description>
+      <arg name="text" type="string"/>
+      <arg name="cursor" type="uint"/>
+      <arg name="anchor" type="uint"/>
+    </event>
+  </interface>
+
+  <interface name="input_method" version="1">
+    <description summary="input method">
+      An input method object is responsible to compose text in response to
+      input from hardware or virtual keyboards. There is one input method
+      object per seat. On activate there is a new input method context object
+      created which allows the input method to communicate with the text model.
+    </description>
+    <event name="activate">
+      <description summary="activate event">
+        A text model was activated. Creates an input method context object
+        which allows communication with the text model.
+      </description>
+      <arg name="id" type="new_id" interface="input_method_context"/>
+    </event>
+    <event name="deactivate">
+      <description summary="activate event">
+        The text model corresponding to the context argument was deactivated.
+        The input method context should be destroyed after deactivation is
+        handled.
+      </description>
+      <arg name="context" type="object" interface="input_method_context"/>
+    </event>
+  </interface>
+</protocol>
diff --git a/protocol/text.xml b/protocol/text.xml
index 6a99eba..b280a28 100644
--- a/protocol/text.xml
+++ b/protocol/text.xml
@@ -1,4 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <protocol name="text">
+
+  <copyright>
+    Copyright © 2012 Intel Corporation
+
+    Permission to use, copy, modify, distribute, and sell this
+    software and its documentation for any purpose is hereby granted
+    without fee, provided that the above copyright notice appear in
+    all copies and that both that copyright notice and this permission
+    notice appear in supporting documentation, and that the name of
+    the copyright holders not be used in advertising or publicity
+    pertaining to distribution of the software without specific,
+    written prior permission.  The copyright holders make no
+    representations about the suitability of this software for any
+    purpose.  It is provided "as is" without express or implied
+    warranty.
+
+    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+    THIS SOFTWARE.
+  </copyright>
+
   <interface name="text_model" version="1">
     <description summary="text model">
       A model for text input. Adds support for text input and input methods to
@@ -88,57 +115,4 @@
       <arg name="id" type="new_id" interface="text_model"/>
     </request>
   </interface>
-
-  <interface name="input_method_context" version="1">
-    <description summary="input method context">
-      Corresponds to a text model on input method side. An input method context
-      is created on text mode activation on the input method side. It allows to
-      receive information about the text model from the application via events.
-      Input method contexts do not keep state after deactivation and should be
-      destroyed after deactivation is handled.
-    </description>
-    <request name="destroy" type="destructor"/>
-    <request name="commit_string">
-      <description summary="commit string">
-        Send the commit string text to the applications text model.
-      </description>
-      <arg name="text" type="string"/>
-      <arg name="index" type="uint"/>
-    </request>
-    <event name="surrounding_text">
-      <description summary="surrounding text event">
-        The plain surrounding text around the input position. Cursor is the
-        position within the surrounding text. Anchor is the position of the
-        selection anchor within the surrounding text. If there is no selected
-        text anchor is the same as cursor.
-      </description>
-      <arg name="text" type="string"/>
-      <arg name="cursor" type="uint"/>
-      <arg name="anchor" type="uint"/>
-    </event>
-  </interface>
-
-  <interface name="input_method" version="1">
-    <description summary="input method">
-      An input method object is responsible to compose text in response to
-      input from hardware or virtual keyboards. There is one input method
-      object per seat. On activate there is a new input method context object
-      created which allows the input method to communicate with the text model.
-    </description>
-    <event name="activate">
-      <description summary="activate event">
-        A text model was activated. Creates an input method context object
-        which allows communication with the text model.
-      </description>
-      <arg name="id" type="new_id" interface="input_method_context"/>
-    </event>
-    <event name="deactivate">
-      <description summary="activate event">
-        The text model corresponding to the context argument was deactivated.
-        The input method context should be destroyed after deactivation is
-        handled.
-      </description>
-      <arg name="context" type="object" interface="input_method_context"/>
-    </event>
-  </interface>
 </protocol>
diff --git a/src/.gitignore b/src/.gitignore
index cd68a3e..18efb53 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -13,3 +13,5 @@ desktop-shell-protocol.c
 desktop-shell-server-protocol.h
 text-protocol.c
 text-server-protocol.h
+input-method-protocol.c
+input-method-server-protocol.h
diff --git a/src/Makefile.am b/src/Makefile.am
index 8096849..7cf5266 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -28,6 +28,8 @@ weston_SOURCES =				\
 	text-backend.c				\
 	text-protocol.c				\
 	text-server-protocol.h			\
+	input-method-protocol.c			\
+	input-method-server-protocol.h		\
 	util.c					\
 	matrix.c				\
 	matrix.h				\
@@ -173,6 +175,8 @@ BUILT_SOURCES =					\
 	desktop-shell-server-protocol.h		\
 	text-protocol.c				\
 	text-server-protocol.h			\
+	input-method-protocol.c			\
+	input-method-server-protocol.h		\
 	git-version.h
 
 CLEANFILES = $(BUILT_SOURCES)
diff --git a/src/text-backend.c b/src/text-backend.c
index 3fd07b9..90fa868 100644
--- a/src/text-backend.c
+++ b/src/text-backend.c
@@ -25,6 +25,7 @@
 
 #include "compositor.h"
 #include "text-server-protocol.h"
+#include "input-method-server-protocol.h"
 
 struct input_method;
 struct input_method_context;
-- 
1.7.11.4



More information about the wayland-devel mailing list