]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/LayoutBox.cpp
Fix dangling inset pointers after buffer reload
[lyx.git] / src / frontends / qt4 / LayoutBox.cpp
index 783dc78a261750db006da0ab2038ed7835a55c5f..09dd878b38f34e210327befb773a2ecd60b4ed80 100644 (file)
@@ -103,9 +103,14 @@ public:
 //
 /////////////////////////////////////////////////////////////////////
 
-struct LayoutBox::Private
+class LayoutBox::Private
 {
+       /// noncopyable
+       Private(Private const &);
+       void operator=(Private const &);
+public:
        Private(LayoutBox * parent, GuiView & gv) : p(parent), owner_(gv),
+               inset_(0),
                // set the layout model with two columns
                // 1st: translated layout names
                // 2nd: raw layout names
@@ -522,7 +527,7 @@ bool LayoutBox::eventFilter(QObject * o, QEvent * e)
        
 void LayoutBox::setIconSize(QSize size)
 {
-#ifdef Q_WS_MACX
+#ifdef Q_OS_MAC
        bool small = size.height() < 20;
        setAttribute(Qt::WA_MacSmallSize, small);
        setAttribute(Qt::WA_MacNormalSize, !small);
@@ -633,6 +638,7 @@ void LayoutBox::updateContents(bool reset)
        if (!bv) {
                d->model_->clear();
                setEnabled(false);
+               setMinimumWidth(sizeHint().width());
                d->text_class_.reset();
                d->inset_ = 0;
                return;
@@ -672,13 +678,10 @@ void LayoutBox::updateContents(bool reset)
 
        set(d->owner_.currentBufferView()->cursor().innerParagraph().layout().name());
        d->countCategories();
-       
-       // needed to recalculate size hint
-       hide();
+
        setMinimumWidth(sizeHint().width());
        setEnabled(!bv->buffer().isReadonly() &&
                lyx::getStatus(FuncRequest(LFUN_LAYOUT)).enabled());
-       show();
 }