more dispatch work

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8001 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Lars Gullik Bjønnes 2003-10-29 13:24:57 +00:00
parent fa7aa5c7d9
commit 1d7a715329
12 changed files with 82 additions and 32 deletions

View File

@ -38,6 +38,9 @@ src/frontends/controllers/helper_funcs.C
src/frontends/gnome/GLog.C
src/frontends/gtk/Dialogs.C
src/frontends/gtk/GBC.h
src/frontends/gtk/GMathPanel.C
src/frontends/gtk/GTableCreate.C
src/frontends/gtk/GUrl.C
src/frontends/qt2/Alert_pimpl.C
src/frontends/qt2/BulletsModule.C
src/frontends/qt2/Dialogs.C
@ -162,6 +165,7 @@ src/insets/insetmarginal.C
src/insets/insetminipage.C
src/insets/insetnote.C
src/insets/insetoptarg.C
src/insets/insetpagebreak.C
src/insets/insetref.C
src/insets/insettabular.C
src/insets/insettext.C

View File

@ -1279,7 +1279,7 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev_in)
break;
default:
return bv_->getLyXText()->dispatch(FuncRequest(ev, bv_));
return bv_->getLyXText()->dispatch(FuncRequest(ev, bv_)) >= DISPATCHED;
} // end of switch
return true;

View File

@ -1,17 +1,28 @@
2003-10-29 Lars Gullik Bjønnes <larsbj@gullik.net>
* text3.C:
* text2.C:
* text.C:
* lyxtext.h:
* lyxfunc.C:
* cursor.C:
* dispatchresult.h: rename DISPATCHED_POP to FINISHED_POP, remove
operator dispatch_result_t, and operators for == != and >=
* cursor.C (dispatch): adjust for operator dispatch_result_t
removal. comment out call to update
* BufferView_pimpl.C (dispatch): dont implicit covert to bool
2003-10-29 Lars Gullik Bjønnes <larsbj@gullik.net>
* text3.C:
* text2.C:
* text.C:
* lyxtext.h:
* lyxfunc.C:
* cursor.C:
* BufferView_pimpl.C: dispatch_result -> DispatchResult changes.
(dispatch):
* dispatchresult.h: new file, DispatchResult broken out of
insets/insetbase.h
insets/insetbase.h
* Makefile.am (lyx_SOURCES): add dispatchresult.h
* Makefile.am (lyx_SOURCES): add dispatchresult.h
2003-10-28 Alfredo Braunstein <abraunst@libero.it>

View File

@ -30,17 +30,17 @@ DispatchResult Cursor::dispatch(FuncRequest const & cmd)
for (int i = data_.size() - 1; i >= 0; --i) {
lyxerr << "trying to dispatch to inset" << data_[i].inset_ << endl;
DispatchResult res = data_[i].inset_->dispatch(cmd);
lyxerr << " result: " << res << endl;
lyxerr << " result: " << res.val() << endl;
if (res == DISPATCHED) {
//update();
return DISPATCHED;
}
if (res == DISPATCHED_NOUPDATE)
return DISPATCHED;
lyxerr << "# unhandled result: " << res << endl;
lyxerr << "# unhandled result: " << res.val() << endl;
}
return UNDISPATCHED;
}

View File

@ -36,7 +36,7 @@ enum dispatch_result_t {
FINISHED_RIGHT,
FINISHED_UP,
FINISHED_DOWN,
DISPATCHED_POP
FINISHED_POP
};
/** \c DispatchResult is a wrapper for dispatch_result_t.
@ -44,12 +44,36 @@ enum dispatch_result_t {
* having to expose insetbase.h.
*/
class DispatchResult {
dispatch_result_t val_;
public:
DispatchResult()
: val_(UNDISPATCHED) {}
DispatchResult(dispatch_result_t val) : val_(val) {}
operator dispatch_result_t() const{ return val_; }
dispatch_result_t val() const { return val_; }
private:
dispatch_result_t val_;
};
inline
bool operator==(DispatchResult const & lhs, DispatchResult const & rhs)
{
return lhs.val() == rhs.val();
}
inline
bool operator!=(DispatchResult const & lhs, DispatchResult const & rhs)
{
return !(lhs == rhs);
}
// This operator is temporary, will be removed with the introduction of
// a status field in DispatchResult.
inline
bool operator>=(DispatchResult const & lhs, DispatchResult const & rhs)
{
return lhs.val() >= rhs.val();
}
#endif // DISPATCH_RESULT_H

View File

@ -1,5 +1,12 @@
2003-10-29 Lars Gullik Bjønnes <larsbj@gullik.net>
* insettext.C (lfunMouseRelease): dont use implicit conversion to bool
(priv_dispatch): adjust for operator dispatch_result_t removal
* insettabular.C (lfunMouseRelease): put the result of a dispatch
in a DispatchResult, adjust accordingly.
(priv_dispatch): use strange >= construct... (will be removed later)
* most insets: dispatch_result -> DispatchResult
* insetbase.h: move DispatchResult out to dispatchresult.h

View File

@ -598,18 +598,18 @@ void InsetTabular::lfunMousePress(FuncRequest const & cmd)
bool InsetTabular::lfunMouseRelease(FuncRequest const & cmd)
{
bool ret = false;
DispatchResult ret = UNDISPATCHED;
if (the_locking_inset) {
FuncRequest cmd1 = cmd;
cmd1.x -= inset_x;
cmd1.y -= inset_y;
ret = the_locking_inset->dispatch(cmd1);
}
if (cmd.button() == mouse_button::button3 && !ret) {
if (cmd.button() == mouse_button::button3 && ret == UNDISPATCHED) {
InsetTabularMailer(*this).showDialog(cmd.view());
return true;
}
return ret;
return ret >= DISPATCHED;
}
@ -1111,7 +1111,7 @@ InsetTabular::priv_dispatch(FuncRequest const & cmd,
}
break;
}
if (result < FINISHED) {
if (!(result >= FINISHED)) {
if (!the_locking_inset && bv->fitCursor())
updateLocal(bv);
} else

View File

@ -547,7 +547,7 @@ bool InsetText::lfunMouseRelease(FuncRequest const & cmd)
no_selection = true;
if (the_locking_inset)
return the_locking_inset->dispatch(cmd1);
return the_locking_inset->dispatch(cmd1) >= DISPATCHED;
int tmp_x = cmd.x;
int tmp_y = cmd.y + dim_.asc - bv->top_y();
@ -557,7 +557,7 @@ bool InsetText::lfunMouseRelease(FuncRequest const & cmd)
// We still need to deal properly with the whole relative vs.
// absolute mouse co-ords thing in a realiable, sensible way
bool ret = inset->dispatch(cmd1);
bool ret = inset->dispatch(cmd1) >= DISPATCHED;
updateLocal(bv, false);
return ret;
}
@ -687,7 +687,7 @@ InsetText::priv_dispatch(FuncRequest const & cmd,
return result;
}
if (result >= FINISHED) {
switch (result) {
switch (result.val()) {
case FINISHED_RIGHT:
moveRightIntern(bv, false, false);
result = DISPATCHED;

View File

@ -1,5 +1,9 @@
2003-10-29 Lars Gullik Bjønnes <larsbj@gullik.net>
* math_hullinset.C (priv_dispatch):
* math_gridinset.C (priv_dispatch):
* math_cursor.C (dispatch): DISPATCHED_POP -> FINISHED_POP
* math_scriptinset.h: change dispatch to priv_dispatch and make it
protected

View File

@ -1439,7 +1439,7 @@ DispatchResult MathCursor::dispatch(FuncRequest const & cmd)
CursorPos & pos = Cursor_[i];
DispatchResult res = pos.inset_->dispatch(cmd, pos.idx_, pos.pos_);
if (res != UNDISPATCHED) {
if (res == DISPATCHED_POP) {
if (res == FINISHED_POP) {
Cursor_.shrink(i + 1);
selClear();
}

View File

@ -1072,12 +1072,12 @@ DispatchResult MathGridInset::priv_dispatch(FuncRequest const & cmd,
idx = nargs() - 1;
if (pos > cell(idx).size())
pos = cell(idx).size();
return DISPATCHED_POP;
return FINISHED_POP;
case LFUN_CELL_SPLIT:
//recordUndo(bv, Undo::ATOMIC);
splitCell(idx, pos);
return DISPATCHED_POP;
return FINISHED_POP;
case LFUN_BREAKLINE: {
//recordUndo(bv, Undo::INSERT);
@ -1096,7 +1096,7 @@ DispatchResult MathGridInset::priv_dispatch(FuncRequest const & cmd,
pos = cell(idx).size();
//mathcursor->normalize();
return DISPATCHED_POP;
return FINISHED_POP;
}
case LFUN_TABULAR_FEATURE: {
@ -1153,7 +1153,7 @@ DispatchResult MathGridInset::priv_dispatch(FuncRequest const & cmd,
else
return UNDISPATCHED;
lyxerr << "returning DISPATCHED_POP" << endl;
return DISPATCHED_POP;
return FINISHED_POP;
}
case LFUN_PASTE: {
@ -1184,7 +1184,7 @@ DispatchResult MathGridInset::priv_dispatch(FuncRequest const & cmd,
for (col_type c = 0; c < grid.ncols(); ++c)
cell(i).append(grid.cell(grid.index(r, c)));
}
return DISPATCHED_POP;
return FINISHED_POP;
}
default:

View File

@ -782,7 +782,7 @@ DispatchResult MathHullInset::priv_dispatch
mutate("eqnarray");
idx = 1;
pos = 0;
return DISPATCHED_POP;
return FINISHED_POP;
}
return MathGridInset::priv_dispatch(cmd, idx, pos);
@ -837,7 +837,7 @@ DispatchResult MathHullInset::priv_dispatch
case LFUN_MATH_EXTERN:
doExtern(cmd, idx, pos);
return DISPATCHED_POP;
return FINISHED_POP;
case LFUN_MATH_MUTATE: {
lyxerr << "Hull: MUTATE: " << cmd.argument << endl;
@ -849,14 +849,14 @@ DispatchResult MathHullInset::priv_dispatch
idx = nargs() - 1;
if (pos > cell(idx).size())
pos = cell(idx).size();
return DISPATCHED_POP;
return FINISHED_POP;
}
case LFUN_MATH_DISPLAY: {
mutate(type_ == "simple" ? "equation" : "simple");
idx = 0;
pos = cell(idx).size();
return DISPATCHED_POP;
return FINISHED_POP;
}
default: