summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2014-06-30 16:40:56 +0100
committerVincent Sanders <vince@kyllikki.org>2014-07-01 09:27:20 +0100
commit18aefabd20a16dda9ed5363088f0da5ada0d4431 (patch)
tree9447e1e0edb1d93b8ad575472e67bf7f844c5ca3 /gtk
parent06eb81235d975bc7721719d25ac114b4ab2c94da (diff)
downloadnetsurf-18aefabd20a16dda9ed5363088f0da5ada0d4431.tar.gz
netsurf-18aefabd20a16dda9ed5363088f0da5ada0d4431.tar.bz2
change reformat to be driven from the scheduler like redraw
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gui.c5
-rw-r--r--gtk/window.c32
-rw-r--r--gtk/window.h1
3 files changed, 10 insertions, 28 deletions
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);