Graphic patch - new UGLWidget creates only on first show or when visible
This commit is contained in:
@@ -216,6 +216,21 @@ void Graphic::resizeEvent(QResizeEvent *) {
|
||||
}
|
||||
|
||||
|
||||
void Graphic::showEvent(QShowEvent *) {
|
||||
if (need_createGL && !canvas_gl) {
|
||||
//qDebug() << "create GL on show";
|
||||
canvas_gl = new UGLWidget();
|
||||
ui->layoutCanvas->addWidget(canvas_gl);
|
||||
connect(canvas_gl, SIGNAL(paintSignal()), this, SLOT(canvasPaintEvent()));
|
||||
prepareCanvas(canvas_gl);
|
||||
ui->canvas_raster->hide();
|
||||
canvas_gl->show();
|
||||
canvas = canvas_gl;
|
||||
}
|
||||
need_createGL = false;
|
||||
}
|
||||
|
||||
|
||||
void Graphic::timerEvent(QTimerEvent * ) {
|
||||
pause_phase += 0.02;
|
||||
if (pause_phase > 1.)
|
||||
@@ -930,16 +945,24 @@ void Graphic::exportGraphics(QString filename) {
|
||||
void Graphic::setOpenGL(bool on) {
|
||||
#ifdef HAS_GL
|
||||
isOGL = on;
|
||||
need_createGL = false;
|
||||
if (on && !m_fakeGL) {
|
||||
if (!canvas_gl) {
|
||||
canvas_gl = new UGLWidget();
|
||||
ui->layoutCanvas->addWidget(canvas_gl);
|
||||
connect(canvas_gl, SIGNAL(paintSignal()), this, SLOT(canvasPaintEvent()));
|
||||
prepareCanvas(canvas_gl);
|
||||
if (!isVisible())
|
||||
need_createGL = true;
|
||||
else {
|
||||
//qDebug() << "create GL on setter";
|
||||
canvas_gl = new UGLWidget();
|
||||
ui->layoutCanvas->addWidget(canvas_gl);
|
||||
connect(canvas_gl, SIGNAL(paintSignal()), this, SLOT(canvasPaintEvent()));
|
||||
prepareCanvas(canvas_gl);
|
||||
}
|
||||
}
|
||||
if (canvas_gl) {
|
||||
ui->canvas_raster->hide();
|
||||
canvas_gl->show();
|
||||
canvas = canvas_gl;
|
||||
}
|
||||
ui->canvas_raster->hide();
|
||||
canvas_gl->show();
|
||||
canvas = canvas_gl;
|
||||
} else {
|
||||
if (canvas_gl)
|
||||
canvas_gl->hide();
|
||||
|
||||
Reference in New Issue
Block a user