From dbe7585f8b647b4e315780403d06f072f1ba2de5 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Fri, 24 Jan 2014 00:55:12 +0100 Subject: [PATCH] [DEBUG] correct label display bug and new Container2 widget --- sources/ewol/widget/Button.cpp | 8 +-- sources/ewol/widget/Container2.cpp | 79 ++++++++++-------------------- sources/ewol/widget/ContainerN.cpp | 4 +- sources/ewol/widget/Label.cpp | 8 +-- 4 files changed, 35 insertions(+), 64 deletions(-) diff --git a/sources/ewol/widget/Button.cpp b/sources/ewol/widget/Button.cpp index 4fa1e34c..6f3baa35 100644 --- a/sources/ewol/widget/Button.cpp +++ b/sources/ewol/widget/Button.cpp @@ -89,12 +89,8 @@ void ewol::widget::Button::calculateSize(const vec2& _availlable) { vec2 padding = m_shaper.getPadding(); ewol::Padding ret = calculateSizePadded(_availlable, ewol::Padding(padding.x(), padding.y(), padding.x(), padding.y())); //EWOL_DEBUG(" configuring : origin=" << origin << " size=" << subElementSize << ""); - /* - m_selectableAreaSize = m_size;// - (padding*2.0f); - m_selectableAreaPos = vec2(0,0);//vec2(ret.xLeft(), ret.yButtom())-padding; - */ - m_selectableAreaSize = vec2(ret.xRight(), ret.yButtom()); - m_selectableAreaPos = vec2(ret.xLeft(), ret.yTop()); + m_selectableAreaPos = vec2(ret.xLeft(), ret.yButtom()); + m_selectableAreaSize = m_size - (m_selectableAreaPos + vec2(ret.xRight(), ret.yTop())); } diff --git a/sources/ewol/widget/Container2.cpp b/sources/ewol/widget/Container2.cpp index 73087440..793258eb 100644 --- a/sources/ewol/widget/Container2.cpp +++ b/sources/ewol/widget/Container2.cpp @@ -99,49 +99,9 @@ void ewol::widget::Container2::systemDraw(const ewol::DrawProperty& _displayProp } ewol::Padding ewol::widget::Container2::calculateSizePadded(const vec2& _availlable, const ewol::Padding& _padding) { - #if 1 vec2 localAvaillable = _availlable - vec2(_padding.x(), _padding.y()); - //ewol::Widget::calculateSize(_availlable); + ewol::Widget::calculateSize(_availlable); // set minimal size - m_size = m_minSize; - if (m_userExpand.x() == true) { - m_size.setX(_availlable.x()); - } - if (m_userExpand.y() == true) { - m_size.setY(_availlable.y()); - } - for (size_t iii = 0; iii < 2; ++iii) { - if (m_subWidget[iii] != NULL) { - vec2 origin = m_origin+m_offset; - vec2 minSize = m_subWidget[iii]->getCalculateMinSize(); - bvec2 expand = m_subWidget[iii]->getExpand(); - if ( expand.x() == false - || minSize.x()>localAvaillable.x()) { - if (m_gravity == ewol::gravityCenter) { - origin -= vec2((minSize.x() - localAvaillable.x())/2.0f, 0); - } else if (((int32_t)m_gravity & (int32_t)ewol::gravityRight) != 0) { - origin -= vec2((minSize.x() - localAvaillable.x()), 0); - } - } - if( expand.y() == false - || minSize.y()>localAvaillable.y()) { - if (m_gravity == ewol::gravityCenter) { - origin -= vec2(0, (minSize.y() - localAvaillable.y())/2.0f); - } else if (((int32_t)m_gravity & (int32_t)ewol::gravityTop) != 0) { - origin -= vec2(0, (minSize.y() - localAvaillable.y())); - } - } - m_subWidget[iii]->setOrigin(origin + vec2(_padding.xLeft(), _padding.yButtom())); - m_subWidget[iii]->calculateSize(localAvaillable); - } - } - return ewol::Padding(m_origin.x(), 0, 0, m_origin.y()); - #else - // set minimal size - m_size = m_minSize; - vec2 minimumSizeBase(0,0); - vec2 minimumSizeToggle(0,0); - // Checking the expand properties : if (m_userExpand.x() == true) { m_size.setX(_availlable.x()); } @@ -158,20 +118,35 @@ ewol::Padding ewol::widget::Container2::calculateSizePadded(const vec2& _availla } vec2 origin = (m_size - subElementSize)*0.5f + vec2(_padding.xLeft(), _padding.yButtom()); subElementSize -= vec2(_padding.x(), _padding.y()); - if (NULL!=m_subWidget[0]) { - m_subWidget[0]->setOrigin(m_origin+origin); - m_subWidget[0]->calculateSize(subElementSize); + for (size_t iii = 0; iii < 2; ++iii) { + if (m_subWidget[iii] != NULL) { + vec2 origin2 = origin+m_offset; + vec2 minSize = m_subWidget[iii]->getCalculateMinSize(); + bvec2 expand = m_subWidget[iii]->getExpand(); + if ( expand.x() == false + || minSize.x() > localAvaillable.x()) { + if (m_gravity == ewol::gravityCenter) { + origin2 -= vec2((minSize.x() - localAvaillable.x())/2.0f, 0); + } else if (((int32_t)m_gravity & (int32_t)ewol::gravityRight) != 0) { + origin2 -= vec2((minSize.x() - localAvaillable.x()), 0); + } + } + if( expand.y() == false + || minSize.y() > localAvaillable.y()) { + if (m_gravity == ewol::gravityCenter) { + origin2 -= vec2(0, (minSize.y() - localAvaillable.y())/2.0f); + } else if (((int32_t)m_gravity & (int32_t)ewol::gravityTop) != 0) { + origin2 -= vec2(0, (minSize.y() - localAvaillable.y())); + } + } + m_subWidget[iii]->setOrigin(m_origin + origin); + m_subWidget[iii]->calculateSize(subElementSize); + } } - if (NULL!=m_subWidget[1]) { - m_subWidget[1]->setOrigin(m_origin+origin); - m_subWidget[1]->calculateSize(subElementSize); - } - //EWOL_DEBUG(" configuring : origin=" << origin << " size=" << subElementSize << ""); - vec2 selectableAreaSize = subElementSize + vec2(_padding.x(), _padding.y()); vec2 selectableAreaPos = origin-vec2(_padding.xLeft(), _padding.yButtom()); + vec2 selectableAreaEndPos = m_size - (selectableAreaPos + subElementSize + vec2(_padding.x(), _padding.y())); markToRedraw(); - return ewol::Padding(selectableAreaPos.x(), selectableAreaPos.y(), selectableAreaSize.x(), selectableAreaSize.y()); - #endif + return ewol::Padding(selectableAreaPos.x(), selectableAreaEndPos.y(), selectableAreaEndPos.x(), selectableAreaPos.y()); } void ewol::widget::Container2::calculateMinMaxSizePadded(const ewol::Padding& _padding) { diff --git a/sources/ewol/widget/ContainerN.cpp b/sources/ewol/widget/ContainerN.cpp index 8a5e5a1c..c172b4b7 100644 --- a/sources/ewol/widget/ContainerN.cpp +++ b/sources/ewol/widget/ContainerN.cpp @@ -89,7 +89,7 @@ void ewol::widget::ContainerN::subWidgetRemove(ewol::Widget* _newWidget) { for (size_t iii=0; iiiremoveUpperWidget(); - delete(m_subWidget[iii]); + m_subWidget[iii]->removeObject(); // no remove, this element is removed with the function onObjectRemove == > it does not exist anymore ... if (errorControl == m_subWidget.size()) { EWOL_CRITICAL("[" << getId() << "] {" << getObjectType() << "} The number of element might have been reduced ... == > it is not the case ==> the herited class must call the \"OnObjectRemove\" function..."); @@ -125,7 +125,7 @@ void ewol::widget::ContainerN::subWidgetRemoveAll(void) { while (m_subWidget.size() > 0 ) { if (NULL != m_subWidget[0]) { m_subWidget[0]->removeUpperWidget(); - delete(m_subWidget[0]); + m_subWidget[0]->removeObject(); // no remove, this element is removed with the function onObjectRemove == > it does not exist anymore ... if (errorControl == m_subWidget.size()) { EWOL_CRITICAL("[" << getId() << "] {" << getObjectType() << "} The number of element might have been reduced ... == > it is not the case ==> the herited class must call the \"OnObjectRemove\" function..."); diff --git a/sources/ewol/widget/Label.cpp b/sources/ewol/widget/Label.cpp index 7a00420b..3de6c26c 100644 --- a/sources/ewol/widget/Label.cpp +++ b/sources/ewol/widget/Label.cpp @@ -87,8 +87,8 @@ void ewol::widget::Label::onRegenerateDisplay(void) { // to know the size of one line : vec3 minSize = m_text.calculateSize(char32_t('A')); - minSize.setX(etk_max(minSize.x(), m_minSize.x())); - minSize.setY(etk_max(minSize.y(), m_minSize.y())); + //minSize.setX(etk_max(minSize.x(), m_minSize.x())); + //minSize.setY(etk_max(minSize.y(), m_minSize.y())); if (tmpMax.x() <= 999999) { m_text.setTextAlignement(0, tmpMax.x()-2*paddingSize, ewol::compositing::alignLeft); } @@ -101,11 +101,11 @@ void ewol::widget::Label::onRegenerateDisplay(void) { (m_size.y() - m_minSize.y()) / 2.0, 0); - if (true == m_userFill.x()) { + if (m_userFill.x() == true) { localSize.setX(m_size.x()); tmpTextOrigin.setX(0); } - if (true == m_userFill.y()) { + if (m_userFill.y() == true) { localSize.setY(m_size.y()); tmpTextOrigin.setY(m_size.y() - 2*paddingSize - curentTextSize.y()); }