fix a selection text issue of text_editor with pressing shift

This commit is contained in:
Jinhao
2015-11-16 01:20:59 +08:00
parent d3865fab63
commit a4258d3884
3 changed files with 9 additions and 11 deletions

View File

@@ -77,8 +77,8 @@ namespace nana
start_of_headline = 0x1, //Ctrl+A start_of_headline = 0x1, //Ctrl+A
end_of_text = 0x3, //Ctrl+C end_of_text = 0x3, //Ctrl+C
backspace = 0x8, tab = 0x9, backspace = 0x8, tab = 0x9,
enter_n = 0xA, enter = 0xD, enter_r = 0xD,
alt = 0x12, alt = 0x12,
enter_n = 0xA, enter = 0xD, enter_r = 0xD,
sync_idel = 0x16, //Ctrl+V sync_idel = 0x16, //Ctrl+V
cancel = 0x18, //Ctrl+X cancel = 0x18, //Ctrl+X
end_of_medium = 0x19, //Ctrl+Y end_of_medium = 0x19, //Ctrl+Y
@@ -95,6 +95,8 @@ namespace nana
undo = substitute, undo = substitute,
//System Code for OS //System Code for OS
os_shift = 0x10,
os_ctrl = 0x11,
os_pageup = 0x21, os_pagedown, os_pageup = 0x21, os_pagedown,
os_arrow_left = 0x25, os_arrow_up, os_arrow_right, os_arrow_down, os_arrow_left = 0x25, os_arrow_up, os_arrow_right, os_arrow_down,
os_insert = 0x2D, os_del , os_insert = 0x2D, os_del ,

View File

@@ -596,9 +596,9 @@ namespace detail
case XK_Delete: case XK_Delete:
keysym = keyboard::os_del; break; keysym = keyboard::os_del; break;
case XK_Shift_L: case XK_Shift_R: //shift case XK_Shift_L: case XK_Shift_R: //shift
keysym = 0x10; break; keysym = keyboard::os_shift; break;
case XK_Control_L: case XK_Control_R: //ctrl case XK_Control_L: case XK_Control_R: //ctrl
keysym = 0x11; break; keysym = keyboard::os_ctrl; break;
default: default:
do do
{ {
@@ -1064,7 +1064,7 @@ namespace detail
} }
else else
{ {
if(0x11 == os_code) if(keyboard::os_ctrl == os_code)
context.is_ctrl_pressed = true; context.is_ctrl_pressed = true;
arg_keyboard arg; arg_keyboard arg;

View File

@@ -1421,12 +1421,6 @@ namespace nana{ namespace widgets
char_type key = arg.key; char_type key = arg.key;
switch (key) switch (key)
{ {
#if 0
case keyboard::os_arrow_left: move_left(); break;
case keyboard::os_arrow_right: move_right(); break;
case keyboard::os_arrow_up: move_ns(true); break;
case keyboard::os_arrow_down: move_ns(false); break;
#else
case keyboard::os_arrow_left: case keyboard::os_arrow_left:
case keyboard::os_arrow_right: case keyboard::os_arrow_right:
case keyboard::os_arrow_up: case keyboard::os_arrow_up:
@@ -1437,7 +1431,6 @@ namespace nana{ namespace widgets
case keyboard::os_pagedown: case keyboard::os_pagedown:
_handle_move_key(arg); _handle_move_key(arg);
break; break;
#endif
case keyboard::os_del: case keyboard::os_del:
if (this->attr().editable) if (this->attr().editable)
del(); del();
@@ -2328,6 +2321,9 @@ namespace nana{ namespace widgets
void text_editor::_handle_move_key(const arg_keyboard& arg) void text_editor::_handle_move_key(const arg_keyboard& arg)
{ {
if (arg.shift && (select_.a == select_.b))
select_.a = select_.b = points_.caret;
bool changed = false; bool changed = false;
nana::upoint caret = points_.caret; nana::upoint caret = points_.caret;
char_t key = arg.key; char_t key = arg.key;