Commit Graph

128 Commits

Author SHA1 Message Date
Dylan Smith 11c8039699 richedit: Use tabstops to store cell positions. 2008-08-05 14:09:37 +02:00
Dylan Smith 97d56caafe richedit: Fixed regression caused by destroying the caret.
The regression was caused by destroying the caret when it didn't need to
be shown in the richedit control, but this affected other controls.
2008-07-16 19:56:24 +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 aba425eb70 richedit: PFE_TABLE flag is now used instead of private bTable value.
The PARAFORMAT structure has a bit in wEffects to indicate whether the
paragraph is a table or not, so this should be used instead of a private
bTable value, since this structure can be retrieved with EM_GETPARAFORMAT.
2008-07-09 11:31:21 +02:00
Dylan Smith 762e5818d1 richedit: Hide cursor when text is selected.
The cursor should only be shown when there is no selection, since this
is how it is done in Windows.  This patch avoids showing the cursor when
there is a selection, and destroys the cursor when a selection is made.
2008-07-08 10:44:45 +02:00
Dylan Smith 69cf4e9ac4 richedit: Implemented triple click selection. 2008-07-08 10:44:32 +02:00
Dylan Smith 7c352b9638 richedit: Implemented paragraph selection. 2008-07-08 10:44:12 +02:00
Dylan Smith abefc28fe7 richedit: Fixed drag and shift selection for words and lines.
Previously word drag and shift selection was not implemented.  Line
drag selection was working, but shift selection wasn't.
2008-07-08 10:43:55 +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 379835b634 richedit: Made sure word selection selects only one word. 2008-07-07 14:16:07 +02:00
Dylan Smith db95d69f99 richedit: Made sure the caret position is stored when moving up/down.
The caret's x position is stored in ME_TextEditor.nUDArrowX so that when
the caret is moved up or down, it will stay along the same horizontal
position, or at the end of a line.  Unfortunately, the value stored in
nUDArrowX was being unconditionally discarded in ME_ArrowKey, preventing
it from serving its purpose.
2008-07-07 11:10:33 +02:00
Dylan Smith 66f948c010 richedit: Clicking below end of text now selects closest character.
Before the end of the text was selected when clicking below the end of
the text, rather than using the x position to find the appropriate
character on the last row that is closest to the pixel position.
2008-06-30 12:10:02 +02:00
Dylan Smith fad2b57cd7 richedit: Ensure caret is seen if moved past end of view over trailing spaces. 2008-06-27 11:09:37 +02:00
Dylan Smith 438d8e1c58 richedit: Caret size must match font size characters to be inserted.
When the caret is at the start of a run, it uses the font of the
previous run for inserting characters.  The caret size previously was
the wrong height for the characters being inserted when the caret was at
the start of a line, but not the start of a paragraph so this patch
fixes this bug.
2008-06-27 11:09:14 +02:00
Dylan Smith 461830a83d richedit: Removed redundant code for getting the insert style.
The function ME_GetInsertStyle already checks for the case where there
is a selection, so there is no need to duplicate this code for
ME_GetSelectionInsertStyle.
2008-06-27 11:08:19 +02:00
Dylan Smith 9b67a38f1a richedit: Make cursor visible when selecting via mouse above/below editor. 2008-06-26 21:18:28 +02:00
Dylan Smith eaf7becabd richedit: Null pointer check missing on optional parameter.
The function ME_FindRunInRow uses two parameters to return values by
reference, and treated these parameters as if they were optional except
for the start of the function which set *pbCaretAtEnd without checking
to see if was a NULL pointer.
2008-06-26 21:14:52 +02:00
Dylan Smith 6f9f01f28f richedit: bCaretAtEnd should not be reset from rewrapping text.
The bCaretAtEnd value in ME_TextEditor is used to identify that the
caret is at the end of a wrapped line instead of the start of the next
line in the paragraph since both these positions correspond to the
same position in the document. The bCaretAtEnd value was previously
being set back to FALSE whenever the window was resized.
2008-06-25 11:24:13 +02:00
Dylan Smith 308582b4f5 richedit: Allow cursor to move over trailing spaces in wrapped lines. 2008-06-25 11:23:39 +02:00
Alex Villacís Lasso c7873afbb2 richedit: Insertion style must NOT be cleared unless selection actually changed. 2008-06-19 12:10:13 +02:00
Alex Villacís Lasso 1fa39b50c0 richedit: Only notify selection change when selection has actually changed from previous notification.
Otherwise, redundant and early notifications are sent to apps that do not expect them. Fixes crash #1 with Perfect! TextEdit.
2008-04-29 14:56:11 +02:00
Alex Villacís Lasso 4047df0f56 richedit: Flip the big switch and encode actual CR and LF into end-of-paragraph runs.
Document remaining uses of bEmulateVersion10 and other checks for CRLF in editor.c.
Make RTF reader emit a \r or a \r\n according to emulation, not a \n, which breaks streaming tests.
Remove todo_wine from a bunch of riched32 tests that now succeed.
2008-04-29 14:55:15 +02:00
Alex Villacís Lasso e8aa9dee56 richedit: Modify ME_GetTextW() to honor CR and LF encodings.
ME_GetTextLengthEx should ignore GTL_USECRLF in 1.0 emulation mode.
2008-04-29 14:54:46 +02:00
Alex Villacís Lasso fd55773680 richedit: Remove reliance on bEmulateVersion10 for end-of-line handling in ME_InternalDeleteText. 2008-04-29 14:54:12 +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
Alex Villacís Lasso 820de0bd59 riched32: Implement a portion of suggested interpretation of CRLF handling for richedit 1.0 emulation.
Fixes a few todos introduced by previous patch.
2008-04-21 20:27:52 +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 00de77517a riched20: Start handling OLE objects inside richedit. 2008-02-05 11:11:32 +01:00
Eric Pouech d48905cf21 richedit: Small optimisation in ME_GetSelectionInsertStyle. 2008-01-02 13:55:24 +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
Maarten Lankhorst b81335501f riched20: Implement ECO/EM SELECTIONBAR. 2007-12-17 11:34:40 +01:00
Alex Villacís Lasso 3b636b58ba riched20: EM_GETTEXTLENGTHEX must not count last paragraph break if GTL_USECRLF. 2007-12-07 17:36:01 +01:00
Alex Villacís Lasso 469669e629 riched20: 2.0 and higher inserts CRCRLF as space (with tests). 2007-10-22 13:50:13 +02:00
Clinton Stimpson f34cb461e7 riched20: Only WM_CHAR respects text limit. 2007-09-21 12:05:39 +02:00
Lei Zhang 13ae5f8e8c riched20: Add missing scroll bar update. 2007-08-16 11:35:06 +02:00
Huw Davies 0dcebea44d riched20: Add some test for EM_GETTEXTLENGTHEX and fix the single line edit cases. 2007-08-16 11:10:25 +02:00
Andrew Talbot 2e2efd448a riched20: Constify some variables. 2007-08-13 12:24:28 +02:00
Huw Davies 94dfc0e80e riched20: Don't mess with the caret if we don't have focus. 2007-06-06 12:09:53 +02:00
Clinton Stimpson 552bc81f1e riched20: Set modify state when removing text. 2007-04-26 14:24:52 +02:00
Clinton Stimpson 4152c14df4 riched20: Fix text replacement with text limit. 2007-03-29 21:07:52 +02:00
Clinton Stimpson bf86302e19 riched20: Fix modification state for several operations. 2007-01-11 12:04:46 +01:00
Lei Zhang 581321d420 riched20: Move EM_EXSETSEL fix into ME_SetSelection. 2006-12-05 11:37:46 +01:00
Matt Finnicum abecd9e393 riched20: Rewrite of scrolling and some redrawing code.
Replaces duplicated scrolling code with re-usable functions.
Removes excessive boundary checking on scroll code, since that's done
in the scrollbar control anyways.
Properly separates repaint calls based on what has changed.
Send EN_UPDATE and EN_CHANGE at the right places.
Only call EnsureVisible on changes, not all repaints.
2006-09-11 11:29:42 +02:00
Hippocrates Sendoukas 0134e8f7d0 riched20: ME_SetSelection -1 to -1 behavior fix. 2006-09-07 16:06:14 +02:00
Ken Myers 13e4ddd2df riched20: Implement EM_EXLIMITTEXT, EM_GETLIMITTEXT and tests. 2006-08-10 11:28:43 +02:00
Krzysztof Foltman bad844d0a9 riched20: New, clean, simple selection repaint logic - should fix all outstanding refresh issues. 2006-08-07 19:59:58 +02:00
Krzysztof Foltman 3a0c15e939 riched20: Ensure text is wrapped before invalidating selection. 2006-08-07 13:09:27 +02:00
Michael Stefaniuc c3f112e52d riched20: Replace an if-statement with empty body with a FIXME comment. 2006-07-07 14:30:36 +02:00
Krzysztof Foltman 8e85210144 riched20: EM_CHARFROMPOS didn't work properly with scrolling
(vertical scrollbar position was not taken into account).
2006-06-19 10:30:36 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Phil Krylov 08bf7180f3 riched20: Initial support for simple tables. 2006-02-04 17:01:01 +01:00
Phil Krylov baf25fc8ab riched20: Simplified ME_InsertGraphicsFromCursor() function. 2006-02-04 16:59:48 +01:00
Phil Krylov f0d6519ef5 riched20: Added support for hidden text. 2006-01-31 13:01:26 +01:00
Phil Krylov 17a83dc3e3 riched20: Paint the selection while it's being extended by dragging. 2006-01-31 12:58:59 +01:00
Phil Krylov bb9631b196 riched20: Selection painting fixes. 2006-01-26 13:27:28 +01:00
Dmitry Timoshkov 57a579ffcd Make more arrays const. 2006-01-24 14:00:32 +01:00
Phil Krylov 6e3a72549a riched20: Select word on double click. 2006-01-13 13:54:11 +01:00
Phil Krylov 8205252f10 riched20: Fixed some selection painting bugs. 2006-01-13 13:53:35 +01:00
Phil Krylov 49eecf5128 riched20: Initial support for word break callback procedures. 2006-01-12 11:54:57 +01:00
Phil Krylov 6818762a6e riched20: Reduced screen flicker by using proper update region invalidation. 2006-01-10 20:41:23 +01:00
Phil Krylov d82af6f711 riched20: Speed up text insertion.
Optimized reading large texts into RichEdit to be an O(n) order
algorythm instead of O(n^2) by removing extraneous conversions of
character offsets to run offsets.
2006-01-10 12:10:49 +01:00
Phil Krylov a91ba787e2 Added support for EM_REQUESTRESIZE message, EN_REQUESTRESIZE
notification, and ENM_REQUESTRESIZE event mask.
2005-11-03 09:52:29 +00:00
Phil Krylov eee54d95ad Fixed a RichEdit RTF reader bug which resulted in loss of text.
Eliminated unneeded recursion in ME_InsertTextFromCursor().
2005-08-23 18:16:15 +00:00
Phil Krylov c2cb39b817 Implemented EM_CHARFROMPOS RichEdit message. 2005-07-26 10:33:00 +00:00
Phil Krylov 84bb372239 Added emulation of RichEdit 1.0 behaviour when the 1.0 window class is
being used. This emulation (introduced in M$ RichEdit 3.0) counts
paragraph endings as 2 characters (CR+LF) instead of 1 (CR).
2005-07-21 10:33:32 +00:00
Stefan Huehner 4b53c3aa18 Make some function static. 2005-07-01 15:40:24 +00:00
Phil Krylov b1f61804d7 Implemented EM_GETTEXTLENGTHEX RichEdit message. 2005-06-28 13:51:32 +00:00
Krzysztof Foltman 13578c8602 - removed trailing spaces from some files
- tab support
- indent support
2005-04-16 10:48:35 +00:00
Krzysztof Foltman d6b198b3bd - PageUp key support.
- Support for "normal" scroll bar functionality (line and page
  scrolling).
2005-03-21 10:27:24 +00:00
Krzysztof Foltman 810b261175 - made string operations consistent wrt whitespace handling (which
should greatly improve stability of the wrap code and eliminate
  regressions of the most recent versions)
- completely new scrollbar handling (much more reliable) and related
  redraw fixes
- Page Down handler (no Page Up yet, fixing wrap/redraw/scrollbar bugs
  was of higher priority)
2005-03-19 17:06:17 +00:00
Krzysztof Foltman f089de1f4d - RTF reader doesn't use RichEdit messages anymore (which saves on
unnecessary repaints)
- added unicode character support to RTF import (like: \u12345 ?)
- small fixes
- fixed whitespace identification bug
- removed drawing of paragraph marks
- improved stub implementations for IRichEditOle
2005-03-17 10:23:40 +00:00
Gerald Pfeifer 04606af829 Make ME_ArrowLeft() return a value in every case. 2005-03-14 10:08:00 +00:00
Krzysztof Foltman f7e0f7cabe - Optimized repaint of the area below the text.
- ME_JoinRuns didn't mark the paragraph for rewrapping, fixed.
- Removed PostQuitMessage(0) from WM_DESTROY handler (duh!).
- Use of EM_GETOLEINTERFACE is reported with FIXME instead of TRACE
  (any app using this message is likely to encounter major problems).
2005-03-09 18:43:18 +00:00
Krzysztof Foltman 89075fb429 The meaning of the rewrap flag got inverted (MEPF_REWRAP instead of
MEPF_WRAPPED) for consistency.
Major code cleanups in rewrap/repaint code, leading to "smarter"
behaviour wrt repainting selections.
2005-03-09 11:48:59 +00:00
Krzysztof Foltman 043b5d9bab - specialized handler for SF_TEXT (ANSI or Unicode), simple and fast
- clears control's text on EM_STREAMIN with no SFF_SELECTION
2005-03-08 19:03:01 +00:00
Krzysztof Foltman d488f3f1de Initial implementation of riched20. 2005-03-05 11:19:14 +00:00