
Tengo un área de dibujo dentro de una ventana gráfica dentro de una ventana desplazada. La imagen se muestra bien cuando el Área de dibujo cabe dentro de la Ventana desplazada. Pero cuando solicito un tamaño mayor que la ventana desplazada, el área de dibujo no siempre se vuelve a dibujar cuando me desplazo hacia arriba o hacia abajo, y lo mismo sucede cuando se cambia el tamaño de la ventana principal. Lo que sucede es que obtengo un área del tamaño correcto dentro de la ventana desplazada, pero parece como si no hubiera un área de dibujo dentro, o como si no hubiera nada dibujado en el área de dibujo, que a veces parpadea con el dibujo correcto en forma aleatoria. posiciones de las barras de desplazamiento. He conectado una devolución de llamada a la señal de dibujo que imprime "render" cada vez que se llama, y otra devolución de llamada a la señal de cambio de valor de los ajustes de las barras de desplazamiento que imprimen "adj" en la pantalla cada vez que se desplazan. La salida del terminal es la siguiente
adj
adj
adj
adj
adj
1428919598 render
adj
adj
adj
Entonces, cada vez que veo adj, el lienzo se ve en blanco, mientras que se dibuja correctamente cuando veo <...> renderizar. Por lo tanto, al desplazarme rápidamente obtengo una imagen parpadeante. ¿Alguna idea de qué podría estar causando esto?
Respuesta1
Estaba transfiriendo un código de gtk2 a gtk3. El problema resultó estar en la nueva señal "draw" que ahora reemplaza a "expose-event". En la versión anterior tenía que crear el contexto en el controlador de señales, pero la nueva devolución de llamada lo tiene como uno de los argumentos, y es ese el que debería usarse.