diff --git a/include/nana/gui/widgets/listbox.hpp b/include/nana/gui/widgets/listbox.hpp index 7d64db42..74bf335a 100644 --- a/include/nana/gui/widgets/listbox.hpp +++ b/include/nana/gui/widgets/listbox.hpp @@ -1179,6 +1179,8 @@ namespace nana color_proxy item_selected{ static_cast(0xD5EFFC) }; color_proxy item_highlighted{ static_cast(0xD5EFFC) }; + color_proxy selection_box{ static_cast(0x3399FF) }; ///< Color of selection box border. + /// The max column width which is generated by fit_content is allowed. It is ignored when it is 0, or a max value is passed to fit_content. unsigned max_fit_content{ 0 }; diff --git a/source/gui/widgets/listbox.cpp b/source/gui/widgets/listbox.cpp index 33006c31..6beb60e2 100644 --- a/source/gui/widgets/listbox.cpp +++ b/source/gui/widgets/listbox.cpp @@ -107,6 +107,7 @@ namespace nana events_.hover_outside(curs); API::refresh_window(window_handle_); + this->sync(false); } else tmr_.stop(); @@ -3904,22 +3905,20 @@ namespace nana //Check if the mouse selection box is present. if (essence_->mouse_selection.begin_position != essence_->mouse_selection.end_position) { - rectangle box{ - point{ - std::min(essence_->mouse_selection.begin_position.x, essence_->mouse_selection.end_position.x), - std::min(essence_->mouse_selection.begin_position.y, essence_->mouse_selection.end_position.y) - }, - size{ + point box_position{ + std::min(essence_->mouse_selection.begin_position.x, essence_->mouse_selection.end_position.x), + std::min(essence_->mouse_selection.begin_position.y, essence_->mouse_selection.end_position.y) + }; + size box_size{ static_cast(std::abs(essence_->mouse_selection.begin_position.x - essence_->mouse_selection.end_position.x)), static_cast(std::abs(essence_->mouse_selection.begin_position.y - essence_->mouse_selection.end_position.y)) - } }; - box.position(essence_->coordinate_cast(box.position(), false)); + paint::graphics box_graph{ box_size }; + box_graph.rectangle(true, essence_->scheme_ptr->selection_box.get_color().blend(colors::white, 0.6)); + box_graph.rectangle(false, essence_->scheme_ptr->selection_box.get_color()); - rectangle visual_box; - if(overlap(box, rect, visual_box)) - essence_->graph->rectangle(visual_box, false, colors::blue); + box_graph.blend(rectangle{ box_size }, *essence_->graph, essence_->coordinate_cast(box_position, false), 0.5); } } private: