aboutsummaryrefslogtreecommitdiff
path: root/src/styleengine.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/styleengine.cc')
-rw-r--r--src/styleengine.cc57
1 files changed, 28 insertions, 29 deletions
diff --git a/src/styleengine.cc b/src/styleengine.cc
index 285da3f5..a5c43bf4 100644
--- a/src/styleengine.cc
+++ b/src/styleengine.cc
@@ -361,6 +361,7 @@ void StyleEngine::apply (int i, StyleAttrs *attrs, CssPropertyList *props,
Font *parentFont = stack->get (i - 1).style->font;
char *c, *fontName;
int lineHeight;
+ DilloUrl *imgUrl = NULL;
/* Determine font first so it can be used to resolve relative lengths. */
for (int i = 0; i < props->size (); i++) {
@@ -528,35 +529,8 @@ void StyleEngine::apply (int i, StyleAttrs *attrs, CssPropertyList *props,
Color::create(layout, prefs.white_bg_replacement);
break;
case CSS_PROPERTY_BACKGROUND_IMAGE:
- if (prefs.load_background_images)
- {
- // p->value.strVal should be absolute, so baseUrl is not needed
- DilloUrl *imgUrl = a_Url_new (p->value.strVal, NULL);
-
- attrs->backgroundImage = StyleImage::create();
- DilloImage *image =
- a_Image_new(layout,
- (void*)attrs->backgroundImage
- ->getMainImgRenderer(),
- 0xffffff);
-
- // we use the pageUrl as requester to prevent cross
- // domain requests as specified in domainrc
- DilloWeb *web = a_Web_new(bw, imgUrl, pageUrl);
- web->Image = image;
- a_Image_ref(image);
- web->flags |= WEB_Image;
-
- int clientKey;
- if ((clientKey = a_Capi_open_url(web, NULL, NULL)) != 0) {
- a_Bw_add_client(bw, clientKey, 0);
- a_Bw_add_url(bw, imgUrl);
- attrs->backgroundImage->connectDeletion
- (new StyleImageDeletionReceiver (clientKey));
- }
-
- a_Url_free (imgUrl);
- }
+ // p->value.strVal should be absolute, so baseUrl is not needed
+ imgUrl = a_Url_new (p->value.strVal, NULL);
break;
case CSS_PROPERTY_BACKGROUND_POSITION:
computeLength (&attrs->backgroundPositionX, p->value.posVal->posX,
@@ -734,6 +708,31 @@ void StyleEngine::apply (int i, StyleAttrs *attrs, CssPropertyList *props,
}
}
+ if (imgUrl && prefs.load_background_images && attrs->display != DISPLAY_NONE)
+ {
+ attrs->backgroundImage = StyleImage::create();
+ DilloImage *image =
+ a_Image_new(layout,
+ (void*)attrs->backgroundImage
+ ->getMainImgRenderer(),
+ 0xffffff);
+
+ // we use the pageUrl as requester to prevent cross
+ // domain requests as specified in domainrc
+ DilloWeb *web = a_Web_new(bw, imgUrl, pageUrl);
+ web->Image = image;
+ a_Image_ref(image);
+ web->flags |= WEB_Image;
+
+ int clientKey;
+ if ((clientKey = a_Capi_open_url(web, NULL, NULL)) != 0) {
+ a_Bw_add_client(bw, clientKey, 0);
+ a_Bw_add_url(bw, imgUrl);
+ attrs->backgroundImage->connectDeletion
+ (new StyleImageDeletionReceiver (clientKey));
+ }
+ }
+ a_Url_free (imgUrl);
}
/**