fix inverted vertical slider(#82)
This commit is contained in:
@@ -151,6 +151,7 @@ namespace nana
|
|||||||
if(dir != attr_.dir)
|
if(dir != attr_.dir)
|
||||||
{
|
{
|
||||||
attr_.dir = dir;
|
attr_.dir = dir;
|
||||||
|
_m_mk_slider_pos_by_value();
|
||||||
this->draw();
|
this->draw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -425,7 +426,7 @@ namespace nana
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return pos;
|
return (pos < 0 ? 0 : pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
int _m_slider_refpos() const
|
int _m_slider_refpos() const
|
||||||
@@ -443,6 +444,12 @@ namespace nana
|
|||||||
if(_m_scale())
|
if(_m_scale())
|
||||||
{
|
{
|
||||||
auto cmpvalue = static_cast<int>(attr_.vcur);
|
auto cmpvalue = static_cast<int>(attr_.vcur);
|
||||||
|
if (style::vertical == attr_.dir)
|
||||||
|
{
|
||||||
|
double scl = _m_scale();
|
||||||
|
attr_.vcur = (scl - attr_.pos) * attr_.vmax / scl;
|
||||||
|
}
|
||||||
|
else
|
||||||
attr_.vcur = (attr_.pos * attr_.vmax / _m_scale());
|
attr_.vcur = (attr_.pos * attr_.vmax / _m_scale());
|
||||||
if (cmpvalue != static_cast<int>(attr_.vcur))
|
if (cmpvalue != static_cast<int>(attr_.vcur))
|
||||||
_m_emit_value_changed();
|
_m_emit_value_changed();
|
||||||
@@ -453,6 +460,9 @@ namespace nana
|
|||||||
{
|
{
|
||||||
attr_.pos = double(_m_scale()) * attr_.vcur / attr_.vmax;
|
attr_.pos = double(_m_scale()) * attr_.vcur / attr_.vmax;
|
||||||
|
|
||||||
|
if (style::vertical == attr_.dir)
|
||||||
|
attr_.pos = _m_scale() - attr_.pos;
|
||||||
|
|
||||||
if(slider_state_.trace == slider_state_.TraceNone)
|
if(slider_state_.trace == slider_state_.TraceNone)
|
||||||
attr_.adorn_pos = attr_.pos;
|
attr_.adorn_pos = attr_.pos;
|
||||||
}
|
}
|
||||||
@@ -480,8 +490,16 @@ namespace nana
|
|||||||
//adorn
|
//adorn
|
||||||
renderer::adorn_t adorn;
|
renderer::adorn_t adorn;
|
||||||
adorn.horizontal = bar.horizontal;
|
adorn.horizontal = bar.horizontal;
|
||||||
adorn.bound.x = (bar.horizontal ? bar.r.x : bar.r.y) + attr_.border;
|
if (adorn.horizontal)
|
||||||
|
{
|
||||||
|
adorn.bound.x = bar.r.x + attr_.border;
|
||||||
adorn.bound.y = adorn.bound.x + static_cast<int>(attr_.adorn_pos);
|
adorn.bound.y = adorn.bound.x + static_cast<int>(attr_.adorn_pos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
adorn.bound.y = static_cast<int>(other_.graph->height()) - static_cast<int>(attr_.border + bar.r.y);
|
||||||
|
adorn.bound.x = static_cast<int>(attr_.adorn_pos + attr_.border + bar.r.y);
|
||||||
|
}
|
||||||
adorn.vcur_scale = static_cast<unsigned>(attr_.pos);
|
adorn.vcur_scale = static_cast<unsigned>(attr_.pos);
|
||||||
adorn.block = (bar.horizontal ? bar.r.height : bar.r.width) - attr_.border * 2;
|
adorn.block = (bar.horizontal ? bar.r.height : bar.r.width) - attr_.border * 2;
|
||||||
adorn.fixedpos = static_cast<int>((bar.horizontal ? bar.r.y : bar.r.x) + attr_.border);
|
adorn.fixedpos = static_cast<int>((bar.horizontal ? bar.r.y : bar.r.x) + attr_.border);
|
||||||
|
|||||||
Reference in New Issue
Block a user