diff --git a/include/msksheet.cpp b/include/msksheet.cpp index 01ff1724e..6578cd329 100755 --- a/include/msksheet.cpp +++ b/include/msksheet.cpp @@ -8,6 +8,7 @@ const short FIRST_FIELD = 101; #include #include +#include /////////////////////////////////////////////////////////// // TSpreadsheet @@ -633,7 +634,10 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev) _check_enabled = FALSE; const int oldrec = _cur_rec; - set_pos(xiev->v.xi_obj->v.cell.row, xiev->v.xi_obj->v.cell.column); + if ( xiev->v.xi_obj != NULL ) + { + set_pos(xiev->v.xi_obj->v.cell.row, xiev->v.xi_obj->v.cell.column); + }; if (oldrec != _cur_rec || !_row_dirty) { @@ -774,6 +778,11 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev) const KEY k = e_char_to_key(ep); switch(k) { + case K_ROWEDIT: + xiev->type = XIE_DBL_CELL; + xiev->v.xi_obj = NULL; + list_handler( xiev ); + break; case K_TAB: case K_BTAB: _lastab = k; @@ -1618,7 +1627,19 @@ bool TSheet_field::on_key(KEY k) { if (!test_focus_change()) return FALSE; - } + }; + if (k == K_ROWEDIT ) + { + if ( items( ) ) + { + _sheet->select( _sheet->items( ) - 1 ); + XI_EVENT xie; + xie.type = XIE_DBL_CELL; + xie.v.xi_obj = NULL; + _sheet->list_handler( &xie ); + return TRUE; + } + }; return TMask_field::on_key(k); } diff --git a/include/msksheet.h b/include/msksheet.h index 2ac221236..0cf618cd2 100755 --- a/include/msksheet.h +++ b/include/msksheet.h @@ -5,6 +5,8 @@ #include #endif +#define K_ROWEDIT ( K_CTRL + 'I' ) + class TSheet_field; class TSpreadsheet;