From 29ef6251e8eef7827bc10ee27c8ed320c65bdfcd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andr=C3=A9=20P=C3=B6nitz?= Date: Tue, 3 Feb 2004 16:44:57 +0000 Subject: [PATCH] re-enable click on button insets git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8394 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView_pimpl.C | 1 - src/cursor.C | 26 +++++++++----------------- src/cursor.h | 2 ++ src/frontends/screen.C | 4 ++-- src/insets/inset.C | 2 +- src/insets/insetcollapsable.C | 25 +++++++++++++------------ src/insets/insetert.C | 1 + src/text3.C | 16 ++++++++++++---- 8 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index 29fcc5391d..2f136433d3 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -355,7 +355,6 @@ void BufferView::Pimpl::buffer(Buffer * b) bool BufferView::Pimpl::fitCursor() { - lyxerr << "BufferView::Pimpl::fitCursor." << endl; if (screen().fitCursor(bv_)) { updateScrollbar(); return true; diff --git a/src/cursor.C b/src/cursor.C index 4fea08cdf8..cf691e41d4 100644 --- a/src/cursor.C +++ b/src/cursor.C @@ -92,19 +92,15 @@ DispatchResult LCursor::dispatch(FuncRequest const & cmd0) // remove one level of cursor switch (res.val()) { case FINISHED: - pop(i); cmd = FuncRequest(LFUN_FINISHED_LEFT); break; case FINISHED_RIGHT: - pop(i); cmd = FuncRequest(LFUN_FINISHED_RIGHT); break; case FINISHED_UP: - pop(i); cmd = FuncRequest(LFUN_FINISHED_UP); break; case FINISHED_DOWN: - pop(i); cmd = FuncRequest(LFUN_FINISHED_DOWN); break; default: @@ -112,7 +108,9 @@ DispatchResult LCursor::dispatch(FuncRequest const & cmd0) break; } } - lyxerr << "trying to dispatch to main text " << bv_->text() << endl; + current_ = 0; + lyxerr << "trying to dispatch to main text " << bv_->text() + << " with cursor: " << *this << endl; DispatchResult res = bv_->text()->dispatch(*this, cmd); lyxerr << " result: " << res.val() << endl; return res; @@ -131,24 +129,18 @@ void LCursor::push(InsetBase * inset) void LCursor::pop(int depth) { - //lyxerr << "LCursor::pop() to depth " << depth << endl; - while (int(cursor_.size()) > depth) + while (int(cursor_.size()) > depth + 1) pop(); + lyxerr << "LCursor::pop() result: " << *this << endl; } void LCursor::pop() { - BOOST_ASSERT(!cursor_.empty()); - //lyxerr << "LCursor::pop() a level" << endl; - if (cursor_.size() <= 1) - lyxerr << "### TRYING TO POP FROM EMPTY CURSOR" << endl; - else { - cursor_.pop_back(); - anchor_.pop_back(); - current_ = cursor_.size() - 1; - } - //lyxerr << "LCursor::pop() current now: " << current_ << endl; + BOOST_ASSERT(cursor_.size() >= 1); + cursor_.pop_back(); + anchor_.pop_back(); + current_ = cursor_.size() - 1; } diff --git a/src/cursor.h b/src/cursor.h index c4003b3fc6..0951333da9 100644 --- a/src/cursor.h +++ b/src/cursor.h @@ -82,6 +82,8 @@ public: CursorSlice const & current() const; /// how many nested insets do we have? size_t depth() const { return cursor_.size(); } + /// depth of current slice + int currentDepth() const { return current_; } // // selection diff --git a/src/frontends/screen.C b/src/frontends/screen.C index c921218cbb..2a2309cf16 100644 --- a/src/frontends/screen.C +++ b/src/frontends/screen.C @@ -212,9 +212,9 @@ bool LyXScreen::fitCursor(BufferView * bv) int x, y, asc, desc; bv->cursor().getPos(x, y); - lyxerr << "LyXScreen::fitCursor: x: " << x << " y: " << y - << " top_y: " << top_y << endl; bv->cursor().getDim(asc, desc); + //lyxerr << "LyXScreen::fitCursor: x: " << x << " y: " << y + // << " top_y: " << top_y << endl; bool const big_row = h / 4 < asc + desc && asc + desc < h; diff --git a/src/insets/inset.C b/src/insets/inset.C index b533f4de92..d3284e17a7 100644 --- a/src/insets/inset.C +++ b/src/insets/inset.C @@ -89,7 +89,7 @@ int InsetOld::scroll(bool recursive) const void InsetOld::setPosCache(PainterInfo const &, int x, int y) const { - lyxerr << "InsetOld:: position cache to " << x << " " << y << std::endl; + //lyxerr << "InsetOld:: position cache to " << x << " " << y << std::endl; xo_ = x; yo_ = y; } diff --git a/src/insets/insetcollapsable.C b/src/insets/insetcollapsable.C index 272cacfd74..fa2e858525 100644 --- a/src/insets/insetcollapsable.C +++ b/src/insets/insetcollapsable.C @@ -63,20 +63,19 @@ InsetCollapsable::InsetCollapsable(InsetCollapsable const & in) void InsetCollapsable::write(Buffer const & buf, ostream & os) const { - string st; - + os << "status "; switch (status_) { case Open: - st = "open"; + os << "open"; break; case Collapsed: - st = "collapsed"; + os << "collapsed"; break; case Inlined: - st = "inlined"; + os << "inlined"; break; } - os << "status " << st << "\n"; + os << "\n"; inset.text_.write(buf, os); } @@ -170,12 +169,11 @@ void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const } else { Dimension dimc; dimension_collapsed(dimc); - int const aa = ascent(); - button_dim.x1 = 0; - button_dim.x2 = dimc.width(); - button_dim.y1 = -aa; - button_dim.y2 = -aa + dimc.height(); + button_dim.x1 = x + 0; + button_dim.x2 = x + dimc.width(); + button_dim.y1 = y - aa; + button_dim.y2 = y - aa + dimc.height(); draw_collapsed(pi, x, y); if (status_ == Open) { @@ -219,6 +217,8 @@ InsetCollapsable::lfunMouseRelease(LCursor & cur, FuncRequest const & cmd) if (hitButton(cmd)) { lyxerr << "InsetCollapsable::lfunMouseRelease 2" << endl; setStatus(Collapsed); + // drop one level + cur.bv().cursor() = cur; return DispatchResult(false, FINISHED_RIGHT); } lyxerr << "InsetCollapsable::lfunMouseRelease 3" << endl; @@ -227,7 +227,8 @@ InsetCollapsable::lfunMouseRelease(LCursor & cur, FuncRequest const & cmd) case Inlined: return inset.dispatch(cur, cmd); } - + BOOST_ASSERT(false); + // shut up compiler return DispatchResult(true, true); } diff --git a/src/insets/insetert.C b/src/insets/insetert.C index 9e3e6281f5..73d067ec5a 100644 --- a/src/insets/insetert.C +++ b/src/insets/insetert.C @@ -210,6 +210,7 @@ int InsetERT::docbook(Buffer const &, ostream & os, DispatchResult InsetERT::priv_dispatch(LCursor & cur, FuncRequest const & cmd) { + lyxerr << "\nInsetERT::priv_dispatch (begin): cmd: " << cmd << endl; switch (cmd.action) { case LFUN_INSET_MODIFY: { diff --git a/src/text3.C b/src/text3.C index 7e3e694dcd..ca40002a96 100644 --- a/src/text3.C +++ b/src/text3.C @@ -1464,24 +1464,32 @@ DispatchResult LyXText::dispatch(LCursor & cur, FuncRequest const & cmd) break; case LFUN_FINISHED_LEFT: - lyxerr << "swallow LFUN_FINISHED_LEFT" << endl; + lyxerr << "handle LFUN_FINISHED_LEFT" << endl; + cur.pop(cur.currentDepth()); + cur.bv().cursor() = cur; if (rtl()) cursorLeft(true); break; case LFUN_FINISHED_RIGHT: - lyxerr << "swallow LFUN_FINISHED_RIGHT" << endl; + lyxerr << "handle LFUN_FINISHED_RIGHT" << endl; + cur.pop(cur.currentDepth()); + cur.bv().cursor() = cur; if (!rtl()) cursorRight(true); break; case LFUN_FINISHED_UP: - lyxerr << "swallow LFUN_FINISHED_UP" << endl; + lyxerr << "handle LFUN_FINISHED_UP" << endl; + cur.pop(cur.currentDepth()); + cur.bv().cursor() = cur; cursorUp(true); break; case LFUN_FINISHED_DOWN: - lyxerr << "swallow LFUN_FINISHED_DOWN" << endl; + lyxerr << "handle LFUN_FINISHED_DOWN" << endl; + cur.pop(cur.currentDepth()); + cur.bv().cursor() = cur; cursorDown(true); break; -- 2.39.2