From eddae6af0663243a2677674d501f9a87d55798f5 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Thu, 30 Jun 2011 15:48:07 +0000 Subject: Remove plotter table global. Pass a redraw context around redraw functions. Knockout could be handled better. Note: untested on most front ends. svn path=/trunk/netsurf/; revision=12543 --- gtk/scaffolding.c | 10 +++++++--- gtk/thumbnail.c | 10 ++++++---- gtk/treeview.c | 8 +++++--- gtk/window.c | 7 +++++-- 4 files changed, 23 insertions(+), 12 deletions(-) (limited to 'gtk') diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index 5a149ffab..269aa27ac 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -1507,21 +1507,25 @@ static gboolean nsgtk_history_expose_event(GtkWidget *widget, struct browser_window *bw = gui_window_get_browser_window(hw->g->top_level); + struct redraw_context ctx = { + .interactive = true, + .plot = &nsgtk_plotters + }; + current_widget = widget; current_drawable = widget->window; current_gc = gdk_gc_new(current_drawable); #ifdef CAIRO_VERSION current_cr = gdk_cairo_create(current_drawable); #endif - plot = nsgtk_plotters; clip.x0 = event->area.x; clip.y0 = event->area.y; clip.x1 = event->area.x + event->area.width; clip.y1 = event->area.y + event->area.height; - plot.clip(&clip); + ctx.plot->clip(&clip); - history_redraw(bw->history); + history_redraw(bw->history, &ctx); current_widget = NULL; g_object_unref(current_gc); diff --git a/gtk/thumbnail.c b/gtk/thumbnail.c index 3561ea05b..c70c06546 100644 --- a/gtk/thumbnail.c +++ b/gtk/thumbnail.c @@ -61,6 +61,11 @@ bool thumbnail_create(hlcache_handle *content, struct bitmap *bitmap, GdkPixbuf *big; double scale; + struct redraw_context ctx = { + .interactive = false, + .plot = &nsgtk_plotters + }; + assert(content); assert(bitmap); @@ -95,9 +100,6 @@ bool thumbnail_create(hlcache_handle *content, struct bitmap *bitmap, gdk_drawable_set_colormap(pixmap, gdk_colormap_get_system()); - /* set the plotting functions up */ - plot = nsgtk_plotters; - /* set to plot to pixmap */ current_drawable = pixmap; current_gc = gdk_gc_new(current_drawable); @@ -106,7 +108,7 @@ bool thumbnail_create(hlcache_handle *content, struct bitmap *bitmap, #endif /* render the content */ - thumbnail_redraw(content, cwidth, cheight); + thumbnail_redraw(content, cwidth, cheight, &ctx); /* get the pixbuf we rendered the content into */ big = gdk_pixbuf_get_from_drawable(NULL, pixmap, NULL, 0, 0, 0, 0, diff --git a/gtk/treeview.c b/gtk/treeview.c index a56a28dfd..a6fc4010b 100644 --- a/gtk/treeview.c +++ b/gtk/treeview.c @@ -168,6 +168,10 @@ gboolean nsgtk_tree_window_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer g) { struct tree *tree = (struct tree *) g; + struct redraw_context ctx = { + .interactive = true, + .plot = &nsgtk_plotters + }; int x, y, width, height; x = event->area.x; @@ -181,17 +185,15 @@ gboolean nsgtk_tree_window_expose_event(GtkWidget *widget, #ifdef CAIRO_VERSION current_cr = gdk_cairo_create(current_drawable); #endif - plot = nsgtk_plotters; current_widget = widget; current_drawable = widget->window; current_gc = gdk_gc_new(current_drawable); #ifdef CAIRO_VERSION current_cr = gdk_cairo_create(current_drawable); #endif - plot = nsgtk_plotters; tree_set_redraw(tree, true); - tree_draw(tree, 0, 0, x, y, width, height); + tree_draw(tree, 0, 0, x, y, width, height, &ctx); current_widget = NULL; g_object_unref(current_gc); diff --git a/gtk/window.c b/gtk/window.c index 47e2a8dee..dade0e5bf 100644 --- a/gtk/window.c +++ b/gtk/window.c @@ -158,6 +158,10 @@ static gboolean nsgtk_window_expose_event(GtkWidget *widget, struct gui_window *g = data; struct gui_window *z; struct rect clip; + struct redraw_context ctx = { + .interactive = true, + .plot = &nsgtk_plotters + }; assert(g); assert(g->bw); @@ -175,7 +179,6 @@ static gboolean nsgtk_window_expose_event(GtkWidget *widget, current_cr = gdk_cairo_create(current_drawable); #endif - plot = nsgtk_plotters; current_redraw_browser = g->bw; clip.x0 = event->area.x; @@ -183,7 +186,7 @@ static gboolean nsgtk_window_expose_event(GtkWidget *widget, clip.x1 = event->area.x + event->area.width; clip.y1 = event->area.y + event->area.height; - browser_window_redraw(g->bw, 0, 0, &clip); + browser_window_redraw(g->bw, 0, 0, &clip, &ctx); current_redraw_browser = NULL; -- cgit v1.2.3