Improve appearance of dialog with display cutout

This commit is contained in:
Benau 2021-03-22 07:58:20 +08:00
parent 4ec4fda91b
commit c0ffdc78f4
4 changed files with 15 additions and 5 deletions

@ -105,6 +105,7 @@ namespace GUIEngine
void elementsWereDeleted(PtrVector<Widget>* within_vector = NULL);
bool isMyChild(Widget* widget) const;
virtual bool enableScreenPadding() const { return true; }
}; // AbstractTopLevelContainer
} // namespace GUIEngine

@ -321,14 +321,17 @@ void LayoutManager::applyCoords(Widget* self, AbstractTopLevelContainer* topLeve
//parent_w = frame_size.Width;
//parent_h = frame_size.Height;
parent_w = topLevelContainer->getWidth();
int total_padding = irr_driver->getDevice()->getLeftPadding() +
irr_driver->getDevice()->getRightPadding();
int left_padding = irr_driver->getDevice()->getLeftPadding();
int right_padding = irr_driver->getDevice()->getRightPadding();
if (!topLevelContainer->enableScreenPadding())
left_padding = right_padding = 0;
int total_padding = left_padding + right_padding;
if (parent_w - total_padding > 0)
parent_w -= total_padding;
parent_h = topLevelContainer->getHeight();
parent_x = 0;
if (irr_driver->getDevice()->getLeftPadding() > 0)
parent_x = irr_driver->getDevice()->getLeftPadding();
if (left_padding > 0)
parent_x = left_padding;
parent_y = 0;
}
else

@ -97,7 +97,12 @@ void ModalDialog::doInit()
const core::dimension2d<u32>& frame_size =
GUIEngine::getDriver()->getCurrentRenderTargetSize();
const int w = (int)(frame_size.Width* m_percent_width);
int left_padding = irr_driver->getDevice()->getLeftPadding();
int right_padding = irr_driver->getDevice()->getRightPadding();
int total_padding = left_padding + right_padding;
int w = (int)(frame_size.Width* m_percent_width);
if (w > total_padding)
w -= total_padding;
const int h = (int)(frame_size.Height* m_percent_height);
assert(frame_size.Width > 0);

@ -139,6 +139,7 @@ namespace GUIEngine
bool fadeBackground() const { return m_fade_background; }
bool isMyIrrChild(irr::gui::IGUIElement* widget) const { return m_irrlicht_window->isMyChild(widget); }
virtual bool enableScreenPadding() const { return false; }
};
}