]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetbox.C
Fix bug 2884 and 3437:
[lyx.git] / src / insets / insetbox.C
index acc533e4b356b1f95b2455aaf585e2a262b86ed3..6e07db2cac7ef45c712d93b0eb10b0d2a07a0ffe 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "insetbox.h"
 
+#include "BufferView.h"
 #include "cursor.h"
 #include "dispatchresult.h"
 #include "debug.h"
@@ -25,6 +26,7 @@
 #include "lyxlex.h"
 #include "metricsinfo.h"
 #include "paragraph.h"
+#include "TextMetrics.h"
 
 #include "support/translator.h"
 
@@ -177,8 +179,13 @@ bool InsetBox::hasFixedWidth() const
 bool InsetBox::metrics(MetricsInfo & m, Dimension & dim) const
 {
        MetricsInfo mi = m;
+       // first round in order to know the minimum size.
+       InsetCollapsable::metrics(mi, dim);
+       TextMetrics & tm = mi.base.bv->textMetrics(&text_);
        if (hasFixedWidth())
-               mi.base.textwidth = params_.width.inPixels(m.base.textwidth);
+               mi.base.textwidth =
+                       std::max(tm.width() + 2 * border_ + (int) (2.5 * TEXT_TO_INSET_OFFSET),
+                                params_.width.inPixels(m.base.textwidth));
        InsetCollapsable::metrics(mi, dim);
        bool const changed = dim_ != dim;
        dim_ = dim;