Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
b2d9edd8
Commit
b2d9edd8
authored
Sep 15, 2008
by
Aric Stewart
Committed by
Alexandre Julliard
Sep 16, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
imm32: Correct CopyCompAttrIMEtoClient to handle A->W and W->A conversions.
parent
0739200c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
62 additions
and
3 deletions
+62
-3
imm.c
dlls/imm32/imm.c
+62
-3
No files found.
dlls/imm32/imm.c
View file @
b2d9edd8
...
@@ -1010,10 +1010,69 @@ static INT CopyCompStringIMEtoClient(InputContextData *data, LPBYTE source, INT
...
@@ -1010,10 +1010,69 @@ static INT CopyCompStringIMEtoClient(InputContextData *data, LPBYTE source, INT
static
INT
CopyCompAttrIMEtoClient
(
InputContextData
*
data
,
LPBYTE
source
,
INT
slen
,
LPBYTE
ssource
,
INT
sslen
,
static
INT
CopyCompAttrIMEtoClient
(
InputContextData
*
data
,
LPBYTE
source
,
INT
slen
,
LPBYTE
ssource
,
INT
sslen
,
LPBYTE
target
,
INT
tlen
,
BOOL
unicode
)
LPBYTE
target
,
INT
tlen
,
BOOL
unicode
)
{
{
if
(
target
&&
source
&&
tlen
>=
slen
)
INT
rc
;
memcpy
(
target
,
source
,
slen
);
return
slen
;
if
(
is_himc_ime_unicode
(
data
)
&&
!
unicode
)
{
rc
=
WideCharToMultiByte
(
CP_ACP
,
0
,
(
LPWSTR
)
ssource
,
sslen
,
NULL
,
0
,
NULL
,
NULL
);
if
(
tlen
)
{
const
BYTE
*
src
=
source
;
LPBYTE
dst
=
target
;
int
i
,
j
=
0
,
k
=
0
;
if
(
rc
<
tlen
)
tlen
=
rc
;
for
(
i
=
0
;
i
<
sslen
;
++
i
)
{
int
len
;
len
=
WideCharToMultiByte
(
CP_ACP
,
0
,
(
LPCWSTR
)
ssource
+
i
,
1
,
NULL
,
0
,
NULL
,
NULL
);
for
(;
len
>
0
;
--
len
)
{
dst
[
j
++
]
=
src
[
k
];
if
(
j
>=
tlen
)
goto
end
;
}
++
k
;
}
end:
rc
=
j
;
}
}
else
if
(
!
is_himc_ime_unicode
(
data
)
&&
unicode
)
{
rc
=
MultiByteToWideChar
(
CP_ACP
,
0
,
(
LPSTR
)
ssource
,
sslen
,
NULL
,
0
);
if
(
tlen
)
{
const
BYTE
*
src
=
source
;
LPBYTE
dst
=
target
;
int
i
,
j
=
0
;
if
(
rc
<
tlen
)
tlen
=
rc
;
for
(
i
=
0
;
i
<
sslen
;
++
i
)
{
if
(
IsDBCSLeadByte
(((
LPSTR
)
ssource
)[
i
]))
continue
;
dst
[
j
++
]
=
src
[
i
];
if
(
j
>=
tlen
)
break
;
}
rc
=
j
;
}
}
else
{
memcpy
(
target
,
source
,
min
(
slen
,
tlen
));
rc
=
slen
;
}
return
rc
;
}
}
static
INT
CopyCompClauseIMEtoClient
(
InputContextData
*
data
,
LPBYTE
source
,
INT
slen
,
LPBYTE
ssource
,
INT
sslen
,
static
INT
CopyCompClauseIMEtoClient
(
InputContextData
*
data
,
LPBYTE
source
,
INT
slen
,
LPBYTE
ssource
,
INT
sslen
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment