Mercurial > kinput2.yaz
annotate lib/imlib/imattr.c @ 10:d1e9297afff9
imported patch 12_kinput2-v3.1-linespace.patch
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Mon, 08 Mar 2010 20:07:06 +0900 |
parents | 1f9e9cb00c6c |
children |
rev | line source |
---|---|
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1 #ifndef lint |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2 static char *rcsid = "$Id: imattr.c,v 1.18 2002/01/10 15:04:05 ishisone Exp $"; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
3 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
4 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
5 * Copyright (c) 1994 Software Research Associates, Inc. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
6 * |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
7 * Permission to use, copy, modify, and distribute this software and its |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
8 * documentation for any purpose and without fee is hereby granted, provided |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
9 * that the above copyright notice appear in all copies and that both that |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
10 * copyright notice and this permission notice appear in supporting |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
11 * documentation, and that the name of Software Research Associates not be |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
12 * used in advertising or publicity pertaining to distribution of the |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
13 * software without specific, written prior permission. Software Research |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
14 * Associates makes no representations about the suitability of this software |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
15 * for any purpose. It is provided "as is" without express or implied |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
16 * warranty. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
17 * |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
18 * Author: Makoto Ishisone, Software Research Associates, Inc., Japan |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
19 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
20 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
21 #include "im.h" |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
22 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
23 #ifndef XNSeparatorofNestedList |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
24 #define XNSeparatorofNestedList "separatorofNesttedList" |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
25 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
26 #ifndef XNPreeditState |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
27 #define XNPreeditState "preeditState" |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
28 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
29 #ifndef XIMPreeditEnable |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
30 #define XIMPreeditEnable 1L |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
31 #define XIMPreeditDisable 2L |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
32 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
33 #ifndef XNResetState |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
34 #define XNResetState "resetState" |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
35 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
36 #ifndef XIMInitialState |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
37 #define XIMInitialState 1L |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
38 #define XIMPreserveState 2L |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
39 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
40 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
41 #define PAD4(n) ((((n) + 3) / 4) * 4) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
42 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
43 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
44 * List of supported input styles. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
45 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
46 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
47 typedef struct { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
48 XIMStyle xim_style; /* X11R5 spec. */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
49 int conversion_style; /* kinput2 spec. */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
50 } InputStyle; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
51 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
52 static InputStyle styles[] = { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
53 { XIMPreeditPosition|XIMStatusArea, IMSTYLE_OVER_THE_SPOT }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
54 { XIMPreeditPosition|XIMStatusNothing, IMSTYLE_OVER_THE_SPOT }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
55 { XIMPreeditArea|XIMStatusArea, IMSTYLE_OFF_THE_SPOT }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
56 { XIMPreeditCallbacks|XIMStatusCallbacks, IMSTYLE_ON_THE_SPOT }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
57 { XIMPreeditCallbacks|XIMStatusNothing, IMSTYLE_ON_THE_SPOT }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
58 { XIMPreeditNothing|XIMStatusNothing, IMSTYLE_SEPARATE }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
59 { 0 }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
60 }; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
61 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
62 #define NEST_NONE 0 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
63 #define NEST_PREEDIT 1 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
64 #define NEST_STATUS 2 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
65 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
66 #define CHECK_ICATTR_SIZE(validsize, code) \ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
67 if (len != validsize) { badSizeError(icp, code); return -1; } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
68 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
69 #undef OP_C |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
70 #undef OP_S |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
71 #undef OP_G |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
72 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
73 #define OP_C 1 /* Create */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
74 #define OP_S 2 /* SetValues */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
75 #define OP_G 4 /* GetValues */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
76 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
77 typedef struct { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
78 char *name; /* attribute name */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
79 int type; /* type of attribute value */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
80 int valid_ops; /* valid operations for this attribute */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
81 int (*set_proc) _Pt_((IMIM *, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
82 int (*get_proc) _Pt_((IMIM *, unsigned int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
83 } IMAttribute; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
84 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
85 typedef struct { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
86 char *name; /* attribute name */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
87 int type; /* type of attribute value */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
88 int valid_ops; /* valid operations for this attribute */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
89 int (*set_proc) _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
90 int (*get_proc) _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
91 } ICAttribute; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
92 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
93 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
94 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
95 * IM attributes |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
96 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
97 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
98 static int getQueryInputStyle _Pt_((IMIM *imp, unsigned int id, int offset)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
99 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
100 static IMAttribute imAttributes[] = { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
101 { XNQueryInputStyle, TYPE_XIM_STYLES, OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
102 NULL, getQueryInputStyle }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
103 }; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
104 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
105 static int numImAttributes = XtNumber(imAttributes); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
106 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
107 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
108 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
109 * IC attributes |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
110 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
111 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
112 static int setInputStyle _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
113 static int setClientWindow _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
114 static int setFocusWindow _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
115 static int setPreeditAttributes _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
116 static int setStatusAttributes _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
117 static int setArea _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
118 static int setAreaNeeded _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
119 static int setForeground _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
120 static int setBackground _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
121 static int setColormap _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
122 static int setBgPixmap _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
123 static int setLineSpace _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
124 static int setCursor _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
125 static int setSpotLocation _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
126 static int setStdColormap _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
127 static int setFontSet _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
128 static int setPreeditState _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
129 static int setResetState _Pt_((IMIC *, char *, int, int, int, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
130 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
131 static int getPreeditAttributes _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
132 static int getStatusAttributes _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
133 static int getInputStyle _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
134 static int getClientWindow _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
135 static int getFocusWindow _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
136 static int getFilterEvents _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
137 static int getArea _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
138 static int getAreaNeeded _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
139 static int getSpotLocation _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
140 static int getColormap _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
141 static int getStdColormap _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
142 static int getForeground _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
143 static int getBackground _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
144 static int getBgPixmap _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
145 static int getFontSet _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
146 static int getLineSpace _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
147 static int getCursor _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
148 static int getPreeditState _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
149 static int getResetState _Pt_((IMIC *, unsigned int, int, int, char *, int)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
150 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
151 static ICAttribute icAttributes[] = { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
152 { XNInputStyle, TYPE_CARD32, OP_C|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
153 setInputStyle, getInputStyle }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
154 { XNClientWindow, TYPE_WINDOW, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
155 setClientWindow, getClientWindow }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
156 { XNFocusWindow, TYPE_WINDOW, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
157 setFocusWindow, getFocusWindow }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
158 { XNFilterEvents, TYPE_CARD32, OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
159 NULL, getFilterEvents }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
160 { XNPreeditAttributes, TYPE_NESTED_LIST, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
161 setPreeditAttributes, getPreeditAttributes }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
162 { XNStatusAttributes, TYPE_NESTED_LIST, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
163 setStatusAttributes, getStatusAttributes }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
164 { XNArea, TYPE_XRECTANGLE, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
165 setArea, getArea }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
166 { XNAreaNeeded, TYPE_XRECTANGLE, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
167 setAreaNeeded, getAreaNeeded }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
168 { XNSpotLocation, TYPE_XPOINT, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
169 setSpotLocation, getSpotLocation }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
170 { XNColormap, TYPE_CARD32, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
171 setColormap, getColormap }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
172 { XNStdColormap, TYPE_CARD32, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
173 setStdColormap, getStdColormap }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
174 { XNForeground, TYPE_CARD32, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
175 setForeground, getForeground }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
176 { XNBackground, TYPE_CARD32, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
177 setBackground, getBackground }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
178 { XNBackgroundPixmap, TYPE_CARD32, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
179 setBgPixmap, getBgPixmap }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
180 { XNFontSet, TYPE_XFONTSET, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
181 setFontSet, getFontSet }, |
10
d1e9297afff9
imported patch 12_kinput2-v3.1-linespace.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
9
diff
changeset
|
182 { XNLineSpace, TYPE_CARD32, OP_C|OP_S|OP_G, /* should be TYPE_INT32 */ |
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
183 setLineSpace, getLineSpace }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
184 { XNCursor, TYPE_CARD32, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
185 setCursor, getCursor }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
186 { XNSeparatorofNestedList, TYPE_SEPARATOR, OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
187 NULL, NULL }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
188 { XNPreeditState, TYPE_CARD32, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
189 setPreeditState, getPreeditState }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
190 { XNResetState, TYPE_CARD32, OP_C|OP_S|OP_G, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
191 setResetState, getResetState }, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
192 }; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
193 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
194 static int numIcAttributes = XtNumber(icAttributes); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
195 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
196 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
197 static unsigned int getC16 _Pt_((char *data, int order)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
198 static int getI16 _Pt_((char *data, int order)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
199 static unsigned long getC32 _Pt_((char *data, int order)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
200 static int validateClientWindow _Pt_((IMIC *icp)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
201 static int validateFocusWindow _Pt_((IMIC *icp)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
202 static void badSizeError _Pt_((IMIC *icp, int code)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
203 static void unnestedError _Pt_((IMIC *icp)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
204 static IMPSAttributes *getPSPtr _Pt_((IMIC *icp, int type)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
205 static int getIMValues _Pt_((IMIM *imp, char *data, int len, int offset)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
206 static int getICValues _Pt_((IMIC *icp, char *data, int len, int nest, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
207 int offset, int *sepp)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
208 static int setICValues _Pt_((IMIC *icp, char *data, int len, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
209 int major, int op)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
210 static int getPSAttributes _Pt_((IMIC *icp, unsigned int id, int nest, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
211 int offset, char *data, int len)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
212 static void changeFonts _Pt_((IMIC *icp, int preedit)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
213 static void fillCommonDefault _Pt_((IMIC *icp, unsigned long mask)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
214 static int getNaturalLineSpace _Pt_((IMIC *icp, int preedit)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
215 static void fillPSDefault _Pt_((IMIC *icp, int type, unsigned long mask)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
216 static int validateCommonAttr _Pt_((IMIC *icp, int checkonly)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
217 static int validatePSAttr _Pt_((IMIC *icp, int type, int checkonly)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
218 static void changeConversionAttributes _Pt_((IMIC *icp)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
219 static void computeAreaNeeded _Pt_((IMIC *icp)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
220 static void computeAreaForQuery _Pt_((IMIC *icp)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
221 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
222 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
223 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
224 * Functions reading out numbers from byte buffer |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
225 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
226 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
227 static unsigned int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
228 getC16(data, order) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
229 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
230 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
231 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
232 unsigned char *p = (unsigned char *)data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
233 unsigned int x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
234 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
235 x = (order == ORDER_BIG) ? ((p[0] << 8) | p[1]) : (p[0] | p[1] << 8); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
236 return x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
237 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
238 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
239 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
240 getI16(data, order) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
241 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
242 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
243 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
244 unsigned char *p = (unsigned char *)data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
245 long l; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
246 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
247 l = (order == ORDER_BIG) ? ((p[0] << 8) | p[1]) : (p[0] | p[1] << 8); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
248 return (l < 32768) ? (int)l : (int)(l - 65536L); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
249 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
250 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
251 static unsigned long |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
252 getC32(data, order) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
253 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
254 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
255 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
256 unsigned char *p = (unsigned char *)data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
257 unsigned long x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
258 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
259 if (order == ORDER_BIG) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
260 x = (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3]; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
261 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
262 x = p[0] | (p[1]<<8) | (p[2]<<16) | (p[3]<<24); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
263 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
264 return x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
265 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
266 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
267 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
268 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
269 * Functions that check the validity of resources. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
270 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
271 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
272 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
273 validateClientWindow(icp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
274 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
275 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
276 return IMValidateWindow(XtDisplay(icp->im->connection->proto_widget), |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
277 icp->common_attr.client, &icp->client_profile); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
278 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
279 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
280 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
281 validateFocusWindow(icp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
282 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
283 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
284 IMCommonAttributes *ap = &icp->common_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
285 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
286 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
287 * This function assumes that the client window has already |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
288 * been validated. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
289 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
290 if ((ap->set_mask & ATTR_MASK_CLIENT) && ap->focus == ap->client) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
291 icp->focus_profile = icp->client_profile; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
292 return 1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
293 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
294 return IMValidateWindow(XtDisplay(icp->im->connection->proto_widget), |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
295 icp->common_attr.focus, &icp->focus_profile); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
296 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
297 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
298 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
299 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
300 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
301 * Functions submit errors |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
302 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
303 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
304 static void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
305 badSizeError(icp, code) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
306 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
307 int code; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
308 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
309 DPRINT(("bad size error for IC #%d\n", icp->id)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
310 IMSendError(icp->im->connection, code, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
311 "invalid size of attribute value"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
312 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
313 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
314 static void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
315 unnestedError(icp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
316 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
317 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
318 DPRINT(("unnested error for IC #%d\n", icp->id)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
319 IMSendError(icp->im->connection, IMBadSomething, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
320 "either preedit or status specification required"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
321 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
322 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
323 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
324 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
325 * Functions getting IM attributes |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
326 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
327 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
328 static IMPSAttributes * |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
329 getPSPtr(icp, type) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
330 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
331 int type; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
332 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
333 switch (type) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
334 case NEST_PREEDIT: return &icp->preedit_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
335 case NEST_STATUS: return &icp->status_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
336 default: return NULL; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
337 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
338 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
339 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
340 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
341 getIMValues(imp, data, len, offset) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
342 IMIM *imp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
343 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
344 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
345 int offset; /* request offset */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
346 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
347 unsigned int id; /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
348 IMAttribute *attrp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
349 IMConnection *conn = imp->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
350 int byte_order = conn->byte_order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
351 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
352 while (len >= 2) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
353 id = getC16(data, byte_order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
354 data += 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
355 len -= 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
356 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
357 if (id > numImAttributes) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
358 /* invalid attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
359 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
360 IMSendError(conn, IMBadSomething, imp->id, 0, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
361 "invalid IM attribute ID"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
362 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
363 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
364 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
365 attrp = &imAttributes[id]; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
366 if (!(attrp->valid_ops & OP_G)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
367 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
368 IMSendError(conn, IMBadSomething, imp->id, 0, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
369 "invalid operation (IMGetValues) for this attribute"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
370 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
371 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
372 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
373 if ((*attrp->get_proc)(imp, id, offset) < 0) return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
374 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
375 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
376 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
377 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
378 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
379 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
380 getQueryInputStyle(imp, id, offset) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
381 IMIM *imp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
382 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
383 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
384 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
385 IMConnection *conn = imp->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
386 unsigned int num_styles, num_bytes; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
387 InputStyle *stp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
388 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
389 TRACE(("imlib:getQueryInputStyle()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
390 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
391 for (num_styles = 0, stp = styles; stp->xim_style != 0; stp++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
392 num_styles++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
393 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
394 num_bytes = num_styles * 4 + 4; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
395 IMPutC16(conn, id); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
396 IMPutC16(conn, num_bytes); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
397 IMPutC16(conn, num_styles); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
398 IMPutC16(conn, 0); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
399 for (stp = styles; stp->xim_style != 0; stp++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
400 IMPutC32(conn, stp->xim_style); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
401 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
402 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
403 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
404 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
405 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
406 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
407 * Functions setting IC attributes |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
408 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
409 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
410 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
411 setICValues(icp, data, len, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
412 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
413 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
414 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
415 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
416 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
417 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
418 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
419 unsigned int imid = icp->im->id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
420 unsigned int icid = icp->id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
421 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
422 unsigned int value_len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
423 unsigned int attr_len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
424 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
425 ICAttribute *attrp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
426 int byte_order = icp->im->connection->byte_order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
427 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
428 TRACE(("imlib:setICValues()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
429 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
430 while (len > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
431 if (len < 4) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
432 DPRINT(("attribute data length < 4\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
433 IMSendError(conn, IMBadSomething, imid, icid, "Bad attribute data"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
434 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
435 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
436 id = getC16(data, byte_order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
437 value_len = getC16(data + 2, byte_order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
438 attr_len = PAD4(4 + value_len); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
439 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
440 if (attr_len > len) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
441 DPRINT(("attribute data length > request length\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
442 IMSendError(conn, IMBadSomething, imid, icid, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
443 "Bad attribute length"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
444 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
445 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
446 value = data + 4; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
447 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
448 if (id > numIcAttributes) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
449 DPRINT(("invalid IC attribute ID %d\n", id)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
450 IMSendError(conn, IMBadSomething, imid, icid, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
451 "invalid IC attribute ID"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
452 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
453 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
454 attrp = &icAttributes[id]; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
455 if (!(attrp->valid_ops & op)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
456 DPRINT(("invalid operation (%s) for IC attr %d\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
457 op == OP_C ? "create" : "set", id)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
458 IMSendError(conn, IMBadSomething, imid, icid, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
459 "invalid operation for this attribute"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
460 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
461 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
462 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
463 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
464 * Call attribute set procedure. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
465 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
466 if ((*attrp->set_proc)(icp, value, (int)value_len, byte_order, nest, op) < 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
467 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
468 * Error has occured. The set procedure has already sent |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
469 * appropriate error message, so just return here. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
470 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
471 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
472 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
473 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
474 data += attr_len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
475 len -= attr_len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
476 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
477 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
478 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
479 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
480 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
481 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
482 setInputStyle(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
483 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
484 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
485 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
486 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
487 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
488 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
489 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
490 TRACE(("imlib:setInputStyle()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
491 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
492 CHECK_ICATTR_SIZE(4, IMBadStyle); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
493 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
494 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
495 * InputStyle must be set with CreateIC. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
496 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
497 if (op != OP_C) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
498 DPRINT(("trying to change input style through SetICValues\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
499 IMSendError(icp->im->connection, IMBadStyle, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
500 icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
501 "InputStyle cannot be changed by SetICValues"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
502 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
503 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
504 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
505 icp->common_attr.input_style = (XIMStyle)getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
506 icp->common_attr.set_mask |= ATTR_MASK_INPUT_STYLE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
507 icp->common_attr.change_mask |= ATTR_MASK_INPUT_STYLE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
508 TRACE(("\tinput style: %ld\n", icp->common_attr.input_style)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
509 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
510 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
511 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
512 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
513 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
514 setClientWindow(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
515 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
516 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
517 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
518 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
519 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
520 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
521 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
522 TRACE(("imlib:setClientWindow()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
523 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
524 CHECK_ICATTR_SIZE(4, IMBadClientWindow); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
525 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
526 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
527 * ClientWindow cannot be changed. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
528 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
529 if (icp->common_attr.set_mask & ATTR_MASK_CLIENT) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
530 DPRINT(("client window already specified\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
531 IMSendError(icp->im->connection, IMBadClientWindow, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
532 icp->im->id, icp->id, "ClientWindow already set"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
533 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
534 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
535 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
536 icp->common_attr.client = (Window)getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
537 TRACE(("\tclient window: %08lx\n", icp->common_attr.client)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
538 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
539 icp->common_attr.set_mask |= ATTR_MASK_CLIENT; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
540 icp->common_attr.change_mask |= ATTR_MASK_CLIENT; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
541 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
542 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
543 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
544 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
545 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
546 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
547 setFocusWindow(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
548 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
549 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
550 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
551 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
552 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
553 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
554 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
555 Window focus; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
556 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
557 TRACE(("imlib:setFocusWindow()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
558 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
559 CHECK_ICATTR_SIZE(4, IMBadFocusWindow); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
560 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
561 focus = (Window)getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
562 TRACE(("\tfocus window: %08lx\n", focus)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
563 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
564 if (!(icp->common_attr.set_mask & ATTR_MASK_FOCUS) || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
565 focus != icp->common_attr.focus) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
566 icp->common_attr.change_mask |= ATTR_MASK_FOCUS; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
567 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
568 icp->common_attr.focus = focus; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
569 icp->common_attr.set_mask |= ATTR_MASK_FOCUS; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
570 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
571 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
572 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
573 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
574 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
575 setPreeditAttributes(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
576 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
577 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
578 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
579 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
580 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
581 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
582 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
583 TRACE(("imlib:setPreeditAttributes()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
584 return setICValues(icp, value, len, NEST_PREEDIT, op); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
585 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
586 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
587 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
588 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
589 setStatusAttributes(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
590 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
591 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
592 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
593 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
594 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
595 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
596 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
597 TRACE(("imlib:setStatusAttributes()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
598 return setICValues(icp, value, len, NEST_STATUS, op); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
599 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
600 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
601 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
602 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
603 setArea(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
604 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
605 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
606 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
607 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
608 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
609 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
610 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
611 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
612 XRectangle area; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
613 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
614 TRACE(("imlib:setArea()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
615 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
616 CHECK_ICATTR_SIZE(8, IMBadArea); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
617 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
618 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
619 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
620 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
621 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
622 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
623 area.x = getI16(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
624 area.y = getI16(value + 2, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
625 area.width = getC16(value + 4, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
626 area.height = getC16(value + 6, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
627 TRACE(("\tarea: %d, %d, %d, %d\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
628 area.x, area.y, area.width, area.height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
629 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
630 if (!(ap->set_mask & ATTR_MASK_AREA) || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
631 area.x != ap->area.x || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
632 area.y != ap->area.y || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
633 area.width != ap->area.width || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
634 area.height != ap->area.height) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
635 ap->change_mask |= ATTR_MASK_AREA; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
636 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
637 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
638 ap->area.x = area.x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
639 ap->area.y = area.y; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
640 ap->area.width = area.width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
641 ap->area.height = area.height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
642 ap->set_mask |= ATTR_MASK_AREA; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
643 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
644 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
645 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
646 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
647 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
648 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
649 setAreaNeeded(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
650 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
651 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
652 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
653 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
654 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
655 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
656 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
657 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
658 XRectangle area; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
659 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
660 TRACE(("imlib:setAreaNeeded()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
661 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
662 CHECK_ICATTR_SIZE(8, IMBadArea); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
663 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
664 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
665 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
666 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
667 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
668 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
669 area.width = getC16(value + 4, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
670 area.height = getC16(value + 6, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
671 TRACE(("\tarea needed: %d, %d\n", area.width, area.height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
672 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
673 if (!(ap->set_mask & ATTR_MASK_AREA_NEEDED) || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
674 area.width != ap->area_needed.width || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
675 area.height != ap->area_needed.height) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
676 ap->change_mask |= ATTR_MASK_AREA_NEEDED; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
677 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
678 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
679 ap->area_needed.width = area.width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
680 ap->area_needed.height = area.height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
681 ap->set_mask |= ATTR_MASK_AREA_NEEDED; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
682 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
683 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
684 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
685 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
686 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
687 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
688 setForeground(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
689 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
690 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
691 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
692 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
693 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
694 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
695 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
696 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
697 Pixel fore; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
698 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
699 TRACE(("imlib:setForeground()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
700 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
701 CHECK_ICATTR_SIZE(4, IMBadForeground); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
702 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
703 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
704 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
705 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
706 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
707 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
708 fore = getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
709 TRACE(("\tforeground: %ld\n", fore)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
710 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
711 if (!(ap->set_mask & ATTR_MASK_FOREGROUND) || fore != ap->foreground) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
712 ap->change_mask |= ATTR_MASK_FOREGROUND; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
713 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
714 ap->foreground = fore; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
715 ap->set_mask |= ATTR_MASK_FOREGROUND; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
716 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
717 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
718 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
719 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
720 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
721 setBackground(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
722 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
723 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
724 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
725 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
726 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
727 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
728 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
729 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
730 Pixel back; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
731 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
732 TRACE(("imlib:setBackground()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
733 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
734 CHECK_ICATTR_SIZE(4, IMBadBackground); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
735 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
736 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
737 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
738 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
739 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
740 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
741 back = getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
742 TRACE(("\tbackground: %ld\n", back)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
743 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
744 if (!(ap->set_mask & ATTR_MASK_BACKGROUND) || back != ap->background) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
745 ap->change_mask |= ATTR_MASK_BACKGROUND; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
746 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
747 ap->background = back; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
748 ap->set_mask |= ATTR_MASK_BACKGROUND; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
749 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
750 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
751 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
752 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
753 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
754 setColormap(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
755 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
756 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
757 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
758 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
759 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
760 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
761 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
762 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
763 Colormap cmap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
764 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
765 TRACE(("imlib:setColormap()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
766 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
767 CHECK_ICATTR_SIZE(4, IMBadColormap); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
768 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
769 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
770 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
771 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
772 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
773 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
774 cmap = getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
775 TRACE(("\tcolormap: %08lx\n", cmap)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
776 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
777 if (!(ap->set_mask & ATTR_MASK_COLORMAP) || cmap != ap->colormap) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
778 ap->change_mask |= ATTR_MASK_COLORMAP; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
779 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
780 ap->colormap = cmap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
781 ap->set_mask |= ATTR_MASK_COLORMAP; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
782 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
783 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
784 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
785 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
786 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
787 setBgPixmap(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
788 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
789 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
790 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
791 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
792 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
793 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
794 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
795 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
796 Pixmap pixmap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
797 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
798 TRACE(("imlib:setBgPixmap()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
799 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
800 CHECK_ICATTR_SIZE(4, IMBadPixmap); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
801 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
802 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
803 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
804 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
805 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
806 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
807 pixmap = getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
808 TRACE(("\tbackground pixmap: %08lx\n", pixmap)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
809 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
810 if (!(ap->set_mask & ATTR_MASK_BG_PIXMAP) || pixmap != ap->bg_pixmap) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
811 ap->change_mask |= ATTR_MASK_BG_PIXMAP; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
812 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
813 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
814 ap->bg_pixmap = pixmap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
815 ap->set_mask |= ATTR_MASK_BG_PIXMAP; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
816 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
817 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
818 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
819 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
820 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
821 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
822 setLineSpace(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
823 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
824 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
825 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
826 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
827 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
828 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
829 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
830 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
831 int line_space; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
832 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
833 TRACE(("imlib:setLineSpace()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
834 |
10
d1e9297afff9
imported patch 12_kinput2-v3.1-linespace.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
9
diff
changeset
|
835 CHECK_ICATTR_SIZE(4, IMBadSomething); |
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
836 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
837 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
838 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
839 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
840 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
841 |
10
d1e9297afff9
imported patch 12_kinput2-v3.1-linespace.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
9
diff
changeset
|
842 line_space = getC32(value, order); /* ??? linespacing is 'int' */ |
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
843 TRACE(("\tline space: %d\n", line_space)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
844 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
845 if (!(ap->set_mask & ATTR_MASK_LINESPACE) || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
846 line_space != ap->line_space) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
847 ap->change_mask |= ATTR_MASK_LINESPACE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
848 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
849 ap->line_space = line_space; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
850 ap->set_mask |= ATTR_MASK_LINESPACE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
851 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
852 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
853 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
854 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
855 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
856 setCursor(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
857 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
858 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
859 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
860 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
861 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
862 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
863 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
864 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
865 Cursor cursor; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
866 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
867 TRACE(("imlib:setCursor()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
868 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
869 CHECK_ICATTR_SIZE(4, IMBadCursor); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
870 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
871 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
872 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
873 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
874 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
875 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
876 cursor = getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
877 TRACE(("\tcursor: %08lx\n", cursor)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
878 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
879 if (!(ap->set_mask & ATTR_MASK_CURSOR) || cursor != ap->cursor) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
880 ap->change_mask |= ATTR_MASK_CURSOR; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
881 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
882 ap->cursor = cursor; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
883 ap->set_mask |= ATTR_MASK_CURSOR; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
884 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
885 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
886 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
887 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
888 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
889 setSpotLocation(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
890 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
891 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
892 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
893 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
894 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
895 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
896 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
897 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
898 XPoint spot; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
899 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
900 TRACE(("imlib:setSpotLocation()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
901 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
902 CHECK_ICATTR_SIZE(4, IMBadSpotLocation); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
903 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
904 if (nest == NEST_STATUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
905 DPRINT(("spot location specified in a status attribute list\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
906 IMSendError(icp->im->connection, IMBadSpotLocation, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
907 icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
908 "spot location isn't a status attribute"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
909 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
910 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
911 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
912 ap = &icp->preedit_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
913 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
914 spot.x = getI16(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
915 spot.y = getI16(value + 2, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
916 TRACE(("\tspot location: %d, %d\n", spot.x, spot.y)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
917 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
918 if (!(ap->set_mask & ATTR_MASK_SPOT_LOCATION) || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
919 spot.x != ap->spot_location.x || spot.y != ap->spot_location.y) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
920 ap->change_mask |= ATTR_MASK_SPOT_LOCATION; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
921 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
922 ap->spot_location.x = spot.x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
923 ap->spot_location.y = spot.y; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
924 ap->set_mask |= ATTR_MASK_SPOT_LOCATION; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
925 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
926 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
927 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
928 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
929 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
930 setStdColormap(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
931 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
932 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
933 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
934 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
935 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
936 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
937 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
938 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
939 Atom colormap_name; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
940 XStandardColormap *stdcolormaps; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
941 Widget w = icp->im->connection->proto_widget; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
942 Display *dpy = XtDisplay(w); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
943 int ncolormaps; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
944 Window root; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
945 XAEHandle h; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
946 int status; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
947 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
948 TRACE(("imlib:setStdColormap()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
949 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
950 CHECK_ICATTR_SIZE(4, IMBadAtom); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
951 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
952 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
953 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
954 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
955 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
956 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
957 colormap_name = getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
958 if (icp->common_attr.set_mask & ATTR_MASK_CLIENT) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
959 root = icp->client_profile.root; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
960 } else if (icp->common_attr.set_mask & ATTR_MASK_FOCUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
961 root = icp->focus_profile.root; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
962 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
963 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
964 * Client has not specified client window yet. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
965 * Reading standard colormap property should been deffered |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
966 * until the window is set, but for now... |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
967 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
968 DDPRINT(2, ("std colormap specified, leaving client window unspecified\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
969 root = RootWindowOfScreen(XtScreen(w)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
970 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
971 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
972 h = XAESetIgnoreErrors(dpy); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
973 status = XGetRGBColormaps(dpy, root, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
974 &stdcolormaps, &ncolormaps, colormap_name); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
975 XAEUnset(h); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
976 if (!status || ncolormaps < 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
977 DPRINT(("can't get standard colormap (%ld)\n", colormap_name)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
978 IMSendError(icp->im->connection, IMBadName, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
979 "invalid standard colormap name"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
980 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
981 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
982 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
983 if (!(ap->set_mask & ATTR_MASK_STD_COLORMAP) || |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
984 colormap_name != ap->std_colormap) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
985 ap->change_mask |= ATTR_MASK_STD_COLORMAP; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
986 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
987 ap->std_colormap = colormap_name; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
988 ap->colormap = stdcolormaps[0].colormap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
989 TRACE(("\tstandard colormap: %ld (colormap=%08lx)\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
990 colormap_name, ap->colormap)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
991 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
992 ap->set_mask |= ATTR_MASK_STD_COLORMAP | ATTR_MASK_COLORMAP; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
993 XFree((char *)stdcolormaps); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
994 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
995 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
996 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
997 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
998 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
999 setFontSet(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1000 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1001 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1002 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1003 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1004 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1005 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1006 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1007 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1008 unsigned int name_list_len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1009 char *name_list; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1010 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1011 TRACE(("imlib:setFontSet()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1012 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1013 if (len < 2) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1014 badSizeError(icp, IMBadName); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1015 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1016 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1017 name_list_len = getC16(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1018 if (2 + name_list_len > len) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1019 badSizeError(icp, IMBadName); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1020 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1021 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1022 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1023 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1024 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1025 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1026 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1027 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1028 name_list = XtMalloc(name_list_len + 1); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1029 bcopy(value + 2, name_list, name_list_len); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1030 name_list[name_list_len] = '\0'; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1031 TRACE(("\tfontset: %s\n", name_list)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1032 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1033 if (ap->set_mask & ATTR_MASK_FONT_SET) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1034 if (!strcmp(name_list, ap->font_set)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1035 XtFree(name_list); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1036 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1037 ap->change_mask |= ATTR_MASK_FONT_SET; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1038 if (ap->font_set != IMDefaultFontSet(icp->im)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1039 XtFree(ap->font_set); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1040 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1041 ap->font_set = name_list; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1042 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1043 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1044 ap->font_set = name_list; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1045 ap->set_mask |= ATTR_MASK_FONT_SET; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1046 ap->change_mask |= ATTR_MASK_FONT_SET; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1047 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1048 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1049 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1050 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1051 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1052 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1053 setPreeditState(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1054 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1055 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1056 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1057 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1058 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1059 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1060 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1061 IMCommonAttributes *ap = &icp->common_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1062 unsigned long preedit_state; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1063 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1064 TRACE(("imlib:setPreeditState()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1065 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1066 CHECK_ICATTR_SIZE(4, IMBadSomething); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1067 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1068 if (nest == NEST_STATUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1069 DPRINT(("preedit state specified in a status attribute list\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1070 IMSendError(icp->im->connection, IMBadSomething, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1071 icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1072 "preedit state isn't a status attribute"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1073 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1074 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1075 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1076 preedit_state = getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1077 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1078 ap->set_mask |= ATTR_MASK_PREEDIT_STATE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1079 ap->change_mask |= ATTR_MASK_PREEDIT_STATE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1080 ap->preedit_state = preedit_state; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1081 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1082 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1083 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1084 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1085 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1086 setResetState(icp, value, len, order, nest, op) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1087 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1088 char *value; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1089 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1090 int order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1091 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1092 int op; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1093 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1094 IMCommonAttributes *ap = &icp->common_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1095 unsigned long reset_state; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1096 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1097 TRACE(("imlib:setResetState()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1098 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1099 CHECK_ICATTR_SIZE(4, IMBadSomething); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1100 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1101 reset_state = getC32(value, order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1102 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1103 ap->set_mask |= ATTR_MASK_RESET_STATE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1104 ap->change_mask |= ATTR_MASK_RESET_STATE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1105 ap->reset_state = reset_state; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1106 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1107 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1108 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1109 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1110 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1111 * Functions getting IC attributes |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1112 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1113 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1114 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1115 getICValues(icp, data, len, nest, offset, sepp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1116 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1117 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1118 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1119 int nest; /* NEST_NONE, NEST_PREEDIT or NEST_STATUS */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1120 int offset; /* request offset */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1121 int *sepp; /* Out: true if ended with a nested list separator */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1122 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1123 unsigned int id; /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1124 ICAttribute *attrp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1125 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1126 int byte_order = conn->byte_order; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1127 char *org_data = data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1128 int r; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1129 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1130 TRACE(("imlib:getICValues()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1131 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1132 while (len >= 2) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1133 id = getC16(data, byte_order); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1134 data += 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1135 len -= 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1136 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1137 if (id > numIcAttributes) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1138 /* invalid attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1139 DPRINT(("invalid IC attribute ID (%d) specified\n", id)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1140 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1141 IMSendError(conn, IMBadSomething, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1142 "invalid IC attribute ID"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1143 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1144 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1145 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1146 attrp = &icAttributes[id]; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1147 if (attrp->type == TYPE_SEPARATOR) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1148 /* nested list separator */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1149 *sepp = 1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1150 return data - org_data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1151 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1152 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1153 if (!(attrp->valid_ops & OP_G)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1154 DPRINT(("invalid operation (get) for IC attr %d\n", id)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1155 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1156 IMSendError(conn, IMBadSomething, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1157 "invalid operation (ICGetValues) for this attribute"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1158 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1159 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1160 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1161 r = (*attrp->get_proc)(icp, id, nest, offset, data, len); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1162 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1163 * The return value of get_proc is usually 0, indicating success. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1164 * If it is less than 0, there are some errors. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1165 * If it is greater than 0, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1166 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1167 if (r < 0) return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1168 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1169 data += r; /* r is extra offset */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1170 len -= r; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1171 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1172 *sepp = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1173 return data - org_data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1174 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1175 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1176 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1177 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1178 getPSAttributes(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1179 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1180 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1181 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1182 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1183 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1184 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1185 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1186 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1187 unsigned int length; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1188 int length_offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1189 int attr_offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1190 int nested_separator; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1191 int r; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1192 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1193 IMPutC16(conn, id); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1194 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1195 length_offset = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1196 IMPutC16(conn, 0); /* dummy -- overwritten afterwards */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1197 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1198 attr_offset = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1199 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1200 r = getICValues(icp, data, len, nest, offset, &nested_separator); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1201 if (r < 0) return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1202 if (!nested_separator) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1203 /* there's no nested list separator */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1204 DPRINT(("nested list doesn't end with separator\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1205 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1206 * X11R6 Xlib sends nested attribute list which has no |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1207 * separator at its end. In order to accommodate to it, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1208 * don't send error for that. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1209 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1210 #ifdef notdef |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1211 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1212 IMSendError(conn, IMBadSomething, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1213 "corrupted nested list"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1214 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1215 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1216 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1217 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1218 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1219 * Nested list is written on the output buffer. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1220 * Calculate the length of the list. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1221 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1222 length = IMWritePos(conn) - attr_offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1223 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1224 /* rewrite attribute length field */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1225 IMRewriteC16(conn, length_offset, length); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1226 IMPutPad(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1227 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1228 return r; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1229 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1230 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1231 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1232 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1233 getPreeditAttributes(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1234 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1235 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1236 int nest; /* unused */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1237 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1238 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1239 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1240 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1241 TRACE(("imlib:getPreeditAttributes()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1242 return getPSAttributes(icp, id, NEST_PREEDIT, offset, data, len); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1243 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1244 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1245 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1246 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1247 getStatusAttributes(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1248 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1249 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1250 int nest; /* unused */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1251 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1252 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1253 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1254 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1255 TRACE(("imlib:getStatusAttributes()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1256 return getPSAttributes(icp, id, NEST_STATUS, offset, data, len); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1257 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1258 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1259 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1260 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1261 getInputStyle(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1262 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1263 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1264 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1265 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1266 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1267 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1268 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1269 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1270 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1271 TRACE(("imlib:getInputStyle()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1272 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1273 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1274 * Input style must have been specified, (and validated) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1275 * at IC creation. No need for checking. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1276 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1277 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1278 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1279 IMPutC32(conn, icp->common_attr.input_style); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1280 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1281 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1282 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1283 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1284 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1285 getClientWindow(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1286 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1287 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1288 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1289 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1290 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1291 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1292 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1293 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1294 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1295 TRACE(("imlib:getClientWindow()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1296 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1297 if (icp->common_attr.set_mask & ATTR_MASK_CLIENT) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1298 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1299 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1300 IMPutC32(conn, icp->common_attr.client); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1301 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1302 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1303 /* no default is available */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1304 DPRINT(("getClientWindow without setting client window previously\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1305 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1306 IMSendError(conn, IMBadClientWindow, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1307 "client window not specified yet"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1308 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1309 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1310 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1311 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1312 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1313 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1314 getFocusWindow(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1315 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1316 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1317 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1318 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1319 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1320 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1321 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1322 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1323 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1324 TRACE(("imlib:getFocusWindow()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1325 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1326 if (!(icp->common_attr.set_mask & ATTR_MASK_FOCUS)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1327 /* fill default value */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1328 fillCommonDefault(icp, (unsigned long)ATTR_MASK_FOCUS); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1329 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1330 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1331 if (icp->common_attr.set_mask & ATTR_MASK_FOCUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1332 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1333 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1334 IMPutC32(conn, icp->common_attr.focus); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1335 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1336 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1337 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1338 * Couldn't get the default value. That is, neither |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1339 * focus window nor client window is specified yet. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1340 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1341 DPRINT(("getFocusWindow without setting focus/client window previously\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1342 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1343 IMSendError(conn, IMBadFocusWindow, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1344 "neither of client/focus window not specified yet"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1345 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1346 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1347 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1348 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1349 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1350 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1351 getFilterEvents(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1352 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1353 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1354 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1355 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1356 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1357 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1358 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1359 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1360 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1361 TRACE(("imlib:getFilterEvents()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1362 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1363 /* We need only Key events */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1364 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1365 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1366 IMPutC32(conn, KeyPressMask | KeyReleaseMask); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1367 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1368 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1369 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1370 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1371 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1372 getArea(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1373 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1374 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1375 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1376 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1377 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1378 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1379 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1380 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1381 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1382 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1383 TRACE(("imlib:getArea()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1384 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1385 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1386 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1387 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1388 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1389 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1390 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1391 if (!(ap->set_mask & ATTR_MASK_AREA)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1392 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_AREA); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1393 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1394 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1395 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1396 IMPutC16(conn, 8); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1397 IMPutI16(conn, ap->area.x); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1398 IMPutI16(conn, ap->area.y); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1399 IMPutC16(conn, ap->area.width); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1400 IMPutC16(conn, ap->area.height); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1401 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1402 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1403 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1404 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1405 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1406 getAreaNeeded(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1407 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1408 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1409 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1410 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1411 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1412 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1413 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1414 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1415 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1416 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1417 TRACE(("imlib:getAreaNeeded()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1418 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1419 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1420 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1421 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1422 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1423 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1424 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1425 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1426 * Always call fillPSDefault to get appropriate AreaNeeded value. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1427 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1428 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_AREA_NEEDED); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1429 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1430 TRACE(("\tarea needed: %d, %d, %d, %d\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1431 ap->area_needed.x, ap->area_needed.y, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1432 ap->area_needed.width, ap->area_needed.height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1433 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1434 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1435 IMPutC16(conn, 8); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1436 IMPutI16(conn, ap->area_needed.x); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1437 IMPutI16(conn, ap->area_needed.y); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1438 IMPutC16(conn, ap->area_needed.width); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1439 IMPutC16(conn, ap->area_needed.height); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1440 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1441 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1442 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1443 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1444 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1445 getSpotLocation(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1446 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1447 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1448 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1449 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1450 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1451 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1452 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1453 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1454 IMPSAttributes *ap = &icp->preedit_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1455 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1456 TRACE(("imlib:getSpotLocation()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1457 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1458 if (nest == NEST_STATUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1459 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1460 IMSendError(conn, IMBadSomething, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1461 "spot location isn't a status attribute"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1462 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1463 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1464 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1465 if (!(ap->set_mask & ATTR_MASK_SPOT_LOCATION)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1466 fillPSDefault(icp, NEST_PREEDIT, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1467 (unsigned long)ATTR_MASK_SPOT_LOCATION); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1468 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1469 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1470 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1471 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1472 IMPutI16(conn, ap->spot_location.x); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1473 IMPutI16(conn, ap->spot_location.y); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1474 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1475 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1476 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1477 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1478 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1479 getColormap(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1480 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1481 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1482 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1483 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1484 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1485 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1486 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1487 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1488 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1489 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1490 TRACE(("imlib:getColormap()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1491 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1492 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1493 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1494 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1495 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1496 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1497 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1498 if (!(ap->set_mask & ATTR_MASK_COLORMAP)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1499 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_COLORMAP); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1500 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1501 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1502 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1503 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1504 IMPutC32(conn, ap->colormap); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1505 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1506 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1507 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1508 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1509 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1510 getStdColormap(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1511 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1512 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1513 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1514 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1515 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1516 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1517 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1518 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1519 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1520 Atom colormap_name; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1521 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1522 TRACE(("imlib:getStdColormap()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1523 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1524 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1525 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1526 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1527 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1528 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1529 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1530 if (ap->set_mask & ATTR_MASK_STD_COLORMAP) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1531 colormap_name = ap->std_colormap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1532 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1533 /* what to do? */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1534 colormap_name = None; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1535 DPRINT(("client asks standard colormap, but not specified\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1536 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1537 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1538 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1539 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1540 IMPutC32(conn, colormap_name); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1541 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1542 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1543 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1544 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1545 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1546 getForeground(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1547 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1548 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1549 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1550 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1551 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1552 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1553 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1554 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1555 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1556 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1557 TRACE(("imlib:getForeground()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1558 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1559 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1560 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1561 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1562 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1563 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1564 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1565 if (!(ap->set_mask & ATTR_MASK_FOREGROUND)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1566 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_FOREGROUND); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1567 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1568 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1569 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1570 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1571 IMPutC32(conn, ap->foreground); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1572 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1573 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1574 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1575 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1576 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1577 getBackground(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1578 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1579 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1580 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1581 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1582 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1583 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1584 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1585 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1586 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1587 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1588 TRACE(("imlib:getBackground()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1589 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1590 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1591 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1592 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1593 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1594 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1595 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1596 if (!(ap->set_mask & ATTR_MASK_BACKGROUND)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1597 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_BACKGROUND); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1598 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1599 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1600 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1601 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1602 IMPutC32(conn, ap->background); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1603 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1604 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1605 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1606 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1607 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1608 getBgPixmap(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1609 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1610 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1611 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1612 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1613 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1614 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1615 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1616 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1617 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1618 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1619 TRACE(("imlib:getBgPixmap()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1620 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1621 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1622 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1623 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1624 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1625 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1626 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1627 if (!(ap->set_mask & ATTR_MASK_BG_PIXMAP)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1628 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_BG_PIXMAP); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1629 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1630 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1631 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1632 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1633 IMPutC32(conn, ap->bg_pixmap); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1634 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1635 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1636 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1637 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1638 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1639 getFontSet(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1640 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1641 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1642 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1643 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1644 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1645 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1646 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1647 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1648 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1649 int name_len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1650 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1651 TRACE(("imlib:getFontSet()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1652 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1653 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1654 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1655 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1656 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1657 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1658 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1659 if (!(ap->set_mask & ATTR_MASK_FONT_SET)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1660 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_FONT_SET); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1661 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1662 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1663 name_len = strlen(ap->font_set); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1664 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1665 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1666 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1667 IMPutC16(conn, (unsigned int)name_len); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1668 IMPutString(conn, ap->font_set, name_len); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1669 IMPutPad(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1670 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1671 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1672 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1673 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1674 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1675 getLineSpace(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1676 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1677 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1678 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1679 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1680 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1681 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1682 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1683 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1684 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1685 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1686 TRACE(("imlib:getLineSpace()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1687 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1688 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1689 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1690 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1691 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1692 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1693 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1694 if (!(ap->set_mask & ATTR_MASK_LINESPACE)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1695 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_LINESPACE); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1696 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1697 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1698 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1699 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1700 IMPutC32(conn, (unsigned long)ap->line_space); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1701 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1702 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1703 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1704 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1705 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1706 getCursor(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1707 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1708 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1709 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1710 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1711 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1712 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1713 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1714 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1715 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1716 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1717 TRACE(("imlib:getCursor()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1718 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1719 if ((ap = getPSPtr(icp, nest)) == NULL) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1720 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1721 unnestedError(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1722 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1723 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1724 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1725 if (!(ap->set_mask & ATTR_MASK_CURSOR)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1726 fillPSDefault(icp, nest, (unsigned long)ATTR_MASK_CURSOR); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1727 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1728 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1729 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1730 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1731 IMPutC32(conn, ap->cursor); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1732 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1733 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1734 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1735 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1736 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1737 getPreeditState(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1738 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1739 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1740 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1741 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1742 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1743 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1744 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1745 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1746 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1747 TRACE(("imlib:getPreeditState()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1748 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1749 if (nest == NEST_STATUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1750 IMCancelRequest(conn, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1751 IMSendError(conn, IMBadSomething, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1752 "preedit state isn't a status attribute"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1753 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1754 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1755 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1756 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1757 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1758 IMPutC32(conn, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1759 (icp->state & IC_CONVERTING) ? |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1760 XIMPreeditEnable : XIMPreeditDisable); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1761 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1762 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1763 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1764 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1765 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1766 getResetState(icp, id, nest, offset, data, len) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1767 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1768 unsigned int id; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1769 int nest; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1770 int offset; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1771 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1772 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1773 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1774 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1775 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1776 TRACE(("imlib:getResetState()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1777 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1778 IMPutC16(conn, id); /* attribute ID */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1779 IMPutC16(conn, 4); /* value length */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1780 IMPutC32(conn, icp->common_attr.reset_state); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1781 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1782 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1783 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1784 static void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1785 changeFonts(icp, preedit) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1786 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1787 int preedit; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1788 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1789 FontBank bank = IMFontBank(icp->im); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1790 String font_set; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1791 XFontStruct ***fontsp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1792 int *num_fontsp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1793 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1794 TRACE(("imlib:changeFonts()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1795 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1796 if (preedit) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1797 font_set = icp->preedit_attr.font_set; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1798 fontsp = &icp->fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1799 num_fontsp = &icp->num_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1800 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1801 font_set = icp->status_attr.font_set; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1802 fontsp = &icp->status_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1803 num_fontsp = &icp->num_status_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1804 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1805 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1806 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1807 * Unload previous fonts. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1808 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1809 if (*num_fontsp > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1810 FontBankFreeFonts(bank, *fontsp, *num_fontsp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1811 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1812 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1813 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1814 * Load new fonts and store them in the IC structure. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1815 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1816 *fontsp = FontBankGet(bank, font_set, num_fontsp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1817 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1818 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1819 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1820 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1821 * Functions computing default attribute values |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1822 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1823 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1824 static void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1825 fillCommonDefault(icp, mask) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1826 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1827 unsigned long mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1828 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1829 IMCommonAttributes *ap = &icp->common_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1830 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1831 TRACE(("imlib:fillCommonDefault()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1832 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1833 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1834 * Don't bother with the attributes which have been set. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1835 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1836 mask &= ~ap->set_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1837 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1838 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1839 * The attributes that have default value are FocusWindow, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1840 * PreeditState and ResetState. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1841 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1842 if (mask & ATTR_MASK_FOCUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1843 /* if ClientWindow is not set... no way */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1844 if (mask & ATTR_MASK_CLIENT) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1845 ap->focus = ap->client; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1846 ap->set_mask |= ATTR_MASK_FOCUS; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1847 icp->focus_profile = icp->client_profile; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1848 TRACE(("\tdefault focus window: %08lx\n", ap->focus)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1849 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1850 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1851 if (mask & ATTR_MASK_PREEDIT_STATE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1852 /* unless the client specified, we should start with disabled state. */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1853 ap->set_mask |= ATTR_MASK_PREEDIT_STATE; |
9
1f9e9cb00c6c
imported patch 11_kinput2-v3.1-status-update-204892.patch
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
0
diff
changeset
|
1854 ap->preedit_state = XIMPreeditDisable; |
0
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1855 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1856 if (mask & ATTR_MASK_RESET_STATE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1857 /* the default reset state must be the initial state. */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1858 ap->set_mask |= ATTR_MASK_RESET_STATE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1859 ap->reset_state = XIMInitialState; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1860 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1861 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1862 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1863 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1864 getNaturalLineSpace(icp, preedit) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1865 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1866 int preedit; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1867 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1868 XFontStruct **fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1869 int num_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1870 int max_ascent = 0, max_descent = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1871 int i; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1872 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1873 changeFonts(icp, preedit); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1874 if (preedit) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1875 fonts = icp->fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1876 num_fonts = icp->num_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1877 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1878 fonts = icp->status_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1879 num_fonts = icp->num_status_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1880 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1881 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1882 for (i = 0; i < num_fonts; i++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1883 XFontStruct *font = fonts[i]; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1884 if (max_ascent < font->ascent) max_ascent = font->ascent; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1885 if (max_descent < font->descent) max_descent = font->descent; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1886 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1887 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1888 if (max_ascent + max_descent < MIN_LINE_SPACING) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1889 return MIN_LINE_SPACING; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1890 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1891 return max_ascent + max_descent; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1892 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1893 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1894 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1895 static void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1896 fillPSDefault(icp, type, mask) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1897 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1898 int type; /* NEST_PREEDIT or NEST_STATUS */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1899 unsigned long mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1900 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1901 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1902 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1903 Widget pw = conn->proto_widget; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1904 int preedit; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1905 #ifdef DEBUG |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1906 char *typename = (type == NEST_PREEDIT) ? "preedit" : "status"; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1907 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1908 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1909 TRACE(("imlib:fillPSDefault(%s)\n", typename)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1910 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1911 preedit = (type == NEST_PREEDIT); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1912 ap = preedit ? &icp->preedit_attr : &icp->status_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1913 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1914 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1915 * Don't bother with the attributes which have been set. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1916 * But area_needed needs to be computed each time (to get |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1917 * correct X and Y coordinates). |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1918 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1919 mask &= ~ap->set_mask | ATTR_MASK_AREA_NEEDED; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1920 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1921 if (mask & ATTR_MASK_AREA) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1922 computeAreaForQuery(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1923 ap->set_mask |= ATTR_MASK_AREA; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1924 DDPRINT(5, ("\tdefault %s area: %d,%d,%d,%d\n", typename, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1925 ap->area.x, ap->area.y, ap->area.width, ap->area.height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1926 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1927 if (mask & ATTR_MASK_FOREGROUND) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1928 ap->foreground = IMDefaultForeground(pw); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1929 ap->set_mask |= ATTR_MASK_FOREGROUND; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1930 DDPRINT(5, ("\tdefault %s foreground: %ld\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1931 typename, ap->foreground)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1932 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1933 if (mask & ATTR_MASK_BACKGROUND) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1934 ap->background = IMDefaultBackground(pw); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1935 ap->set_mask |= ATTR_MASK_BACKGROUND; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1936 DDPRINT(5, ("\tdefault %s background: %ld\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1937 typename, ap->background)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1938 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1939 if (mask & ATTR_MASK_COLORMAP) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1940 ap->colormap = pw->core.colormap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1941 ap->set_mask |= ATTR_MASK_COLORMAP; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1942 DDPRINT(5, ("\tdefault %s colormap: %08lx\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1943 typename, ap->colormap)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1944 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1945 if (mask & ATTR_MASK_STD_COLORMAP) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1946 /* you can't fill default. what to do? */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1947 DDPRINT(5, ("\tdefault %s std colormap: N/A\n", typename)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1948 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1949 if (mask & ATTR_MASK_BG_PIXMAP) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1950 ap->bg_pixmap = None; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1951 ap->set_mask |= ATTR_MASK_BG_PIXMAP; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1952 DDPRINT(5, ("\tdefault %s background pixmap: None\n", typename)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1953 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1954 if (mask & ATTR_MASK_LINESPACE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1955 if (!(ap->set_mask & ATTR_MASK_FONT_SET)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1956 fillPSDefault(icp, type, (unsigned long)ATTR_MASK_FONT_SET); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1957 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1958 ap->line_space = getNaturalLineSpace(icp, type == NEST_PREEDIT); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1959 ap->set_mask |= ATTR_MASK_LINESPACE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1960 DDPRINT(5, ("\tdefault line space: %d\n", ap->line_space)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1961 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1962 if (mask & ATTR_MASK_CURSOR) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1963 ap->cursor = None; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1964 ap->set_mask |= ATTR_MASK_CURSOR; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1965 DDPRINT(5, ("\tdefault %s cursor: None\n", typename)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1966 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1967 if (mask & ATTR_MASK_AREA_NEEDED) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1968 computeAreaNeeded(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1969 DDPRINT(5, ("\t%s area_needed: %d,%d,%d,%d\n", typename, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1970 ap->area_needed.x, ap->area_needed.y, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1971 ap->area_needed.width, ap->area_needed.height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1972 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1973 if (mask & ATTR_MASK_FONT_SET) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1974 ap->font_set = IMDefaultFontSet(icp->im); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1975 ap->set_mask |= ATTR_MASK_FONT_SET; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1976 DDPRINT(5, ("\tdefault %s fontset: %s\n", typename, ap->font_set)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1977 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1978 if (mask & ATTR_MASK_SPOT_LOCATION) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1979 ap->spot_location.x = ap->spot_location.y = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1980 ap->set_mask |= ATTR_MASK_SPOT_LOCATION; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1981 DDPRINT(5, ("\tdefault spot location: %d, %d\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1982 ap->spot_location.x, ap->spot_location.y)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1983 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1984 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1985 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1986 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1987 * Function validating attribute values |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1988 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1989 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1990 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1991 validateCommonAttr(icp, checkonly) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1992 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1993 int checkonly; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1994 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1995 IMCommonAttributes *ap = &icp->common_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1996 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1997 unsigned long mask = ap->change_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1998 int ret = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
1999 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2000 TRACE(("imlib:validateCommonAttr()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2001 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2002 mask &= ap->set_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2003 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2004 #define SENDERROR(code, msg) \ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2005 if (!checkonly && ret == 0) { \ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2006 IMSendError(conn, code, icp->im->id, icp->id, msg); ret = -1; \ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2007 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2008 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2009 if (mask & ATTR_MASK_INPUT_STYLE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2010 XIMStyle xstyle = icp->common_attr.input_style; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2011 InputStyle *isp = styles; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2012 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2013 while (isp->xim_style != 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2014 if (isp->xim_style == xstyle) break; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2015 isp++; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2016 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2017 if (isp->xim_style == 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2018 DPRINT(("unsupported input style\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2019 ap->set_mask &= ~ATTR_MASK_INPUT_STYLE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2020 SENDERROR(IMBadStyle, "unsupported input style"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2021 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2022 icp->style = isp->conversion_style; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2023 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2024 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2025 if (mask & ATTR_MASK_CLIENT) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2026 if (!validateClientWindow(icp)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2027 DPRINT(("invalid client window ID\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2028 ap->set_mask &= ~ATTR_MASK_CLIENT; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2029 SENDERROR(IMBadClientWindow, "invalid client window ID"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2030 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2031 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2032 if (mask & ATTR_MASK_FOCUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2033 if (!validateFocusWindow(icp)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2034 DPRINT(("invalid focus window ID\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2035 ap->set_mask &= ~ATTR_MASK_FOCUS; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2036 SENDERROR(IMBadFocusWindow, "invalid focus window ID"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2037 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2038 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2039 if (mask & ATTR_MASK_PREEDIT_STATE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2040 unsigned long preedit_state = ap->preedit_state; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2041 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2042 if (preedit_state != XIMPreeditEnable && |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2043 preedit_state != XIMPreeditDisable) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2044 DPRINT(("invalid preedit state\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2045 ap->set_mask &= ~ATTR_MASK_PREEDIT_STATE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2046 SENDERROR(IMBadSomething, "invalid preedit state"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2047 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2048 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2049 if (mask & ATTR_MASK_RESET_STATE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2050 unsigned long reset_state = ap->reset_state; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2051 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2052 if (reset_state != XIMInitialState && |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2053 reset_state != XIMPreserveState) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2054 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2055 * Xlib document says invalid values should be interpreted as |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2056 * XIMInitialState. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2057 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2058 DPRINT(("invalid reset state -- forcing initial state\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2059 ap->reset_state = XIMInitialState; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2060 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2061 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2062 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2063 return ret; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2064 #undef SENDERROR |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2065 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2066 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2067 static int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2068 validatePSAttr(icp, type, checkonly) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2069 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2070 int type; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2071 int checkonly; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2072 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2073 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2074 * Check validity of preedit/status attribute values. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2075 * 'type' is either NEST_PREEDIT or NEST_STATUS, indicating |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2076 * whether preedit or status attributes are to be checked. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2077 * 'mask' is the attribute mask to be checked. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2078 * If all the attributes are valid, this function return 0. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2079 * Otherwise it issues an error message for the first invalid |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2080 * value detected, and returns -1. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2081 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2082 IMPSAttributes *ap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2083 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2084 unsigned long mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2085 int preedit; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2086 int ret = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2087 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2088 TRACE(("imlib:validatePSAttr()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2089 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2090 preedit = (type == NEST_PREEDIT); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2091 ap = preedit ? &icp->preedit_attr : &icp->status_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2092 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2093 /* do not check unset attributes */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2094 mask = ap->change_mask & ap->set_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2095 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2096 #define SENDERROR(code, msg) \ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2097 if (!checkonly && ret == 0) { \ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2098 IMSendError(conn, code, icp->im->id, icp->id, msg); ret = -1; \ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2099 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2100 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2101 if (mask & ATTR_MASK_AREA) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2102 if (ap->area.width == 0 || ap->area.height == 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2103 ap->set_mask &= ~ATTR_MASK_AREA; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2104 DPRINT(("zero area width/height\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2105 SENDERROR(IMBadArea, "invalid area width/height"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2106 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2107 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2108 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2109 #ifdef notdef |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2110 if (mask & ATTR_MASK_COLORMAP) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2111 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2112 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2113 if (mask & ATTR_MASK_BG_PIXMAP) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2114 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2115 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2116 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2117 if (mask & ATTR_MASK_LINESPACE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2118 if (ap->line_space < MIN_LINE_SPACING) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2119 ap->set_mask &= ~ATTR_MASK_LINESPACE; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2120 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2121 * we don't send error message in this case, because |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2122 * there exist some applications which send invalid line |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2123 * spacing and we don't want to break them. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2124 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2125 DPRINT(("line space too small %d\n", ap->line_space)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2126 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2127 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2128 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2129 #ifdef notdef |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2130 if (mask & ATTR_MASK_CURSOR) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2131 /* How should we check it? */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2132 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2133 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2134 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2135 if (mask & ATTR_MASK_AREA_NEEDED) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2136 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2137 #ifdef notdef |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2138 if (mask & ATTR_MASK_FONT_SET) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2139 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2140 if (mask & ATTR_MASK_SPOT_LOCATION) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2141 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2142 #endif |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2143 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2144 return ret; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2145 #undef SENDERROR |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2146 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2147 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2148 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2149 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2150 * Functions to extract necessary attributes and make conversion argument |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2151 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2152 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2153 static void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2154 changeConversionAttributes(icp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2155 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2156 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2157 unsigned long mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2158 ConversionAttributes attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2159 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2160 TRACE(("imlib:changeConversionAttributes()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2161 mask = IMMakeConvAttributes(icp, &attr); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2162 CControlChangeAttributes(icp->conversion, mask, &attr); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2163 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2164 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2165 static void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2166 computeAreaNeeded(icp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2167 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2168 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2169 IMPSAttributes *pattr = &icp->preedit_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2170 IMPSAttributes *sattr = &icp->status_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2171 IMWindowProfile *cpr = &icp->client_profile; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2172 int width, height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2173 int min_width, min_height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2174 int default_status_width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2175 int font_height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2176 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2177 TRACE(("computeAreaNeeded()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2178 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2179 if (icp->style == IMSTYLE_SEPARATE) return; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2180 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2181 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2182 * Get the current dimension of the client window. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2183 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2184 (void)validateClientWindow(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2185 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2186 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2187 * Compute the dimensions of the status region. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2188 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2189 fillPSDefault(icp, NEST_STATUS, (unsigned long)ATTR_MASK_LINESPACE); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2190 font_height = sattr->line_space + 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2191 width = height = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2192 if (sattr->set_mask & ATTR_MASK_AREA_NEEDED) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2193 width = sattr->area_needed.width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2194 height = sattr->area_needed.height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2195 TRACE(("\tstatus areaNeeded was: (%d,%d)\n", width, height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2196 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2197 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2198 min_width = font_height * 3; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2199 min_height = font_height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2200 if (min_width < MIN_AREA_WIDTH) min_width = MIN_AREA_WIDTH; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2201 if (min_height < MIN_AREA_HEIGHT) min_height = MIN_AREA_HEIGHT; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2202 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2203 if (width == 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2204 default_status_width = |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2205 IMStatusWidth(icp->im->connection->proto_widget); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2206 if (default_status_width > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2207 width = default_status_width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2208 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2209 width = cpr->width / 5; /* wild guess */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2210 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2211 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2212 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2213 if (width < min_width) width = min_width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2214 if (height < min_height) height = min_height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2215 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2216 sattr->area_needed.x = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2217 sattr->area_needed.y = cpr->height - height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2218 sattr->area_needed.width = width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2219 sattr->area_needed.height = height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2220 TRACE(("\tstatus areaNeeded is now: (%d, %d, %d, %d)\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2221 sattr->area_needed.x, sattr->area_needed.y, width, height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2222 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2223 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2224 * Compute the dimensions of the pre-edit region. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2225 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2226 if (icp->style != IMSTYLE_OFF_THE_SPOT) return; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2227 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2228 fillPSDefault(icp, NEST_PREEDIT, (unsigned long)ATTR_MASK_LINESPACE); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2229 font_height = pattr->line_space + 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2230 width = height = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2231 if (pattr->set_mask & ATTR_MASK_AREA_NEEDED) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2232 width = pattr->area_needed.width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2233 height = pattr->area_needed.height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2234 TRACE(("\tpreedit areaNeeded was: (%d,%d)\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2235 width, height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2236 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2237 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2238 min_width = (cpr->width - sattr->area_needed.width) / 2; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2239 min_height = font_height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2240 if (min_width < MIN_AREA_WIDTH) min_width = MIN_AREA_WIDTH; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2241 if (min_height < MIN_AREA_HEIGHT) min_height = MIN_AREA_HEIGHT; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2242 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2243 if (width < min_width) width = min_width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2244 if (height < min_height) height = min_height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2245 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2246 pattr->area_needed.x = sattr->area_needed.width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2247 pattr->area_needed.y = cpr->height - height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2248 pattr->area_needed.width = width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2249 pattr->area_needed.height = height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2250 TRACE(("\tpreedit areaNeeded is now: (%d, %d, %d, %d)\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2251 pattr->area_needed.x, pattr->area_needed.y, width, height)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2252 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2253 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2254 static void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2255 computeAreaForQuery(icp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2256 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2257 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2258 IMPSAttributes *pattr = &icp->preedit_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2259 IMPSAttributes *sattr = &icp->status_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2260 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2261 TRACE(("computeAreaForQuery()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2262 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2263 if (icp->style == IMSTYLE_SEPARATE) return; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2264 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2265 computeAreaNeeded(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2266 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2267 if (!(pattr->set_mask & ATTR_MASK_AREA)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2268 if (icp->style == IMSTYLE_OVER_THE_SPOT) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2269 IMWindowProfile *fpr = &icp->focus_profile; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2270 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2271 pattr->area.x = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2272 pattr->area.y = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2273 pattr->area.width = fpr->width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2274 pattr->area.height = fpr->height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2275 } else { /* IMSTYLE_OFF_THE_SPOT */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2276 pattr->area = pattr->area_needed; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2277 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2278 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2279 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2280 if (!(sattr->set_mask & ATTR_MASK_AREA)) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2281 sattr->area = sattr->area_needed; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2282 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2283 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2284 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2285 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2286 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2287 * Public functions |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2288 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2289 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2290 /*- IMPutIMAttrList: write list of supported IM attributes to output buffer -*/ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2291 void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2292 IMPutIMAttrList(imp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2293 IMIM *imp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2294 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2295 IMConnection *conn = imp->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2296 IMAttribute *iap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2297 int offset, list_start, list_end; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2298 int n; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2299 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2300 TRACE(("IMPutIMAttrList()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2301 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2302 offset = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2303 IMPutC16(conn, 0); /* dummy. overwritten afterwards */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2304 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2305 list_start = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2306 for (n = 0, iap = imAttributes; n < numImAttributes; n++, iap++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2307 int length; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2308 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2309 IMPutC16(conn, (unsigned int)n); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2310 IMPutC16(conn, (unsigned int)iap->type); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2311 length = strlen(iap->name); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2312 IMPutC16(conn, (unsigned int)length); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2313 IMPutString(conn, iap->name, length); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2314 IMPutPad(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2315 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2316 list_end = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2317 IMRewriteC16(conn, offset, (unsigned int)(list_end - list_start)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2318 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2319 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2320 /*- IMPutICAttrList: write list of supported IC attributes to output buffer -*/ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2321 void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2322 IMPutICAttrList(imp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2323 IMIM *imp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2324 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2325 IMConnection *conn = imp->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2326 ICAttribute *iap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2327 int offset, list_start, list_end; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2328 int n; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2329 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2330 TRACE(("IMPutICAttrList()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2331 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2332 offset = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2333 IMPutC16(conn, 0); /* dummy. overwritten afterwards */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2334 IMPutC16(conn, 0); /* unused */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2335 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2336 list_start = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2337 for (n = 0, iap = icAttributes; n < numIcAttributes; n++, iap++) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2338 int length; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2339 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2340 IMPutC16(conn, (unsigned int)n); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2341 IMPutC16(conn, (unsigned int)iap->type); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2342 length = strlen(iap->name); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2343 IMPutC16(conn, (unsigned int)length); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2344 IMPutString(conn, iap->name, length); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2345 IMPutPad(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2346 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2347 list_end = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2348 IMRewriteC16(conn, offset, (unsigned int)(list_end - list_start)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2349 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2350 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2351 /* ARGSUSED */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2352 int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2353 IMSetIMValues(imp, data, len, major) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2354 IMIM *imp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2355 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2356 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2357 int major; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2358 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2359 TRACE(("IMSetIMValues(): not supported yet\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2360 /* not supported yet */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2361 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2362 IMSendError(imp->connection, IMBadProtocol, imp->id, 0, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2363 "this protocol is not supported yet"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2364 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2365 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2366 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2367 int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2368 IMGetIMValues(imp, data, len, offset) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2369 IMIM *imp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2370 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2371 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2372 int offset; /* request offset */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2373 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2374 IMConnection *conn = imp->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2375 int pos, list_start, list_end; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2376 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2377 TRACE(("IMGetIMValues()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2378 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2379 pos = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2380 IMPutC16(conn, 0); /* length of the list. to be overwritten. */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2381 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2382 list_start = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2383 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2384 if (getIMValues(imp, data, len, offset) < 0) return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2385 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2386 list_end = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2387 IMRewriteC16(conn, pos, (unsigned int)(list_end - list_start)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2388 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2389 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2390 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2391 int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2392 IMSetICValues(icp, data, len, major) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2393 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2394 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2395 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2396 int major; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2397 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2398 int r1, r2, r3; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2399 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2400 TRACE(("IMSetICValues()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2401 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2402 /* clear change mask */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2403 icp->common_attr.change_mask = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2404 icp->preedit_attr.change_mask = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2405 icp->status_attr.change_mask = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2406 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2407 /* read the specified data and set attributes */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2408 r1 = setICValues(icp, data, len, 0, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2409 (major == XIM_CREATE_IC) ? OP_C : OP_S); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2410 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2411 /* validate attributes */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2412 r2 = IMValidateICAttributes(icp, (r1 < 0)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2413 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2414 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2415 * If the operation is CREATE_IC, input style attribute must be set. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2416 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2417 if (major == XIM_CREATE_IC && |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2418 !(icp->common_attr.set_mask & ATTR_MASK_INPUT_STYLE) && |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2419 r1 == 0 && r2 == 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2420 DPRINT(("input style not specified by CreateIC\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2421 IMSendError(icp->im->connection, IMBadSomething, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2422 "inputStyle resource must be set"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2423 r3 = -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2424 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2425 r3 = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2426 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2427 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2428 if (r1 == 0 && r2 == 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2429 /* if conversion is taking place... */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2430 if (icp->state & IC_CONVERTING) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2431 changeConversionAttributes(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2432 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2433 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2434 /* if preedit state is specified... */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2435 if (icp->common_attr.change_mask & ATTR_MASK_PREEDIT_STATE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2436 TRACE(("changing preedit state to %s\n", |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2437 (icp->common_attr.preedit_state == XIMPreeditEnable) ? |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2438 "enabled" : "disabled")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2439 if (icp->common_attr.preedit_state == XIMPreeditEnable) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2440 IMStartConversion(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2441 } else { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2442 IMStopConversion(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2443 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2444 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2445 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2446 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2447 return (r1 < 0 || r2 < 0 || r3 < 0) ? -1 : 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2448 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2449 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2450 int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2451 IMGetICValues(icp, data, len, offset) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2452 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2453 char *data; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2454 int len; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2455 int offset; /* request offset */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2456 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2457 int nested_separator; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2458 int r; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2459 IMConnection *conn = icp->im->connection; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2460 int pos, list_start, list_end; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2461 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2462 TRACE(("IMGetICValues()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2463 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2464 pos = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2465 IMPutC16(conn, 0); /* dummy. overwritten afterwards */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2466 IMPutC16(conn, 0); /* unused */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2467 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2468 list_start = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2469 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2470 r = getICValues(icp, data, len, NEST_NONE, offset, &nested_separator); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2471 if (r < 0) return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2472 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2473 list_end = IMWritePos(conn); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2474 IMRewriteC16(conn, pos, (unsigned int)(list_end - list_start)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2475 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2476 if (nested_separator) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2477 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2478 * There must have been some unbalanced NestedListSeparator. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2479 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2480 DPRINT(("getICvalues: unmatched separator\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2481 IMCancelRequest(icp->im->connection, offset); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2482 IMSendError(icp->im->connection, IMBadSomething, icp->im->id, icp->id, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2483 "corrupted nested list"); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2484 return -1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2485 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2486 return 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2487 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2488 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2489 void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2490 IMFillDefault(icp, common_mask, preedit_mask, status_mask) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2491 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2492 unsigned long common_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2493 unsigned long preedit_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2494 unsigned long status_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2495 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2496 TRACE(("IMFillDefault()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2497 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2498 if (common_mask != 0) fillCommonDefault(icp, common_mask); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2499 if (preedit_mask != 0) fillPSDefault(icp, NEST_PREEDIT, preedit_mask); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2500 if (status_mask != 0) fillPSDefault(icp, NEST_STATUS, status_mask); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2501 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2502 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2503 int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2504 IMValidateWindow(dpy, win, profilep) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2505 Display *dpy; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2506 Window win; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2507 IMWindowProfile *profilep; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2508 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2509 Window root; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2510 int x, y; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2511 unsigned int width, height, border, depth; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2512 XAEHandle h; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2513 int s; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2514 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2515 TRACE(("IMValidateWindow(win: %08lx)\n", win)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2516 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2517 h = XAESetIgnoreErrors(dpy); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2518 s = XGetGeometry(dpy, win, &root, &x, &y, |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2519 &width, &height, &border, &depth); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2520 XAEUnset(h); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2521 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2522 if (profilep != NULL && s) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2523 profilep->width = width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2524 profilep->height = width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2525 profilep->root = root; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2526 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2527 return s; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2528 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2529 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2530 int |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2531 IMValidateICAttributes(icp, checkonly) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2532 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2533 int checkonly; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2534 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2535 int error_occured; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2536 int r; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2537 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2538 TRACE(("IMValidateICAttributes()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2539 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2540 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2541 * Be careful not to send multiple error messages. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2542 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2543 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2544 error_occured = 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2545 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2546 r = validateCommonAttr(icp, checkonly); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2547 if (r < 0) error_occured = 1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2548 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2549 r = validatePSAttr(icp, NEST_PREEDIT, (checkonly && error_occured)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2550 if (r < 0) error_occured = 1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2551 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2552 r = validatePSAttr(icp, NEST_STATUS, (checkonly && error_occured)); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2553 if (r < 0) error_occured = 1; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2554 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2555 return error_occured ? -1 : 0; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2556 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2557 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2558 void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2559 IMFreeICAttributes(icp) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2560 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2561 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2562 IMPSAttributes *pattr = &icp->preedit_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2563 IMPSAttributes *sattr = &icp->status_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2564 FontBank bank = IMFontBank(icp->im); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2565 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2566 TRACE(("IMFreeICAttributes()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2567 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2568 if (pattr->set_mask & ATTR_MASK_FONT_SET) XtFree(pattr->font_set); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2569 if (sattr->set_mask & ATTR_MASK_FONT_SET) XtFree(sattr->font_set); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2570 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2571 if (icp->num_fonts > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2572 FontBankFreeFonts(bank, icp->fonts, icp->num_fonts); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2573 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2574 if (icp->num_status_fonts > 0) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2575 FontBankFreeFonts(bank, icp->status_fonts, icp->num_status_fonts); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2576 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2577 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2578 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2579 unsigned long |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2580 IMMakeConvAttributes(icp, attr) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2581 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2582 ConversionAttributes *attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2583 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2584 IMCommonAttributes *cattr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2585 IMPSAttributes *pattr, *sattr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2586 unsigned long cmask; /* changed attributes */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2587 unsigned long mask; /* attributes to be set */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2588 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2589 TRACE(("IMMakeConvAttributes()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2590 mask = 0L; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2591 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2592 cattr = &icp->common_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2593 pattr = &icp->preedit_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2594 sattr = &icp->status_attr; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2595 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2596 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2597 * Check changes of common attributes. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2598 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2599 cmask = cattr->change_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2600 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2601 /* focus window */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2602 if (cmask & ATTR_MASK_FOCUS) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2603 attr->focuswindow = cattr->focus; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2604 mask |= CAFocusWindow; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2605 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2606 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2607 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2608 * Check changes of preedit attributes. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2609 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2610 cmask = pattr->change_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2611 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2612 /* client area */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2613 if (cmask & ATTR_MASK_AREA) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2614 attr->clientarea.x = pattr->area.x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2615 attr->clientarea.y = pattr->area.y; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2616 attr->clientarea.width = pattr->area.width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2617 attr->clientarea.height = pattr->area.height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2618 mask |= CAClientArea; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2619 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2620 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2621 /* foreground/background */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2622 if (cmask & ATTR_MASK_FOREGROUND) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2623 attr->foreground = pattr->foreground; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2624 mask |= CAColor; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2625 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2626 if (cmask & ATTR_MASK_BACKGROUND) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2627 attr->background = pattr->background; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2628 mask |= CAColor; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2629 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2630 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2631 /* colormap */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2632 if (cmask & ATTR_MASK_COLORMAP) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2633 attr->colormap = pattr->colormap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2634 mask |= CAColormap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2635 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2636 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2637 /* background pixmap */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2638 if (cmask & ATTR_MASK_BG_PIXMAP) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2639 attr->background_pixmap = pattr->bg_pixmap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2640 mask |= CABackgroundPixmap; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2641 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2642 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2643 /* line spacing */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2644 if (cmask & ATTR_MASK_LINESPACE) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2645 attr->linespacing = pattr->line_space; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2646 mask |= CALineSpacing; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2647 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2648 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2649 /* cursor */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2650 if (cmask & ATTR_MASK_CURSOR) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2651 attr->cursor = pattr->cursor; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2652 mask |= CACursor; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2653 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2654 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2655 /* font */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2656 if (cmask & ATTR_MASK_FONT_SET) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2657 changeFonts(icp, 1); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2658 attr->fonts = icp->fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2659 attr->num_fonts = icp->num_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2660 mask |= CAFonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2661 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2662 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2663 /* spot location */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2664 if ((cmask & ATTR_MASK_SPOT_LOCATION) && |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2665 icp->style == IMSTYLE_OVER_THE_SPOT) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2666 attr->spotx = pattr->spot_location.x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2667 attr->spoty = pattr->spot_location.y; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2668 mask |= CASpotLocation; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2669 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2670 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2671 /* |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2672 * Check changes of status attributes. |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2673 */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2674 cmask = sattr->change_mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2675 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2676 /* status area */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2677 if (cmask & ATTR_MASK_AREA) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2678 attr->statusarea.x = sattr->area.x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2679 attr->statusarea.y = sattr->area.y; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2680 attr->statusarea.width = sattr->area.width; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2681 attr->statusarea.height = sattr->area.height; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2682 mask |= CAStatusArea; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2683 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2684 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2685 /* font */ |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2686 if (cmask & ATTR_MASK_FONT_SET) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2687 changeFonts(icp, 0); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2688 attr->status_fonts = icp->status_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2689 attr->num_status_fonts = icp->num_status_fonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2690 mask |= CAStatusFonts; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2691 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2692 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2693 return mask; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2694 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2695 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2696 void |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2697 IMMoveLocation(icp, x, y) |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2698 IMIC *icp; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2699 int x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2700 int y; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2701 { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2702 TRACE(("IMMoveLocation()\n")); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2703 |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2704 icp->preedit_attr.spot_location.x = x; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2705 icp->preedit_attr.spot_location.y = y; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2706 icp->preedit_attr.set_mask |= ATTR_MASK_SPOT_LOCATION; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2707 icp->preedit_attr.change_mask = ATTR_MASK_SPOT_LOCATION; |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2708 if (icp->state & IC_CONVERTING) { |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2709 changeConversionAttributes(icp); |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2710 } |
92745d501b9a
initial import from kinput2-v3.1
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents:
diff
changeset
|
2711 } |