Textbox should select its contents when focus is set. the caret position is moved to end of a line in that case.
When textbox is not focused, its selection should not be drawn to make it look quiet.
This commit is contained in:
parent
4289446216
commit
9fc7d3e403
@ -2954,6 +2954,7 @@ namespace nana{ namespace widgets
|
|||||||
if (if_mask && mask_char_)
|
if (if_mask && mask_char_)
|
||||||
mask_str.reset(new nana::string(str.size(), mask_char_));
|
mask_str.reset(new nana::string(str.size(), mask_char_));
|
||||||
|
|
||||||
|
bool focused = API::is_focus_ready(window_); // do this many times is not efficient...
|
||||||
|
|
||||||
auto & linestr = (if_mask && mask_char_ ? *mask_str : str);
|
auto & linestr = (if_mask && mask_char_ ? *mask_str : str);
|
||||||
|
|
||||||
@ -2976,7 +2977,7 @@ namespace nana{ namespace widgets
|
|||||||
graph_.set_color(scheme_->selection.get_color());
|
graph_.set_color(scheme_->selection.get_color());
|
||||||
|
|
||||||
//The text is not selected or the whole line text is selected
|
//The text is not selected or the whole line text is selected
|
||||||
if ((!_m_get_sort_select_points(a, b)) || (select_.a.y != str_pos.y && select_.b.y != str_pos.y))
|
if (!focused || (!_m_get_sort_select_points(a, b)) || (select_.a.y != str_pos.y && select_.b.y != str_pos.y))
|
||||||
{
|
{
|
||||||
bool selected = (a.y < str_pos.y && str_pos.y < b.y);
|
bool selected = (a.y < str_pos.y && str_pos.y < b.y);
|
||||||
for (auto & ent : reordered)
|
for (auto & ent : reordered)
|
||||||
@ -2986,7 +2987,7 @@ namespace nana{ namespace widgets
|
|||||||
|
|
||||||
if ((text_pos.x + static_cast<int>(str_w) > text_area_.area.x) && (text_pos.x < xend))
|
if ((text_pos.x + static_cast<int>(str_w) > text_area_.area.x) && (text_pos.x < xend))
|
||||||
{
|
{
|
||||||
if (selected)
|
if (selected && focused)
|
||||||
{
|
{
|
||||||
graph_.set_text_color(scheme_->selection_text.get_color());
|
graph_.set_text_color(scheme_->selection_text.get_color());
|
||||||
graph_.rectangle({ text_pos, { str_w, line_h_pixels } }, true);
|
graph_.rectangle({ text_pos, { str_w, line_h_pixels } }, true);
|
||||||
|
|||||||
@ -89,7 +89,10 @@ namespace drawerbase {
|
|||||||
void drawer::focus(graph_reference graph, const arg_focus& arg)
|
void drawer::focus(graph_reference graph, const arg_focus& arg)
|
||||||
{
|
{
|
||||||
refresh(graph);
|
refresh(graph);
|
||||||
|
if (arg.getting) {
|
||||||
|
editor_->select(true);
|
||||||
|
editor_->move_caret_end();
|
||||||
|
}
|
||||||
editor_->show_caret(arg.getting);
|
editor_->show_caret(arg.getting);
|
||||||
editor_->reset_caret();
|
editor_->reset_caret();
|
||||||
API::lazy_refresh();
|
API::lazy_refresh();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user