]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
Forgot these bits.
[lyx.git] / src / Text3.cpp
index 38e435ca7e0464ca95038ca1f986dc525e0f9ac2..dd701bbedab89263af7fe3718dd4c32d1819cf41 100644 (file)
@@ -329,9 +329,8 @@ static void outline(OutlineOp mode, Cursor & cur)
        // Seek the one (on same level) below
        for (; finish != end; ++finish) {
                toclevel = finish->layout().toclevel;
-               if (toclevel != Layout::NOT_IN_TOC && toclevel <= thistoclevel) {
+               if (toclevel != Layout::NOT_IN_TOC && toclevel <= thistoclevel)
                        break;
-               }
        }
 
        switch (mode) {
@@ -373,9 +372,8 @@ static void outline(OutlineOp mode, Cursor & cur)
                        for (; dest != end; ++dest) {
                                toclevel = dest->layout().toclevel;
                                if (toclevel != Layout::NOT_IN_TOC
-                                   && toclevel <= thistoclevel) {
+                                     && toclevel <= thistoclevel)
                                        break;
-                               }
                        }
                        // One such was found:
                        pit_type newpit = distance(bgn, dest);
@@ -709,6 +707,41 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                needsUpdate |= tm.cursorEnd(cur);
                break;
 
+       case LFUN_SECTION_SELECT: {
+               Buffer const & buf = *cur.buffer();
+               pit_type const pit = cur.pit();
+               ParagraphList & pars = buf.text().paragraphs();
+               ParagraphList::iterator bgn = pars.begin();
+               // The first paragraph of the area to be selected:
+               ParagraphList::iterator start = boost::next(bgn, pit);
+               // The final paragraph of area to be selected:
+               ParagraphList::iterator finish = start;
+               ParagraphList::iterator end = pars.end();
+
+               int const thistoclevel = start->layout().toclevel;
+               if (thistoclevel == Layout::NOT_IN_TOC)
+                       break;
+
+               cur.pos() = 0;
+               Cursor const old_cur = cur;
+               needsUpdate |= cur.selHandle(true);
+
+               // Move out (down) from this section header
+               if (finish != end)
+                       ++finish;
+
+               // Seek the one (on same level) below
+               for (; finish != end; ++finish, ++cur.pit()) {
+                       int const toclevel = finish->layout().toclevel;
+                       if (toclevel != Layout::NOT_IN_TOC && toclevel <= thistoclevel)
+                               break;
+               }
+               cur.pos() = cur.lastpos();
+               
+               needsUpdate |= cur != old_cur;
+               break;
+       }
+
        case LFUN_WORD_RIGHT:
        case LFUN_WORD_RIGHT_SELECT:
                if (lyxrc.visual_cursor) {
@@ -1046,6 +1079,11 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                                type = Clipboard::JpegGraphicsType;
                        else if (arg == "linkback")
                                type = Clipboard::LinkBackGraphicsType;
+                       else if (arg == "emf")
+                               type = Clipboard::EmfGraphicsType;
+                       else if (arg == "wmf")
+                               type = Clipboard::WmfGraphicsType;
+
                        else
                                LASSERT(false, /**/);
 
@@ -1684,6 +1722,27 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                break;
        }
 
+       case LFUN_FONT_STRIKEOUT: {
+               Font font(ignore_font, ignore_language);
+               font.fontInfo().setStrikeout(FONT_TOGGLE);
+               toggleAndShow(cur, this, font);
+               break;
+       }
+
+       case LFUN_FONT_UULINE: {
+               Font font(ignore_font, ignore_language);
+               font.fontInfo().setUuline(FONT_TOGGLE);
+               toggleAndShow(cur, this, font);
+               break;
+       }
+
+       case LFUN_FONT_UWAVE: {
+               Font font(ignore_font, ignore_language);
+               font.fontInfo().setUwave(FONT_TOGGLE);
+               toggleAndShow(cur, this, font);
+               break;
+       }
+
        case LFUN_FONT_UNDERLINE: {
                Font font(ignore_font, ignore_language);
                font.fontInfo().setUnderbar(FONT_TOGGLE);
@@ -2220,11 +2279,14 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
                }
 
                // explicit graphics type?
-               if ((arg == "pdf" && theClipboard().hasGraphicsContents(Clipboard::PdfGraphicsType))
-                   || (arg == "png" && theClipboard().hasGraphicsContents(Clipboard::PngGraphicsType))
-                   || (arg == "jpeg" && theClipboard().hasGraphicsContents(Clipboard::JpegGraphicsType))
-                   || (arg == "linkback" && theClipboard().hasGraphicsContents(Clipboard::LinkBackGraphicsType))) {
-                       enable = true;
+               Clipboard::GraphicsType type = Clipboard::AnyGraphicsType;
+               if ((arg == "pdf" && (type = Clipboard::PdfGraphicsType))
+                         || (arg == "png" && (type = Clipboard::PngGraphicsType))
+                         || (arg == "jpeg" && (type = Clipboard::JpegGraphicsType))
+                         || (arg == "linkback" &&  (type = Clipboard::LinkBackGraphicsType))
+                         || (arg == "emf" &&  (type = Clipboard::EmfGraphicsType))
+                         || (arg == "wmf" &&  (type = Clipboard::WmfGraphicsType))) {
+                       enable = theClipboard().hasGraphicsContents(type);
                        break;
                }
 
@@ -2355,6 +2417,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_WORD_RIGHT_SELECT:
        case LFUN_WORD_LEFT_SELECT:
        case LFUN_WORD_SELECT:
+       case LFUN_SECTION_SELECT:
        case LFUN_PARAGRAPH_UP:
        case LFUN_PARAGRAPH_DOWN:
        case LFUN_LINE_BEGIN:
@@ -2381,6 +2444,9 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
        case LFUN_MATH_SUPERSCRIPT:
        case LFUN_FONT_DEFAULT:
        case LFUN_FONT_UNDERLINE:
+       case LFUN_FONT_STRIKEOUT:
+       case LFUN_FONT_UULINE:
+       case LFUN_FONT_UWAVE:
        case LFUN_FONT_SIZE:
        case LFUN_LANGUAGE:
        case LFUN_TEXTSTYLE_APPLY: