+void InsetCollapsable::insetKeyPress(XKeyEvent * xke)
+{
+ inset.insetKeyPress(xke);
+}
+
+
+int InsetCollapsable::latex(Buffer const * buf, ostream & os,
+ bool fragile, bool free_spc) const
+{
+ return inset.latex(buf, os, fragile, free_spc);
+}
+
+
+int InsetCollapsable::getMaxWidth(BufferView * bv,
+ UpdatableInset const * in) const
+{
+#if 0
+ int const w = UpdatableInset::getMaxWidth(bv, in);
+
+ if (w < 0) {
+ // What does a negative max width signify? (Lgb)
+ // Use the max width of the draw-area (Jug)
+ return w;
+ }
+ // should be at least 30 pixels !!!
+ return max(30, w - width_collapsed());
+#else
+ return UpdatableInset::getMaxWidth(bv, in);
+#endif
+}
+
+
+void InsetCollapsable::update(BufferView * bv, LyXFont const & font,
+ bool reinit)
+{
+ if (in_update) {
+ if (reinit && owner()) {
+ owner()->update(bv, font, true);
+ }
+ return;
+ }
+ in_update = true;
+ inset.update(bv, font, reinit);
+ if (reinit && owner()) {
+ owner()->update(bv, font, true);
+ }
+ in_update = false;
+}
+
+
+UpdatableInset::RESULT
+InsetCollapsable::localDispatch(BufferView * bv, kb_action action,
+ string const & arg)
+{
+ UpdatableInset::RESULT result = inset.localDispatch(bv, action, arg);
+ if (result == FINISHED)
+ bv->unlockInset(this);
+ first_after_edit = false;
+ return result;
+}
+
+
+bool InsetCollapsable::lockInsetInInset(BufferView * bv, UpdatableInset * in)
+{
+ if (&inset == in)
+ return true;
+ return inset.lockInsetInInset(bv, in);
+}
+
+
+bool InsetCollapsable::unlockInsetInInset(BufferView * bv, UpdatableInset * in,
+ bool lr)
+{
+ if (&inset == in) {
+ bv->unlockInset(this);
+ return true;
+ }
+ return inset.unlockInsetInInset(bv, in, lr);
+}
+
+
+bool InsetCollapsable::updateInsetInInset(BufferView * bv, Inset *in)
+{
+ if (&inset == in)
+ return true;
+ return inset.updateInsetInInset(bv, in);
+}
+
+
+unsigned int InsetCollapsable::insetInInsetY()
+{
+ return inset.insetInInsetY() - (top_baseline - inset.y());
+}
+
+
+void InsetCollapsable::validate(LaTeXFeatures & features) const
+{
+ inset.validate(features);
+}
+
+
+void InsetCollapsable::getCursorPos(BufferView * bv, int & x, int & y) const
+{
+ inset.getCursorPos(bv, x , y);
+}
+
+
+void InsetCollapsable::toggleInsetCursor(BufferView * bv)
+{
+ inset.toggleInsetCursor(bv);
+}
+
+
+void InsetCollapsable::showInsetCursor(BufferView * bv, bool show)
+{
+ inset.showInsetCursor(bv, show);
+}
+
+
+void InsetCollapsable::hideInsetCursor(BufferView * bv)
+{
+ inset.hideInsetCursor(bv);
+}
+
+
+UpdatableInset * InsetCollapsable::getLockingInset() const
+{
+ UpdatableInset * in = inset.getLockingInset();
+ if (const_cast<InsetText *>(&inset) == in)
+ return const_cast<InsetCollapsable *>(this);
+ return in;
+}
+
+
+UpdatableInset * InsetCollapsable::getFirstLockingInsetOfType(Inset::Code c)
+{
+ if (c == lyxCode())
+ return this;
+ return inset.getFirstLockingInsetOfType(c);
+}
+
+
+void InsetCollapsable::setFont(BufferView * bv, LyXFont const & font,
+ bool toggleall, bool selectall)
+{
+ inset.setFont(bv, font, toggleall, selectall);
+}
+
+
+bool InsetCollapsable::doClearArea() const
+{
+ return inset.doClearArea();
+}
+
+
+LyXText * InsetCollapsable::getLyXText(BufferView const * bv,
+ bool const recursive) const
+{
+ return inset.getLyXText(bv, recursive);
+}
+
+
+void InsetCollapsable::deleteLyXText(BufferView * bv, bool recursive) const