Michael Drake
5bd37ecf2c
Elements replaced with HTML don't affect parent descendants.
...
svn path=/trunk/netsurf/; revision=12365
2011-05-10 11:11:54 +00:00
Michael Drake
ac447fc293
s/scroll/scrollbar/ and improve scrollbar widget comments.
...
svn path=/trunk/netsurf/; revision=12363
2011-05-09 22:49:17 +00:00
John Mark Bell
e71691bae8
Merge branches/jmb/content-factory to trunk
...
svn path=/trunk/netsurf/; revision=12283
2011-05-06 20:40:09 +00:00
Michael Drake
1304964f92
Reduce number of page reflows and viewport
...
redraws as images are fetched:
+ Flag known-sized boxes generated by images.
+ Treat them as replaced all through layout.
+ Only reflow the document for fetched images
if we don't already have the box at the
right size.
svn path=/trunk/netsurf/; revision=12243
2011-04-27 13:50:49 +00:00
Michael Drake
769011911c
Optimise first pass of layout. Reduces number of nsfont_width calls by up to the page's word count.
...
svn path=/trunk/netsurf/; revision=12239
2011-04-26 15:03:44 +00:00
Michael Drake
8d2bb4bd3a
Change how blocks are positioned vertically (esp. margin handling).
...
svn path=/trunk/netsurf/; revision=12235
2011-04-22 21:57:18 +00:00
John Mark Bell
ff60007458
Fix build with NDEBUG defined
...
svn path=/trunk/netsurf/; revision=12154
2011-04-03 22:23:14 +00:00
Michael Drake
a0d7e79c8c
Allow box margins to collapse through zero-height boxes.
...
svn path=/trunk/netsurf/; revision=11981
2011-03-12 18:44:43 +00:00
Vincent Sanders
74f108ee4d
Saturated maths in css fixed point
...
svn path=/trunk/netsurf/; revision=11975
2011-03-12 17:46:11 +00:00
Michael Drake
e406481623
Update left/right margins comment.
...
svn path=/trunk/netsurf/; revision=11967
2011-03-12 12:27:17 +00:00
Michael Drake
28dc80a3a5
Esimated width is fine for last box.
...
svn path=/trunk/netsurf/; revision=11922
2011-03-05 23:03:44 +00:00
Michael Drake
8c8ef2268d
Ensure box has appropriate space before cloning.
...
svn path=/trunk/netsurf/; revision=11921
2011-03-05 22:55:52 +00:00
Michael Drake
9be22ab590
Make sure the last clone box for a wrapped text is properly measuered.
...
svn path=/trunk/netsurf/; revision=11920
2011-03-05 22:18:06 +00:00
Michael Drake
3e7ea29e4b
Move clone to box flags.
...
svn path=/trunk/netsurf/; revision=11890
2011-03-02 19:30:08 +00:00
Michael Drake
f744c9dfa0
Make box flags and move new line indicator to it.
...
svn path=/trunk/netsurf/; revision=11886
2011-03-02 17:50:51 +00:00
Michael Drake
db69e8045b
When wrapping text, don't duplicate strings. Special case for text inside textareas, since they require it.
...
svn path=/trunk/netsurf/; revision=11881
2011-03-01 22:14:02 +00:00
Michael Drake
3b366c53f9
More useful assert and remove box_dump call.
...
svn path=/trunk/netsurf/; revision=11880
2011-03-01 21:48:38 +00:00
Michael Drake
e3f00b8546
Cache space widths.
...
svn path=/trunk/netsurf/; revision=11877
2011-03-01 20:00:41 +00:00
Michael Drake
f1343377ff
Split splitting out into layout_text_box_split().
...
svn path=/trunk/netsurf/; revision=11869
2011-03-01 13:42:27 +00:00
Michael Drake
e35aecb9aa
Optimise wrapped text layout.
...
svn path=/trunk/netsurf/; revision=11852
2011-02-28 13:18:27 +00:00
Michael Drake
9125bd1fa4
Apply margin before clear.
...
svn path=/trunk/netsurf/; revision=11786
2011-02-24 15:45:10 +00:00
Michael Drake
b68dc734e1
Handle text-indent in layout_minmax_line(). ( Fixes #3187505 ; scattering of social networking icons on BBC News.)
...
svn path=/trunk/netsurf/; revision=11785
2011-02-24 13:46:12 +00:00
Michael Drake
2ef37af60c
When box has no style, handle descendant calc as for overflow: visible.
...
svn path=/trunk/netsurf/; revision=11770
2011-02-23 13:11:19 +00:00
Michael Drake
7eaa663d74
Child bbox is relative to current box.
...
svn path=/trunk/netsurf/; revision=11756
2011-02-22 15:34:36 +00:00
Michael Drake
7f1108df32
Child's descendant bbox only affects current box's bbox if the child has overflow:visible.
...
svn path=/trunk/netsurf/; revision=11755
2011-02-22 15:12:18 +00:00
Michael Drake
474cbe917e
Add function to get a box's border edge bbox, and use it to find initial descendant bbox.
...
svn path=/trunk/netsurf/; revision=11754
2011-02-22 14:57:04 +00:00
Michael Drake
9a8341cb39
Simplify descendant bbox calculations.
...
svn path=/trunk/netsurf/; revision=11753
2011-02-22 11:38:19 +00:00
Michael Drake
bbdb7cd440
Fix fixed point percentage macro not to overflow. Thanks to jmb and vince.
...
svn path=/trunk/netsurf/; revision=11702
2011-02-16 20:41:55 +00:00
Michael Drake
06e6ec4eb1
If percentage is negative, resort to floating point.
...
svn path=/trunk/netsurf/; revision=11700
2011-02-16 17:14:47 +00:00
Michael Drake
f793d17acd
Handle percentages from libcss without doing floating point maths.
...
svn path=/trunk/netsurf/; revision=11687
2011-02-15 14:31:18 +00:00
Michael Drake
60c74c2e3c
More comments for object dimension calculation.
...
svn path=/trunk/netsurf/; revision=11678
2011-02-14 16:42:23 +00:00
Michael Drake
fc7efc6e4a
Don't use float maths for AUTO image sizing with one given dimension.
...
svn path=/trunk/netsurf/; revision=11677
2011-02-14 14:48:56 +00:00
Michael Drake
5b4228f5aa
Handle object sizing in one place.
...
svn path=/trunk/netsurf/; revision=11676
2011-02-14 14:39:42 +00:00
Michael Drake
3d69933e45
Avoid potential divide by 0.
...
svn path=/trunk/netsurf/; revision=11675
2011-02-14 12:56:52 +00:00
John Mark Bell
5d27aa256f
Port to latest libcss
...
svn path=/trunk/netsurf/; revision=11526
2011-01-29 19:22:12 +00:00
Michael Drake
44e8897a48
Make layout of block formatting contexts take account of the bottom margin of the last contained block.
...
svn path=/trunk/netsurf/; revision=11498
2011-01-26 15:14:38 +00:00
Michael Drake
40a034b08f
Don't clear floats if there aren't floats to clear.
...
svn path=/trunk/netsurf/; revision=11270
2011-01-09 19:09:30 +00:00
Michael Drake
fe291f87d9
Ensure top margin is affects static position in particular case.
...
svn path=/trunk/netsurf/; revision=11262
2011-01-09 00:09:57 +00:00
Michael Drake
b85fcf590f
Table top/bottom margin is 0px when computed value is 'auto'.
...
svn path=/trunk/netsurf/; revision=11257
2011-01-08 17:34:45 +00:00
Michael Drake
b9773d34bb
Root element can't be absolute positioned. Fixes #3062055 .
...
svn path=/trunk/netsurf/; revision=10743
2010-09-08 17:22:35 +00:00
Michael Drake
0de9f41db7
Fix object descendants and make space for scrollbars if required.
...
svn path=/trunk/netsurf/; revision=10730
2010-08-30 22:30:43 +00:00
Michael Drake
ece31d1358
Don't special case height to content height when object's content is HTML.
...
svn path=/trunk/netsurf/; revision=10729
2010-08-30 22:09:49 +00:00
Michael Drake
2a286962f7
Fix build when layout logging is enabled.
...
svn path=/trunk/netsurf/; revision=10649
2010-07-16 17:56:33 +00:00
Michael Drake
17aacbec02
Record left and right float boxes with negative widths. Fixes overlapping text on new BBC News site.
...
svn path=/trunk/netsurf/; revision=10648
2010-07-16 17:48:20 +00:00
Michael Drake
71644097be
Remove dead assignements and add assert to check table cells aren't set to span no columns at layout time (Note: colspan=0 is treated as colspan=1 by box normalisation. It should probably be handled in table_calculate_columns_types() properly. Either way, there shouldn't be colspans of 0 by the time we get to layout.)
...
svn path=/trunk/netsurf/; revision=10601
2010-07-06 20:23:07 +00:00
Michael Drake
485ac0dad7
Improve handling of percentage margins and paddings on floats. Fixes pond.org.uk. This is still not ideal and there are cases where we don't match other browsers.
...
svn path=/trunk/netsurf/; revision=10497
2010-04-27 17:45:07 +00:00
Michael Drake
4d67ca25a7
Fix vertical placement of absolute positioned inlines using staic position. Simplify placement of inlines on a line.
...
svn path=/trunk/netsurf/; revision=10495
2010-04-27 12:02:12 +00:00
Michael Drake
542610c779
Fix float wrap issue. (Amiga.org nav bar.)
...
svn path=/trunk/netsurf/; revision=10490
2010-04-26 22:13:22 +00:00
Vincent Sanders
03bb3e8636
remove _GNU_SOURCE define from everywhere.
...
strndup is not standard so provide an implementation.
svn path=/trunk/netsurf/; revision=10474
2010-04-24 15:22:17 +00:00
Daniel Silverstone
270ef59a98
Merge jmb/new-cache; r=dsilvers,rs=vince
...
svn path=/trunk/netsurf/; revision=10180
2010-03-28 12:56:39 +00:00
Michael Drake
b1e8c5fb09
Revert float ordering optimisation (r9846) due to effect on stacking order.
...
svn path=/trunk/netsurf/; revision=9853
2010-01-20 22:38:22 +00:00
Michael Drake
185465df3d
Order containing block's list of floats in descending order of the y-position of their base. Make find_sides() stop searching, after floats are above the range we're interested in. (351s --> 73s on ix for haveproblems/really-slow-float-table2.html)
...
svn path=/trunk/netsurf/; revision=9846
2010-01-17 09:57:25 +00:00
Michael Drake
ab74f4c990
When placing floats below, keep track of y-position, for future floats in current line.
...
svn path=/trunk/netsurf/; revision=9836
2010-01-16 17:41:50 +00:00
John Mark Bell
355799ce0b
Merge branches/MarkieB/gtkmain to trunk.
...
svn path=/trunk/netsurf/; revision=9729
2009-12-17 23:55:02 +00:00
John Mark Bell
51d545772c
Squash warning
...
svn path=/trunk/netsurf/; revision=9686
2009-11-22 13:46:23 +00:00
John Mark Bell
d010712a9c
Avoid potential NULL pointer dereferences
...
svn path=/trunk/netsurf/; revision=9680
2009-11-22 13:28:30 +00:00
Michael Drake
5a4897d722
Clearer wrapping.
...
svn path=/trunk/netsurf/; revision=9519
2009-08-31 10:44:40 +00:00
Michael Drake
31ccf7beed
Simplification of relative offset calculation. Thanks to Christopher Martin.
...
svn path=/trunk/netsurf/; revision=9518
2009-08-31 10:39:32 +00:00
John Mark Bell
5552f2b06c
Use new alignment scheme
...
svn path=/trunk/netsurf/; revision=9390
2009-08-22 09:56:41 +00:00
John Mark Bell
6836a74521
Ensure we've got a case for default html alignment.
...
svn path=/trunk/netsurf/; revision=9382
2009-08-21 17:17:47 +00:00
John Mark Bell
b0f127aa2c
Support HTML alignment hints.
...
svn path=/trunk/netsurf/; revision=9381
2009-08-21 17:05:22 +00:00
Michael Drake
13afa0ff4c
Merge Paul Blokus' selectscroll branch. Adds core select menu widget for forms and core scrollbar widget.
...
svn path=/trunk/netsurf/; revision=9289
2009-08-14 10:37:33 +00:00
Michael Drake
3cbbdeb91c
Ensure that inline end boxes get the correct height.
...
svn path=/trunk/netsurf/; revision=9104
2009-08-07 15:52:00 +00:00
Michael Drake
b0cc93800a
Slightly more useful vertical alignment.
...
svn path=/trunk/netsurf/; revision=9100
2009-08-07 13:00:28 +00:00
John Mark Bell
0665611cc2
Port to modified libcss API.
...
svn path=/trunk/netsurf/; revision=8997
2009-08-02 19:19:43 +00:00
John Mark Bell
ed16129b0c
Prevent negative calculated width of replaced inlines in layout_minmax_line().
...
svn path=/trunk/netsurf/; revision=8933
2009-08-01 00:26:02 +00:00
John Mark Bell
e5f55a27ef
Fix potential crash when inline replaced elements have percentage width.
...
svn path=/trunk/netsurf/; revision=8814
2009-07-27 10:22:44 +00:00
John Mark Bell
2c00c55963
Simplify line-height calculation, deferring to nscss_len2px.
...
svn path=/trunk/netsurf/; revision=8783
2009-07-25 13:20:12 +00:00
Michael Drake
48e3221458
Don't attempt to basline-align non text related inlines.
...
svn path=/trunk/netsurf/; revision=8762
2009-07-24 00:08:23 +00:00
James Bursa
b1c1d85f97
Better way of aligning text baselines. Move boxes down to align 0.75 point instead of changing height.
...
svn path=/trunk/netsurf/; revision=8758
2009-07-23 23:51:43 +00:00
John Mark Bell
ddeadd1c02
Merge LibCSS port to trunk.
...
svn path=/trunk/netsurf/; revision=8752
2009-07-23 23:05:34 +00:00
James Bursa
dffc8779ed
Set height of all text boxes in a line to the height of the highest one. This aligns the baseline of text which changes font size in a line. However, when the inline-block is reflowed, the heights do not shrink again where they could.
...
svn path=/trunk/netsurf/; revision=8716
2009-07-23 02:29:12 +00:00
John Mark Bell
2565a37a52
Refactor text plotter and other font functions to remove dependency on CSS.
...
svn path=/trunk/netsurf/; revision=8641
2009-07-21 10:59:53 +00:00
Michael Drake
ed2206316c
Positioned elements are taken out of normal flow, so don't let them affect min/max width calculations.
...
svn path=/trunk/netsurf/; revision=8502
2009-07-13 15:37:54 +00:00
Michael Drake
f9b905be95
Fix assert when replaced element has display:table;.
...
svn path=/trunk/netsurf/; revision=7950
2009-06-24 15:43:24 +00:00
Michael Drake
1a0f62f529
Don't need height of css positioned boxes when laying out boxes in normal flow.
...
svn path=/trunk/netsurf/; revision=7656
2009-05-30 12:22:22 +00:00
Michael Drake
798f421a88
When computing relative offset values for floats, use block formatting context for containing block, rather than parent.
...
svn path=/trunk/netsurf/; revision=7614
2009-05-28 18:06:49 +00:00
Michael Drake
b595970d82
Reorganise some conditions and only try to deal with min-height and max-height where it should be done.
...
svn path=/trunk/netsurf/; revision=7594
2009-05-28 11:14:32 +00:00
John Mark Bell
243c1ba03f
Limit scope of manually-defined NDEBUG. Purge a bunch of redundant #undef NDEBUG.
...
svn path=/trunk/netsurf/; revision=7593
2009-05-28 10:39:53 +00:00
Michael Drake
223818b84c
Make layout_apply_minmax_height assert if it's called with a box that shouldn't exist.
...
svn path=/trunk/netsurf/; revision=7590
2009-05-27 19:43:03 +00:00
Michael Drake
50219b81e6
Pedantic wrap.
...
svn path=/trunk/netsurf/; revision=7589
2009-05-27 19:17:16 +00:00
Michael Drake
7bb2aa7cbb
Remove a couple of superfluous conditions.
...
svn path=/trunk/netsurf/; revision=7588
2009-05-27 19:11:07 +00:00
Michael Drake
5b33c1e723
Remove dead assignment
...
svn path=/trunk/netsurf/; revision=7587
2009-05-27 18:43:14 +00:00
Michael Drake
65a888dd87
Handle percentage table heights. Spare height is still not distributed over cells.
...
svn path=/trunk/netsurf/; revision=7439
2009-05-08 11:43:38 +00:00
Michael Drake
c2ecbebd3d
Fix viewport height handling not to obliterate calculation
...
of root element height from children's dimensions.
Improve handling of percentage heights on HTML and BODY.
svn path=/trunk/netsurf/; revision=7429
2009-05-07 16:22:38 +00:00
Michael Drake
129fb84ed5
Make layout_block_context() private.
...
svn path=/trunk/netsurf/; revision=7406
2009-05-06 14:20:46 +00:00
Michael Drake
a008d3486e
Move special casing of form element dimensions out into separate helper function.
...
svn path=/trunk/netsurf/; revision=7403
2009-05-06 11:16:06 +00:00
Michael Drake
5a35e5cd97
Make form elements with specified sizes include paddings and borders in their sizes in some cases.
...
svn path=/trunk/netsurf/; revision=7386
2009-05-01 18:00:01 +00:00
Michael Drake
a99a5bdd70
Move handling of TR height attribute from box construction to layout and add support for height property on TR.
...
svn path=/trunk/netsurf/; revision=7358
2009-04-28 20:13:10 +00:00
John Mark Bell
56000c4736
If we calculate the height of the root box to be AUTO, set it to the viewport height before laying out the document (makes html, body { height: 100%; } behave correctly)
...
svn path=/trunk/netsurf/; revision=7127
2009-04-17 17:28:38 +00:00
Michael Drake
3a12ed0fac
Update some comments.
...
svn path=/trunk/netsurf/; revision=7092
2009-04-15 13:22:28 +00:00
Michael Drake
f1c7c7f072
Remove unused line_height stuff for now.
...
svn path=/trunk/netsurf/; revision=6354
2009-02-02 13:54:48 +00:00
Michael Drake
b2182b8c50
Fix clear:both; when there's nothing to clear.
...
svn path=/trunk/netsurf/; revision=6352
2009-02-02 12:56:15 +00:00
Michael Drake
400ed91129
Hubbub allows FONT tags to span blocks and the way that
...
the box tree is generated, this makes the BOX_INLINE's
BOX_INLINE_END appears in a different BOX_BLOCK. That
seems wrong, but fix layout not to crash for now.
svn path=/trunk/netsurf/; revision=6325
2009-01-31 22:49:41 +00:00
Michael Drake
414f42faac
Make inline boxes store the height of their line box and include in box tree dump.
...
svn path=/trunk/netsurf/; revision=6319
2009-01-31 13:26:28 +00:00
Michael Drake
daf8c22d1b
Only get top margin if box has style.
...
svn path=/trunk/netsurf/; revision=6295
2009-01-29 22:57:32 +00:00
Michael Drake
56b48410be
Include top margin when finding sides for block formatting contexts.
...
svn path=/trunk/netsurf/; revision=6293
2009-01-29 21:23:48 +00:00
Michael Drake
619e5b9631
Once a float has been placed below current line,
...
ensure that subsequent floats are also placed below.
Make place_float_below() consider float height when
searching for available space.
svn path=/trunk/netsurf/; revision=6287
2009-01-27 13:21:50 +00:00
Michael Drake
aa787e9730
Fix specified table widths to include border. Tidy block formatting context and table position setup.
...
svn path=/trunk/netsurf/; revision=6281
2009-01-26 16:32:19 +00:00
Michael Drake
0a175d4020
Fix -ve margins.
...
svn path=/trunk/netsurf/; revision=6277
2009-01-26 09:11:54 +00:00