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
Vincent Sanders
95e726c7cc
split sources lists out to their subdirectories as first step towards using core buildsystem
2013-03-11 17:53:52 +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
037beb44fb
Pass caret clip rect out to front ends. (Nothing actually using them yet.)
2013-03-05 22:54:51 +00:00
Michael Drake
e8950dee22
Propagate native caret clip rect through core.
2013-03-05 22:54:51 +00:00
Michael Drake
541523f962
Less ambiguous flag documentation comment.
2013-03-04 15:12:58 +00:00
Michael Drake
69d653f4dc
Fix history.
2013-03-04 15:07:58 +00:00
Michael Drake
02f2cbec3f
Pedantic wrap.
2013-03-04 15:07:43 +00:00
John-Mark Bell
cd3e073354
Fix logging
2013-02-27 03:11:30 +00:00
John-Mark Bell
97978e858b
Use custom fetcher for inline CSS
2013-02-27 03:11:10 +00:00
John-Mark Bell
405fa12f8d
Fix handling of inline stylesheets with @import
2013-02-26 09:14:32 +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
John-Mark Bell
9303fc56dc
Remove redundant code.
2013-02-22 20:51:56 +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
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