diff --git a/dlls/mshtml/txtrange.c b/dlls/mshtml/txtrange.c
index bd398b9060f..7e505df16e3 100644
--- a/dlls/mshtml/txtrange.c
+++ b/dlls/mshtml/txtrange.c
@@ -661,18 +661,29 @@ static WCHAR next_char(const dompos_t *pos, dompos_t *new_pos)
return *p;
case ELEMENT_NODE:
- if(!is_space_elem(iter))
- break;
+ if(is_elem_tag(iter, brW)) {
+ if(cspace)
+ dompos_release(&last_space);
+ cspace = '\n';
- if(cspace)
- dompos_release(&last_space);
- cspace = '\n';
+ nsIDOMNode_AddRef(iter);
+ last_space.node = iter;
+ last_space.type = ELEMENT_NODE;
+ last_space.off = 0;
+ last_space.p = NULL;
+ }else if(is_elem_tag(iter, hrW)) {
+ if(cspace) {
+ *new_pos = last_space;
+ nsIDOMNode_Release(iter);
+ return cspace;
+ }
- nsIDOMNode_AddRef(iter);
- last_space.node = iter;
- last_space.type = ELEMENT_NODE;
- last_space.off = 0;
- last_space.p = NULL;
+ new_pos->node = iter;
+ new_pos->type = ELEMENT_NODE;
+ new_pos->off = 0;
+ new_pos->p = NULL;
+ return '\n';
+ }
}
tmp = iter;
@@ -745,11 +756,12 @@ static WCHAR prev_char(HTMLTxtRange *This, const dompos_t *pos, dompos_t *new_po
}
case ELEMENT_NODE:
- if(!is_space_elem(iter))
- break;
-
- if(skip_space) {
- skip_space = FALSE;
+ if(is_elem_tag(iter, brW)) {
+ if(skip_space) {
+ skip_space = FALSE;
+ break;
+ }
+ }else if(!is_elem_tag(iter, hrW)) {
break;
}