[PATCH 1/5] riched20: Use row ptrs in the EM_GETLINELENGTH handler.
Huw Davies
huw at codeweavers.com
Tue Nov 3 02:44:40 CST 2020
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/riched20/editor.c | 25 +++++++++----------------
1 file changed, 9 insertions(+), 16 deletions(-)
diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 66f6bd5e114..2bb1fbbe1e9 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -4341,8 +4341,8 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
}
case EM_LINELENGTH:
{
- ME_DisplayItem *item, *item_end;
- int nChars = 0, nThisLineOfs = 0, nNextLineOfs = 0;
+ ME_Row *row;
+ int start_ofs, end_ofs;
ME_Cursor cursor;
if (wParam > ME_GetTextLength(editor))
@@ -4353,20 +4353,13 @@ LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam,
return 0;
}
cursor_from_char_ofs( editor, wParam, &cursor );
- item = ME_RowStart( cursor.pRun );
- nThisLineOfs = run_char_ofs( &ME_FindItemFwd( item, diRun )->member.run, 0 );
- item_end = ME_FindItemFwd(item, diStartRowOrParagraphOrEnd);
- if (item_end->type == diStartRow)
- nNextLineOfs = run_char_ofs( &ME_FindItemFwd( item_end, diRun )->member.run, 0 );
- else
- {
- ME_DisplayItem *endRun = ME_FindItemBack(item_end, diRun);
- assert(endRun && endRun->member.run.nFlags & MERF_ENDPARA);
- nNextLineOfs = run_char_ofs( &endRun->member.run, 0 );
- }
- nChars = nNextLineOfs - nThisLineOfs;
- TRACE("EM_LINELENGTH(%ld)==%d\n", wParam, nChars);
- return nChars;
+ row = row_from_cursor( &cursor );
+ row_first_cursor( row, &cursor );
+ start_ofs = ME_GetCursorOfs( &cursor );
+ row_end_cursor( row, &cursor, FALSE );
+ end_ofs = ME_GetCursorOfs( &cursor );
+ TRACE( "EM_LINELENGTH(%ld)==%d\n", wParam, end_ofs - start_ofs );
+ return end_ofs - start_ofs;
}
case EM_EXLIMITTEXT:
{
--
2.23.0
More information about the wine-devel
mailing list