rodecomp/Source/UI/UIDropDownBox.h
2026-10-24 00:35:19 +00:00

36 lines
1,000 B
C++

#ifndef RAGNAROK_SOURCE_UI_UIDROPDOWNBOX_H
#define RAGNAROK_SOURCE_UI_UIDROPDOWNBOX_H
#include "UI/UIControl.h"
struct WindowOrdering;
// RTTI CUIDropDownBox. Its attached child is borrowed from another window;
// detachment deliberately preserves that child's parent pointer and lifetime.
class CUIDropDownBox : public CUIControl {
public:
explicit CUIDropDownBox(UIWindowContext& context);
~CUIDropDownBox() override;
void Paint() override;
void Detach();
bool HasChild(const UIWindow* window) const;
bool HasOwnerChild(const UIWindow* window) const;
void Attach(UIWindow* owner, UIWindow* child);
/* 0080 */ UIWindow* owner;
};
// Borrowed manager popup pointer and rendered-order owner.
struct WindowDropDown {
UIWindowContext& windows;
WindowOrdering& ordering;
CUIDropDownBox*& popup;
void Show(UIWindow* owner, UIWindow* child, int x, int y);
bool Close();
};
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(CUIDropDownBox) == 136);
#endif
#endif