From 18aefabd20a16dda9ed5363088f0da5ada0d4431 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Mon, 30 Jun 2014 16:40:56 +0100 Subject: change reformat to be driven from the scheduler like redraw --- gtk/window.c | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) (limited to 'gtk/window.c') diff --git a/gtk/window.c b/gtk/window.c index a3d6d4936..d1cd6b1a5 100644 --- a/gtk/window.c +++ b/gtk/window.c @@ -638,9 +638,7 @@ static gboolean nsgtk_window_size_allocate_event(GtkWidget *widget, { struct gui_window *g = data; - g->bw->reformat_pending = true; - browser_reformat_pending = true; - + browser_window_schedule_reformat(g->bw); return TRUE; } @@ -854,35 +852,24 @@ gui_window_create(struct browser_window *bw, void nsgtk_reflow_all_windows(void) { for (struct gui_window *g = window_list; g; g = g->next) { - nsgtk_tab_options_changed( - nsgtk_scaffolding_notebook(g->scaffold)); - g->bw->reformat_pending = true; + nsgtk_tab_options_changed(nsgtk_scaffolding_notebook(g->scaffold)); + browser_window_schedule_reformat(g->bw); } - - browser_reformat_pending = true; } /** - * Process pending reformats + * callback from core to reformat a window. */ - -void nsgtk_window_process_reformats(void) +static void nsgtk_window_reformat(struct gui_window *gw) { - struct gui_window *g; GtkAllocation alloc; - browser_reformat_pending = false; - for (g = window_list; g; g = g->next) { - if (!g->bw->reformat_pending) - continue; - - g->bw->reformat_pending = false; - - /* @todo consider gtk_widget_get_allocated_width() */ - nsgtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc); + if (gw != NULL) { + /** @todo consider gtk_widget_get_allocated_width() */ + nsgtk_widget_get_allocation(GTK_WIDGET(gw->layout), &alloc); - browser_window_reformat(g->bw, false, alloc.width, alloc.height); + browser_window_reformat(gw->bw, false, alloc.width, alloc.height); } } @@ -1242,6 +1229,7 @@ static struct gui_window_table window_table = { .set_scroll = gui_window_set_scroll, .get_dimensions = gui_window_get_dimensions, .update_extent = gui_window_update_extent, + .reformat = nsgtk_window_reformat, .set_icon = gui_window_set_icon, .set_status = gui_window_set_status, -- cgit v1.2.3