Unless QFileDialog does some magic in addToolButton() we have a memory leak here. Can some Qt expert please tell whether this patch is OK?
Georg
Index: src/frontends/qt3/FileDialog_private.h =================================================================== --- src/frontends/qt3/FileDialog_private.h (Revision 13893) +++ src/frontends/qt3/FileDialog_private.h (Arbeitskopie) @@ -14,6 +14,9 @@ #include "frontends/FileDialog.h" + +#include <boost/noncopyable.hpp> + #include <qfiledialog.h> namespace lyx { @@ -27,7 +30,7 @@ class FileFilterList; class QToolButton; -class LyXFileDialog : public QFileDialog +class LyXFileDialog : public QFileDialog, boost::noncopyable { Q_OBJECT public: @@ -36,6 +39,7 @@ public: std::string const & title, FileDialog::Button const & b1, FileDialog::Button const & b2); + ~LyXFileDialog(); public slots: void buttonClicked(); private: Index: src/frontends/qt3/FileDialog_private.C =================================================================== --- src/frontends/qt3/FileDialog_private.C (Revision 13893) +++ src/frontends/qt3/FileDialog_private.C (Arbeitskopie) @@ -71,6 +71,15 @@ LyXFileDialog::LyXFileDialog(string cons } +LyXFileDialog::~LyXFileDialog() +{ + if (b1_) + delete b1_; + if (b2_) + delete b2_; +} + + void LyXFileDialog::buttonClicked() { if (sender() == b1_) Index: src/frontends/qt4/FileDialog_private.h =================================================================== --- src/frontends/qt4/FileDialog_private.h (Revision 13893) +++ src/frontends/qt4/FileDialog_private.h (Arbeitskopie) @@ -14,6 +14,9 @@ #include "frontends/FileDialog.h" + +#include <boost/noncopyable.hpp> + #include <QFileDialog> namespace lyx { @@ -27,7 +30,7 @@ class FileFilterList; class QToolButton; -class LyXFileDialog : public QFileDialog +class LyXFileDialog : public QFileDialog, boost::noncopyable { Q_OBJECT public: @@ -36,6 +39,7 @@ public: lyx::support::FileFilterList const & filters, FileDialog::Button const & b1, FileDialog::Button const & b2); + ~LyXFileDialog(); public slots: void buttonClicked(); private: Index: src/frontends/qt4/FileDialog_private.C =================================================================== --- src/frontends/qt4/FileDialog_private.C (Revision 13893) +++ src/frontends/qt4/FileDialog_private.C (Arbeitskopie) @@ -74,6 +74,15 @@ LyXFileDialog::LyXFileDialog(string cons } +LyXFileDialog::~LyXFileDialog() +{ + if (b1_) + delete b1_; + if (b2_) + delete b2_; +} + + void LyXFileDialog::buttonClicked() { if (sender() == b1_)