From e65956563da586d740ec11f8504b357a6b517ead Mon Sep 17 00:00:00 2001 From: Tom White Date: Mon, 29 Sep 2008 19:04:21 +0100 Subject: Force glbits to redraw when switching tabs in the DisplayWindow (works around tab switching issues) --- src/displaywindow.c | 9 +++++++++ src/displaywindow.h | 1 + src/glbits.c | 1 + 3 files changed, 11 insertions(+) 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); -- cgit v1.2.3