summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2008-03-09 14:10:05 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2008-03-09 14:10:05 +0000
commit920be778044e1fb8e1e5aefa2d97b0a8847c11ab (patch)
tree158dc60402ff320e103f07e6e6f0d1b5ebb12c45
parent1dc8770cbb4b8f9aeaaa8c131c7d1fc3eb726541 (diff)
downloadnetsurf-920be778044e1fb8e1e5aefa2d97b0a8847c11ab.tar.gz
netsurf-920be778044e1fb8e1e5aefa2d97b0a8847c11ab.tar.bz2
When floats have clear right or left set, as well as being put below floats on that side, they should still follow normal behaviour with respect to floats on the other side.
svn path=/trunk/netsurf/; revision=3904
-rw-r--r--!NetSurf/!Run,feb2
-rw-r--r--makefile36
-rw-r--r--render/layout.c49
-rw-r--r--riscos.mk2
4 files changed, 49 insertions, 40 deletions
diff --git a/!NetSurf/!Run,feb b/!NetSurf/!Run,feb
index 7828c21fc..afb70fea8 100644
--- a/!NetSurf/!Run,feb
+++ b/!NetSurf/!Run,feb
@@ -99,7 +99,7 @@ CDir <Wimp$ScrapDir>.WWW.NetSurf
| NB: trailing dot is required
FontInstall NetSurf:Resources.Fonts.
-WimpSlot -min 2240k -max 2240k
+WimpSlot -min 3600k -max 3600k
Run <NetSurf$Dir>.!RunImage -v %*0 2><Wimp$ScrapDir>.WWW.NetSurf.Log
| Uninstall NetSurf-specific fonts
diff --git a/makefile b/makefile
index b033c0fa6..3d2b131d4 100644
--- a/makefile
+++ b/makefile
@@ -72,14 +72,27 @@ OBJECTS_GTK += font_pango.o gtk_bitmap.o gtk_gui.o \
gtk_history.o gtk_window.o gtk_filetype.o \
gtk_download.o # gtk/
-# This makes me want to vomit, but is necessary to avoid a load of
-# "make: /home/riscos/cross/bin/gcc: Command not found." if there's no GCCSDK
-# installed on the build machine. The new build system can't happen soon enough
-OBJDIR_RISCOS = $(shell $(CC) -dumpmachine 2>/dev/null || echo arm-riscos-aof)
+# Default target - platform specific files may specify special-case rules for
+# various files.
+default: riscos
+
+
+# Inclusion of platform specific files has to occur after the OBJDIR stuff as
+# that is referred to in the files
+
+OS = riscos
+ifeq ($(OS),riscos)
+include riscos.mk
+else
+include posix.mk
+endif
+
+
+OBJDIR_RISCOS = arm-riscos-aof
SOURCES_RISCOS=$(OBJECTS_RISCOS:.o=.c)
OBJS_RISCOS=$(OBJECTS_RISCOS:%.o=$(OBJDIR_RISCOS)/%.o)
-OBJDIR_RISCOS_SMALL = $(OBJDIR_RISCOS)-small
+OBJDIR_RISCOS_SMALL = $(shell $(CC) -dumpmachine)-small
SOURCES_RISCOS_SMALL=$(OBJECTS_RISCOS_SMALL:.o=.c)
OBJS_RISCOS_SMALL=$(OBJECTS_RISCOS_SMALL:%.o=$(OBJDIR_RISCOS_SMALL)/%.o)
@@ -93,19 +106,6 @@ OBJDIR_GTK = objects-gtk
SOURCES_GTK=$(OBJECTS_GTK:.o=.c)
OBJS_GTK=$(OBJECTS_GTK:%.o=$(OBJDIR_GTK)/%.o)
-# Default target - platform specific files may specify special-case rules for
-# various files.
-default: riscos
-
-# Inclusion of platform specific files has to occur after the OBJDIR stuff as
-# that is referred to in the files
-
-OS = $(word 2,$(subst -, ,$(shell $(SYSTEM_CC) -dumpmachine)))
-ifeq ($(OS),riscos)
-include riscos.mk
-else
-include posix.mk
-endif
VPATH = content:content/fetchers:css:desktop:image:render:riscos:riscos/configure:riscos/gui:utils:debug:gtk
diff --git a/render/layout.c b/render/layout.c
index 5e53afee8..a539e62f7 100644
--- a/render/layout.c
+++ b/render/layout.c
@@ -1033,6 +1033,7 @@ bool layout_line(struct box *first, int *width, int *y,
int x0 = 0;
int x1 = *width;
int x, h, x_previous;
+ int fy;
struct box *left;
struct box *right;
struct box *b;
@@ -1365,25 +1366,13 @@ bool layout_line(struct box *first, int *width, int *y,
d->padding[TOP] + d->height +
d->padding[BOTTOM] + d->border[BOTTOM] +
d->margin[BOTTOM];
- if (d->style && d->style->clear != CSS_CLEAR_NONE) {
- /* to be cleared below existing floats */
- if (b->type == BOX_FLOAT_LEFT) {
- b->x = cx;
- x0 += b->width;
- left = b;
- } else {
- b->x = cx + *width - b->width;
- x1 -= b->width;
- right = b;
- }
- b->y = layout_clear(cont->float_children,
- d->style->clear);
- if (b->y < cy)
- b->y = cy;
- } else if (b->width <= (x1 - x0) - x ||
- (left == 0 && right == 0 && x == 0)) {
- /* fits next to this line, or this line is empty
- * with no floats */
+
+ if (d->style && d->style->clear == CSS_CLEAR_NONE &&
+ (b->width <= (x1 - x0) - x ||
+ (left == 0 && right == 0 && x == 0))) {
+ /* not cleared
+ * fits next to this line, or this line is
+ * empty with no floats */
if (b->type == BOX_FLOAT_LEFT) {
b->x = cx + x0;
x0 += b->width;
@@ -1395,9 +1384,29 @@ bool layout_line(struct box *first, int *width, int *y,
}
b->y = cy;
} else {
- /* doesn't fit: place below */
+ /* cleared or doesn't fit */
+ /* place below into next available space */
place_float_below(b, *width,
cx, cy + height, cont);
+ if (d->style && d->style->clear !=
+ CSS_CLEAR_NONE) {
+ /* to be cleared below existing
+ * floats */
+ if (b->type == BOX_FLOAT_LEFT) {
+ b->x = cx;
+ x0 += b->width;
+ left = b;
+ } else {
+ b->x = cx + *width - b->width;
+ x1 -= b->width;
+ right = b;
+ }
+ fy = layout_clear(cont->float_children,
+ d->style->clear);
+ if (b->y < fy)
+ b->y = fy;
+
+ }
}
if (cont->float_children == b) {
LOG(("float %p already placed", b));
diff --git a/riscos.mk b/riscos.mk
index 3ca148104..91af87fd7 100644
--- a/riscos.mk
+++ b/riscos.mk
@@ -9,7 +9,7 @@ PLATFORM_AFLAGS_RISCOS = -mthrowback -IOSLib:
LDFLAGS_RISCOS = NSLibs:lib/libxml2 NSLibs:lib/libz NSLibs:lib/libcurl \
NSLibs:lib/libssl NSLibs:lib/libcrypto NSLibs:lib/libcares \
NSLibs:lib/libmng NSLibs:lib/libjpeg NSLibs:lib/librufl NSLibs:lib/libpencil \
- OSLib:o.OSLib32
+ OSLib:o.OSLib32 NSLibs:lib/libsvgtiny
LDFLAGS_SMALL = NSLibs:lib/libxml2 NSLibs:lib/libz NSLibs:lib/libcurl \
NSLibs:lib/libares NSLibs:lib/libmng \
NSLibs:lib/libjpeg OSLib:o.oslib32