Fix bug #5991: Select function in environments.

C-M-a now selects the contents of an inset, if the whole inset is already selected, it will jump out the inset and selects everything in that inset.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31200 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2009-08-22 14:44:08 +00:00
parent 9bb61acfd5
commit c11f031df6
5 changed files with 26 additions and 1 deletions

View File

@ -84,6 +84,7 @@
\bind "C-S-Z" "redo"
\bind "C-a" "command-sequence buffer-begin ; buffer-end-select" # select all
\bind "C-M-a" "inset-select-all"
\bind "C-S-E" "changes-track" # it's what MS Word uses
\bind "~S-M-quotedbl" "quote-insert single"

View File

@ -74,6 +74,7 @@
\bind "C-S-Z" "redo"
\bind "C-a" "command-sequence buffer-begin ; buffer-end-select" # select all
\bind "C-M-a" "inset-select-all"
\bind "C-S-E" "changes-track" # it's what MS Word uses
\bind "~S-M-quotedbl" "quote-insert single"

View File

@ -422,7 +422,7 @@ enum FuncCode
// 325
LFUN_INSET_BEGIN_SELECT, // JMarc, 20090316
LFUN_INSET_END_SELECT, // JMarc, 20090316
LFUN_SCREEN_SHOW_CURSOR, // vfr, 20090325
LFUN_INSET_SELECT_ALL, // vfr, 20090822
LFUN_BUFFER_ZOOM_IN, // vfr, 20090330
LFUN_BUFFER_ZOOM_OUT, // vfr, 20090330
// 330
@ -441,6 +441,7 @@ enum FuncCode
LFUN_BRANCHES_RENAME, // spitz 20090709
LFUN_BUFFER_CLOSE_ALL, // vfr 20090806
LFUN_GRAPHICS_RELOAD, // vfr 20090810
LFUN_SCREEN_SHOW_CURSOR, // vfr, 20090325
LFUN_LASTACTION // end of the table
};

View File

@ -1073,6 +1073,15 @@ void LyXAction::init()
*/
{ LFUN_INSET_END_SELECT, "inset-end-select", ReadOnly, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_INSET_SELECT_ALL
* \li Action: Selects all contents of an inset.
* \li Syntax: inset-select-all
* \li Origin: vfr, 22 Aug 2009
* \endvar
*/
{ LFUN_INSET_SELECT_ALL, "inset-select-all", ReadOnly, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_LINE_BEGIN
* \li Action: Move the cursor to the begining of the (screen) line.

View File

@ -641,6 +641,18 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
cur.updateFlags(Update::FitCursor);
break;
case LFUN_INSET_SELECT_ALL:
if (cur.depth() == 1 || !cur.selection() || !cur.selBegin().at_begin()
|| !cur.selEnd().at_end()) {
needsUpdate |= cur.selHandle(false);
needsUpdate |= cursorTop(cur);
needsUpdate |= cur.selHandle(true);
needsUpdate |= cursorBottom(cur);
} else
cur.undispatched();
cur.updateFlags(Update::FitCursor);
break;
case LFUN_CHAR_FORWARD:
case LFUN_CHAR_FORWARD_SELECT:
//LYXERR0(" LFUN_CHAR_FORWARD[SEL]:\n" << cur);
@ -2673,6 +2685,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
case LFUN_INSET_END:
case LFUN_INSET_BEGIN_SELECT:
case LFUN_INSET_END_SELECT:
case LFUN_INSET_SELECT_ALL:
case LFUN_UNICODE_INSERT:
// these are handled in our dispatch()
enable = true;