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
964479af
Commit
964479af
authored
Sep 12, 2007
by
Jacek Caban
Committed by
Alexandre Julliard
Sep 13, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mshtml: Added IHTMLTxtRange::move("word") implementation.
parent
d6c14fba
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
114 additions
and
1 deletion
+114
-1
dom.c
dlls/mshtml/tests/dom.c
+50
-0
txtrange.c
dlls/mshtml/txtrange.c
+64
-1
No files found.
dlls/mshtml/tests/dom.c
View file @
964479af
...
...
@@ -268,6 +268,56 @@ static void test_txtrange(IHTMLDocument2 *doc)
test_range_moveend
(
range
,
characterW
,
2
,
2
);
test_range_text
(
range
,
"123
\r\n
i"
);
hres
=
IHTMLTxtRange_duplicate
(
body_range
,
&
range
);
ok
(
hres
==
S_OK
,
"duplicate failed: %08x
\n
"
,
hres
);
test_range_move
(
range
,
wordW
,
1
,
1
);
test_range_moveend
(
range
,
characterW
,
2
,
2
);
test_range_text
(
range
,
"ab"
);
test_range_move
(
range
,
characterW
,
-
2
,
-
2
);
test_range_moveend
(
range
,
characterW
,
2
,
2
);
test_range_text
(
range
,
"t "
);
test_range_move
(
range
,
wordW
,
3
,
3
);
test_range_move
(
range
,
wordW
,
-
2
,
-
2
);
test_range_moveend
(
range
,
characterW
,
2
,
2
);
test_range_text
(
range
,
"ab"
);
test_range_move
(
range
,
characterW
,
-
6
,
-
5
);
test_range_moveend
(
range
,
characterW
,
-
1
,
0
);
test_range_moveend
(
range
,
characterW
,
-
6
,
0
);
test_range_move
(
range
,
characterW
,
2
,
2
);
test_range_moveend
(
range
,
characterW
,
2
,
2
);
test_range_text
(
range
,
"st"
);
test_range_moveend
(
range
,
characterW
,
-
6
,
-
4
);
test_range_moveend
(
range
,
characterW
,
2
,
2
);
IHTMLTxtRange_Release
(
range
);
hres
=
IHTMLTxtRange_duplicate
(
body_range
,
&
range
);
ok
(
hres
==
S_OK
,
"duplicate failed: %08x
\n
"
,
hres
);
test_range_move
(
range
,
wordW
,
2
,
2
);
test_range_moveend
(
range
,
characterW
,
2
,
2
);
test_range_text
(
range
,
"12"
);
test_range_move
(
range
,
characterW
,
15
,
14
);
test_range_move
(
range
,
characterW
,
-
2
,
-
2
);
test_range_moveend
(
range
,
characterW
,
3
,
2
);
test_range_text
(
range
,
"t"
);
test_range_moveend
(
range
,
characterW
,
-
1
,
-
1
);
test_range_text
(
range
,
"t"
);
test_range_expand
(
range
,
wordW
,
VARIANT_TRUE
,
"text"
);
test_range_move
(
range
,
characterW
,
-
2
,
-
2
);
test_range_moveend
(
range
,
characterW
,
2
,
2
);
test_range_text
(
range
,
"s "
);
test_range_move
(
range
,
characterW
,
100
,
7
);
test_range_move
(
range
,
wordW
,
1
,
0
);
test_range_move
(
range
,
characterW
,
-
2
,
-
2
);
test_range_moveend
(
range
,
characterW
,
3
,
2
);
test_range_text
(
range
,
"t"
);
IHTMLTxtRange_Release
(
range
);
IHTMLTxtRange_Release
(
body_range
);
}
...
...
dlls/mshtml/txtrange.c
View file @
964479af
/*
* Copyright 2006 Jacek Caban for CodeWeavers
* Copyright 2006
-2007
Jacek Caban for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -689,6 +689,48 @@ static long find_prev_space(HTMLTxtRange *This, const dompos_t *pos, BOOL first_
return
TRUE
;
}
static
long
move_next_words
(
long
cnt
,
const
dompos_t
*
pos
,
dompos_t
*
new_pos
)
{
dompos_t
iter
,
tmp
;
long
ret
=
0
;
iter
=
*
pos
;
dompos_addref
(
&
iter
);
while
(
ret
<
cnt
)
{
if
(
!
find_next_space
(
&
iter
,
FALSE
,
&
tmp
))
break
;
ret
++
;
dompos_release
(
&
iter
);
iter
=
tmp
;
}
*
new_pos
=
iter
;
return
ret
;
}
static
long
move_prev_words
(
HTMLTxtRange
*
This
,
long
cnt
,
const
dompos_t
*
pos
,
dompos_t
*
new_pos
)
{
dompos_t
iter
,
tmp
;
long
ret
=
0
;
iter
=
*
pos
;
dompos_addref
(
&
iter
);
while
(
ret
<
cnt
)
{
if
(
!
find_prev_space
(
This
,
&
iter
,
FALSE
,
&
tmp
))
break
;
dompos_release
(
&
iter
);
iter
=
tmp
;
ret
++
;
}
*
new_pos
=
iter
;
return
ret
;
}
#define HTMLTXTRANGE_THIS(iface) DEFINE_THIS(HTMLTxtRange, HTMLTxtRange, iface)
static
HRESULT
WINAPI
HTMLTxtRange_QueryInterface
(
IHTMLTxtRange
*
iface
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -1075,6 +1117,27 @@ static HRESULT WINAPI HTMLTxtRange_move(IHTMLTxtRange *iface, BSTR Unit,
break
;
}
case
RU_WORD
:
{
dompos_t
cur_pos
,
new_pos
;
get_cur_pos
(
This
,
TRUE
,
&
cur_pos
);
if
(
Count
>
0
)
{
*
ActualCount
=
move_next_words
(
Count
,
&
cur_pos
,
&
new_pos
);
set_range_pos
(
This
,
FALSE
,
&
new_pos
);
IHTMLTxtRange_collapse
(
HTMLTXTRANGE
(
This
),
FALSE
);
dompos_release
(
&
new_pos
);
}
else
{
*
ActualCount
=
-
move_prev_words
(
This
,
-
Count
,
&
cur_pos
,
&
new_pos
);
set_range_pos
(
This
,
TRUE
,
&
new_pos
);
IHTMLTxtRange_collapse
(
HTMLTXTRANGE
(
This
),
TRUE
);
dompos_release
(
&
new_pos
);
}
dompos_release
(
&
cur_pos
);
break
;
}
default:
FIXME
(
"unimplemented unit %s
\n
"
,
debugstr_w
(
Unit
));
}
...
...
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