Commit Graph

1225 Commits

Author SHA1 Message Date
Michael Drake 59fdbae1bc Fix setting of empty selections. 2013-02-22 15:23:36 +00:00
Michael Drake c2a718075a A load of refactoring of how content selection and input work.
Keypresses now go via content interface.
Contents don't shove the selection object into browser windows any more.
Contents report selection existence by sending message.
HTML content keeps track of where selections in it exist.
Contents report whether they have input focus via caret setting msg.
Caret can be hidden (can still input/paste) or removed.
Consolidate textarea selection handling.
Make textarea report its selection status changes to client.
Various textarea fixes.
Changed how we decide when to clear selections, and give focus.
2013-02-22 12:19:35 +00:00
John-Mark Bell 2b0cc398bb Fix handling of treeview launch actions. 2013-02-19 10:17:17 +00:00
Vincent Sanders 529ca251fc rename flags for browser_window routines to be shorter 2013-02-18 11:51:42 +00:00
Vincent Sanders b112dec78d change browser_window_create and refactor all callsites 2013-02-18 11:23:48 +00:00
Vincent Sanders 3bfb5b96a7 browser_window_navigate refactor 2013-02-18 11:23:27 +00:00
Michael Drake 553c55b07a Move selection clearing into a function, and expose it in the header file. 2013-02-13 13:37:46 +00:00
Michael Drake 08a229161b Calculate and store text offsets only when they change, rather than recalculating on every redraw and caret placement. Also ensures that caret placement and redraw get the same text offset values. 2013-02-13 13:08:05 +00:00
Michael Drake 13574018d1 Fun micro-optimisations. 2013-02-12 21:16:30 +00:00
Michael Drake 2c64e89641 Implement selection modification. Clicks and drags with button 2 alter the nearest end of the selection. Button 2 when there is no selection selects from caret pos to click pos. 2013-02-12 18:20:06 +00:00
Michael Drake eccf590616 Triple click selects paragraph in textarea widget. 2013-02-12 12:58:12 +00:00
Michael Drake 97f0a22a8b Tidy textarea-handled mouse action. 2013-02-12 12:09:49 +00:00
Michael Drake 19f09dcc61 Init clipboard to NULL, just in case front end implementation of gui_get_clipboard fails to set it on empty clipboard. 2013-02-12 11:15:37 +00:00
Michael Drake c39a3d7263 When reqesting redraaw to remove internal caret, make sure caret is already removed as the redraw may be serviced immediatley. 2013-02-12 10:13:55 +00:00
Michael Drake 515cef8444 Don't include '\0' in single-line nsfont_width call. 2013-02-11 18:42:51 +00:00
Michael Drake fe7b71edbf Selection autoscroll of scrollbarless textareas (single line). 2013-02-11 17:55:36 +00:00
Michael Drake 99cab8389a Early detection of regions outside the visible. 2013-02-11 17:05:42 +00:00
Michael Drake fc430dba75 Clip native caret render so it can't overwrite border. Slight simplification. 2013-02-11 16:47:11 +00:00
Michael Drake e6bf51c3ba Single line textareas don't have scrollbars, so they don't get the scroll redraw request from the scrollbar callback. 2013-02-11 16:31:06 +00:00
Michael Drake 3bcc79ccf0 Don't need to redraw for caret removal if using a native caret. 2013-02-11 16:10:19 +00:00
Michael Drake fa2d5cf62c Fix internal caret redraw bounds. 2013-02-11 14:30:26 +00:00
Michael Drake 18444f261a Fix delete-to-line-end. 2013-02-11 13:39:56 +00:00
Michael Drake 7af0614202 Make delete line key enum value name less missleading. (Doesn't cut to clipboard.) 2013-02-11 10:34:06 +00:00
Michael Drake 99fc8d3f0d Move html textarea's selection colour chooser to plot_style.h, as it could be used elsewhere. 2013-02-11 00:41:22 +00:00
Michael Drake b38520da99 Implement delete line. (Ctrl+U on RISC OS.) 2013-02-10 23:22:46 +00:00
Michael Drake 10edbc45bd If a character is replaced by a character of different width, the caret needs to move. Checking change in character index isn't enough, so move caret if redraw was required too. 2013-02-09 18:41:23 +00:00
Michael Drake 32e9602126 When updating textarea layout settings, remember scrollbar status. 2013-02-09 18:21:10 +00:00
Michael Drake 1be54d7b10 If restarting reflow for scrollbar change, need to start at line 0. 2013-02-09 16:50:30 +00:00
Michael Drake 56cfa93531 Empty textarea has one line. 2013-02-09 16:28:00 +00:00
Michael Drake 25b036418e Stop it from using past the end of lines data allocation. (It could add up to 2 lines per pass, but assumed 1 for allocation.) 2013-02-09 15:26:20 +00:00
Michael Drake 8c3e0cf81a [Return] will replace selection. 2013-02-09 14:43:21 +00:00
Michael Drake b4609f41bc Support front ends that pass CR for [return], as well as those that pass NL. 2013-02-09 14:19:38 +00:00
Michael Drake eb1113e4c3 Fix handling of empty textarea. 2013-02-09 14:18:17 +00:00
Michael Drake 048b344a43 Take account of scrollbar-occupied regions. 2013-02-09 13:34:28 +00:00
Michael Drake f848de3dd0 Fix use of x values when y is required. 2013-02-09 13:18:16 +00:00
Michael Drake 2bd0d13817 Take account of caret height when scrolling to show caret. 2013-02-09 11:54:13 +00:00
Michael Drake 688e1b0e4f Slight selection auto-scroll optimisation. 2013-02-09 11:24:44 +00:00
Michael Drake 363d02b8ad Pedantic wrap. 2013-02-08 23:39:41 +00:00
Michael Drake 50c52408f5 Fix seg fault when moving cursor up onto empty top line. 2013-02-08 23:38:05 +00:00
Michael Drake 6fee220c52 Adjust code to reduce indentation. 2013-02-08 23:35:42 +00:00
Michael Drake 0d831c4ab6 Scaled textarea rendering support. Ugly. 2013-02-08 23:25:40 +00:00
Michael Drake 586e02e915 Implement text selection auto-scroll. 2013-02-08 20:03:44 +00:00
Michael Drake 7a397d29c6 Improve scroll-to-caret behaviour. 2013-02-08 19:46:35 +00:00
Michael Drake 59d24187f7 Support dropping text file on textarea widget. 2013-02-08 16:05:44 +00:00
Michael Drake 698f391289 Add scrollwheel support to textareas. 2013-02-08 15:26:24 +00:00
Michael Drake f57e89cc25 Add ta to documentation. 2013-02-08 15:15:27 +00:00
Michael Drake 9c20ff9592 Drag fixup. Add some documentation. 2013-02-08 15:05:07 +00:00
Michael Drake 4747bbbfb2 HTML drags now go via content msg. 2013-02-08 13:22:53 +00:00
Michael Drake 9ec663f3a9 Tweak selection rendering. Adjusting layout doesn't emit redraw request. Client must redraw when it wants it. 2013-02-08 13:16:24 +00:00
Michael Drake 76b0e59b18 Don't lose fractional part of text pt size to rounding. 2013-02-07 15:03:35 +00:00
Michael Drake 2979a19786 Remove input subtree special numberspacing. 2013-02-07 14:21:48 +00:00
Michael Drake 94be5edbfa Native caret not now set in redraw. Prevents endless redraw when textarea has caret. 2013-02-07 13:58:43 +00:00
Michael Drake 762e1aad73 First pass at getting html forms to use textarea widget.
(Input element types text & password, and textarea element.)
Can edit and submit forms, but there are loads of issues.
2013-02-06 22:39:45 +00:00
Michael Drake 008cdb42d7 Fix empty textarea reflow. Fix empty line (just \n) redraw. Add set layout function to set size and padding. 2013-02-06 22:30:32 +00:00
Michael Drake 442218cb80 Pull flags out of textarea_setup. 2013-02-02 22:58:35 +00:00
Michael Drake 97bc1d0189 Add support for password text inputs.
+ Text display obscured.
  + Cut/Copy put the obscured version on the clipboard.
2013-02-01 18:29:27 +00:00
Michael Drake 663191791e Add move caret msg. Add flag to choose internal caret or caret move msgs. 2013-01-30 18:01:01 +00:00
Michael Drake 5eb417fff4 Create textarea_msg struct on stack, rather than using global. 2013-01-29 22:52:21 +00:00
Michael Drake af7a5d2d67 Don't redraw if selection is unchanged. 2013-01-29 20:28:10 +00:00
Michael Drake 93cc123200 Update textarea to inform client what it's doing with drags.
Now single callback for both redraw requests and drag reports.
Update treeview to use new textarea API.
Update Atari URL bar to use new textarea API.  (Ignores drag reports, currently.)
Minor textarea fixes.
2013-01-29 17:34:08 +00:00
Michael Drake 75a24f7838 Add enum value for when no button is pressed (hover). 2013-01-29 14:07:24 +00:00
François Revol 2f94b0a949 textarea: C89 2013-01-20 17:59:55 +01:00
Michael Drake 9995ef583f Early scrollbar mouse handling. 2013-01-18 23:32:53 +00:00
Michael Drake d252896953 Ensure we know for sure if scrollbar widget will want to scroll us. Avoid double xy to offset conversion. 2013-01-15 21:05:54 +00:00
Michael Drake 7a0b347563 Add parentheses. 2013-01-15 19:50:36 +00:00
Michael Drake 348e9789a4 Add scrollbars to textarea, and improve scrolling to try to keep caret in centre. Currently the scrollbars are mostly decoration, although they show accuratly where you are scrolled to in the area. TODO: Pass mouse input to scrollbars. 2013-01-15 19:40:32 +00:00
Michael Drake 96264ca71e Use right padding. Thanks jmb. 2013-01-14 12:01:23 +00:00
Michael Drake 700aea8b08 Fix caret removal redraw to take account of border width. Fix scroll_visible to take account of border width in vertical scroll. 2013-01-14 11:46:56 +00:00
Michael Drake 2b7bc02961 Implement most of the styling needed for HTML. Allow caret to be hidden. 2013-01-13 23:01:29 +00:00
Michael Drake 740559ab52 Rewrite redraw to handle selection properly. (Now text can change colour inside selection, rather than just rendering a rectangle under the normal line of text. This removes colour restrictions, allowing e.g. inversion for selected text.) 2013-01-13 14:51:26 +00:00
Michael Drake c7a37392e4 Add background colour to textarea_redraw API. Add source comments. 2013-01-12 20:59:32 +00:00
Michael Drake 5124b8a02a Add textarea_setup struct to textarea_create API. 2013-01-12 20:46:01 +00:00
Michael Drake ac03806a50 Fix redraw of caret when scroll offsets are non-zero, only caret has moved, and we're not getting a full textarea redraw. 2013-01-10 23:21:47 +00:00
Michael Drake ac89e52109 Simplify routine to scroll ta so that caret is visible. 2013-01-10 23:20:42 +00:00
Michael Drake ab5d165659 More wrap behaviour improvement. 2013-01-10 19:43:22 +00:00
Michael Drake 694c1e7eea Fix silly. 2013-01-10 18:42:56 +00:00
Michael Drake d3973b2991 Fix previous caret position redraw. 2013-01-10 18:36:25 +00:00
Michael Drake 2158ef60a8 Improve reflow in multiline textareas. 2013-01-10 17:42:43 +00:00
Michael Drake eddb0f17d1 Simplfy caret placement and redraw. 2013-01-10 15:06:05 +00:00
Michael Drake 4cad82db9f Fix caret placement in multi-line textareas. 2013-01-10 12:46:33 +00:00
Michael Drake ec8e6ac91d Add support for clipboard. Improve text selection behaviour. Various fixes. 2013-01-09 18:10:20 +00:00
Michael Drake 31e7b6d983 Make get_xy_offset return both char and byte offset. (Byte being needed for selection replacement.) 2013-01-09 14:26:11 +00:00
Michael Drake 964a736a53 Rename selection index markers. 2013-01-08 19:51:59 +00:00
Michael Drake 8af3dd9a43 Redo html textinput for new front end clipboard API. This doesn't affect the textinput code's brokenness. 2013-01-08 16:59:26 +00:00
Michael Drake de63a64b50 Update to use new front end clipboard functions. Now we build the buffer from each individual text box in the core, instead of in each front end. Styles for text runs are generated in the HTML case. 2013-01-08 16:54:46 +00:00
Michael Drake 147f2bd08a Remove content_msg for PASTE, since it doesn't need a gui_window to get the buffer from the front end now. 2013-01-08 16:53:00 +00:00
Michael Drake e93fae7f2d Change clipboard api, so it does not assume either browser_window/gui_window, or html/text-plain content selection objects. This allows desktop/textarea to use clipboard. 2013-01-08 16:44:45 +00:00
Michael Drake f43f84f5ad Fix redraw of selection hightlight during selection drags. 2013-01-07 14:15:35 +00:00
Michael Drake 0c0f1e4b7a Remove wrong comments. 2013-01-07 12:59:06 +00:00
Michael Drake e414d545af Make comment concise. 2013-01-07 12:22:51 +00:00
Michael Drake 1ac2e00134 Remove forward declaration. 2013-01-05 15:27:53 +00:00
Michael Drake 912d3f7690 Put exported function comments in header. 2013-01-05 15:15:23 +00:00
Michael Drake 46b7691522 Start rationalising textarea widget. 2013-01-05 14:52:02 +00:00
Michael Drake 131b4cdda1 For now selection clear and selection copy are handled by the bw. Select all is only handled by the bw if nothing has claimed input. This stops the crash when select all is used in textarea.
TODO: The special keys should not be handled by the bw, they should be handled by the content with focus.
2013-01-03 15:25:59 +00:00
Michael Drake 4aadb5237a Ensure selection related keypresses go to whatever has claimed input. 2013-01-03 12:48:09 +00:00
Vincent Sanders 33934e1271 implement the GTK preferances dialog with signals 2013-01-01 00:59:47 +00:00
John-Mark Bell ea3f09a724 Correctly emit entities when serialising to HTML. 2012-12-30 23:37:06 +00:00
Vincent Sanders ce309aa5a9 add message retrival of error codes ensuring there are messages for all codes 2012-11-26 17:32:57 +00:00
François Revol 8a12a8d545 C89 2012-11-25 19:19:58 +01:00
John-Mark Bell ce640e59fd Report (and ignore) failure to load non-existent document. (Credit: Chris Young) 2012-11-11 11:31:34 +00:00