36 lines
1,000 B
C++
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
|