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
11c2150d
Commit
11c2150d
authored
Nov 18, 2011
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comctl32/syslink: Wrap the link text on \n characters.
parent
37a0f7ad
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
39 deletions
+25
-39
syslink.c
dlls/comctl32/syslink.c
+25
-39
No files found.
dlls/comctl32/syslink.c
View file @
11c2150d
...
@@ -609,35 +609,26 @@ static PDOC_ITEM SYSLINK_GetPrevLink (const SYSLINK_INFO *infoPtr, PDOC_ITEM Cur
...
@@ -609,35 +609,26 @@ static PDOC_ITEM SYSLINK_GetPrevLink (const SYSLINK_INFO *infoPtr, PDOC_ITEM Cur
static
BOOL
SYSLINK_WrapLine
(
LPWSTR
Text
,
WCHAR
BreakChar
,
int
*
LineLen
,
static
BOOL
SYSLINK_WrapLine
(
LPWSTR
Text
,
WCHAR
BreakChar
,
int
*
LineLen
,
int
nFit
,
LPSIZE
Extent
)
int
nFit
,
LPSIZE
Extent
)
{
{
WCHAR
*
Current
;
int
i
;
if
(
nFit
==
*
LineLen
)
for
(
i
=
0
;
i
<
nFit
;
i
++
)
if
(
Text
[
i
]
==
'\n'
)
break
;
{
return
FALSE
;
}
*
LineLen
=
nFit
;
if
(
i
==
*
LineLen
)
return
FALSE
;
Current
=
Text
+
nFit
;
/* check if we're in the middle of a word */
/* check if we're in the middle of a word */
if
((
*
Current
)
!=
BreakChar
)
if
(
Text
[
i
]
!=
'\n'
&&
Text
[
i
]
!=
BreakChar
)
{
{
/* search for the beginning of the word */
/* search for the beginning of the word */
while
(
Current
>
Text
&&
(
*
(
Current
-
1
))
!=
BreakChar
)
while
(
i
&&
Text
[
i
-
1
]
!=
BreakChar
)
i
--
;
{
Current
--
;
if
(
i
==
0
)
(
*
LineLen
)
--
;
}
if
((
*
LineLen
)
==
0
)
{
{
Extent
->
cx
=
0
;
Extent
->
cx
=
0
;
Extent
->
cy
=
0
;
Extent
->
cy
=
0
;
i
=
max
(
nFit
,
1
);
}
}
return
TRUE
;
}
}
*
LineLen
=
i
;
return
TRUE
;
return
TRUE
;
}
}
...
@@ -652,6 +643,7 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
...
@@ -652,6 +643,7 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
HGDIOBJ
hOldFont
;
HGDIOBJ
hOldFont
;
int
x
,
y
,
LineHeight
;
int
x
,
y
,
LineHeight
;
SIZE
szDoc
;
SIZE
szDoc
;
TEXTMETRICW
tm
;
szDoc
.
cx
=
szDoc
.
cy
=
0
;
szDoc
.
cx
=
szDoc
.
cy
=
0
;
...
@@ -668,8 +660,9 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
...
@@ -668,8 +660,9 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
x
=
SL_LEFTMARGIN
;
x
=
SL_LEFTMARGIN
;
y
=
SL_TOPMARGIN
;
y
=
SL_TOPMARGIN
;
LineHeight
=
0
;
GetTextMetricsW
(
hdc
,
&
tm
);
LineHeight
=
tm
.
tmHeight
+
tm
.
tmExternalLeading
;
for
(
Current
=
infoPtr
->
Items
;
Current
!=
NULL
;
Current
=
Current
->
Next
)
for
(
Current
=
infoPtr
->
Items
;
Current
!=
NULL
;
Current
=
Current
->
Next
)
{
{
int
n
,
nBlocks
;
int
n
,
nBlocks
;
...
@@ -677,6 +670,7 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
...
@@ -677,6 +670,7 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
PDOC_TEXTBLOCK
bl
,
cbl
;
PDOC_TEXTBLOCK
bl
,
cbl
;
INT
nFit
;
INT
nFit
;
SIZE
szDim
;
SIZE
szDim
;
int
SkipChars
=
0
;
if
(
Current
->
nText
==
0
)
if
(
Current
->
nText
==
0
)
{
{
...
@@ -702,11 +696,15 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
...
@@ -702,11 +696,15 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
while
(
n
>
0
)
while
(
n
>
0
)
{
{
int
SkipChars
=
0
;
/* skip break characters unless they're the first of the doc item */
/* skip break characters unless they're the first of the doc item */
if
(
tx
!=
Current
->
Text
||
x
==
SL_LEFTMARGIN
)
if
(
tx
!=
Current
->
Text
||
x
==
SL_LEFTMARGIN
)
{
{
if
(
n
&&
*
tx
==
'\n'
)
{
tx
++
;
SkipChars
++
;
n
--
;
}
while
(
n
>
0
&&
(
*
tx
)
==
infoPtr
->
BreakChar
)
while
(
n
>
0
&&
(
*
tx
)
==
infoPtr
->
BreakChar
)
{
{
tx
++
;
tx
++
;
...
@@ -728,20 +726,10 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
...
@@ -728,20 +726,10 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
if
(
LineLen
==
0
)
if
(
LineLen
==
0
)
{
{
if
(
x
>
SL_LEFTMARGIN
)
/* move one line down, the word didn't fit into the line */
{
x
=
SL_LEFTMARGIN
;
/* move one line down, the word didn't fit into the line */
y
+=
LineHeight
;
x
=
SL_LEFTMARGIN
;
continue
;
y
+=
LineHeight
;
LineHeight
=
0
;
continue
;
}
else
{
/* the word starts at the beginning of the line and doesn't
fit into the line, so break it at the last character that fits */
LineLen
=
max
(
nFit
,
1
);
}
}
}
if
(
LineLen
!=
n
)
if
(
LineLen
!=
n
)
...
@@ -782,13 +770,10 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
...
@@ -782,13 +770,10 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
if
(
LineLen
!=
0
)
if
(
LineLen
!=
0
)
{
{
x
+=
szDim
.
cx
;
x
+=
szDim
.
cx
;
LineHeight
=
max
(
LineHeight
,
szDim
.
cy
);
if
(
Wrap
)
if
(
Wrap
)
{
{
x
=
SL_LEFTMARGIN
;
x
=
SL_LEFTMARGIN
;
y
+=
LineHeight
;
y
+=
LineHeight
;
LineHeight
=
0
;
}
}
}
}
}
}
...
@@ -803,6 +788,7 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
...
@@ -803,6 +788,7 @@ static VOID SYSLINK_Render (const SYSLINK_INFO *infoPtr, HDC hdc, PRECT pRect)
}
}
n
-=
LineLen
;
n
-=
LineLen
;
tx
+=
LineLen
;
tx
+=
LineLen
;
SkipChars
=
0
;
}
}
else
else
{
{
...
...
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