X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSUIT%2FSUIT_ViewWindow.cxx;h=d5d9032faeed6fff80f6bbf0b1d9f253a446034e;hb=efe3cdefadc31ad9cdaa9fd7fc368e2931cebdf1;hp=eed1244fd3f6e8c993e1f17478077d626ff95d11;hpb=53415443fa7c248984f053da559cc8765623088c;p=modules%2Fgui.git diff --git a/src/SUIT/SUIT_ViewWindow.cxx b/src/SUIT/SUIT_ViewWindow.cxx index eed1244fd..d5d9032fa 100755 --- a/src/SUIT/SUIT_ViewWindow.cxx +++ b/src/SUIT/SUIT_ViewWindow.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -32,6 +32,7 @@ #include "SUIT_Application.h" #include "SUIT_ViewManager.h" #include "SUIT_ResourceMgr.h" +#include "SUIT_FileDlg.h" #include "QtxActionToolMgr.h" #include "QtxMultiAction.h" @@ -183,21 +184,27 @@ bool SUIT_ViewWindow::event( QEvent* e ) if ( e->type() == DUMP_EVENT ) { bool bOk = false; - if ( myManager && myManager->study() && myManager->study()->application() ) + SUIT_Application* app = NULL; + if (myManager && myManager->study() && myManager->study()->application()) + app = myManager->study()->application(); + QString fileName; + if (app) + fileName = app->getFileName( false, QString(), filter(), tr( "TLT_DUMP_VIEW" ), 0 ); //old way + else { - // get file name - SUIT_Application* app = myManager->study()->application(); - QString fileName = app->getFileName( false, QString(), filter(), tr( "TLT_DUMP_VIEW" ), 0 ); - if ( !fileName.isEmpty() ) - { - QImage im = dumpView(); - QString fmt = SUIT_Tools::extension( fileName ).toUpper(); - Qtx::Localizer loc; - bOk = dumpViewToFormat( im, fileName, fmt ); - } - else - bOk = true; // cancelled + QStringList fls = filter().split( ";;", QString::SkipEmptyParts ); + fileName = SUIT_FileDlg::getFileName( NULL, QString(), fls, tr( "TLT_DUMP_VIEW" ), false, true ); + } + if ( !fileName.isEmpty() ) + { + QString fmt = SUIT_Tools::extension( fileName ).toUpper(); + QImage im = dumpView(); + Qtx::Localizer loc; + bOk = dumpViewToFormat( im, fileName, fmt ); } + else + bOk = true; // cancelled + if ( !bOk ) SUIT_MessageBox::critical( this, tr( "ERROR" ), tr( "ERR_CANT_DUMP_VIEW" ) ); @@ -542,3 +549,15 @@ void SUIT_ViewWindow::synchronizeView( SUIT_ViewWindow* viewWindow, int id ) } } } + +void SUIT_ViewWindow::setVisible( bool on ) +{ + // This is a workaround to avoid showing view window as a top-level window + // before re-parenting it to workstack (issue #23467). + // See SUIT_Desktop::childEvent(). + QApplication::sendPostedEvents( 0, QEvent::ChildRemoved ); + QApplication::sendPostedEvents( 0, QEvent::ChildAdded ); + QApplication::sendPostedEvents( 0, QEvent::ChildPolished ); + if ( !property( "blockShow" ).toBool() ) + QMainWindow::setVisible( on ); +}