[DEV] WSlider list correction ==> might be rewrite with correct refs
This commit is contained in:
parent
e6a5c9c85f
commit
49c3036080
@ -63,47 +63,47 @@ void ewol::widget::WSlider::calculateSize(const vec2& _availlable) {
|
|||||||
ewol::widget::ContainerN::calculateSize(_availlable);
|
ewol::widget::ContainerN::calculateSize(_availlable);
|
||||||
|
|
||||||
if (m_windowsDestination == m_windowsSources) {
|
if (m_windowsDestination == m_windowsSources) {
|
||||||
int32_t iii = m_windowsDestination;
|
auto it = m_subWidget.begin();
|
||||||
if (iii < (int32_t)m_subWidget.size()) {
|
std::advance(it, m_windowsDestination);
|
||||||
if (nullptr != m_subWidget[iii]) {
|
if ( it != m_subWidget.end()
|
||||||
m_subWidget[iii]->setOrigin(m_origin+m_offset);
|
&& *it != nullptr) {
|
||||||
m_subWidget[iii]->calculateSize(m_size);
|
(*it)->setOrigin(m_origin+m_offset);
|
||||||
}
|
(*it)->calculateSize(m_size);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
float factor = -1.0f;
|
float factor = -1.0f;
|
||||||
if (m_windowsSources < m_windowsDestination) {
|
if (m_windowsSources < m_windowsDestination) {
|
||||||
factor = 1.0f;
|
factor = 1.0f;
|
||||||
}
|
}
|
||||||
int32_t iii = m_windowsSources;
|
auto it = m_subWidget.begin();
|
||||||
if (iii < (int32_t)m_subWidget.size()) {
|
std::advance(it, m_windowsSources);
|
||||||
if (nullptr != m_subWidget[iii]) {
|
if ( it != m_subWidget.end()
|
||||||
|
&& *it != nullptr) {
|
||||||
if (m_transitionSlide == sladingTransitionHori) {
|
if (m_transitionSlide == sladingTransitionHori) {
|
||||||
m_subWidget[iii]->setOrigin( vec2(m_origin.x() + factor*(m_size.x()*m_slidingProgress),
|
(*it)->setOrigin( vec2(m_origin.x() + factor*(m_size.x()*m_slidingProgress),
|
||||||
m_origin.y())
|
m_origin.y())
|
||||||
+ m_offset);
|
+ m_offset);
|
||||||
} else {
|
} else {
|
||||||
m_subWidget[iii]->setOrigin( vec2(m_origin.x(),
|
(*it)->setOrigin( vec2(m_origin.x(),
|
||||||
m_origin.y() + factor*(m_size.y()*m_slidingProgress))
|
m_origin.y() + factor*(m_size.y()*m_slidingProgress))
|
||||||
+ m_offset);
|
+ m_offset);
|
||||||
}
|
}
|
||||||
m_subWidget[iii]->calculateSize(m_size);
|
(*it)->calculateSize(m_size);
|
||||||
}
|
}
|
||||||
}
|
it = m_subWidget.begin();
|
||||||
iii = m_windowsDestination;
|
std::advance(it, m_windowsDestination);
|
||||||
if (iii < (int32_t)m_subWidget.size()) {
|
if ( it != m_subWidget.end()
|
||||||
if (nullptr != m_subWidget[iii]) {
|
&& *it != nullptr) {
|
||||||
if (m_transitionSlide == sladingTransitionHori) {
|
if (m_transitionSlide == sladingTransitionHori) {
|
||||||
m_subWidget[iii]->setOrigin( vec2(m_origin.x() + factor*(m_size.x()*m_slidingProgress - m_size.x()),
|
(*it)->setOrigin( vec2(m_origin.x() + factor*(m_size.x()*m_slidingProgress - m_size.x()),
|
||||||
m_origin.y())
|
m_origin.y())
|
||||||
+ m_offset);
|
+ m_offset);
|
||||||
} else {
|
} else {
|
||||||
m_subWidget[iii]->setOrigin( vec2(m_origin.x(),
|
(*it)->setOrigin( vec2(m_origin.x(),
|
||||||
m_origin.y() + factor*(m_size.y()*m_slidingProgress - m_size.y()))
|
m_origin.y() + factor*(m_size.y()*m_slidingProgress - m_size.y()))
|
||||||
+ m_offset);
|
+ m_offset);
|
||||||
}
|
}
|
||||||
m_subWidget[iii]->calculateSize(m_size);
|
(*it)->calculateSize(m_size);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
markToRedraw();
|
markToRedraw();
|
||||||
@ -123,31 +123,36 @@ void ewol::widget::WSlider::subWidgetSelectSetVectorId(int32_t _id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ewol::widget::WSlider::subWidgetSelectSet(int32_t _id) {
|
void ewol::widget::WSlider::subWidgetSelectSet(int32_t _id) {
|
||||||
int32_t elementID = -1;
|
int32_t elementID = 0;
|
||||||
// search element in the list :
|
// search element in the list :
|
||||||
for (size_t iii=0 ; iii<m_subWidget.size() ; iii++) {
|
for (auto it : m_subWidget) {
|
||||||
if (m_subWidget[iii] != nullptr) {
|
elementID ++;
|
||||||
if (m_subWidget[iii]->getId() == _id) {
|
if (it != nullptr) {
|
||||||
elementID = iii;
|
if (it->getId() == _id) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (elementID < m_subWidget.size()) {
|
||||||
subWidgetSelectSetVectorId(elementID);
|
subWidgetSelectSetVectorId(elementID);
|
||||||
|
} else {
|
||||||
|
subWidgetSelectSetVectorId(-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ewol::widget::WSlider::subWidgetSelectSet(ewol::object::Shared<ewol::Widget> _widgetPointer) {
|
void ewol::widget::WSlider::subWidgetSelectSet(const ewol::object::Shared<ewol::Widget>& _widgetPointer) {
|
||||||
if (_widgetPointer == nullptr) {
|
if (_widgetPointer == nullptr) {
|
||||||
EWOL_ERROR("Can not change to a widget nullptr");
|
EWOL_ERROR("Can not change to a widget nullptr");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (size_t iii=0; iii<m_subWidget.size(); iii++) {
|
int32_t iii = 0;
|
||||||
if (m_subWidget[iii] != nullptr) {
|
for (auto it : m_subWidget) {
|
||||||
if (m_subWidget[iii] == _widgetPointer) {
|
if ( it != nullptr
|
||||||
|
&& it == _widgetPointer) {
|
||||||
subWidgetSelectSetVectorId(iii);
|
subWidgetSelectSetVectorId(iii);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
iii++;
|
||||||
}
|
}
|
||||||
EWOL_ERROR("Can not change to a widget not present");
|
EWOL_ERROR("Can not change to a widget not present");
|
||||||
}
|
}
|
||||||
@ -157,13 +162,14 @@ void ewol::widget::WSlider::subWidgetSelectSet(const std::string& _widgetName) {
|
|||||||
EWOL_ERROR("Can not change to a widget with no name (input)");
|
EWOL_ERROR("Can not change to a widget with no name (input)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (size_t iii=0; iii<m_subWidget.size(); iii++) {
|
int32_t iii = 0;
|
||||||
if (m_subWidget[iii] != nullptr) {
|
for (auto it : m_subWidget) {
|
||||||
if (m_subWidget[iii]->getName() == _widgetName) {
|
if ( it != nullptr
|
||||||
|
&& it->getName() == _widgetName) {
|
||||||
subWidgetSelectSetVectorId(iii);
|
subWidgetSelectSetVectorId(iii);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
iii++;
|
||||||
}
|
}
|
||||||
EWOL_ERROR("Can not change to a widget not present");
|
EWOL_ERROR("Can not change to a widget not present");
|
||||||
}
|
}
|
||||||
@ -222,51 +228,51 @@ void ewol::widget::WSlider::systemDraw(const ewol::DrawProperty& _displayProp) {
|
|||||||
|
|
||||||
if (m_windowsDestination == m_windowsSources) {
|
if (m_windowsDestination == m_windowsSources) {
|
||||||
//EWOL_DEBUG("Draw : " << m_windowsDestination);
|
//EWOL_DEBUG("Draw : " << m_windowsDestination);
|
||||||
int32_t iii = m_windowsDestination;
|
auto it = m_subWidget.begin();
|
||||||
if (iii >= 0 || (size_t)iii < m_subWidget.size()) {
|
std::advance(it, m_windowsDestination);
|
||||||
if (nullptr != m_subWidget[iii]) {
|
if ( it != m_subWidget.end()
|
||||||
m_subWidget[iii]->systemDraw(prop);
|
&& *it != nullptr) {
|
||||||
}
|
(*it)->systemDraw(prop);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//EWOL_DEBUG("Draw : " << m_windowsSources << "=>" << m_windowsDestination << "progress=" << ((float)m_slidingProgress/1000.) );
|
//EWOL_DEBUG("Draw : " << m_windowsSources << "=>" << m_windowsDestination << "progress=" << ((float)m_slidingProgress/1000.) );
|
||||||
// draw Sources :
|
// draw Sources :
|
||||||
int32_t iii = m_windowsSources;
|
auto it = m_subWidget.begin();
|
||||||
if (iii >= 0 || (size_t)iii < m_subWidget.size()) {
|
std::advance(it, m_windowsSources);
|
||||||
if (nullptr != m_subWidget[iii]) {
|
if ( it != m_subWidget.end()
|
||||||
m_subWidget[iii]->systemDraw(prop);
|
&& *it != nullptr) {
|
||||||
}
|
(*it)->systemDraw(prop);
|
||||||
}
|
}
|
||||||
// draw Destination :
|
// draw Destination :
|
||||||
iii = m_windowsDestination;
|
it = m_subWidget.begin();
|
||||||
if (iii >= 0 || (size_t)iii < m_subWidget.size()) {
|
std::advance(it, m_windowsDestination);
|
||||||
if (nullptr != m_subWidget[iii]) {
|
if ( it != m_subWidget.end()
|
||||||
m_subWidget[iii]->systemDraw(prop);
|
&& *it != nullptr) {
|
||||||
}
|
(*it)->systemDraw(prop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ewol::widget::WSlider::onRegenerateDisplay() {
|
void ewol::widget::WSlider::onRegenerateDisplay() {
|
||||||
if (m_windowsDestination == m_windowsSources) {
|
if (m_windowsDestination == m_windowsSources) {
|
||||||
int32_t iii = m_windowsDestination;
|
auto it = m_subWidget.begin();
|
||||||
if (iii >= 0 || (size_t)iii < m_subWidget.size()) {
|
std::advance(it, m_windowsDestination);
|
||||||
if (nullptr != m_subWidget[iii]) {
|
if ( it != m_subWidget.end()
|
||||||
m_subWidget[iii]->onRegenerateDisplay();
|
&& *it != nullptr) {
|
||||||
}
|
(*it)->onRegenerateDisplay();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int32_t iii = m_windowsSources;
|
auto it = m_subWidget.begin();
|
||||||
if (iii >= 0 || (size_t)iii < m_subWidget.size()) {
|
std::advance(it, m_windowsSources);
|
||||||
if (nullptr != m_subWidget[iii]) {
|
if ( it != m_subWidget.end()
|
||||||
m_subWidget[iii]->onRegenerateDisplay();
|
&& *it != nullptr) {
|
||||||
}
|
(*it)->onRegenerateDisplay();
|
||||||
}
|
|
||||||
iii = m_windowsDestination;
|
|
||||||
if (iii >= 0 || (size_t)iii < m_subWidget.size()) {
|
|
||||||
if (nullptr != m_subWidget[iii]) {
|
|
||||||
m_subWidget[iii]->onRegenerateDisplay();
|
|
||||||
}
|
}
|
||||||
|
it = m_subWidget.begin();
|
||||||
|
std::advance(it, m_windowsDestination);
|
||||||
|
if ( it != m_subWidget.end()
|
||||||
|
&& *it != nullptr) {
|
||||||
|
(*it)->onRegenerateDisplay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -320,13 +326,16 @@ ewol::object::Shared<ewol::Widget> ewol::widget::WSlider::getWidgetAtPos(const v
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
if (m_windowsDestination == m_windowsSources) {
|
if (m_windowsDestination == m_windowsSources) {
|
||||||
if (m_windowsDestination < (int64_t)m_subWidget.size()) {
|
auto it = m_subWidget.begin();
|
||||||
vec2 tmpSize = m_subWidget[m_windowsDestination]->getSize();
|
std::advance(it, m_windowsDestination);
|
||||||
vec2 tmpOrigin = m_subWidget[m_windowsDestination]->getOrigin();
|
if ( it != m_subWidget.end()
|
||||||
|
&& *it != nullptr) {
|
||||||
|
vec2 tmpSize = (*it)->getSize();
|
||||||
|
vec2 tmpOrigin = (*it)->getOrigin();
|
||||||
if( (tmpOrigin.x() <= _pos.x() && tmpOrigin.x() + tmpSize.x() >= _pos.x())
|
if( (tmpOrigin.x() <= _pos.x() && tmpOrigin.x() + tmpSize.x() >= _pos.x())
|
||||||
&& (tmpOrigin.y() <= _pos.y() && tmpOrigin.y() + tmpSize.y() >= _pos.y()) )
|
&& (tmpOrigin.y() <= _pos.y() && tmpOrigin.y() + tmpSize.y() >= _pos.y()) )
|
||||||
{
|
{
|
||||||
ewol::object::Shared<ewol::Widget> tmpWidget = m_subWidget[m_windowsDestination]->getWidgetAtPos(_pos);
|
ewol::object::Shared<ewol::Widget> tmpWidget = (*it)->getWidgetAtPos(_pos);
|
||||||
if (nullptr != tmpWidget) {
|
if (nullptr != tmpWidget) {
|
||||||
return tmpWidget;
|
return tmpWidget;
|
||||||
}
|
}
|
||||||
@ -334,26 +343,32 @@ ewol::object::Shared<ewol::Widget> ewol::widget::WSlider::getWidgetAtPos(const v
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (m_windowsDestination < (int64_t)m_subWidget.size()) {
|
auto it = m_subWidget.begin();
|
||||||
vec2 tmpSize = m_subWidget[m_windowsDestination]->getSize();
|
std::advance(it, m_windowsDestination);
|
||||||
vec2 tmpOrigin = m_subWidget[m_windowsDestination]->getOrigin();
|
if ( it != m_subWidget.end()
|
||||||
|
&& *it != nullptr) {
|
||||||
|
vec2 tmpSize = (*it)->getSize();
|
||||||
|
vec2 tmpOrigin = (*it)->getOrigin();
|
||||||
if( (tmpOrigin.x() <= _pos.x() && tmpOrigin.x() + tmpSize.x() >= _pos.x())
|
if( (tmpOrigin.x() <= _pos.x() && tmpOrigin.x() + tmpSize.x() >= _pos.x())
|
||||||
&& (tmpOrigin.y() <= _pos.y() && tmpOrigin.y() + tmpSize.y() >= _pos.y()) )
|
&& (tmpOrigin.y() <= _pos.y() && tmpOrigin.y() + tmpSize.y() >= _pos.y()) )
|
||||||
{
|
{
|
||||||
ewol::object::Shared<ewol::Widget> tmpWidget = m_subWidget[m_windowsDestination]->getWidgetAtPos(_pos);
|
ewol::object::Shared<ewol::Widget> tmpWidget = (*it)->getWidgetAtPos(_pos);
|
||||||
if (nullptr != tmpWidget) {
|
if (nullptr != tmpWidget) {
|
||||||
return tmpWidget;
|
return tmpWidget;
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_windowsSources < (int64_t)m_subWidget.size()) {
|
it = m_subWidget.begin();
|
||||||
vec2 tmpSize = m_subWidget[m_windowsSources]->getSize();
|
std::advance(it, m_windowsSources);
|
||||||
vec2 tmpOrigin = m_subWidget[m_windowsSources]->getOrigin();
|
if ( it != m_subWidget.end()
|
||||||
|
&& *it != nullptr) {
|
||||||
|
vec2 tmpSize = (*it)->getSize();
|
||||||
|
vec2 tmpOrigin = (*it)->getOrigin();
|
||||||
if( (tmpOrigin.x() <= _pos.x() && tmpOrigin.x() + tmpSize.x() >= _pos.x())
|
if( (tmpOrigin.x() <= _pos.x() && tmpOrigin.x() + tmpSize.x() >= _pos.x())
|
||||||
&& (tmpOrigin.y() <= _pos.y() && tmpOrigin.y() + tmpSize.y() >= _pos.y()) )
|
&& (tmpOrigin.y() <= _pos.y() && tmpOrigin.y() + tmpSize.y() >= _pos.y()) )
|
||||||
{
|
{
|
||||||
ewol::object::Shared<ewol::Widget> tmpWidget = m_subWidget[m_windowsSources]->getWidgetAtPos(_pos);
|
ewol::object::Shared<ewol::Widget> tmpWidget = (*it)->getWidgetAtPos(_pos);
|
||||||
if (nullptr != tmpWidget) {
|
if (nullptr != tmpWidget) {
|
||||||
return tmpWidget;
|
return tmpWidget;
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ namespace ewol {
|
|||||||
* @brief Select a new subwidget to display
|
* @brief Select a new subwidget to display
|
||||||
* @param[in] _widgetPointer Pointer on the widget selected (must be added before)
|
* @param[in] _widgetPointer Pointer on the widget selected (must be added before)
|
||||||
*/
|
*/
|
||||||
void subWidgetSelectSet(ewol::object::Shared<ewol::Widget> _widgetPointer);
|
void subWidgetSelectSet(const ewol::object::Shared<ewol::Widget>& _widgetPointer);
|
||||||
/**
|
/**
|
||||||
* @brief Select a new subwidget to display
|
* @brief Select a new subwidget to display
|
||||||
* @param[in] _widgetName Name of the subwidget name
|
* @param[in] _widgetName Name of the subwidget name
|
||||||
|
Loading…
x
Reference in New Issue
Block a user