| 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;}
 |