Commit Graph

154 Commits

Author SHA1 Message Date
Michael Drake
aa380ed47a More scaled rendering improvements. Partial redraws of scaled textareas can't work atm, since neither the textarea nor content is aware of scale. 2014-01-21 14:37:46 +00:00
Michael Drake
3f3b64bf22 Fix scaled rendering clip rect bottom calculation. 2014-01-21 11:13:36 +00:00
Vincent Sanders
bd065d4a43 split browser gui operations up 2014-01-15 19:37:05 +00:00
Vincent Sanders
68eaec5cb4 complete move of remaining core gui functions 2014-01-15 12:28:55 +00:00
Vincent Sanders
0075eab194 move remaining gui operations to table 2014-01-14 23:31:54 +00:00
Michael Drake
838359194e Return message to client when textarea is modified. 2014-01-04 14:48:58 +00:00
Michael Drake
640bb77330 Dodge Coverity scan issue. 2013-10-23 11:16:34 +01:00
Michael Drake
0c4f32fb1d Make undo and redo share common implementation. 2013-10-01 18:29:22 +01:00
Michael Drake
5809bcefa6 Wipe undo buffer on textarea_set_text. 2013-10-01 14:03:02 +01:00
Michael Drake
3bdc61a131 Ensure cut can be undone. 2013-10-01 13:54:34 +01:00
Michael Drake
6a4601c3ce Implement textarea undo and redo. 2013-10-01 13:30:20 +01:00
Michael Drake
308a24e661 Start implementing undo/redo. For now it just records changes, the actual undo/redo handling is not yet done. 2013-09-30 21:38:41 +01:00
Michael Drake
b96222d857 We return client data, not node. 2013-09-14 23:22:13 +01:00
Michael Drake
9c855df691 Remove dead assignment. 2013-09-05 12:01:13 +01:00
Michael Drake
2fce8cccbc Remove dead assignement. 2013-09-05 11:58:49 +01:00
Michael Drake
3529d39759 Don't show caret when scrolling a textarea that hasn't been given focus. 2013-03-27 13:46:57 +00:00
Michael Drake
e2bcc5f5eb Tidy up pointer beyond scrollbars. 2013-03-27 11:43:10 +00:00
Michael Drake
9a73da6347 Reduce multi-line textarea a bit more. When redrawing only one line, don't redraw unchanged text at the start of the line. 2013-03-26 14:07:08 +00:00
Michael Drake
0bb9543293 Further reduce redraw region for multi-line textareas when editing. 2013-03-26 12:54:19 +00:00
Michael Drake
53962009da Trivial redraw optimisation for multiline textareas. Only redraw the line that was changed and below. 2013-03-25 12:37:18 +00:00
Michael Drake
cc4411c0c7 Remove some spaces. 2013-03-25 12:03:53 +00:00
Michael Drake
70fbca3606 Reduce redraw area for selection set/change/clear. 2013-03-22 18:14:42 +00:00
Michael Drake
b603cafbaa Move line start calc into reflow handler. 2013-03-22 18:14:42 +00:00
Michael Drake
ad53da023d Optimise redraw of single line textarea. When single line textarea is unscrolled, only the changed area is redrawn after edits. 2013-03-21 18:47:38 +00:00
Michael Drake
948f2dbed6 Split reflow into two functions for single or multi line textareas. 2013-03-21 14:15:36 +00:00
Michael Drake
8e360ff040 Robust detection of scroll changes. 2013-03-20 19:52:10 +00:00
Michael Drake
c568a9626b Avoid double redraw when edit causes scroll. 2013-03-20 19:24:53 +00:00
Michael Drake
50efd110b8 Use cached line length to avoid some nsfont_width calls for selection rendering in redraw. 2013-03-20 18:09:52 +00:00
Michael Drake
3403891f63 Avoid redraw of scrollbars when they've not changed. 2013-03-20 17:53:38 +00:00
Michael Drake
71392160d0 Cache line widths. Fixes scrollbar issue introduced with partial reflow enablement. Will also be used for future redraw optimisations. 2013-03-20 17:32:18 +00:00
Michael Drake
8cfa964cdf Start reflow on line before change in text, rather than always reflowing the entire textarea. 2013-03-20 12:41:06 +00:00
Michael Drake
0bcbdba424 Comment fixes. 2013-03-19 17:29:55 +00:00
Michael Drake
b1082c09e7 Fix warnings. 2013-03-19 16:28:05 +00:00
Michael Drake
2ad0d23915 Start reducing unnecessary redraws: when only start OR end of selection has changed, only redraw the lines affected. (Reduces redraw of vertical regions only. Still redraw full width for changed lines.) 2013-03-19 16:22:24 +00:00
Michael Drake
8d0c1f9207 Loads of changes including fixes, new functionality, and optimisation.
+ Refactor internals to be byte, rather than character based.
    + Don't need to hammer utf8_* functions everywhere
    + Optimises:
        + Redraw (lots)
        + Editing (insertion, replacement, removal)
        + Caret placement
        + Selection
+ Early avoid of zero length autoscroll during selection drag.
+ Optimised redraw to avoid nsfont_width when:
    + There's no selection at all.
    + We're on last part of line, and it's unselected.
+ Implemented WORD_LEFT and WORD_RIGHT keys (shift + cursor left/right)
+ Fixed UP and DOWN (cursor up/down) keys to handle non-monospace fonts.
  (Now based on 'x' offset on line, rather than character offset on line.)
+ Fixed PAGE_UP and PAGE_DOWN to scroll without moving the caret.
+ Fixed redraw bug in text selection edge case.
+ Changed textarea_replace_text and textarea_insert_text to return
  a byte delta for caret position changes.
+ Coordinate to text offset function handles global and viewport coords.
+ Many small improvements and tidying.
2013-03-17 22:06:48 +00:00
Michael Drake
2af4b5be01 Make textarea_get_caret private. 2013-03-13 11:23:07 +00:00
Michael Drake
41e4928e25 Fix pointer shape and status bar messages for textareas and their scrollbars. 2013-03-11 12:57:33 +00:00
Michael Drake
490de208d0 Make autoscroll start at inside edge of border or scrollbar. 2013-03-06 21:31:20 +00:00
Michael Drake
e3cb0ba450 Pull scrollbar mouse handling out into helper function. 2013-03-06 15:41:51 +00:00
Michael Drake
5b7643634f Textarea sends caret hide msg if caret completely outside visible area. 2013-03-06 14:28:34 +00:00
Michael Drake
951a584705 Don't show caret if there's a selection. 2013-03-06 13:10:37 +00:00
Michael Drake
e8950dee22 Propagate native caret clip rect through core. 2013-03-05 22:54:51 +00:00
Michael Drake
bba74b7a0b Handle readonly attribute for text inputs and textareas. 2013-02-23 17:44:20 +00:00
Michael Drake
ffe3ce2615 Don't need initial caret pos now. 2013-02-22 22:26:03 +00:00
Michael Drake
c034fb87ad No point in setting caret there. 2013-02-22 22:16:26 +00:00
Michael Drake
48bd5e1f10 Always set caret. 2013-02-22 16:41:35 +00:00
Michael Drake
04ca082416 Shove allocation step size into #define. 2013-02-22 16:16:10 +00:00
Michael Drake
00eb142661 Increase allocation increment step size. 2013-02-22 16:12:48 +00:00
Michael Drake
d48f3e3f49 Textarea tweaks for caret placement after selection removal. 2013-02-22 16:04:31 +00:00
Michael Drake
59fdbae1bc Fix setting of empty selections. 2013-02-22 15:23:36 +00:00