Commit Graph

637 Commits

Author SHA1 Message Date
Dylan Smith 28645c64d5 richedit: Avoid rewrapping all text for isolated format changes.
When the character or paragraph format is changed the paragraph that
is changed is already marked to be rewrapped, so ME_MarkAllForWrapping
shouldn't be called.  Since ME_RewrapRepaint uses this function, it
shouldn't be called in these circumstances, since rewrapping all the
text can cause noticable delays when working with a lot of text.
2009-01-06 12:52:09 +01:00
Dylan Smith 6df4148b04 richedit: Prevent redundant rewraps when scrollbar is shown.
A common case for richedit controls are that a large amount of text is
set initially with word wrap enabled.  This causes the initially
wrapping of the text, which also calculates the text length.  After
this the vertical scrollbar will be shown, which causes the text to be
rewrapped again.  After this there are two redundant rewraps that are
done which this patch eliminates.
2009-01-06 12:51:55 +01:00
Dylan Smith a16db0afc6 richedit: Scroll up with less than page of text with ES_DISABLENOSCROLL. 2009-01-06 12:51:41 +01:00
Dylan Smith f361910514 richedit: Use 32-bit rather than 16-bit trackbar value for scrolling. 2009-01-06 12:44:24 +01:00
Dylan Smith fc13c70b78 richedit: Mask window id on WM_COMMAND notifications. 2009-01-04 14:59:54 +01:00
Alexandre Julliard 139ba41458 riched20/tests: Move the itextServicesStdcallVtbl definition to avoid a compiler warning. 2009-01-04 14:59:54 +01:00
Dylan Smith 7a54306008 richedit: Fix unicode truncation on EM_GETLINE message. 2009-01-03 14:55:30 +01:00
Dylan Smith c9977df853 richedit: Prevented a dereference of a freed pointer.
On WM_DESTROY the editor was getting freed, then it was used to obtain
a handle to the editor.  This patch moves it just before the editor is
freed within ME_DestroyEditor.
2008-12-27 20:22:53 +01:00
Maarten Lankhorst ac85a76b2d riched20: Fix cast for dwCookie. 2008-12-23 18:51:05 +01:00
Andrew Talbot 634dfd65f8 riched20: Remove unused Wine debug channel. 2008-12-22 10:29:02 +01:00
Dylan Smith 5dc1271ba6 richedit: Move message handling to function callable without window.
In order to make the message handling available to windowless richedit
controls, the message handling must be in a function that can be
called from the ITextServices_TxSendMessage method.  This method will
never have a handle to a window to pass to RichEditWndProc_common in
order to get the editor with GetWindowLongPtrW, but passing the editor
will work (even if hWnd is NULL).
2008-12-20 11:43:44 +01:00
Dylan Smith 97a83147b3 richedit: Avoid re-calculating positions found in wrapping for painting.
When the text is wrapped, the positions for all the runs, paragraphs,
and cells are already calculated and stored.  The only thing left to do
for painting is to offset them by the formatting rectangle and the
scroll position.
2008-12-20 11:43:29 +01:00
Dylan Smith dc03b6b2f2 richedit: Removed redundant editor height variables and calculations.
During wrapping there were three different heights that were being
stored, with only one of them being done correctly.  The other ones
failed to incorporate the height of the paragraph or row, so ended up
being incorrect.
2008-12-20 11:43:09 +01:00
Paul Vriens 5e66808ad3 riched20/tests: Fix tests on Win9x by using A-calls. 2008-12-19 17:16:19 +01:00
Dylan Smith 297716e01c richedit: Made sure text is offset by formatting rectangle.
The formatting rectangle is set with EM_SETRECT, and retrieved with
EM_GETRECT, so it corresponds to rcFormat in the code.  This defines the
area that the richedit control should draw the text so that it is
offset by the top-left corner of the formatting rectangle, and clipped
so that it doesn't draw past the bottom or right hand side.  Thus this
is important for implementing windowless richedit controls to not
interfere with the rest of the window.
2008-12-18 14:19:40 +01:00
Dylan Smith ced9bde4c0 richedit: Added tests for the formatting rectangle.
These tests show that there are problems with the way formatting
rectangles are currently implemented in wine.
2008-12-18 14:19:40 +01:00
Dylan Smith 62db58545e richedit: Fixed ITextHostImpl return values for tests.
There were several methods that do not have a HRESULT for a return
value, so returning E_NOTIMPL is not appropriate. For all the BOOL
return values FALSE was returned to indicate the operation was not
performed.
2008-12-18 14:19:40 +01:00
Dylan Smith c87ca3d9e8 richedit: Move implementation of WM_CHAR to its own function. 2008-12-16 14:10:25 +01:00
Dylan Smith e5f5dc60a7 richedit: Removed some unnecessary SendMessage calls to itself. 2008-12-16 14:10:19 +01:00
Dylan Smith c7c2ff1fbc richedit: Move implementation of EM_GETTEXTEX to its own function. 2008-12-16 14:09:47 +01:00
Dylan Smith 4f41972b15 richedit: Move implementation of EM_GETTEXTRANGE to its own function.
The RichEditWndProc_common function is big enough already by handling
all the window messages, so moving code to handle a message to its own
function makes the code more readable.
2008-12-16 14:09:40 +01:00
Paul Vriens 9bc409cfcb riched20/tests: Fix test failures on Win9x, WinMe and Wine in win9x mode. 2008-12-16 12:51:31 +01:00
Dylan Smith 6fa7b49825 richedit: Missing capitalization on TxGetScrollBars. 2008-12-15 13:20:09 +01:00
Dylan Smith 7e94a230e1 richedit: Removed unused hwndEdit variable for the RTF parser.
There is no reason for the rich text format parser to need a handle to
the window, and even if there were it has a handle to the editor which
contains a handle to the window.  It is better to remove this
considering we need to cut down on the use of window handles to
implement windowless richedit controls.
2008-12-15 13:20:01 +01:00
Dylan Smith 8ab0570d02 richedit: Removed an unnecessary call to GetScrollInfo.
The vertical scrollbar state is stored internally within the control,
so should be used when possible.  This will become more necessary when
windowless richedit controls are implemented, and there will no hWnd
to pass to GetScrollInfo.
2008-12-15 13:16:20 +01:00
Dylan Smith 0c8e4b6d02 richedit: Compare editor rather than hWnd in ME_CalculateClickCount.
Comparing the editor as apposed to the handle to the window will work
just as well right now, but will also work when there is no window
handle to make a comparison with, which will be the case with
windowless richedit controls.
2008-12-15 13:16:08 +01:00
Dylan Smith 6901e0cec7 richedit: Use ME_EnsureVisible to implement EM_SCROLLCARET.
The code for the ME_EnsureVisible function does exactly what
EM_SCROLLCARET does, yet this code is duplicated in order to handle
this message.  It is simpler to just use the existing function to
implement the message, and avoid internally sending the EM_SCROLLCARET
when this function is available.
2008-12-15 13:15:56 +01:00
Francois Gouget 82f6b6ff41 riched20/tests: Make keep_responsive() and customWordBreakProc() static. 2008-12-15 12:25:28 +01:00
Paul Vriens 696512b6cb riched20/tests: Remove the todo_wine logic where appropriate. 2008-12-10 14:32:07 +01:00
Francois Gouget b3bf746ff9 Straighten out some ellipses. 2008-11-26 12:33:34 +01:00
Dylan Smith df6e47e3a7 richedit: Removed useless lines in ME_GetDefaultCharFormat. 2008-11-17 13:58:03 +01:00
Dylan Smith 1e8df4351d richedit: Removed unused ME_AutoURLDetect function. 2008-11-17 13:57:56 +01:00
Dylan Smith ea9f343c33 richedit: Update strings and comments regarding IME Status messages. 2008-11-17 13:12:35 +01:00
Dylan Smith f9b31fc964 richedit: Removed comment in header for non-existent wintest.c. 2008-11-17 13:12:12 +01:00
Dylan Smith e4ef9c5c15 richedit: Initial testing of ITextServices methods. 2008-11-13 13:08:46 +01:00
Dylan Smith cc1cbadeb2 richedit: Created initial tests for windowless richedit controls. 2008-11-12 13:33:41 +01:00
Andrew Talbot affc6e029c riched20: Sign-compare warnings fix. 2008-11-06 11:09:41 +01:00
Michael Stefaniuc 90024d03b2 riched20: Remove superflous casts. 2008-11-04 11:26:12 +01:00
Michael Stefaniuc 2ae8511980 riched20: Use MAKELPARAM instead of "(LPARAM) MAKELONG". 2008-11-03 13:39:35 +01:00
Michael Stefaniuc 9f92f6bc10 riched20: Do not cast NULL. 2008-11-03 13:38:58 +01:00
Dylan Smith 09802e2c76 richedit: Handle negative position given to EM_POSFROMCHAR. 2008-10-29 11:52:18 +01:00
Dylan Smith 4c28a5bcfb richedit: Fixed initial word wrap setting when emulating 1.0. 2008-10-27 12:01:37 +01:00
Paul Vriens 5e05a7b9eb riched20/tests: Skip some tests on Win9x and WinMe. 2008-10-24 14:25:00 +02:00
Dylan Smith 503972980e richedit: Fixed the call to the EditWordBreakProc. 2008-10-23 15:30:14 +02:00
Dylan Smith 00fd6b62d3 richedit: Added test for correct behaviour for calling EditWordBreakProc.
EditWordBreakProc documented the third parameter as being the number
of unicode characters in the string for richedit 2.0 and up.  It turns
out that it should actually be the number of bytes in the string.
2008-10-23 15:30:06 +02:00
Dylan Smith 242b1bc109 richedit: Fixed pointer syntax in helper functions for tests. 2008-10-23 12:10:08 +02:00
Dylan Smith 46d79b0363 richedit: Fixed EM_POSFROMCHAR for pos of text length.
For some reason EM_POSFROMCHAR was returning 0 when the position was
equal to the end of the text, or beyond the end of the text. Instead
it should use the position at the end of the text for both these
cases.  The x value was also seen to be offset by 1 according to the
tests.
2008-10-22 13:54:54 +02:00
Dylan Smith 31951a099d richedit: Added tests for EM_POSFROMCHAR for pos around end of text. 2008-10-22 13:54:54 +02:00
Dylan Smith 5bcb15dd7f richedit: Handle ctrl-key shortcuts on WM_KEYDOWN. 2008-10-22 13:54:53 +02:00
Dylan Smith aa3b75f6b7 richedit: Added tests for ctrl-key shortcut handling in WM_KEYDOWN.
Previously the shortcuts for cut, copy, paste, undo, redo, and select
all were being handled during the WM_CHAR message.  These tests show
that these shortcuts should be handled with the WM_KEYDOWN message
instead.
2008-10-22 13:54:53 +02:00