Commit Graph

193 Commits

Author SHA1 Message Date
Huw Davies 5168d66be7 riched20: Move the text to the paragraph level. 2013-02-05 20:15:37 +01:00
Huw Davies 872a2ad031 riched20: Pass a character ptr and length to SplitParagraph. 2013-02-05 20:15:36 +01:00
Huw Davies 48b9ab37ac riched20: Pass the character ptr and string length directly to the break proc helper. 2013-02-05 10:51:26 +01:00
Huw Davies 76cfe7dc50 riched20: Rewrite the run whitespace test to take a run parameter. 2013-01-31 16:32:01 +01:00
Huw Davies 29e54f07f7 riched20: Rewrite the run splittable test to take a run parameter. 2013-01-31 16:31:52 +01:00
Huw Davies 27578f8bb6 riched20: Add a helper to retrieve the run text. 2013-01-30 17:19:31 +01:00
Huw Davies c17af77b5c riched20: Add a helper to debug the run text. 2013-01-30 17:19:28 +01:00
Huw Davies dee40e90ce riched20: Move undo handling to a different set of structs as the display item structs are not a good fit. 2013-01-29 17:50:17 +01:00
Dylan Smith 10d800b6b8 richedit: Invalidate a range of paragraphs without marking them. 2012-05-18 18:10:27 +02:00
Dylan Smith 1f8cbe1645 richedit: Avoid scanning all text for paragraphs to invalidate. 2012-05-09 11:55:58 +02:00
Dylan Smith 18fa3287f6 richedit: Remove always FALSE parameter from ME_PaintContent. 2012-05-08 09:42:16 +02:00
Thomas Faber 28cb0b683e riched20: Constify some ME_Context pointer parameters. 2011-10-24 19:37:08 +02:00
Marcus Meissner 598a7f6edf riched20: Mark internal symbols with hidden visibility. 2011-05-24 11:55:55 +02:00
Dylan Smith 8b8e4f89b2 richedit: Use ME_Cursor as parameter to ME_SplitRunSimple.
The paragraph needed to be included in the parameters to avoid needing
traverse the linked list of display items to find the paragraph.
2010-07-30 11:36:02 +02:00
Dylan Smith dfa80b35b0 richedit: Invalidate without calling UpdateWindow in many cases. 2010-07-29 10:28:00 +02:00
Dylan Smith 1f2575ba7c richedit: Documented paragraph border widths are in points not pixels.
The border widths documented by msdn are in points which are 72 dpi, which
is not equivalent to pixels (normally 96 dpi). I pre-converted all the
border widths to 96 dpi resolution since this avoids needed to store
fractions, and often avoids the need for convertion to the displays
resolution.
2010-03-01 11:32:18 +01:00
Dylan Smith 535afbd3aa richedit: Move function ME_GetParaLineSpace to make it static. 2010-02-10 11:32:31 +01:00
Dylan Smith 3fe20bdc7e richedit: Handle to parent window is cached.
The parent window for the richedit control on creation is the one that
receives notify messages, even after the parent has been changed using
SetParent.
2009-09-30 17:41:06 +02:00
Francois Gouget 6e80d875d4 riched20: Make ME_SetCursorToEnd() static. 2009-08-26 13:09:27 +02:00
Dylan Smith 54b53b6018 richedit: Use ME_Cursor instead of offsets for stream out functions. 2009-08-13 15:35:28 +02:00
Dylan Smith bd4704280d richedit: Replace offsets arg with ME_Cursor for ME_InternalDeleteText.
Offsets are still used within the function, but this patch reduces the
use of it at the entry to the function.
2009-08-13 15:35:17 +02:00
Dylan Smith 8f0dfaba30 richedit: Removed ME_InsertRun since it uses character offsets.
The function was used in one place, and was simply a wrapper around a
call to ME_InsertRunAtCursor, so I removed it to avoids it use in other
parts of the code.
2009-08-13 15:35:07 +02:00
Dylan Smith 02228ee176 richedit: Use ME_Cursor instead of offsets for ME_CharFromPos. 2009-08-13 15:35:01 +02:00
Dylan Smith a69ef26599 richedit: Use ME_Cursor instead of offsets for copying text. 2009-08-13 15:34:54 +02:00
Dylan Smith 27c28ab292 richedit: Modified ME_MoveCursorsChars to move multiple chars.
Previously the function was only used to move a single character in
either direction, so I made the function more general so that it could
be used in more places.
2009-08-13 15:34:39 +02:00
Dylan Smith 2da0d8e933 richedit: Use ME_Cursor instead of offsets for ME_SetCharFormat.
The test that succeeded from this change was as a result of allowing the
end of the character format change be specified using NULL as the rest
of the text.  Before, the end paragraph run at the end of the text was
not being set for this case, when all the text was supposed to have its
character format changed.
2009-08-12 17:35:50 +02:00
Dylan Smith ade37203a5 richedit: Use ME_Cursor instead of offsets for ME_GetCharFormat.
Prevent extra conversions from character offset to ME_Cursor.
2009-08-12 17:35:42 +02:00
Dylan Smith 2bc726930f richedit: Add helpers for setting cursor to start/end of text. 2009-08-12 17:35:30 +02:00
Dylan Smith 32dcd3bbe1 richedit: Created functions to move between runs and track paragraphs.
Plenty of places in the code find following or preceding runs, then
afterwards find the paragraph from the run.  This is inefficient because
the same linked list is used for both runs and paragraphs, so changes in
paragraphs can be detected while returning the next or previous run.
2009-08-12 17:35:24 +02:00
Dylan Smith 82e102107c richedit: ME_GetTextW must use source and destination lengths.
Before a single length was used for the number of characters to retrieve
from the text, and to keep track of the size of the buffer.  These are
not equivalent, since there is a possible end of line conversion.
2009-08-12 17:32:16 +02:00
Dylan Smith 46b84aed4a richedit: Added function to get selection cursors in order.
Previously the only convenient way to get the start and end of the
selection was through offsets, which eventually need to get converted
back into items in the linked list storing the text.  The new function
will help with eliminating these inefficiencies.
2009-08-12 17:29:30 +02:00
Dylan Smith be0fb1ef5d richedit: Make the ME_GetCursorOfs function more flexible.
This function will make it easier to work with ME_Cursor objects, which
should be used in a lot of places instead of character offsets (which
often require seeking through the linked lists to perform operations
with).
2009-08-12 17:29:20 +02:00
Dylan Smith 832ffe108c richedit: Remove header function declarations with no definition. 2009-08-10 17:09:53 +02:00
Francois Gouget 3d6c53b972 riched20: Make ME_GetCursorCoordinates() static and remove ME_MustBeWrapped() as it is unused. 2009-05-26 14:10:32 +02:00
Francois Gouget 61a8b94634 riched20: ME_MakeString() is unused so remove it. 2009-05-15 10:28:20 +02:00
Andrew Talbot edca49f6aa riched20: Remove unused functions. 2009-02-09 13:21:21 +01:00
Dylan Smith c8b4455565 richedit: Removed ME_StrRelPos, ME_StrRelPos2, & ME_PosToVPos functions.
These functions were just being used for addition, so it was simpler to
remove the functions and modify the places it was used.

The ME_StrRelPos2 and ME_PosToVPos were just simple wrappers around
ME_StrRelPos, and ME_PosToVPos wasn't being used.
2009-02-09 13:05:13 +01:00
Dylan Smith 1eb0f73ab0 richedit: Got rid of ME_GetCharFwd and ME_GetCharBack.
These two functions were being used for simple operations, to get the
first or last character when pre-computing flags for splitting runs.

The call to ME_GetCharBack wasn't even giving the correct result, it
would always return -1 since it is being called with nPos of 0.

This patch simplifies the code by removing the functions and getting the
characters directly from the string.
2009-02-09 13:05:13 +01:00
Dylan Smith 5f15de0690 richedit: Removed ME_StrLen and ME_StrVLen field access functions.
These functions were probably previously needed because of some wierd
special handling of backspace characters, but currently there is no
reason why the nLen field can't be accessed directly.

Having to functions that just access the string length field just causes
slightly more effort for someone to look at the code, because they need
to enter the function to find out what it actually is doing.
2009-02-09 13:05:13 +01:00
Dylan Smith f148d82093 richedit: Got rid of useless function ME_VPosToPos.
The function was just returning the second parameter.  It had some
commented out code that indicated that previously backslashes weren't
included in the length.  Native wordpad doesn't handle backspaces in a
special way, so this must have been an internal representation that
complicated finding the position of characters.
2009-02-09 13:05:12 +01:00
Dylan Smith 4b7e8f185b richedit: Avoid duplication in make string functions using ME_MakeStringB.
I found that ME_MakeStringB was previously unused, and that the other
ME_MakeString functions repeated code that was already in ME_MakeStringB.
Making ME_MakeStringB static and using it to avoid duplicate code seemed
like a better idea than removing the function.
2009-02-09 13:05:12 +01:00
Dylan Smith f53f40bcb3 richedit: Prevent string trunction due to NULL characters. 2009-02-09 13:05:12 +01:00
Dylan Smith d20e057d8e richedit: Accept paragraph as parameter for ME_CharOfsFromRunOfs.
Rather than get the paragraph from the run, the function allows the
caller to provide the paragraph, since it is already available.  This
reduces unnecessary traversals of lists that take longer as more runs
and rows are in the paragraph.
2009-02-06 14:50:27 +01:00
Dylan Smith 12ca50db7a richedit: Get the paragraph with ME_RunOfsFromCharOfs.
The ME_RunOfsFromCharOfs function finds the paragraph before finding the
run and offset within the run, so the function may as well be able to
return this paragraph to the caller.  Many callers to the function
instead find the paragraph from the run, which ends up unnecessarily
traversing a linked list of runs within the paragraph.
2009-02-06 14:50:27 +01:00
Dylan Smith 5d74f58382 richedit: Actually store end of line string for end paragraph runs.
Previously a count of the carraige returns and line feeds were stored
for end of paragraph runs, and a paragraph sign was stored as the actual
string.  This was causing many special cases where the length of the
run needed to be determined differently if the run was or wasn't an
end of paragraph run.

There wasn't any use for storing the paragraph sign unless some drawing
code gets commented out to allow the end paragraphs to be shown,
therefore I changed the code to store the actual string that gets
retrieved by WM_GETTEXT.
2009-01-28 12:11:36 +01:00
Dylan Smith 61308257f2 richedit: Removed redundant ME_FindItemAtOffset using ME_RunOfsFromCharOfs.
The two functions ME_FindItemAtOffset and ME_RunOfsFromCharOfs were almost
identically used, since ME_FindItemAtOffset was always used to find a run.
The only difference was how they returned the offset within the run for an
end of paragraph run.

For ME_FindItemAtOffset it would return the next run if it was in between \r
and \n. ME_RunOfsFromCharOfs would instead return an nOffset of 0 for end
paragraph runs.  This subtle difference introduced bugs, so I decided to
avoid having special case in this function when creating this patch, and
instead let the caller handle this case.
2009-01-27 11:21:33 +01:00
Dylan Smith 94146a72ad richedit: Removed some unused invalidation code.
The ME_InvalidateFromOfs and ME_QueueInvalidateFromCursor functions are
never called, and the nInvalidOfs variable had its value set but never
used.
2009-01-22 15:28:22 +01:00
Dylan Smith e7b68a20fd richedit: Implemented ITextServices_TxSendMessage. 2009-01-21 11:55:22 +01:00
Dylan Smith 05c788ac6f richedit: Used ITextHost methods to avoid using window handle directly.
The methods in ITextHost are mostly thin wrappers around functions that
take a handle to a window as their first parameter.  This patch just
uses the wrapper functions provided by ITextHost instead of using the
functions that require a handle to a window that the editor might now
have (for windowless richedit controls).
2009-01-21 11:54:43 +01:00
Dylan Smith 6c4dda009e richedit: Implemented ITextHost for windowed richedit controls. 2009-01-21 11:54:26 +01:00
Andrew Talbot b53d7d3295 riched20: Declare some functions static. 2009-01-19 13:36:26 +01:00
Dylan Smith e6fedf879c richedit: Implemented the horizontal scrollbar. 2009-01-15 14:13:38 +01:00
Andrew Talbot d287e88691 riched20: Declare some functions static. 2009-01-14 12:40:40 +01:00
Andrew Talbot 8ddf6c0a25 riched20: Declare some functions static. 2009-01-13 15:53:43 +01:00
Dylan Smith 8089d980d1 richedit: Set bEmulateVersion10 initially to avoid retroactive changes.
Previously the WM_NCCREATE was handled by the as if it was always for
later versions, then the window proc for version 1.0 would make
appropriate changes afterwards.  Instead both versions should call the
same function (e.g. ME_MakeEditor) and provide the value for
bEmulateVersion10 to make the code clearer.
2009-01-12 14:40:11 +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 1e8df4351d richedit: Removed unused ME_AutoURLDetect function. 2008-11-17 13:57:56 +01:00
Dylan Smith f9b31fc964 richedit: Removed comment in header for non-existent wintest.c. 2008-11-17 13:12:12 +01:00
Detlef Riekenberg 9593c9e6f5 dlls: Do not use __WINE_ALLOC_SIZE between void and *. 2008-09-19 11:41:25 +02:00
Dylan Smith 88a3a8a9c0 richedit: Don't put cursor in the table row start paragraph. 2008-09-12 11:55:08 +02:00
Dylan Smith 9a7d475db8 richedit: Avoid acting on control words in skipped RTF groups.
Previously the control words in skipped groups were being processed by
the read hook on the RTF parser.  By moving this code into the class
callbacks for the parser, the skipped groups actually remain skipped.
2008-09-11 12:38:20 +02:00
Marcus Meissner 96412ee564 Annotate with allocation size attribute. 2008-09-05 11:22:26 +02:00
Dylan Smith f11fe1c7a9 richedit: Prevent typing text at end of table row. 2008-08-29 13:42:47 +02:00
Dylan Smith a47d4a4c3a richedit: Adjust table spacing with horizontal gap and left edge. 2008-08-18 17:15:57 +02:00
Dylan Smith a382e35600 richedit: EM_[SG]ETPARAFORMAT returned the wrong value.
The values returned by EM_SETPARAFORMAT and EM_GETPARAFORMAT previously
indicated an error, and the included tests shows that Windows behaves as
documented.
2008-08-18 17:15:57 +02:00
Dylan Smith 300db3765f richedit: Each cell can contain multiple paragraphs in msftedit. 2008-08-18 14:34:11 +02:00
Dylan Smith d29f671d1a richedit: Protect deletion of cell boundaries when not deleting row. 2008-08-18 14:34:10 +02:00
Dylan Smith bf5ccefc4c richedit: Handle tab key properly within table cells.
Within table cells the tab key moves to the next cell in the table, or creates
a new table row when at the end of the table.
2008-08-18 14:34:10 +02:00
Dylan Smith 4e56a3cda9 richedit: Joined paragraph format depends on number of characters deleted. 2008-08-05 14:09:37 +02:00
Dylan Smith 11c8039699 richedit: Use tabstops to store cell positions. 2008-08-05 14:09:37 +02:00
Dylan Smith 7de6c2674a richedit: Added more conditional cursor changes.
Previously the cursor was either an IBEAM, or a reversed arrow when over
the selectionbar.
2008-07-10 12:16:58 +02:00
Dylan Smith 8172d69e8f richedit: Set the default paragraph format consistently.
I created a function to set the default paragraph format to ensure
consistency when this is done.  This initial paragraph format is also
now more consistent with native richedit controls.  The dwMask value
always appears to have the same value when retrieved from the native
richedit controls, so all the mask values are now initialized when the
PARAFORMAT2 structure is created.
2008-07-09 11:31:22 +02:00
Dylan Smith 7c352b9638 richedit: Implemented paragraph selection. 2008-07-08 10:44:12 +02:00
Dylan Smith 5b2bdc06d0 richedit: Fixed double click issues by sharing code with single click. 2008-07-07 14:16:07 +02:00
Dylan Smith d1f1346f54 richedit: Implemented undo coalescing to group typing events.
Consecutively typed characters are grouped together to be undone
together.  The grouping of typed characters can be stopped by certain
events that are mentioned in MSDN's remarks on the EM_STOPGROUPTYPING
message, which is also implemented by this patch.
2008-06-26 21:18:50 +02:00
Dylan Smith c96a273f91 richedit: Moved function declarations in header to reflect locations of definitions. 2008-06-26 21:17:48 +02:00
Alex Villacís Lasso 4a5d100097 richedit: Add more tests for URL autodetection on WM_CHAR, make them pass under Wine. 2008-06-19 12:07:36 +02:00
Alex Villacís Lasso 38d7ba6eff richedit: WM_SETTEXT must immediately autodetect URLs, without waiting for a WM_CHAR. 2008-06-19 11:59:04 +02:00
Dylan Smith 10e676ab3e richedit: Updated editor.h to reflect the contents of source files. 2008-05-01 19:36:50 +02:00
Alex Villacís Lasso d47f66191e richedit: Add support for encoding number of CR and LF contained within a line break. 2008-04-29 14:53:46 +02:00
Eric Pouech 5d36c47e1f richedit: Fixed object leaks generated by context creation & destruction. 2008-03-17 14:37:58 +01:00
Eric Pouech a86d7bdcea richedit: Pass left margin around when computing the size of a run, so that a tab will get a correct size. 2008-03-17 14:36:06 +01:00
Eric Pouech a64c22c8b1 richedit: Store shift-enter (keyboard) and \line (rtf) as end of row (and emit \line while saving in RTF). 2008-03-17 14:34:44 +01:00
Eric Pouech 9c20cdfea8 riched20: Make use of the size info in REOBJECT if present. 2008-02-05 11:13:33 +01:00
Eric Pouech 00de77517a riched20: Start handling OLE objects inside richedit. 2008-02-05 11:11:32 +01:00
Eric Pouech 39aa3beaf2 richedit: Simplify first para style handling by creating a context. 2008-01-02 13:58:09 +01:00
Eric Pouech f43570cbf0 richedit: Optimizations for the style selection.
Use a ME_Context for style selection/unselection.
Store the (x,y) dpi information for a given DC in the corresponding ME_Context structure.
2008-01-02 13:57:37 +01:00
Eric Pouech 475b45d8ab richedit: Don't recreate the DC all the time, but use uniformely a ME_Context structure where needed. 2008-01-02 13:56:02 +01:00
Eric Pouech e9be142d78 richedit: Rewrote FindPixelPos so that it always return something.
Made the function static as well.
2008-01-02 13:55:14 +01:00
Eric Pouech d319033a97 richedit: Added support for intra-paragraph line space. 2008-01-02 13:54:49 +01:00
Eric Pouech caa37c749a richedit: Now drawing the paragraph borders (if any) from paraformat2. 2008-01-02 13:54:01 +01:00
Eric Pouech 28cc0f9e69 richedit: Fix the para computation when zoom is used. 2008-01-02 13:52:52 +01:00
Eric Pouech 0549b9009a richedit: Simplified handling of background brush while painting. 2008-01-02 13:49:57 +01:00
Maarten Lankhorst 4637a4ef49 riched20: Make some functions static. 2007-12-14 12:26:48 +01:00
Michael Stefaniuc 4210cafc04 riched20: Rename the wrappers around HeapAlloc() &Co to use the new standard naming. 2007-12-08 19:54:58 +01:00
Andrew Talbot b150ea67a9 riched20: Constify some variables. 2007-08-17 12:01:37 +02:00
Andrew Talbot 291dd7a090 riched20: Constify some variables. 2007-08-16 11:35:06 +02:00
Andrew Talbot ed93ed9a08 riched20: Constify some variables. 2007-08-14 13:28:05 +02:00
Andrew Talbot 2e2efd448a riched20: Constify some variables. 2007-08-13 12:24:28 +02:00
Dmitry Timoshkov 592b53d0a4 riched20: Split unicode and ansi window procs, handle messages depending on the unicode flag.
Add a hack for WM_GETTEXT in RichEdit20W class when running in win9x emulation mode.
2007-03-22 15:47:25 +01:00