#include "Lexer.h"
#include "MetricsInfo.h"
#include "output_xhtml.h"
+#include "TexRow.h"
+#include "texstream.h"
#include "TextClass.h"
#include "support/debug.h"
bool InsetBox::hasFixedWidth() const
{
- return !params_.width.empty();
+ return !params_.width.empty() && params_.special == "none";
}
}
+LyXAlignment InsetBox::contentAlignment() const
+{
+ if (!params_.use_makebox)
+ return LYX_ALIGN_NONE;
+
+ // The default value below is actually irrelevant
+ LyXAlignment align = LYX_ALIGN_NONE;
+ switch (params_.hor_pos) {
+ case 'l':
+ align = LYX_ALIGN_LEFT;
+ break;
+ case 'c':
+ align = LYX_ALIGN_CENTER;
+ break;
+ case 'r':
+ align = LYX_ALIGN_RIGHT;
+ break;
+ case 's':
+ align = LYX_ALIGN_BLOCK;
+ break;
+ }
+ return align;
+}
+
+
void InsetBox::doDispatch(Cursor & cur, FuncRequest & cmd)
{
switch (cmd.action()) {
return;
}
cur.recordUndoInset(this);
- if (change_type)
+ if (change_type) {
params_.type = cmd.getArg(1);
- else // if (for_box)
+ // set a makebox if there is no inner box but Frameless was exectued
+ // otherwise the result would be a non existent box (no inner AND outer box)
+ // (this was LyX bug 8712)
+ if (params_.type == "Frameless" && !params_.inner_box) {
+ params_.use_makebox = true;
+ params_.inner_box = true;
+ }
+ // handle the opposite case
+ if (params_.type == "Boxed" && params_.use_makebox) {
+ params_.use_makebox = false;
+ params_.inner_box = false;
+ }
+ } else
string2params(to_utf8(cmd.argument()), params_);
setButtonLabel();
break;
} else
os << '[' << from_ascii(width_string)
<< ']';
+ // default horizontal alignment is 'c'
if (params_.hor_pos != 'c')
os << "[" << params_.hor_pos << "]";
} else {
os << "\\begin{shaded}%\n";
}
- // \framebox and \makebox handle hor_pos their own way
- // hor_pos is senseless for \mbox and \fbox
- if (!params_.use_makebox
- && !(btype == Boxed && !params_.inner_box)) {
- switch (params_.hor_pos) {
- case 'l':
- // do nothing because this is LaTeX's default
- break;
- case 'c':
- os << "\\centering ";
- break;
- case 'r':
- os << "\\raggedleft ";
- break;
- }
- }
-
InsetText::latex(os, runparams);
if (btype == Shaded)