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/gui.c | 5 ----- gtk/window.c | 32 ++++++++++---------------------- gtk/window.h | 1 - 3 files changed, 10 insertions(+), 28 deletions(-) (limited to 'gtk') diff --git a/gtk/gui.c b/gtk/gui.c index 9cd89e627..bb83721fe 100644 --- a/gtk/gui.c +++ b/gtk/gui.c @@ -518,11 +518,6 @@ static void nsgtk_poll(bool active) schedule_run(); - if (browser_reformat_pending) { - nsgtk_window_process_reformats(); - block = false; - } - gtk_main_iteration_do(block); for (unsigned int i = 0; i != fd_count; i++) { 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, diff --git a/gtk/window.h b/gtk/window.h index e4a4fda6a..01345b993 100644 --- a/gtk/window.h +++ b/gtk/window.h @@ -36,7 +36,6 @@ struct browser_window *nsgtk_get_browser_window(struct gui_window *g); nsgtk_scaffolding *nsgtk_get_scaffold(struct gui_window *g); GdkPixbuf *nsgtk_get_icon(struct gui_window *gw); void nsgtk_reflow_all_windows(void); -void nsgtk_window_process_reformats(void); float nsgtk_get_scale_for_gui(struct gui_window *g); int nsgtk_gui_window_update_targets(struct gui_window *g); void nsgtk_window_destroy_browser(struct gui_window *g); -- cgit v1.2.3