Attached is a patch to fix bug http://www.lyx.org/trac/ticket/8712.
The problem was that if there is no inner box and one executes to remove the outer box (frame) the result is an empty box (no inner AND no outer box). But in this case a makebox must be used. This is already handled in the box dialog. The bug is that it is not yet handled if the box changing commands are executed via the context menu.
regards Uwe
diff --git "a/C:\\Users\\Usti\\AppData\\Local\\Temp\\TortoiseGit\\InsDE52.tmp\\InsetBox-78ce4ed-left.cpp" "b/D:\\LyXGit\\Master\\src\\insets\\InsetBox.cpp" index fd926f4..0be6fb7 100644 --- "a/C:\\Users\\Usti\\AppData\\Local\\Temp\\TortoiseGit\\InsDE52.tmp\\InsetBox-78ce4ed-left.cpp" +++ "b/D:\\LyXGit\\Master\\src\\insets\\InsetBox.cpp" @@ -264,9 +264,21 @@ void InsetBox::doDispatch(Cursor & cur, FuncRequest & cmd) 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 // if (for_box) string2params(to_utf8(cmd.argument()), params_); setButtonLabel(); break;