summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2011-06-30 15:48:07 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2011-06-30 15:48:07 +0000
commiteddae6af0663243a2677674d501f9a87d55798f5 (patch)
tree08562171f870a6b592d624adfbfd0d6fa11fcdcb /gtk
parenta5dc6b9e6637c85d18510ac6446ee4a8a7955e7b (diff)
downloadnetsurf-eddae6af0663243a2677674d501f9a87d55798f5.tar.gz
netsurf-eddae6af0663243a2677674d501f9a87d55798f5.tar.bz2
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
Diffstat (limited to 'gtk')
-rw-r--r--gtk/scaffolding.c10
-rw-r--r--gtk/thumbnail.c10
-rw-r--r--gtk/treeview.c8
-rw-r--r--gtk/window.c7
4 files changed, 23 insertions, 12 deletions
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;