[DEV] update context menu
This commit is contained in:
parent
fa0ef8e26c
commit
b45799c532
@ -50,68 +50,69 @@ ewol::widget::ContextMenu::~ContextMenu() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ewol::widget::ContextMenu::onChangeSize() {
|
void ewol::widget::ContextMenu::onChangeSize() {
|
||||||
|
markToRedraw();
|
||||||
// pop-up fill all the display :
|
// pop-up fill all the display :
|
||||||
ewol::Padding padding = m_shaper->getPadding();
|
ewol::Padding padding = m_shaper->getPadding();
|
||||||
EWOL_VERBOSE("our origin=" << m_origin << " size=" << m_size);
|
EWOL_VERBOSE("our origin=" << m_origin << " size=" << m_size);
|
||||||
if (nullptr != m_subWidget) {
|
if (m_subWidget == nullptr) {
|
||||||
vec2 subWidgetSize;
|
return;
|
||||||
vec2 subWidgetOrigin;
|
|
||||||
subWidgetSize = m_subWidget->getCalculateMinSize();
|
|
||||||
if (true == m_subWidget->canExpand().x()) {
|
|
||||||
subWidgetSize.setX(m_size.x());
|
|
||||||
}
|
|
||||||
if (true == m_subWidget->canExpand().y()) {
|
|
||||||
subWidgetSize.setY(m_size.y());
|
|
||||||
}
|
|
||||||
int32_t minWidth = 100;
|
|
||||||
int32_t maxWidth = 300;
|
|
||||||
subWidgetSize.setX((int32_t)std::max(minWidth, (int32_t)subWidgetSize.x()));
|
|
||||||
subWidgetSize.setX((int32_t)std::min(maxWidth, (int32_t)subWidgetSize.x()));
|
|
||||||
subWidgetSize.setY((int32_t)subWidgetSize.y());
|
|
||||||
|
|
||||||
// set config to the Sub-widget
|
|
||||||
switch (m_arrawBorder) {
|
|
||||||
case markTop:
|
|
||||||
subWidgetOrigin.setX((int32_t)(m_arrowPos->x() - subWidgetSize.x()/2));
|
|
||||||
subWidgetOrigin.setY((int32_t)(m_arrowPos->y() - m_offset - subWidgetSize.y()));
|
|
||||||
break;
|
|
||||||
case markButtom:
|
|
||||||
subWidgetOrigin.setX((int32_t)(m_arrowPos->x() - subWidgetSize.x()/2));
|
|
||||||
subWidgetOrigin.setY((int32_t)(m_arrowPos->y() + m_offset));
|
|
||||||
break;
|
|
||||||
case markRight:
|
|
||||||
case markLeft:
|
|
||||||
default:
|
|
||||||
subWidgetOrigin.setX((int32_t)(m_size.x() - m_origin.x() - subWidgetSize.x())/2 + m_origin.x());
|
|
||||||
subWidgetOrigin.setY((int32_t)(m_size.y() - m_origin.y() - subWidgetSize.y())/2 + m_origin.y());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// set the widget position at the border of the screen
|
|
||||||
subWidgetOrigin.setX( (int32_t)( std::max(0, (int32_t)(subWidgetOrigin.x()-padding.x()))
|
|
||||||
+ padding.x()) );
|
|
||||||
subWidgetOrigin.setY( (int32_t)( std::max(0, (int32_t)(subWidgetOrigin.y()-padding.y()))
|
|
||||||
+ padding.y()) );
|
|
||||||
switch (m_arrawBorder) {
|
|
||||||
default:
|
|
||||||
case markTop:
|
|
||||||
case markButtom:
|
|
||||||
if (m_arrowPos->x() <= m_offset ) {
|
|
||||||
subWidgetOrigin.setX(m_arrowPos->x()+padding.xLeft());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case markRight:
|
|
||||||
case markLeft:
|
|
||||||
if (m_arrowPos->y() <= m_offset ) {
|
|
||||||
subWidgetOrigin.setY(m_arrowPos->y()+padding.yButtom());
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
EWOL_VERBOSE(" == > sub origin=" << subWidgetOrigin << " size=" << subWidgetSize);
|
|
||||||
m_subWidget->setOrigin(subWidgetOrigin);
|
|
||||||
m_subWidget->setSize(subWidgetSize);
|
|
||||||
m_subWidget->onChangeSize();
|
|
||||||
}
|
}
|
||||||
markToRedraw();
|
vec2 subWidgetSize;
|
||||||
|
vec2 subWidgetOrigin;
|
||||||
|
subWidgetSize = m_subWidget->getCalculateMinSize();
|
||||||
|
if (m_subWidget->canExpand().x() == true) {
|
||||||
|
subWidgetSize.setX(m_size.x());
|
||||||
|
}
|
||||||
|
if (m_subWidget->canExpand().y() == true) {
|
||||||
|
subWidgetSize.setY(m_size.y());
|
||||||
|
}
|
||||||
|
int32_t minWidth = 100;
|
||||||
|
int32_t maxWidth = 300;
|
||||||
|
subWidgetSize.setX((int32_t)std::max(minWidth, (int32_t)subWidgetSize.x()));
|
||||||
|
subWidgetSize.setX((int32_t)std::min(maxWidth, (int32_t)subWidgetSize.x()));
|
||||||
|
subWidgetSize.setY((int32_t)subWidgetSize.y());
|
||||||
|
|
||||||
|
// set config to the Sub-widget
|
||||||
|
switch (m_arrawBorder) {
|
||||||
|
case markTop:
|
||||||
|
subWidgetOrigin.setX((int32_t)(m_arrowPos->x() - subWidgetSize.x()/2));
|
||||||
|
subWidgetOrigin.setY((int32_t)(m_arrowPos->y() - m_offset - subWidgetSize.y()));
|
||||||
|
break;
|
||||||
|
case markButtom:
|
||||||
|
subWidgetOrigin.setX((int32_t)(m_arrowPos->x() - subWidgetSize.x()/2));
|
||||||
|
subWidgetOrigin.setY((int32_t)(m_arrowPos->y() + m_offset));
|
||||||
|
break;
|
||||||
|
case markRight:
|
||||||
|
case markLeft:
|
||||||
|
default:
|
||||||
|
subWidgetOrigin.setX((int32_t)(m_size.x() - m_origin.x() - subWidgetSize.x())/2 + m_origin.x());
|
||||||
|
subWidgetOrigin.setY((int32_t)(m_size.y() - m_origin.y() - subWidgetSize.y())/2 + m_origin.y());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// set the widget position at the border of the screen
|
||||||
|
subWidgetOrigin.setX( (int32_t)( std::max(0, (int32_t)(subWidgetOrigin.x()-padding.x()))
|
||||||
|
+ padding.x()) );
|
||||||
|
subWidgetOrigin.setY( (int32_t)( std::max(0, (int32_t)(subWidgetOrigin.y()-padding.y()))
|
||||||
|
+ padding.y()) );
|
||||||
|
switch (m_arrawBorder) {
|
||||||
|
default:
|
||||||
|
case markTop:
|
||||||
|
case markButtom:
|
||||||
|
if (m_arrowPos->x() <= m_offset ) {
|
||||||
|
subWidgetOrigin.setX(m_arrowPos->x()+padding.xLeft());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case markRight:
|
||||||
|
case markLeft:
|
||||||
|
if (m_arrowPos->y() <= m_offset ) {
|
||||||
|
subWidgetOrigin.setY(m_arrowPos->y()+padding.yButtom());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
EWOL_VERBOSE(" == > sub origin=" << subWidgetOrigin << " size=" << subWidgetSize);
|
||||||
|
m_subWidget->setOrigin(subWidgetOrigin);
|
||||||
|
m_subWidget->setSize(subWidgetSize);
|
||||||
|
m_subWidget->onChangeSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user