summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2003-09-04 22:54:25 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2003-09-04 22:54:25 +0000
commita0c42f65da89cd5cb91e3b0c0cc7289616972b67 (patch)
treee1e0fcf8e3b927cd90c787776462c6d2261ece19
parentb19462e1fffced0f290760c0e67288fb9d043243 (diff)
downloadnetsurf-a0c42f65da89cd5cb91e3b0c0cc7289616972b67.tar.gz
netsurf-a0c42f65da89cd5cb91e3b0c0cc7289616972b67.tar.bz2
[project @ 2003-09-04 22:54:25 by jmb]
Plugin_Reshape_Request support svn path=/import/netsurf/; revision=266
-rw-r--r--riscos/plugin.c50
1 files changed, 41 insertions, 9 deletions
diff --git a/riscos/plugin.c b/riscos/plugin.c
index 92cb8f4bb..fec348d6d 100644
--- a/riscos/plugin.c
+++ b/riscos/plugin.c
@@ -18,7 +18,7 @@
* - Handle standalone objects
*/
-#undef NDEBUG
+#define NDEBUG
#include <assert.h>
#include <ctype.h>
@@ -88,6 +88,8 @@ char *plugin_get_string_value(os_string_value string, char *msg);
void plugin_create_sysvar(const char *mime_type, char *sysvar);
int plugin_process_opening(struct object_params *params,
struct plugin_message *message);
+void plugin_force_redraw(struct content *object, struct content *c,
+ unsigned int i);
/*-------------------------------------------------------------------------*/
/* Linked List pointers */
@@ -1162,18 +1164,23 @@ void plugin_closed(wimp_message *message) {
*/
void plugin_reshape_request(wimp_message *message) {
- struct plugin_message *npm;
struct plugin_list *npl;
plugin_message_reshape_request *pmrr = (plugin_message_reshape_request*)&message->data;
+ unsigned int i;
- /* add this message to linked list */
- npm = plugin_add_message_to_linked_list(pmrr->browser, pmrr->plugin, message, 0);
-
- /* TODO - need to find a way of forcing the browser to resize the
- * box containing this object. Then issue a Plugin_Reshape.
- */
npl = plugin_get_instance_from_list(pmrr->browser, pmrr->plugin);
- plugin_remove_message_from_linked_list(npm); /* lose this later */
+
+ for (i = 0; i != npl->page->data.html.object_count &&
+ npl->page->data.html.object[i].content != npl->c;
+ i++) ;
+
+ if (i != npl->page->data.html.object_count) {
+ npl->c->width = pmrr->size.x;
+ npl->c->height = pmrr->size.y;
+ plugin_force_redraw(npl->c, npl->page, i);
+ plugin_reshape_instance(npl->c, npl->bw, npl->page,
+ npl->box, npl->params, npl->state);
+ }
LOG(("requested (width, height): (%d, %d)", pmrr->size.x, pmrr->size.y));
}
@@ -1226,3 +1233,28 @@ char *plugin_get_string_value(os_string_value string, char *msg) {
}
return &msg[string.offset];
}
+
+void plugin_force_redraw(struct content *object, struct content *c,
+ unsigned int i) {
+
+ struct box *box = c->data.html.object[i].box;
+
+ LOG(("got object '%s'", object->url));
+ LOG(("w, h: %d %d", object->width, object->height));
+ box->object = object;
+
+ box->width = box->min_width = box->max_width = object->width;
+ box->height = object->height;
+
+ box->style->width.width = CSS_WIDTH_LENGTH;
+ box->style->width.value.length.unit = CSS_UNIT_PX;
+ box->style->width.value.length.value = object->width;
+
+ box->style->height.height = CSS_HEIGHT_LENGTH;
+ box->style->height.length.unit = CSS_UNIT_PX;
+ box->style->height.length.value = object->height;
+
+ LOG(("w, h: %d %d", box->width, box->height));
+ content_reformat(c, c->available_width, 0);
+ LOG(("w, h: %d %d", box->width, box->height));
+}