aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom White <weiss@jade.(none)>2008-09-29 19:04:21 +0100
committerThomas White <taw27@cam.ac.uk>2008-10-02 17:56:45 +0100
commite65956563da586d740ec11f8504b357a6b517ead (patch)
treeb54dff77d5fd261c82125aaa947ca61d1e23bc6e
parentf6a8e7ef02e6f449c2c3aa6186bf10d81c127dd3 (diff)
Force glbits to redraw when switching tabs in the DisplayWindow
(works around tab switching issues)
-rw-r--r--src/displaywindow.c9
-rw-r--r--src/displaywindow.h1
-rw-r--r--src/glbits.c1
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);