123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #include "precomp.h"
- #include <api/wnd/api_wnd.h>
- #include "rootwndholder.h"
- #include <api/wnd/notifmsg.h>
- #include <tataki/canvas/canvas.h>
- RootWndHolder::RootWndHolder() {
- privptr = NULL;
- }
- RootWndHolder::~RootWndHolder() {
- }
- void RootWndHolder::rootwndholder_getRect(RECT *r) {
- if (isInited())
- getClientRect(r);
- else
- MEMSET(r, 0, sizeof(RECT));
- }
- int RootWndHolder::onInit() {
- ROOTWNDHOLDER_PARENT::onInit();
- ifc_window *w = rootwndholder_getRootWnd();
- if (w) {
- checkInit(w);
- setName(rootwndholder_getRootWnd()->getRootWndName());
- }
- return 1;
- }
- void RootWndHolder::checkInit(ifc_window *w) {
- if (w && !w->isInited()) {
- if (w->getParent() == NULL)
- w->setParent(this);
- // w->setStartHidden(getStartHidden());
- w->init(this);
- }
- }
- int RootWndHolder::onResize() {
- int rv = ROOTWNDHOLDER_PARENT::onResize();
- if (!isInited()) return 1;
- ifc_window *held = rootwndholder_getRootWnd();
- if (!held) return rv;
- RECT r;
- rootwndholder_getRect(&r);
- if (renderRatioActive() && !held->handleRatio())
- multRatio(&r);
- held->resize(r.left, r.top, r.right-r.left, r.bottom-r.top);
- return rv;
- }
- /*void RootWndHolder::onSetVisible(int v) {
- ROOTWNDHOLDER_PARENT::onSetVisible(v);
- if (!rootwndholder_getRootWnd()) return;
- rootwndholder_getRootWnd()->setVisible(v);
- }*/
- int RootWndHolder::onActivate() {
- int r = ROOTWNDHOLDER_PARENT::onActivate();
- if (rootwndholder_getRootWnd())
- rootwndholder_getRootWnd()->onActivate();
- return r;
- }
- int RootWndHolder::onDeactivate() {
- int r = ROOTWNDHOLDER_PARENT::onDeactivate();
- if (rootwndholder_getRootWnd())
- rootwndholder_getRootWnd()->onDeactivate();
- return r;
- }
- int RootWndHolder::getPreferences(int what) {
- if (rootwndholder_getRootWnd())
- return rootwndholder_getRootWnd()->getPreferences(what);
- return ROOTWNDHOLDER_PARENT::getPreferences(what);
- }
- ifc_window *RootWndHolder::rootwndholder_getRootWnd() {
- return privptr;
- }
- void RootWndHolder::rootwndholder_setRootWnd(ifc_window *w) {
- if (privptr == w) return;
- privptr = w;
- checkInit(w);
- if (isPostOnInit())
- onResize();
- }
- int RootWndHolder::onAction(const wchar_t *action, const wchar_t *param, int x, int y, intptr_t p1, intptr_t p2, void *data, size_t datalen, ifc_window *source) {
- if (rootwndholder_getRootWnd())
- return rootwndholder_getRootWnd()->onAction(action, param, x, y, p1, p2, data, datalen, source);
- return ROOTWNDHOLDER_PARENT::onAction(action, param, x, y, p1, p2, data, datalen, source);
- }
- int RootWndHolder::childNotify(ifc_window *child, int msg, intptr_t param1, intptr_t param2) {
- if (msg == ChildNotify::NAMECHANGED && child == rootwndholder_getRootWnd())
- setName(child->getRootWndName());
- return passNotifyUp(child, msg, (int)param1, (int)param2);
- }
- int RootWndHolder::onPaint(Canvas *c) {
- int rt = ROOTWNDHOLDER_PARENT::onPaint(c);
- if (wantRenderBaseTexture()) {
- RECT r;
- rootwndholder_getRect(&r);
- WASABI_API_WND->skin_renderBaseTexture(getBaseTextureWindow(), c, r, this);
- }
- return rt;
- }
|