Auto Menu Sizing
This commit is contained in:
@@ -47,8 +47,9 @@ enum UI7MenuFlags_ {
|
|||||||
UI7MenuFlags_NoClose = 1 << 9, ///< Disable Close Button
|
UI7MenuFlags_NoClose = 1 << 9, ///< Disable Close Button
|
||||||
UI7MenuFlags_NoScrollbar = 1 << 10, ///< Hide the Scrollbar
|
UI7MenuFlags_NoScrollbar = 1 << 10, ///< Hide the Scrollbar
|
||||||
// POC
|
// POC
|
||||||
UI7MenuFlags_Maximize = 1 << 11, ///< Add a Maximize Button
|
UI7MenuFlags_Maximize = 1 << 11, ///< Add a Maximize Button
|
||||||
UI7MenuFlags_Minimize = 1 << 12, ///< Add a Minimize Button
|
UI7MenuFlags_Minimize = 1 << 12, ///< Add a Minimize Button
|
||||||
|
UI7MenuFlags_AlwaysAutoSize = 1 << 13, ///< Always Auto Resize Menu
|
||||||
// Enable Horizontal and Vertical Scrolling
|
// Enable Horizontal and Vertical Scrolling
|
||||||
UI7MenuFlags_Scrolling = UI7MenuFlags_HzScrolling | UI7MenuFlags_VtScrolling,
|
UI7MenuFlags_Scrolling = UI7MenuFlags_HzScrolling | UI7MenuFlags_VtScrolling,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -44,8 +44,7 @@ class PD_UI7_API Layout {
|
|||||||
Scrolling[1] = false;
|
Scrolling[1] = false;
|
||||||
CursorInit();
|
CursorInit();
|
||||||
Pos = fvec2(io->CurrentViewPort.x, io->CurrentViewPort.y);
|
Pos = fvec2(io->CurrentViewPort.x, io->CurrentViewPort.y);
|
||||||
Size = fvec2(io->CurrentViewPort.z - io->CurrentViewPort.x,
|
Size = 0;
|
||||||
io->CurrentViewPort.w - io->CurrentViewPort.y);
|
|
||||||
WorkRect = fvec4(IO->MenuPadding, Size - (fvec2(2) * IO->MenuPadding));
|
WorkRect = fvec4(IO->MenuPadding, Size - (fvec2(2) * IO->MenuPadding));
|
||||||
}
|
}
|
||||||
~Layout() = default;
|
~Layout() = default;
|
||||||
|
|||||||
@@ -113,6 +113,9 @@ PD_UI7_API fvec2 Layout::AlignPosition(fvec2 pos, fvec2 size, fvec4 area,
|
|||||||
}
|
}
|
||||||
|
|
||||||
PD_UI7_API void Layout::Update() {
|
PD_UI7_API void Layout::Update() {
|
||||||
|
if (Size == fvec2(0.f)) {
|
||||||
|
Size = fvec2(MaxPosition);
|
||||||
|
}
|
||||||
for (auto& it : Objects) {
|
for (auto& it : Objects) {
|
||||||
if (it->GetID() != 0 && !FindObject(it->GetID())) {
|
if (it->GetID() != 0 && !FindObject(it->GetID())) {
|
||||||
IDObjects.push_back(it);
|
IDObjects.push_back(it);
|
||||||
|
|||||||
@@ -37,7 +37,8 @@ Menu::Menu(const ID& id, IO::Ref io) : pIO(io), pID(id) {
|
|||||||
PD_UI7_API void Menu::Label(const std::string& label) {
|
PD_UI7_API void Menu::Label(const std::string& label) {
|
||||||
// Layout API
|
// Layout API
|
||||||
auto r = Label::New(label, pIO);
|
auto r = Label::New(label, pIO);
|
||||||
r->SetClipRect(fvec4(pLayout->GetPosition(), pLayout->GetSize()));
|
r->SetClipRect(fvec4(pLayout->GetPosition(),
|
||||||
|
pLayout->GetPosition() + pLayout->GetSize()));
|
||||||
pLayout->AddObject(r);
|
pLayout->AddObject(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -339,8 +340,12 @@ PD_UI7_API void Menu::DrawBaseLayout() {
|
|||||||
|
|
||||||
PD_UI7_API void Menu::Update() {
|
PD_UI7_API void Menu::Update() {
|
||||||
HandleFocus();
|
HandleFocus();
|
||||||
|
if (pLayout->Size == fvec2(0.f) || Flags & UI7MenuFlags_AlwaysAutoSize) {
|
||||||
|
pLayout->Size = fvec2(pLayout->MaxPosition) + pIO->MenuPadding * 2;
|
||||||
|
}
|
||||||
if (!(Flags & UI7MenuFlags_NoTitlebar)) {
|
if (!(Flags & UI7MenuFlags_NoTitlebar)) {
|
||||||
TitleBarHeight = pIO->FontScale * 30.f;
|
TitleBarHeight =
|
||||||
|
pIO->FontScale * pIO->Font->PixelHeight + pIO->MenuPadding.y;
|
||||||
pLayout->WorkRect.y = 5.f + TitleBarHeight;
|
pLayout->WorkRect.y = 5.f + TitleBarHeight;
|
||||||
HandleTitlebarActions();
|
HandleTitlebarActions();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user