diff options
author | Tom White <weiss@jade.(none)> | 2008-09-29 19:04:21 +0100 |
---|---|---|
committer | Thomas White <taw27@cam.ac.uk> | 2008-10-02 17:56:45 +0100 |
commit | e65956563da586d740ec11f8504b357a6b517ead (patch) | |
tree | b54dff77d5fd261c82125aaa947ca61d1e23bc6e /src | |
parent | f6a8e7ef02e6f449c2c3aa6186bf10d81c127dd3 (diff) |
Force glbits to redraw when switching tabs in the DisplayWindow
(works around tab switching issues)
Diffstat (limited to 'src')
-rw-r--r-- | src/displaywindow.c | 9 | ||||
-rw-r--r-- | src/displaywindow.h | 1 | ||||
-rw-r--r-- | src/glbits.c | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/displaywindow.c b/src/displaywindow.c index 0049747..58a5ed2 100644 --- a/src/displaywindow.c +++ b/src/displaywindow.c @@ -552,6 +552,12 @@ void displaywindow_update_imagestack(DisplayWindow *dw) { } +static void displaywindow_switch_page(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, DisplayWindow *dw) { + if ( dw->realised && (page_num == 0) ) { + glbits_expose(dw->drawing_area, NULL, dw); + } +} + DisplayWindow *displaywindow_open(ControlContext *ctx) { const char *filename; @@ -586,6 +592,7 @@ DisplayWindow *displaywindow_open(ControlContext *ctx) { dw->lines = FALSE; dw->background = TRUE; dw->cur_image = 0; + dw->realised = 0; dw->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(dw->window), title); @@ -636,6 +643,8 @@ DisplayWindow *displaywindow_open(ControlContext *ctx) { gtk_label_new("Image Stack")); } + g_signal_connect(GTK_OBJECT(notebook), "switch-page", G_CALLBACK(displaywindow_switch_page), dw); + displaywindow_enable_cell_functions(dw, FALSE); displaywindow_update_dirax(ctx, dw); d = gtk_ui_manager_get_widget(dw->ui, "/ui/displaywindow/file/savehkl"); diff --git a/src/displaywindow.h b/src/displaywindow.h index d0173f4..be93570 100644 --- a/src/displaywindow.h +++ b/src/displaywindow.h @@ -68,6 +68,7 @@ typedef struct dw_struct { GLuint gl_vshader_lightpp; GLuint gl_fshader_lightpp; GLuint gl_program_lightpp; + int realised; /* Display parameters */ DisplayWindowView view; diff --git a/src/glbits.c b/src/glbits.c index d32fc0c..3641579 100644 --- a/src/glbits.c +++ b/src/glbits.c @@ -934,6 +934,7 @@ gint glbits_realise(GtkWidget *widget, DisplayWindow *dw) { glbits_set_ortho(dw, w, h); glbits_first_prepare(dw); + dw->realised = 1; gdk_gl_drawable_gl_end(gldrawable); |