]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
Move OS specific code to proper place. Also make sure that no other
[lyx.git] / src / BufferView.cpp
index b932332a3a8c32c828279b5926588ddd27a24ab0..ec1f15704095df8eaa45af178939744c56f5bdf8 100644 (file)
@@ -41,7 +41,6 @@
 #include "LyXRC.h"
 #include "MetricsInfo.h"
 #include "Paragraph.h"
-#include "paragraph_funcs.h"
 #include "ParagraphParameters.h"
 #include "ParIterator.h"
 #include "Session.h"
@@ -935,6 +934,7 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
        case LFUN_NOTES_MUTATE:
        case LFUN_ALL_INSETS_TOGGLE:
        case LFUN_STATISTICS:
+       case LFUN_BRANCH_ADD_INSERT:
                flag.setEnabled(true);
                break;
 
@@ -1018,10 +1018,12 @@ bool BufferView::getStatus(FuncRequest const & cmd, FuncStatus & flag)
                break;
 
        case LFUN_DIALOG_SHOW_NEW_INSET:
+               // FIXME: this is wrong, but I do not understand the
+               // intent (JMarc)
                if (cur.inset().lyxCode() == CAPTION_CODE)
                        return cur.inset().getStatus(cur, cmd, flag);
-               flag.setEnabled(cur.inset().lyxCode() != ERT_CODE &&
-                       cur.inset().lyxCode() != LISTINGS_CODE);
+               // FIXME we should consider passthru paragraphs too.
+               flag.setEnabled(!cur.inset().getLayout().isPassThru());
                break;
 
        default:
@@ -1411,8 +1413,7 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                        p = getPos(cur, cur.boundary());
                }*/
                int const scrolled = scroll(cmd.action == LFUN_SCREEN_UP
-                       ? - height_ : height_);
-               if (cmd.action == LFUN_SCREEN_UP && scrolled > - height_)
+                       ? -height_ : height_);
                if (cmd.action == LFUN_SCREEN_UP && scrolled > -height_)
                        p = Point(0, 0);
                if (cmd.action == LFUN_SCREEN_DOWN && scrolled < height_)
@@ -1422,7 +1423,8 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                cur.reset(buffer_.inset());
                updateMetrics();
                buffer_.changed();
-               d->text_metrics_[&buffer_.text()].editXY(cur, p.x_, p.y_);
+               d->text_metrics_[&buffer_.text()].editXY(cur, p.x_, p.y_,
+                       true, cmd.action == LFUN_SCREEN_UP); 
                //FIXME: what to do with cur.x_target()?
                bool update = in_texted && cur.bv().checkDepm(cur, old);
                cur.finishUndo();
@@ -1504,6 +1506,29 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                break;
        }
 
+       case LFUN_BRANCH_ADD_INSERT: {
+               docstring branch_name = from_utf8(cmd.getArg(0));
+               if (branch_name.empty())
+                       if (!Alert::askForText(branch_name, _("Branch name")) ||
+                                               branch_name.empty())
+                               break;
+
+               DispatchResult drtmp;
+               buffer_.dispatch(FuncRequest(LFUN_BRANCH_ADD, branch_name), drtmp);
+               if (drtmp.error()) {
+                       Alert::warning(_("Branch already exists"), drtmp.message());
+                       break;
+               }
+               BranchList & branch_list = buffer_.params().branchlist();
+               Branch const * branch = branch_list.find(branch_name);
+               string const x11hexname = X11hexname(branch->color());
+               docstring const str = branch_name + ' ' + from_ascii(x11hexname);
+               lyx::dispatch(FuncRequest(LFUN_SET_COLOR, str));
+               lyx::dispatch(FuncRequest(LFUN_BRANCH_INSERT, branch_name));
+               break;
+       }
+
+
        default:
                return false;
        }
@@ -1918,7 +1943,9 @@ bool BufferView::mouseSetCursor(Cursor & cur, bool select)
        bool update = leftinset;
        if (!do_selection && d->cursor_.inTexted())
                update |= checkDepm(cur, d->cursor_);
+       d->cursor_.macroModeClose();
 
+       d->cursor_.resetAnchor();
        d->cursor_.setCursor(cur);
        d->cursor_.boundary(cur.boundary());
        if (do_selection)
@@ -2419,9 +2446,9 @@ void BufferView::insertPlaintextFile(FileName const & f, bool asParagraph)
        cap::replaceSelection(cur);
        buffer_.undo().recordUndo(cur);
        if (asParagraph)
-               cur.innerText()->insertStringAsParagraphs(cur, tmpstr);
+               cur.innerText()->insertStringAsParagraphs(cur, tmpstr, cur.current_font);
        else
-               cur.innerText()->insertStringAsLines(cur, tmpstr);
+               cur.innerText()->insertStringAsLines(cur, tmpstr, cur.current_font);
 
        updateMetrics();
        buffer_.changed();