]> git.lyx.org Git - features.git/commitdiff
Disable CAPTION_INSERT in tables except for longtable caption cells (bug #5777)
authorJuergen Spitzmueller <spitz@lyx.org>
Sat, 29 Dec 2012 09:31:41 +0000 (10:31 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Sat, 29 Dec 2012 09:31:41 +0000 (10:31 +0100)
src/insets/InsetTabular.cpp

index f8d868608a94d29638e54d3fea67323050abef3f..a2aa334b8504520a015ef6c1878dece8e2f46626 100644 (file)
@@ -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: