/* ---> Everytime the cursor is moved, show the current font state. */
// should this too me moved out of this func?
//owner->getMiniBuffer()->Set(CurrentState());
+ owner->view()->SetState();
}
keysym_return == XK_Escape) {
owner->view()->unlockInset(owner->view()->the_locking_inset);
owner->view()->text->CursorRight();
+ moveCursorUpdate(false);
+ owner->getMiniBuffer()->Set(CurrentState());
return 0;
}
if (font.latex() == LyXFont::ON)
box = LyXFunc::ToggleOn;
break;
+ case LFUN_RTL:
+ if (font.direction() == LyXFont::RTL_DIR)
+ box = LyXFunc::ToggleOn;
+ break;
default:
box = LyXFunc::OK;
break;
return string();
else {
setMessage(N_("Text mode"));
- if (action == LFUN_RIGHT || action == -1)
+ LyXDirection direction = owner->view()->text->GetParDirection(owner->view()->text->cursor.par);
+ if ( action == -1 ||
+ (action == LFUN_RIGHT
+ && direction == LYX_DIR_LEFT_TO_RIGHT)) {
owner->view()->text->CursorRight();
+ moveCursorUpdate(false);
+ owner->getMiniBuffer()->Set(CurrentState());
+ }
+ if ( action == LFUN_LEFT
+ && direction == LYX_DIR_RIGHT_TO_LEFT) {
+ owner->view()->text->CursorRight();
+ moveCursorUpdate(false);
+ owner->getMiniBuffer()->Set(CurrentState());
+ }
if (action == LFUN_LEFT || action == LFUN_RIGHT)
return string();
}
case LFUN_TEX:
TexCB();
+ owner->view()->SetState();
+ owner->getMiniBuffer()->Set(CurrentState());
break;
case LFUN_MELT:
MeltCB(ob, 0);
}
else
- FootCB(ob, 0);
+ FootCB(ob, 0);
+ owner->view()->SetState();
break;
case LFUN_MARGINMELT:
}
else
MarginCB(ob, 0);
+ owner->view()->SetState();
break;
// --- version control -------------------------------
owner->getToolbar()->combox->Show();
break;
+ case LFUN_RTL:
+ {
+ RTLCB();
+ owner->view()->SetState();
+ owner->getMiniBuffer()->Set(CurrentState());
+ }
+ break;
+
case LFUN_EMPH:
EmphCB();
break;
case LFUN_RIGHT:
{
LyXText * tmptext = owner->view()->text;
+ LyXDirection direction = tmptext->GetParDirection(tmptext->cursor.par);
if(!tmptext->mark_set)
owner->view()->beforeChange();
owner->view()->update(-2);
+ if (direction == LYX_DIR_RIGHT_TO_LEFT)
+ tmptext->CursorLeft();
if (tmptext->cursor.pos < tmptext->cursor.par->Last()
&& tmptext->cursor.par->GetChar(tmptext->cursor.pos)
== LyXParagraph::META_INSET
tmpinset->Edit(0, 0);
break;
}
- tmptext->CursorRight();
+ if (direction == LYX_DIR_LEFT_TO_RIGHT)
+ tmptext->CursorRight();
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState());
// This is soooo ugly. Isn`t it possible to make
// it simpler? (Lgb)
LyXText * txt = owner->view()->text;
+ LyXDirection direction = txt->GetParDirection(txt->cursor.par);
if(!txt->mark_set) owner->view()->beforeChange();
owner->view()->update(-2);
- txt->CursorLeft();
+ if (direction == LYX_DIR_LEFT_TO_RIGHT)
+ txt->CursorLeft();
if (txt->cursor.pos < txt->cursor.par->Last()
&& txt->cursor.par->GetChar(txt->cursor.pos)
== LyXParagraph::META_INSET
txt->cursor.pos)), 0);
break;
}
+ if (direction == LYX_DIR_RIGHT_TO_LEFT)
+ txt->CursorRight();
+
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState());
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
owner->view()->update(-2);
- owner->view()->text->CursorRightOneWord();
+ if (owner->view()->text->GetParDirection(owner->view()->text->cursor.par)
+ == LYX_DIR_LEFT_TO_RIGHT)
+ owner->view()->text->CursorRightOneWord();
+ else
+ owner->view()->text->CursorLeftOneWord();
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState());
if(!owner->view()->text->mark_set)
owner->view()->beforeChange();
owner->view()->update(-2);
- owner->view()->text->CursorLeftOneWord();
+ if (owner->view()->text->GetParDirection(owner->view()->text->cursor.par)
+ == LYX_DIR_LEFT_TO_RIGHT)
+ owner->view()->text->CursorLeftOneWord();
+ else
+ owner->view()->text->CursorRightOneWord();
owner->view()->text->FinishUndo();
moveCursorUpdate(false);
owner->getMiniBuffer()->Set(CurrentState());
/* cursor selection ---------------------------- */
case LFUN_RIGHTSEL:
owner->view()->update(-2);
- owner->view()->text->CursorRight();
+ if (owner->view()->text->GetParDirection(owner->view()->text->cursor.par)
+ == LYX_DIR_LEFT_TO_RIGHT)
+ owner->view()->text->CursorRight();
+ else
+ owner->view()->text->CursorLeft();
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState());
case LFUN_LEFTSEL:
owner->view()->update(-2);
- owner->view()->text->CursorLeft();
+ if (owner->view()->text->GetParDirection(owner->view()->text->cursor.par)
+ == LYX_DIR_LEFT_TO_RIGHT)
+ owner->view()->text->CursorLeft();
+ else
+ owner->view()->text->CursorRight();
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState());
case LFUN_WORDRIGHTSEL:
owner->view()->update(-2);
- owner->view()->text->CursorRightOneWord();
+ if (owner->view()->text->GetParDirection(owner->view()->text->cursor.par)
+ == LYX_DIR_LEFT_TO_RIGHT)
+ owner->view()->text->CursorRightOneWord();
+ else
+ owner->view()->text->CursorLeftOneWord();
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState());
case LFUN_WORDLEFTSEL:
owner->view()->update(-2);
- owner->view()->text->CursorLeftOneWord();
+ if (owner->view()->text->GetParDirection(owner->view()->text->cursor.par)
+ == LYX_DIR_LEFT_TO_RIGHT)
+ owner->view()->text->CursorLeftOneWord();
+ else
+ owner->view()->text->CursorRightOneWord();
owner->view()->text->FinishUndo();
moveCursorUpdate(true);
owner->getMiniBuffer()->Set(CurrentState());
owner->view()->cut();
}
SetUpdateTimer();
+ moveCursorUpdate(false);
+ owner->getMiniBuffer()->Set(CurrentState());
+ owner->view()->SetState();
break;
case LFUN_DELETE_SKIP:
owner->view()->update( 1 );
SetUpdateTimer();
moveCursorUpdate(false);
+ owner->getMiniBuffer()->Set(CurrentState());
break;
/* -------> Delete word backward. */
owner->view()->update( 1 );
SetUpdateTimer();
moveCursorUpdate(false);
+ owner->getMiniBuffer()->Set(CurrentState());
break;
/* -------> Kill to end of line. */
owner->view()->cut();
}
SetUpdateTimer();
+ owner->getMiniBuffer()->Set(CurrentState());
+ owner->view()->SetState();
}
break;
SetUpdateTimer(0.01);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
+ owner->view()->SetState();
+ owner->getMiniBuffer()->Set(CurrentState());
break;
}
SetUpdateTimer(0.01);
owner->view()->text->sel_cursor =
owner->view()->text->cursor;
+ owner->view()->SetState();
+ owner->getMiniBuffer()->Set(CurrentState());
break;
}
}
SetUpdateTimer(0.01);
owner->view()->text->sel_cursor = cursor;
+ owner->view()->SetState();
+ owner->getMiniBuffer()->Set(CurrentState());
}
break;
}
owner->view()->text->InsertFootnoteEnvironment(kind);
owner->view()->update(1);
+ owner->view()->SetState();
}
break;