From: Juergen Spitzmueller Date: Sat, 29 Dec 2012 09:31:41 +0000 (+0100) Subject: Disable CAPTION_INSERT in tables except for longtable caption cells (bug #5777) X-Git-Tag: 2.1.0beta1~1027 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=3f0bf02cc79cda84bb09272c681d5974458ea9ed;p=features.git Disable CAPTION_INSERT in tables except for longtable caption cells (bug #5777) --- diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index f8d868608a..a2aa334b85 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -32,6 +32,7 @@ #include "DispatchResult.h" #include "FuncRequest.h" #include "FuncStatus.h" +#include "InsetList.h" #include "Language.h" #include "LaTeXFeatures.h" #include "Lexer.h" @@ -4698,6 +4699,31 @@ bool InsetTabular::getStatus(Cursor & cur, FuncRequest const & cmd, return true; } + case LFUN_CAPTION_INSERT: { + // caption is only allowed in caption cell of longtable + if (!tabular.ltCaption(tabular.cellRow(cur.idx()))) { + status.setEnabled(false); + return true; + } + // check if there is already a caption + bool have_caption = false; + InsetTableCell itc = InsetTableCell(*tabular.cellInset(cur.idx()).get()); + ParagraphList::const_iterator pit = itc.paragraphs().begin(); + ParagraphList::const_iterator pend = itc.paragraphs().end(); + for (; pit != pend; ++pit) { + InsetList::const_iterator it = pit->insetList().begin(); + InsetList::const_iterator end = pit->insetList().end(); + for (; it != end; ++it) { + if (it->inset->lyxCode() == CAPTION_CODE) { + have_caption = true; + break; + } + } + } + status.setEnabled(!have_caption); + return true; + } + // These are only enabled inside tabular case LFUN_CELL_BACKWARD: case LFUN_CELL_FORWARD: