code review
This commit is contained in:
parent
9f2d830cc5
commit
16c93537c9
@ -16,7 +16,7 @@
|
||||
#include <vector>
|
||||
#include "general_events.hpp"
|
||||
#include <nana/paint/graphics.hpp>
|
||||
#include <nana/paint/image.hpp>
|
||||
//#include <nana/paint/image.hpp> //deprecated
|
||||
#include <functional>
|
||||
|
||||
namespace nana
|
||||
|
||||
@ -185,7 +185,7 @@ namespace nana
|
||||
public:
|
||||
trigger();
|
||||
~trigger();
|
||||
essence_t& essence();
|
||||
//essence_t& essence(); //deprecated
|
||||
essence_t& essence() const;
|
||||
void draw();
|
||||
private:
|
||||
@ -618,7 +618,7 @@ By \a clicking on one header the list get \a reordered, first up, and then down
|
||||
{
|
||||
typedef typename nana::detail::type_escape<Key>::type key_t;
|
||||
nana::key<key_t, std::less<key_t> > key(kv);
|
||||
_m_ease_key(&key);
|
||||
_m_erase_key(&key);
|
||||
}
|
||||
|
||||
template<typename Key>
|
||||
@ -626,7 +626,7 @@ By \a clicking on one header the list get \a reordered, first up, and then down
|
||||
{
|
||||
typedef typename nana::detail::type_escape<Key>::type key_t;
|
||||
nana::key<key_t, std::less<key_t> > key(std::move(kv));
|
||||
_m_ease_key(&key);
|
||||
_m_erase_key(&key);
|
||||
}
|
||||
|
||||
bool sortable() const;
|
||||
@ -661,7 +661,7 @@ By \a clicking on one header the list get \a reordered, first up, and then down
|
||||
drawerbase::listbox::essence_t & _m_ess() const;
|
||||
nana::any* _m_anyobj(size_type cat, size_type index, bool allocate_if_empty) const;
|
||||
drawerbase::listbox::category_t* _m_at_key(std::shared_ptr<nana::detail::key_interface>);
|
||||
void _m_ease_key(nana::detail::key_interface*);
|
||||
void _m_erase_key(nana::detail::key_interface*);
|
||||
};
|
||||
|
||||
namespace dev
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
|
||||
#include <nana/gui/widgets/listbox.hpp>
|
||||
#include <nana/gui/widgets/scroll.hpp>
|
||||
#include <nana/gui/widgets/panel.hpp>
|
||||
#include <nana/gui/widgets/panel.hpp> //for inline widget
|
||||
|
||||
#include <nana/gui/layout_utility.hpp>
|
||||
#include <nana/gui/element.hpp>
|
||||
@ -438,11 +438,13 @@ namespace nana
|
||||
return pixels;
|
||||
}
|
||||
|
||||
/*
|
||||
/// return the original order or index previous to any list reorganization of the current column "n".
|
||||
size_type index(size_type n) const
|
||||
size_type index(size_type n) const //deprecated
|
||||
{
|
||||
return (n < cont_.size() ? cont_[n].index : npos);
|
||||
}
|
||||
*/
|
||||
|
||||
const container& cont() const
|
||||
{
|
||||
@ -539,23 +541,43 @@ namespace nana
|
||||
return npos;
|
||||
}
|
||||
/// move the col originaly at index to the position currently in front (or after) the col originaly at index "to" invalidating some current index
|
||||
void move(size_type index, size_type to, bool front)
|
||||
void move(size_type index, size_type to, bool front) throw()
|
||||
{
|
||||
if(index == to) return;
|
||||
if(index >= cont_.size()) return;
|
||||
if(to >= cont_.size()) return;
|
||||
|
||||
auto i = std::find_if(cont_.begin(), cont_.end(), [index](container::value_type& m){return (index == m.index);});
|
||||
for (auto i = cont_.begin(); i != cont_.end(); ++i)
|
||||
{
|
||||
if (index == i->index)
|
||||
{
|
||||
column_t from = std::move(*i);
|
||||
cont_.erase(i);
|
||||
|
||||
for (auto u = cont_.begin(); u != cont_.end(); ++u)
|
||||
{
|
||||
if (to == u->index)
|
||||
{
|
||||
cont_.insert(front ? u : ++u, from);
|
||||
return;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
/*
|
||||
auto i = std::find_if(cont_.begin(), cont_.end(), [index](container::value_type& m){return (index == m.index);}); //deprecated
|
||||
|
||||
if (i == cont_.end())
|
||||
return;
|
||||
|
||||
auto from = *i; // a temp copy
|
||||
column_t from = std::move(*i); //move
|
||||
cont_.erase(i);
|
||||
|
||||
i = std::find_if(cont_.begin(), cont_.end(), [to](const container::value_type& m)->bool{ return (to == m.index); } );
|
||||
if(i != cont_.end())
|
||||
cont_.insert((front ? i : ++i), from);
|
||||
*/
|
||||
}
|
||||
private:
|
||||
bool visible_{true};
|
||||
@ -842,8 +864,9 @@ namespace nana
|
||||
|
||||
bool active_sort(bool resort)
|
||||
{
|
||||
std::swap(resort, resort_);
|
||||
return resort;
|
||||
bool prstatus = resort;
|
||||
resort_ = resort;
|
||||
return prstatus;
|
||||
}
|
||||
|
||||
bool sort_reverse() const
|
||||
@ -2015,12 +2038,14 @@ namespace nana
|
||||
trace_item_abs(lister.last_selected_abs);
|
||||
}
|
||||
|
||||
void trace_first_selected_item()
|
||||
/*
|
||||
void trace_first_selected_item() //deprecated
|
||||
{
|
||||
auto fs=lister.find_first_selected();
|
||||
if( ! fs.empty() )
|
||||
trace_item_abs( fs );
|
||||
}
|
||||
*/
|
||||
|
||||
void update()
|
||||
{
|
||||
@ -2597,11 +2622,11 @@ namespace nana
|
||||
{
|
||||
const auto& item = essence_->header.column(item_spliter_);
|
||||
//Resize the item specified by item_spliter_.
|
||||
int new_w = orig_item_width_ - (ref_xpos_ - pos.x);
|
||||
auto new_w = orig_item_width_ - (ref_xpos_ - pos.x);
|
||||
if(static_cast<int>(item.pixels) != new_w)
|
||||
{
|
||||
essence_->header.item_width(item_spliter_, (new_w < static_cast<int>(essence_->suspension_width + 20) ? essence_->suspension_width + 20 : new_w));
|
||||
auto new_w = essence_->header.pixels();
|
||||
new_w = essence_->header.pixels();
|
||||
if(new_w < (rect.width + essence_->scroll.offset_x))
|
||||
essence_->scroll.offset_x = (new_w > rect.width ? new_w - rect.width : 0);
|
||||
|
||||
@ -2614,7 +2639,41 @@ namespace nana
|
||||
|
||||
void draw(const nana::rectangle& r)
|
||||
{
|
||||
_m_draw(essence_->header.cont(), r);
|
||||
//_m_draw(essence_->header.cont(), r); //deprecated
|
||||
|
||||
graph_reference graph = *(essence_->graph);
|
||||
|
||||
int text_top = (r.height - essence_->text_height) / 2 + r.y;
|
||||
auto text_color = essence_->lister.wd_ptr()->fgcolor();
|
||||
|
||||
auto state = item_state::normal;
|
||||
//check whether grabing an item, if item_spliter_ != npos, that indicates the grab item is a spliter.
|
||||
if (essence_->pointer_where.first == parts::header && (item_spliter_ == npos))
|
||||
state = essence_->ptr_state;
|
||||
|
||||
const unsigned height = r.height - 1;
|
||||
const int bottom_y = r.bottom() - 2;
|
||||
int x = r.x - essence_->scroll.offset_x;
|
||||
|
||||
for (auto & i : essence_->header.cont())
|
||||
{
|
||||
if (i.visible)
|
||||
{
|
||||
int next_x = x + static_cast<int>(i.pixels);
|
||||
if (next_x > r.x)
|
||||
{
|
||||
_m_draw_header_item(graph, x, r.y, height, text_top, text_color, i, (i.index == essence_->pointer_where.second ? state : item_state::normal));
|
||||
graph.line({ next_x - 1, r.y }, { next_x - 1, bottom_y }, _m_border_color());
|
||||
}
|
||||
|
||||
x = next_x;
|
||||
if (x > r.right())
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (x < r.right())
|
||||
graph.rectangle({ x, r.y, static_cast<unsigned>(r.right() - x), height }, true, essence_->scheme_ptr->header_bgcolor);
|
||||
|
||||
const int y = r.y + r.height - 1;
|
||||
essence_->graph->line({ r.x, y }, { r.x + static_cast<int>(r.width), y }, _m_border_color());
|
||||
@ -2657,9 +2716,9 @@ namespace nana
|
||||
}
|
||||
return npos;
|
||||
}
|
||||
|
||||
/*
|
||||
template<typename Container>
|
||||
void _m_draw(const Container& cont, const nana::rectangle& rect)
|
||||
void _m_draw(const Container& cont, const nana::rectangle& rect) //deprecated
|
||||
{
|
||||
graph_reference graph = *(essence_->graph);
|
||||
|
||||
@ -2694,6 +2753,7 @@ namespace nana
|
||||
if (x < rect.right())
|
||||
graph.rectangle({ x, rect.y, static_cast<unsigned>(rect.right() - x), height }, true, essence_->scheme_ptr->header_bgcolor);
|
||||
}
|
||||
*/
|
||||
|
||||
template<typename Item>
|
||||
void _m_draw_header_item(graph_reference graph, int x, int y, unsigned height, int txtop, const ::nana::color& fgcolor, const Item& item, item_state state)
|
||||
@ -3166,10 +3226,12 @@ namespace nana
|
||||
delete essence_;
|
||||
}
|
||||
|
||||
essence_t& trigger::essence()
|
||||
/*
|
||||
essence_t& trigger::essence() //deprecated
|
||||
{
|
||||
return *essence_;
|
||||
}
|
||||
*/
|
||||
|
||||
essence_t& trigger::essence() const
|
||||
{
|
||||
@ -3513,10 +3575,8 @@ namespace nana
|
||||
case keyboard::os_arrow_up:
|
||||
up = true;
|
||||
case keyboard::os_arrow_down:
|
||||
// move_select(bool upwards=true, bool unselect_previous=true, bool trace_selected=false)
|
||||
essence_->lister.move_select(up, !arg.shift, true);
|
||||
break;
|
||||
|
||||
case STR(' ') :
|
||||
{
|
||||
selection s;
|
||||
@ -4501,7 +4561,7 @@ namespace nana
|
||||
return cat;
|
||||
}
|
||||
|
||||
void listbox::_m_ease_key(nana::detail::key_interface* p)
|
||||
void listbox::_m_erase_key(nana::detail::key_interface* p)
|
||||
{
|
||||
auto & cont = _m_ess().lister.cat_container();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user