ultimatepp/bazaar/PopUpC/PopUpC.cpp
2011-09-06 13:12:27 +00:00

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