mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 22:02:58 -06:00
67 lines
1.2 KiB
C++
67 lines
1.2 KiB
C++
#include "PopUpC.h"
|
|
|
|
NAMESPACE_UPP
|
|
|
|
void PopUpC::Deactivate() {
|
|
if(IsOpen()) {
|
|
IgnoreMouseClick();
|
|
WhenDeactivate();
|
|
}
|
|
}
|
|
|
|
void PopUpC::Break(int ID)
|
|
{
|
|
EndLoop(ID);
|
|
Close();
|
|
WhenBreak();
|
|
}
|
|
|
|
bool PopUpC::AcceptBreak(int ID)
|
|
{
|
|
if(Accept()) {
|
|
WhenAccept();
|
|
Break(ID);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void PopUpC::RejectBreak(int ID)
|
|
{
|
|
Reject();
|
|
WhenReject();
|
|
Break(ID);
|
|
}
|
|
|
|
void PopUpC::PopUp(Ctrl* owner)
|
|
{
|
|
Size sz = AddFrameSize(GetSize());
|
|
Rect wr = GetWorkArea();
|
|
Rect r = owner->GetScreenRect();
|
|
int x = r.left;
|
|
int y = r.bottom;
|
|
if(x + sz.cx >= wr.right)
|
|
x = r.right - sz.cx;
|
|
if(y + sz.cy >= wr.bottom)
|
|
y = r.top - sz.cy;
|
|
|
|
Rect rt = RectC(x, y, sz.cx, sz.cy);
|
|
if(GUI_PopUpEffect()) {
|
|
sPaintRedirectCtrl pb;
|
|
pb.ctrl = this;
|
|
Add(pb.BottomPos(0, rt.Height()).LeftPos(0, rt.Width()));
|
|
SetRect(RectC(rt.left, rt.top, 1, 1));
|
|
Ctrl::PopUp(owner, true, true, GUI_GlobalStyle() >= GUISTYLE_XP);
|
|
SetFocus();
|
|
Ctrl::ProcessEvents();
|
|
Animate(*this, rt, GUIEFFECT_SLIDE);
|
|
pb.Remove();
|
|
}
|
|
else {
|
|
SetRect(rt);
|
|
Ctrl::PopUp(owner, true, true, true);
|
|
}
|
|
SetFocus();
|
|
}
|
|
|
|
END_UPP_NAMESPACE
|