From: vsr Date: Wed, 17 Apr 2013 09:26:00 +0000 (+0000) Subject: Fix problem that user material database is not watched by resource manager when file... X-Git-Tag: V7_2_0~6 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=8fab12198bd5054cf11c2753ebc2252d51bf977d;p=modules%2Fgeom.git Fix problem that user material database is not watched by resource manager when file is first time created. --- diff --git a/src/Material/Material_ResourceMgr.cxx b/src/Material/Material_ResourceMgr.cxx index 59ca3b65f..9b38b3cb2 100644 --- a/src/Material/Material_ResourceMgr.cxx +++ b/src/Material/Material_ResourceMgr.cxx @@ -22,6 +22,7 @@ #include "Material_ResourceMgr.h" +#include #include #include @@ -175,7 +176,10 @@ void Material_ResourceMgr::watchUserFile( bool on ) if ( on ) { if ( !myWatcher ) { myWatcher = new QFileSystemWatcher( this ); - myWatcher->addPath( userFileName( appName() ) ); + QFileInfo ufile = userFileName( appName() ); + if ( ufile.exists() ) { + myWatcher->addPath( ufile.filePath() ); + } connect( myWatcher, SIGNAL( fileChanged( QString ) ), this, SLOT( update() ) ); } } @@ -187,6 +191,25 @@ void Material_ResourceMgr::watchUserFile( bool on ) } } +/*! + \brief This function is called after user configuration file is saved. + \internal +*/ +void Material_ResourceMgr::saved() +{ + if ( resourceMgr() != this ) { + resourceMgr()->saved(); + } + else if ( myWatcher ) { + QStringList files = myWatcher->files(); + QFileInfo ufile = userFileName( appName() ); + if ( ufile.exists() && !files.contains( ufile.filePath() ) ) { + myWatcher->addPath( ufile.filePath() ); + update(); + } + } +} + /*! \brief Update user database slot \internal diff --git a/src/Material/Material_ResourceMgr.h b/src/Material/Material_ResourceMgr.h index 91e4abda4..6cdfc75d6 100644 --- a/src/Material/Material_ResourceMgr.h +++ b/src/Material/Material_ResourceMgr.h @@ -57,6 +57,7 @@ signals: private: void watchUserFile( bool ); + void saved(); private slots: void update();