+2005-05-07 André Pönitz <poenitz@gmx.net>
+
+ * cursor.[Ch] (leaveInset): new function
+
2005-05-06 Jürgen Spitzmüller <j.spitzmueller@gmx.de>
* lyxfunc.C (dispatch): set update flag for LFUN_INSET_APPLY.
bool LCursor::isInside(InsetBase const * p)
{
- for (unsigned i = 0; i < depth(); ++i)
+ for (size_t i = 0; i < depth(); ++i)
if (&operator[](i).inset() == p)
return true;
return false;
}
+void LCursor::leaveInset(InsetBase const & inset)
+{
+ for (size_t i = 0; i != depth(); ++i) {
+ if (&operator[](i).inset() == &inset) {
+ resize(i);
+ return;
+ }
+ }
+}
+
+
bool LCursor::openable(MathAtom const & t) const
{
if (!t->isActive())
lyxerr << "correcting cursor to level " << depth() << endl;
}
}
+
bool popLeft();
/// pop one slice off the cursor stack and go right
bool popRight();
+ /// make sure cursor is outside given inset
+ void leaveInset(InsetBase const & inset);
/// sets cursor part
void setCursor(DocIterator const & it);
}
+LyXFunc & LyXView::getLyXFunc()
+{
+ BOOST_ASSERT(lyxfunc_.get());
+ return *lyxfunc_.get();
+}
+
+
+LyXFunc const & LyXView::getLyXFunc() const
+{
+ BOOST_ASSERT(lyxfunc_.get());
+ return *lyxfunc_.get();
+}
+
+
Buffer const * const LyXView::updateInset(InsetBase const * inset) const
{
Buffer const * buffer_ptr = 0;
Buffer * buffer() const;
/// return the LyX function handler for this view
- LyXFunc & getLyXFunc() { return *lyxfunc_.get(); }
+ LyXFunc & getLyXFunc();
///
- LyXFunc const & getLyXFunc() const { return *lyxfunc_.get(); }
+ LyXFunc const & getLyXFunc() const;
/// return the toolbar for this view
Toolbars & getToolbars() { return *toolbars_.get(); }
+
+2005-05-07 André Pönitz <poenitz@gmx.net>
+
+ * insetert.C (doDispatch): move cursor out of collapsed insets
+
2005-05-06 José Matos <jamatos@lyx.org>
* insetcommandparams.C (scanCommand): fix out of range string access.
setStatus(Open);
else if (cmd.argument == "close") {
setStatus(Collapsed);
- leaveInset(cur, *this);
+ cur.leaveInset(*this);
} else if (cmd.argument == "toggle") {
if (isOpen()) {
setStatus(Collapsed);
- leaveInset(cur, *this);
- } else
- setStatus(Open);
+ cur.leaveInset(*this);
+ } else {
+ setStatus(Open);
+ }
// The branch inset uses "assign".
- } else if (cmd.argument == "assign"
- || cmd.argument.empty()) {
+ } else if (cmd.argument == "assign" || cmd.argument.empty()) {
BranchList const & branchlist =
cur.buffer().params().branchlist();
if (isBranchSelected(branchlist)) {
} else {
if (status() != Collapsed) {
setStatus(Collapsed);
- leaveInset(cur, *this);
+ cur.leaveInset(*this);
} else
cur.undispatched();
}
if (cmd.argument == "open" || cmd.argument == "close" ||
cmd.argument == "toggle")
flag.enabled(true);
- else if (cmd.argument == "assign"
- || cmd.argument.empty()) {
+ else if (cmd.argument == "assign" || cmd.argument.empty()) {
BranchList const & branchlist =
cur.buffer().params().branchlist();
if (isBranchSelected(branchlist))
using std::ostream;
-void leaveInset(LCursor & cur, InsetBase const & in)
-{
- for (size_t i = 0; i != cur.depth(); ++i) {
- if (&cur[i].inset() == &in) {
- cur.resize(i);
- return;
- }
- }
-}
-
-
InsetCollapsable::InsetCollapsable
(BufferParams const & bp, CollapseStatus status)
: InsetText(bp), label("Label"), status_(status), openinlined_(false)
if (openinlined_)
x += dimensionCollapsed().wid;
else
- y += dimensionCollapsed().height() - ascent() + TEXT_TO_INSET_OFFSET + textdim_.asc;
+ y += dimensionCollapsed().height() - ascent()
+ + TEXT_TO_INSET_OFFSET + textdim_.asc;
}
x += TEXT_TO_INSET_OFFSET;
if (hitButton(cmd)) {
lyxerr << "InsetCollapsable::lfunMouseRelease 2" << endl;
setStatus(Collapsed);
- leaveInset(cur, *this);
+ cur.leaveInset(*this);
cur.bv().cursor() = cur;
} else {
lyxerr << "InsetCollapsable::lfunMouseRelease 3" << endl;
setStatus(Open);
else if (cmd.argument == "close") {
setStatus(Collapsed);
- leaveInset(cur, *this);
- } else if (cmd.argument == "toggle"
- || cmd.argument.empty()) {
+ cur.leaveInset(*this);
+ } else if (cmd.argument == "toggle" || cmd.argument.empty()) {
if (isOpen()) {
setStatus(Collapsed);
- leaveInset(cur, *this);
- } else
+ cur.leaveInset(*this);
+ } else {
setStatus(Open);
+ }
} else // if assign or anything else
cur.undispatched();
cur.dispatched();
InsetCollapsable::CollapseStatus st;
InsetERTMailer::string2params(cmd.argument, st);
setStatus(st);
+ if (status() == Collapsed)
+ cur.leaveInset(*this);
break;
}
case LFUN_PASTE:
}
}
+ BOOST_ASSERT(view());
if (view()->available()) {
// Redraw screen unless explicitly told otherwise.
// This also initializes the position cache for all insets