Added an overload to getline to allow an offset from the beginning of the line.

Added a clear undo method.
Added an overload to selected to get the selected bounds.
This commit is contained in:
PeterAddy960 2016-10-28 00:17:59 -05:00
parent 78c3527f10
commit 8e84383a7b
2 changed files with 40 additions and 1 deletions

View File

@ -1427,7 +1427,8 @@ namespace nana{ namespace widgets
_handle_move_key(arg); _handle_move_key(arg);
break; break;
case keyboard::os_del: case keyboard::os_del:
if (this->attr().editable) // send delete to set_accept function
if (this->attr().editable && (!attributes_.pred_acceptive || attributes_.pred_acceptive(key)))
del(); del();
break; break;
default: default:
@ -1916,6 +1917,13 @@ namespace nana{ namespace widgets
return (select_.a != select_.b); return (select_.a != select_.b);
} }
bool text_editor::selected(nana::upoint &a,nana::upoint &b) const
{
a = select_.a;
b = select_.b;
return selected();
}
void text_editor::set_end_caret() void text_editor::set_end_caret()
{ {
bool new_sel_end = (select_.b != points_.caret); bool new_sel_end = (select_.b != points_.caret);

View File

@ -318,6 +318,25 @@ namespace drawerbase {
return false; return false;
} }
bool textbox::getline(std::size_t line_index,std::size_t start_point,std::string& text) const
{
internal_scope_guard lock;
auto editor = get_drawer_trigger().editor();
if(editor)
{
std::wstring line_text;
if(editor->getline(line_index,line_text))
{
if(line_text.length() >= start_point)
{
text = to_utf8(line_text.substr(start_point));
return true;
}
}
}
return false;
}
/// Gets the caret position /// Gets the caret position
bool textbox::caret_pos(point& pos, bool text_coordinate) const bool textbox::caret_pos(point& pos, bool text_coordinate) const
{ {
@ -451,6 +470,13 @@ namespace drawerbase {
return (editor ? editor->selected() : false); return (editor ? editor->selected() : false);
} }
bool textbox::selected(nana::upoint &a,nana::upoint &b) const
{
internal_scope_guard lock;
auto editor = get_drawer_trigger().editor();
return (editor ? editor->selected(a,b) : false);
}
void textbox::select(bool yes) void textbox::select(bool yes)
{ {
internal_scope_guard lock; internal_scope_guard lock;
@ -517,6 +543,11 @@ namespace drawerbase {
return *this; return *this;
} }
void textbox::clear_undo()
{
get_drawer_trigger().editor()->clear_undo();
}
void textbox::set_highlight(const std::string& name, const ::nana::color& fgcolor, const ::nana::color& bgcolor) void textbox::set_highlight(const std::string& name, const ::nana::color& fgcolor, const ::nana::color& bgcolor)
{ {
internal_scope_guard lock; internal_scope_guard lock;