src/mathed/formulabase.C
src/mathed/formula.C
src/mathed/formulamacro.C
+src/mathed/math_cursor.C
src/MenuBackend.C
src/minibuffer.C
src/paragraph.C
+2001-08-16 Juergen Vigna <jug@sad.it>
+
+ * lyxfunc.C (dispatch): implemented the new FINISHED states.
+
2001-08-14 Dekel Tsur <dekelts@tau.ac.il>
* buffer.C (parseSingleLyXformat2Token): Do not generate errors
+2001-08-16 Juergen Vigna <jug@sad.it>
+
+ * insettext.C: implemented the new FINISHED states.
+
+ * insettabular.C: ditto
+
+ * inset.h: added more FINISHED states for cursor right,up,down
+
2001-08-14 Juergen Vigna <jug@sad.it>
* insetert.C (edit): forgot to set status_ in edit calls!
becomes a bit complex, just two possible results (boolean)
are not enough.
- DISPATCHED = the inset catched the action
+ DISPATCHED = the inset catched the action
DISPATCHED_NOUPDATE = the inset catched the action and no update
is needed here to redraw the inset
- FINISHED = the inset must be unlocked as a result
- of the action
- UNDISPATCHED = the action was not catched, it should be
- dispatched by lower level insets
+ FINISHED = the inset must be unlocked as a result
+ of the action
+ FINISHED_RIGHT = FINISHED, but put the cursor to the RIGHT of
+ the inset.
+ FINISHED_UP = FINISHED, but put the cursor UP of
+ the inset.
+ FINISHED_DOWN = FINISHED, but put the cursor DOWN of
+ the inset.
+ UNDISPATCHED = the action was not catched, it should be
+ dispatched by lower level insets
*/
enum RESULT {
UNDISPATCHED = 0,
DISPATCHED,
DISPATCHED_NOUPDATE,
- FINISHED
+ FINISHED,
+ FINISHED_RIGHT,
+ FINISHED_UP,
+ FINISHED_DOWN
};
/// To convert old binary dispatch results
UpdatableInset::RESULT
InsetCollapsable::localDispatch(BufferView * bv, kb_action action,
- string const & arg)
+ string const & arg)
{
UpdatableInset::RESULT result = inset.localDispatch(bv, action, arg);
- if (result == FINISHED)
+ if (result >= FINISHED)
bv->unlockInset(this);
first_after_edit = false;
return result;
bool InsetCollapsable::unlockInsetInInset(BufferView * bv, UpdatableInset * in,
- bool lr)
+ bool lr)
{
if (&inset == in) {
bv->unlockInset(this);
// reset need_update setted in above function!
need_update = NONE;
result = the_locking_inset->localDispatch(bv, action, arg);
- if ((result == UNDISPATCHED) || (result == FINISHED)) {
+ if ((result == UNDISPATCHED) || (result >= FINISHED)) {
unlockInsetInInset(bv, the_locking_inset);
nodraw(false);
the_locking_inset = 0;
}
break;
}
- if (result!=FINISHED) {
+ if (result < FINISHED) {
if (!the_locking_inset) {
showInsetCursor(bv);
}
bool moved = isRightToLeft(bv)
? movePrevCell(bv) : moveNextCell(bv);
if (!moved)
- return FINISHED;
+ return FINISHED_RIGHT;
if (lock && activateCellInset(bv))
return DISPATCHED;
}
int const ocell = actcell;
actcell = tabular->GetCellAbove(actcell);
if (actcell == ocell) // we moved out of the inset
- return FINISHED;
+ return FINISHED_UP;
resetPos(bv);
if (lock) {
int x = 0;
int const ocell = actcell;
actcell = tabular->GetCellBelow(actcell);
if (actcell == ocell) // we moved out of the inset
- return FINISHED;
+ return FINISHED_DOWN;
resetPos(bv);
if (lock) {
int x = 0;
setFont(bv, font, false);
}
- if (result != FINISHED) {
+ if (result < FINISHED) {
showInsetCursor(bv);
} else
bv->unlockInset(this);
UpdatableInset::RESULT
InsetText::moveRightIntern(BufferView * bv, bool behind,
- bool activate_inset, bool selecting)
+ bool activate_inset, bool selecting)
{
if (!cpar(bv)->next() && (cpos(bv) >= cpar(bv)->size()))
- return FINISHED;
+ return FINISHED_RIGHT;
if (activate_inset && checkAndActivateInset(bv, behind))
return DISPATCHED;
getLyXText(bv)->cursorRight(bv);
UpdatableInset::RESULT
InsetText::moveLeftIntern(BufferView * bv, bool behind,
- bool activate_inset, bool selecting)
+ bool activate_inset, bool selecting)
{
if (!cpar(bv)->previous() && (cpos(bv) <= 0))
return FINISHED;
InsetText::moveUp(BufferView * bv)
{
if (!crow(bv)->previous())
- return FINISHED;
+ return FINISHED_UP;
getLyXText(bv)->cursorUp(bv);
return DISPATCHED_NOUPDATE;
}
InsetText::moveDown(BufferView * bv)
{
if (!crow(bv)->next())
- return FINISHED;
+ return FINISHED_DOWN;
getLyXText(bv)->cursorDown(bv);
return DISPATCHED_NOUPDATE;
}
inset->edit(owner->view(),slx,sly,0);
return string();
} else if (((result=owner->view()->theLockingInset()->
- localDispatch(owner->view(), action,
- argument)) ==
- UpdatableInset::DISPATCHED) ||
- (result == UpdatableInset::DISPATCHED_NOUPDATE))
+ localDispatch(owner->view(), action, argument)) ==
+ UpdatableInset::DISPATCHED) ||
+ (result == UpdatableInset::DISPATCHED_NOUPDATE))
return string();
- else {
+ else if (result == UpdatableInset::FINISHED) {
+ if (TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+ TEXT()->cursorRight(owner->view());
+ moveCursorUpdate(true, false);
+ owner->showState();
+ }
+ return string();
+ } else if (result == UpdatableInset::FINISHED_RIGHT) {
+ if (!TEXT()->cursor.par()->isRightToLeftPar(owner->buffer()->params)) {
+ TEXT()->cursorRight(owner->view());
+ moveCursorUpdate(true, false);
+ owner->showState();
+ }
+ return string();
+ } else if (result == UpdatableInset::FINISHED_UP) {
+ if (TEXT()->cursor.row()->previous()) {
+ TEXT()->cursorUp(owner->view());
+ moveCursorUpdate(true, false);
+ owner->showState();
+ }
+ return string();
+ } else if (result == UpdatableInset::FINISHED_DOWN) {
+ if (TEXT()->cursor.row()->next())
+ TEXT()->cursorDown(owner->view());
+ else
+ TEXT()->cursorRight(owner->view());
+ moveCursorUpdate(true, false);
+ owner->showState();
+ return string();
+ } else {
//setMessage(N_("Text mode"));
switch (action) {
case LFUN_UNKNOWN_ACTION: