]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
Fix up a few little things after r29065. If we're calculating the autosave
[lyx.git] / src / BufferView.cpp
index c79a51deca6b1651e4a88936637f4ffa452f3710..c75b115fadc9891fb17f33d9d021fdec965c737c 100644 (file)
@@ -1059,11 +1059,10 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd)
 
        case LFUN_BRANCH_ACTIVATE: 
        case LFUN_BRANCH_DEACTIVATE: {
-               bool enable = false;
+               BranchList const & branchList = buffer_.params().branchlist();
                docstring const branchName = cmd.argument();
-               if (!branchName.empty())
-                       enable = buffer_.params().branchlist().find(branchName);
-               flag.setEnabled(enable);
+               flag.setEnabled(!branchName.empty()
+                               && branchList.find(branchName));
                break;
        }
 
@@ -1502,6 +1501,8 @@ bool BufferView::dispatch(FuncRequest const & cmd)
 
        case LFUN_BRANCH_ACTIVATE:
        case LFUN_BRANCH_DEACTIVATE:
+               if (cmd.argument().empty())
+                       return false;
                buffer_.dispatch(cmd);
                processUpdateFlags(Update::Force);
                break;
@@ -2277,6 +2278,29 @@ bool BufferView::paragraphVisible(DocIterator const & dit) const
 }
 
 
+void BufferView::cursorPosAndHeight(Point & p, int & h) const
+{
+       Cursor const & cur = cursor();
+       Font const font = cur.getFont();
+       frontend::FontMetrics const & fm = theFontMetrics(font);
+       int const asc = fm.maxAscent();
+       int const des = fm.maxDescent();
+       h = asc + des;
+       p = getPos(cur, cur.boundary());
+       p.y_ -= asc;
+}
+
+
+bool BufferView::cursorInView(Point const & p, int h) const
+{
+       Cursor const & cur = cursor();
+       // does the cursor touch the screen ?
+       if (p.y_ + h < 0 || p.y_ >= workHeight() || !paragraphVisible(cur))
+               return false;
+       return true;
+}
+
+
 void BufferView::draw(frontend::Painter & pain)
 {
        if (height_ == 0 || width_ == 0)