fix a selection text issue of text_editor with pressing shift
This commit is contained in:
@@ -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 ,
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user