CHANGED: #1471 Moved lots of code from CInterfaceManager to CWidgetManager ( mostly code that is directly used by the widgets )
--HG-- branch : gui-refactoring
This commit is contained in:
parent
1668d199c1
commit
ad03911fe3
51 changed files with 906 additions and 887 deletions
|
@ -1211,7 +1211,7 @@ class CHandlerEnterTell : public IActionHandler
|
|||
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(pGC->getGroup("eb"));
|
||||
if (eb)
|
||||
{
|
||||
im->setCaptureKeyboard(eb);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(eb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1419,18 +1419,18 @@ class CHandlerSwapChatMode : public IActionHandler
|
|||
node->setValue32(0);
|
||||
// also leave Chat Focus (important if comes from command)
|
||||
if (updateCapture)
|
||||
pIM->setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
// enter chat mode (enter dont quit CB)
|
||||
node->setValue32(1);
|
||||
// enter Chat focus if '/c' entered
|
||||
if (updateCapture && !pIM->getCaptureKeyboard())
|
||||
if (updateCapture && !CWidgetManager::getInstance()->getCaptureKeyboard())
|
||||
{
|
||||
// reset to the old captured keyboard (should be the one that have launched the command)
|
||||
if(pIM->getOldCaptureKeyboard())
|
||||
pIM->setCaptureKeyboard(pIM->getOldCaptureKeyboard());
|
||||
if(CWidgetManager::getInstance()->getOldCaptureKeyboard())
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(CWidgetManager::getInstance()->getOldCaptureKeyboard());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5296,7 +5296,7 @@ bool CUserCommand::execute(const std::string &/* rawCommandString */, const std:
|
|||
}
|
||||
|
||||
// Run the action handler
|
||||
CAHManager::getInstance()->runActionHandler (mode->Action, pIM->getOldCaptureKeyboard(), finalArgs);
|
||||
CAHManager::getInstance()->runActionHandler (mode->Action, CWidgetManager::getInstance()->getOldCaptureKeyboard(), finalArgs);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -252,7 +252,7 @@ void checkUnderCursor()
|
|||
cursor->getPointerPos(x, y);
|
||||
|
||||
// Over the interface ?
|
||||
if (IM->getWindowUnder(x, y) == NULL)
|
||||
if (CWidgetManager::getInstance()->getWindowUnder(x, y) == NULL)
|
||||
{
|
||||
// Is the pointer in the window ?
|
||||
if(x < 0 || y <0)
|
||||
|
|
|
@ -1274,11 +1274,11 @@ void initMainLoop()
|
|||
|
||||
// Set the default edit box for the enter key
|
||||
// if (PeopleInterraction.MainChat.Window)
|
||||
// CInterfaceManager::getInstance()->setCaptureKeyboard(PeopleInterraction.MainChat.Window->getEditBox());
|
||||
// CWidgetManager::getInstance()->setCaptureKeyboard(PeopleInterraction.MainChat.Window->getEditBox());
|
||||
if (PeopleInterraction.ChatGroup.Window)
|
||||
{
|
||||
CGroupEditBox *eb= dynamic_cast<CGroupEditBox*>(PeopleInterraction.ChatGroup.Window->getEditBox());
|
||||
CInterfaceManager::getInstance()->setCaptureKeyboard(eb);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(eb);
|
||||
// For user help, set a default input string.
|
||||
// NB: must do it after interface loadConfig, else it is reseted
|
||||
// NB: it is reseted also on first mode switch
|
||||
|
@ -1286,8 +1286,8 @@ void initMainLoop()
|
|||
eb->setDefaultInputString(CI18N::get("uiDefaultChatInput"));
|
||||
}
|
||||
else
|
||||
CInterfaceManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
CInterfaceManager::getInstance()->setCaptureKeyboard(NULL); // previous set editbox becomes '_OldCaptureKeyboard'
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL); // previous set editbox becomes '_OldCaptureKeyboard'
|
||||
|
||||
// Some init after connection ready sent
|
||||
if(BotChatPageAll && (!ClientCfg.R2EDEnabled))
|
||||
|
|
|
@ -97,7 +97,7 @@ public:
|
|||
nlwarning("<CAHSetKeyboardFocus::execute> Can't get target edit box %s, or bad type", target.c_str());
|
||||
return;
|
||||
}
|
||||
pIM->setCaptureKeyboard(geb);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(geb);
|
||||
string selectAllStr = getParam (Params, "select_all");
|
||||
bool selectAll = CInterfaceElement::convertBool(selectAllStr.c_str());
|
||||
if (selectAll)
|
||||
|
@ -114,8 +114,7 @@ class CAHResetKeyboardFocus : public IActionHandler
|
|||
public:
|
||||
virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */)
|
||||
{
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
pIM->resetCaptureKeyboard();
|
||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||
}
|
||||
};
|
||||
REGISTER_ACTION_HANDLER (CAHResetKeyboardFocus, "reset_keyboard_focus");
|
||||
|
@ -351,7 +350,7 @@ class CAHResetInterface : public IActionHandler
|
|||
}
|
||||
}
|
||||
|
||||
pIM->checkCoords();
|
||||
CWidgetManager::getInstance()->checkCoords();
|
||||
CWidgetManager::getInstance()->getMasterGroup((uint8)nMasterGroup).centerAllContainers();
|
||||
|
||||
// Pop in and close all containers
|
||||
|
|
|
@ -115,7 +115,7 @@ protected:
|
|||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
if (pIM)
|
||||
{
|
||||
CCtrlBase *basectrl = pIM->getCaptureKeyboard();
|
||||
CCtrlBase *basectrl = CWidgetManager::getInstance()->getCaptureKeyboard();
|
||||
if (basectrl)
|
||||
_GroupEdit = dynamic_cast<CGroupEditBox*>(basectrl);
|
||||
}
|
||||
|
|
|
@ -126,7 +126,7 @@ void CInterfaceItemEdition::CItemEditionWindow::infoReceived()
|
|||
editBoxLarge->setActive(true);
|
||||
|
||||
// Set the Keyboard focus to the editbox (after the enableModalWindow())
|
||||
pIM->setCaptureKeyboard(editBoxLarge);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(editBoxLarge);
|
||||
// Select all the text for easier selection
|
||||
editBoxLarge->setSelectionAll();
|
||||
}
|
||||
|
@ -144,7 +144,7 @@ void CInterfaceItemEdition::CItemEditionWindow::infoReceived()
|
|||
editBoxShort->setActive(true);
|
||||
|
||||
// Set the Keyboard focus to the editbox (after the enableModalWindow())
|
||||
pIM->setCaptureKeyboard(editBoxShort);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(editBoxShort);
|
||||
// Select all the text for easier selection
|
||||
editBoxShort->setSelectionAll();
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ void CInterfaceItemEdition::CItemEditionWindow::begin()
|
|||
editBoxLarge->setActive(true);
|
||||
|
||||
// Set the Keyboard focus to the editbox
|
||||
pIM->setCaptureKeyboard(editBoxLarge);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(editBoxLarge);
|
||||
// Select all the text for easier selection
|
||||
editBoxLarge->setSelectionAll();
|
||||
}
|
||||
|
@ -258,7 +258,7 @@ void CInterfaceItemEdition::CItemEditionWindow::begin()
|
|||
editBoxShort->setActive(true);
|
||||
|
||||
// Set the Keyboard focus to the editbox
|
||||
pIM->setCaptureKeyboard(editBoxShort);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(editBoxShort);
|
||||
// Select all the text for easier selection
|
||||
editBoxShort->setSelectionAll();
|
||||
}
|
||||
|
@ -503,7 +503,7 @@ static void displayQuantityPopup(CCtrlBase *pCaller, CDBCtrlSheet *pCSSrc, CDBCt
|
|||
CWidgetManager::getInstance()->enableModalWindow(pCaller, group);
|
||||
|
||||
// Set the Keyboard focus to the editbox (after the enableModalWindow())
|
||||
pIM->setCaptureKeyboard(editBox);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(editBox);
|
||||
// Select all the text for easier selection
|
||||
editBox->setSelectionAll();
|
||||
}
|
||||
|
|
|
@ -169,8 +169,8 @@ class CAHUIPopup : public IActionHandler
|
|||
//
|
||||
pGC->popup();
|
||||
//
|
||||
pIM->setCapturePointerLeft(NULL);
|
||||
pIM->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
}
|
||||
};
|
||||
REGISTER_ACTION_HANDLER( CAHUIPopup, "popup" );
|
||||
|
@ -204,8 +204,8 @@ class CAHUIPopin : public IActionHandler
|
|||
pGC->setPopupH(pGC->getH());
|
||||
//
|
||||
pGC->popin();
|
||||
pIM->setCapturePointerLeft(NULL);
|
||||
pIM->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
}
|
||||
};
|
||||
REGISTER_ACTION_HANDLER( CAHUIPopin, "popin" );
|
||||
|
@ -535,7 +535,7 @@ class CAHTalkUntalk : public IActionHandler
|
|||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
CWidgetManager::getInstance()->setTopWindow(cw->getContainer());
|
||||
cw->enableBlink(1);
|
||||
im->setCaptureKeyboard(cw->getEditBox());
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(cw->getEditBox());
|
||||
PeopleInterraction.MainChat.Filter.setTargetPlayer(selection->getName());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -708,7 +708,7 @@ void CActionPhraseFaber::startMpSelection(uint itemReqLine, uint mpSlot)
|
|||
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(quantityModal->getGroup("eb"));
|
||||
if (eb)
|
||||
{
|
||||
pIM->setCaptureKeyboard(eb);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(eb);
|
||||
eb->setInputString(toString(maxQuantity));
|
||||
eb->setSelectionAll();
|
||||
}
|
||||
|
|
|
@ -1067,7 +1067,7 @@ void CBotChatPageTrade::setFocusOnEditBox(CInterfaceGroup *ebi)
|
|||
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(ebi);
|
||||
if (eb)
|
||||
{
|
||||
pIM->setCaptureKeyboard(eb);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(eb);
|
||||
eb->setSelectionAll();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -315,7 +315,7 @@ bool CChatWindow::rename(const ucstring &newName, bool newNameLocalize)
|
|||
void CChatWindow::setKeyboardFocus()
|
||||
{
|
||||
if (!_EB || !_Chat) return;
|
||||
CInterfaceManager::getInstance()->setCaptureKeyboard(_EB);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(_EB);
|
||||
if (!_Chat->isOpenable() || _Chat->isOpenWhenPopup())
|
||||
{
|
||||
if (_Chat->isPopable() && !_Chat->isPopuped())
|
||||
|
|
|
@ -27,8 +27,7 @@ using namespace NLMISC;
|
|||
// ***************************************************************************
|
||||
CCtrlBase::~CCtrlBase()
|
||||
{
|
||||
CInterfaceManager *manager = CInterfaceManager::getInstance();
|
||||
manager->removeRefOnCtrl (this);
|
||||
CWidgetManager::getInstance()->removeRefOnCtrl (this);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
|
@ -43,13 +42,13 @@ bool CCtrlBase::handleEvent(const NLGUI::CEventDescriptor &event)
|
|||
{
|
||||
// the mouse capture should be lost when the ctrl is hidden
|
||||
CInterfaceManager *manager = CInterfaceManager::getInstance();
|
||||
if (manager->getCapturePointerLeft() == this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() == this)
|
||||
{
|
||||
manager->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
}
|
||||
if (manager->getCapturePointerRight() == this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerRight() == this)
|
||||
{
|
||||
manager->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
}
|
||||
// NB : don't call return here because derived class may be interested
|
||||
// in handling event more speciffically
|
||||
|
|
|
@ -212,7 +212,7 @@ bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
|
||||
{
|
||||
if (pIM->getCapturePointerLeft() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this)
|
||||
return false;
|
||||
_LeftLongClickHandled = true;
|
||||
}
|
||||
|
@ -248,7 +248,7 @@ bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
|
||||
{
|
||||
if (pIM->getCapturePointerLeft() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this)
|
||||
return false;
|
||||
|
||||
if (_LeftDblClickHandled) // no effect on mouse up after double click has been handled
|
||||
|
@ -284,7 +284,7 @@ bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
}
|
||||
*/
|
||||
runLeftClickAction();
|
||||
if (pIM->getCapturePointerLeft() == NULL) return true; // event handler may release cpature from this object (if it is removed for example)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() == NULL) return true; // event handler may release cpature from this object (if it is removed for example)
|
||||
|
||||
// Run Menu
|
||||
if (!_ListMenuLeft.empty())
|
||||
|
@ -309,7 +309,7 @@ bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
_LastLeftClickButton = NULL;
|
||||
bool handled= false;
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
if (pIM->getCapturePointerRight() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerRight() != this)
|
||||
return false;
|
||||
|
||||
// RunAction
|
||||
|
@ -318,7 +318,7 @@ bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
handled= true;
|
||||
CAHManager::getInstance()->runActionHandler (_AHOnRightClick, this, _AHRightClickParams);
|
||||
}
|
||||
if (pIM->getCapturePointerRight() == NULL) return true; // if this become NULL, this ctrl has been deleted
|
||||
if (CWidgetManager::getInstance()->getCapturePointerRight() == NULL) return true; // if this become NULL, this ctrl has been deleted
|
||||
// Run Menu
|
||||
if (!_ListMenuRight .empty())
|
||||
{
|
||||
|
@ -343,7 +343,7 @@ bool CCtrlBaseButton::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
}
|
||||
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
if (pIM->getCapturePointerLeft() == this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() == this)
|
||||
{
|
||||
if (!_LeftLongClickHandled)
|
||||
{
|
||||
|
@ -452,16 +452,16 @@ void CCtrlBaseButton::updateOver(bool &lastOver)
|
|||
return;
|
||||
}
|
||||
|
||||
if (pIM->getCapturePointerLeft() != NULL)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != NULL)
|
||||
{
|
||||
if (pIM->getCapturePointerLeft() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this)
|
||||
{
|
||||
_Over = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
const vector<CCtrlBase*> &rVB = pIM->getCtrlsUnderPointer ();
|
||||
const vector<CCtrlBase*> &rVB = CWidgetManager::getInstance()->getCtrlsUnderPointer ();
|
||||
|
||||
if (!_Frozen)
|
||||
{
|
||||
|
|
|
@ -163,7 +163,7 @@ void CCtrlButton::draw ()
|
|||
}
|
||||
else
|
||||
{
|
||||
if ((_Over) && (pIM->getCapturePointerLeft() == this))
|
||||
if ((_Over) && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||
{
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
|
@ -179,7 +179,7 @@ void CCtrlButton::draw ()
|
|||
break;
|
||||
case PushButton:
|
||||
{
|
||||
if (_Over && (pIM->getCapturePointerLeft() == this))
|
||||
if (_Over && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||
{
|
||||
nTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
|
@ -215,7 +215,7 @@ void CCtrlButton::draw ()
|
|||
nTxId,
|
||||
color );
|
||||
|
||||
if ((_OverWhenPushed == false) && (_Pushed == true || (pIM->getCapturePointerLeft() == this)))
|
||||
if ((_OverWhenPushed == false) && (_Pushed == true || (CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
|
||||
return;
|
||||
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ bool CCtrlColPick::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (event.getType() == NLGUI::CEventDescriptor::mouse)
|
||||
{
|
||||
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
|
||||
if ((CInterfaceManager::getInstance()->getCapturePointerLeft() != this) &&
|
||||
if ((CWidgetManager::getInstance()->getCapturePointerLeft() != this) &&
|
||||
(!((eventDesc.getX() >= _XReal) &&
|
||||
(eventDesc.getX() < (_XReal + _WReal))&&
|
||||
(eventDesc.getY() > _YReal) &&
|
||||
|
|
|
@ -466,7 +466,7 @@ bool CCtrlScroll::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (event.getType() == NLGUI::CEventDescriptor::mouse)
|
||||
{
|
||||
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
|
||||
if ((CInterfaceManager::getInstance()->getCapturePointerLeft() != this) &&
|
||||
if ((CWidgetManager::getInstance()->getCapturePointerLeft() != this) &&
|
||||
(!((eventDesc.getX() >= _XReal) &&
|
||||
(eventDesc.getX() < (_XReal + _WReal))&&
|
||||
(eventDesc.getY() > _YReal) &&
|
||||
|
|
|
@ -311,7 +311,7 @@ void CCtrlTextButton::draw ()
|
|||
}
|
||||
else
|
||||
{
|
||||
if ((_Over) && (pIM->getCapturePointerLeft() == this))
|
||||
if ((_Over) && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||
{
|
||||
pTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
|
@ -327,7 +327,7 @@ void CCtrlTextButton::draw ()
|
|||
break;
|
||||
case PushButton:
|
||||
{
|
||||
if (_Over && (pIM->getCapturePointerLeft() == this))
|
||||
if (_Over && (CWidgetManager::getInstance()->getCapturePointerLeft() == this))
|
||||
{
|
||||
pTxId = _TextureIdPushed;
|
||||
color = getCurrentColorPushed(globalColor);
|
||||
|
@ -362,7 +362,7 @@ void CCtrlTextButton::draw ()
|
|||
rVR.drawRotFlipBitmap ( _RenderLayer, x+_BmpLeftW+txw, y, _BmpRightW, txh, 0, false, pTxId[2], color );
|
||||
|
||||
// *** Draw Over
|
||||
if (_Over && (_OverWhenPushed || !(_Pushed || pIM->getCapturePointerLeft() == this)))
|
||||
if (_Over && (_OverWhenPushed || !(_Pushed || CWidgetManager::getInstance()->getCapturePointerLeft() == this)))
|
||||
{
|
||||
if ((lastOver == false) && (_AHOnOver != NULL))
|
||||
CAHManager::getInstance()->runActionHandler (_AHOnOver, this, _AHOverParams);
|
||||
|
|
|
@ -1836,7 +1836,7 @@ void CDBCtrlSheet::draw()
|
|||
// Manage over for brick
|
||||
if( _BrickOverable && (isMacro() || isSBrickOrSPhraseId() || isSPhrase()) )
|
||||
{
|
||||
const vector<CCtrlBase*> &rVB = pIM->getCtrlsUnderPointer ();
|
||||
const vector<CCtrlBase*> &rVB = CWidgetManager::getInstance()->getCtrlsUnderPointer ();
|
||||
uint32 i;
|
||||
for (i = 0; i < rVB.size(); ++i)
|
||||
if (rVB[i] == this)
|
||||
|
@ -1856,15 +1856,15 @@ void CDBCtrlSheet::draw()
|
|||
// Drag'N'Drop : display the selected slot bitmap if this slot accept the currently dragged element
|
||||
_CanDrop = false;
|
||||
if (_AHOnCanDrop != NULL)
|
||||
if ((pIM->getCapturePointerLeft() != NULL) && (pIM->getCapturePointerLeft() != this))
|
||||
if ((CWidgetManager::getInstance()->getCapturePointerLeft() != NULL) && (CWidgetManager::getInstance()->getCapturePointerLeft() != this))
|
||||
{
|
||||
if ((CWidgetManager::getInstance()->getPointer()->getX() >= _XReal) &&
|
||||
(CWidgetManager::getInstance()->getPointer()->getX() < (_XReal + _WReal))&&
|
||||
(CWidgetManager::getInstance()->getPointer()->getY() > _YReal) &&
|
||||
(CWidgetManager::getInstance()->getPointer()->getY() <= (_YReal+ _HReal)))
|
||||
if (pIM->getCurrentWindowUnder() == CWidgetManager::getInstance()->getWindow(this))
|
||||
if (CWidgetManager::getInstance()->getCurrentWindowUnder() == CWidgetManager::getInstance()->getWindow(this))
|
||||
{
|
||||
CDBCtrlSheet *pCSSrc = dynamic_cast<CDBCtrlSheet*>(pIM->getCapturePointerLeft());
|
||||
CDBCtrlSheet *pCSSrc = dynamic_cast<CDBCtrlSheet*>(CWidgetManager::getInstance()->getCapturePointerLeft());
|
||||
if ((pCSSrc != NULL) && pCSSrc->isDraging())
|
||||
{
|
||||
string params = string("src=") + pCSSrc->getId();
|
||||
|
@ -2602,7 +2602,7 @@ bool CDBCtrlSheet::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
|
||||
|
||||
// Handle drag'n'drop
|
||||
if (pIM->getCapturePointerLeft() == this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() == this)
|
||||
{
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftdown && !_Draging)
|
||||
{
|
||||
|
@ -2662,7 +2662,7 @@ bool CDBCtrlSheet::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
{
|
||||
bool handled = false;
|
||||
// get the ctrl under the drop
|
||||
const vector<CCtrlBase*> &rCUP = pIM->getCtrlsUnderPointer();
|
||||
const vector<CCtrlBase*> &rCUP = CWidgetManager::getInstance()->getCtrlsUnderPointer();
|
||||
CDBCtrlSheet *pCSdest = NULL;
|
||||
for (uint32 i = 0; i < rCUP.size(); ++i)
|
||||
{
|
||||
|
@ -2727,7 +2727,7 @@ bool CDBCtrlSheet::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
else // If slot not found try to drop on a list
|
||||
{
|
||||
// get the list under the drop
|
||||
const vector<CInterfaceGroup*> &rGUP = pIM->getGroupsUnderPointer();
|
||||
const vector<CInterfaceGroup*> &rGUP = CWidgetManager::getInstance()->getGroupsUnderPointer();
|
||||
CDBGroupListSheet *pList = NULL;
|
||||
CDBGroupListSheetText *pTextList = NULL;
|
||||
for (uint32 i = 0; i < rGUP.size(); ++i)
|
||||
|
@ -2849,7 +2849,7 @@ bool CDBCtrlSheet::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
|
||||
{
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
if (pIM->getCapturePointerLeft() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this)
|
||||
return false;
|
||||
|
||||
// RunAction
|
||||
|
@ -2877,7 +2877,7 @@ bool CDBCtrlSheet::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
{
|
||||
bool handled= false;
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
if (pIM->getCapturePointerRight() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerRight() != this)
|
||||
return false;
|
||||
|
||||
// RunAction
|
||||
|
|
|
@ -711,17 +711,17 @@ void CDBGroupListSheet::draw ()
|
|||
|
||||
_CanDrop = false;
|
||||
if (_CtrlInfo._AHOnCanDrop != NULL)
|
||||
if (pIM->getCapturePointerLeft())
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft())
|
||||
{
|
||||
CGroupContainer *pGC = getContainer();
|
||||
if (pIM->getCurrentWindowUnder() == pGC)
|
||||
if (CWidgetManager::getInstance()->getCurrentWindowUnder() == pGC)
|
||||
{
|
||||
if ((CWidgetManager::getInstance()->getPointer()->getX() >= _XReal) &&
|
||||
(CWidgetManager::getInstance()->getPointer()->getX() < (_XReal + _WReal))&&
|
||||
(CWidgetManager::getInstance()->getPointer()->getY() > _YReal) &&
|
||||
(CWidgetManager::getInstance()->getPointer()->getY() <= (_YReal+ _HReal)))
|
||||
{
|
||||
CDBCtrlSheet *pCSSrc = dynamic_cast<CDBCtrlSheet*>(pIM->getCapturePointerLeft());
|
||||
CDBCtrlSheet *pCSSrc = dynamic_cast<CDBCtrlSheet*>(CWidgetManager::getInstance()->getCapturePointerLeft());
|
||||
if ((pCSSrc != NULL) && pCSSrc->isDraging())
|
||||
{
|
||||
string params = string("src=") + pCSSrc->getId();
|
||||
|
|
|
@ -621,17 +621,17 @@ void CDBGroupListSheetText::draw ()
|
|||
|
||||
_CanDrop = false;
|
||||
if (_CtrlInfo._AHOnCanDrop != NULL)
|
||||
if (pIM->getCapturePointerLeft())
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft())
|
||||
{
|
||||
CGroupContainer *pGC = getContainer();
|
||||
if (pIM->getCurrentWindowUnder() == pGC)
|
||||
if (CWidgetManager::getInstance()->getCurrentWindowUnder() == pGC)
|
||||
{
|
||||
if ((CWidgetManager::getInstance()->getPointer()->getX() >= _XReal) &&
|
||||
(CWidgetManager::getInstance()->getPointer()->getX() < (_XReal + _WReal))&&
|
||||
(CWidgetManager::getInstance()->getPointer()->getY() > _YReal) &&
|
||||
(CWidgetManager::getInstance()->getPointer()->getY() <= (_YReal+ _HReal)))
|
||||
{
|
||||
CDBCtrlSheet *pCSSrc = dynamic_cast<CDBCtrlSheet*>(pIM->getCapturePointerLeft());
|
||||
CDBCtrlSheet *pCSSrc = dynamic_cast<CDBCtrlSheet*>(CWidgetManager::getInstance()->getCapturePointerLeft());
|
||||
if ((pCSSrc != NULL) && pCSSrc->isDraging())
|
||||
{
|
||||
string params = string("src=") + pCSSrc->getId();
|
||||
|
@ -674,10 +674,10 @@ bool CDBGroupListSheetText::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
{
|
||||
// Drag'n'drop from a ctrl sheet that belongs to this list
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
if ((pIM->getCapturePointerLeft() != NULL) && (pIM->getCapturePointerLeft()->getParent() == _List))
|
||||
if ((CWidgetManager::getInstance()->getCapturePointerLeft() != NULL) && (CWidgetManager::getInstance()->getCapturePointerLeft()->getParent() == _List))
|
||||
{
|
||||
CDBCtrlSheet *pDraggedSheet = NULL;
|
||||
CCtrlButton *pCB = dynamic_cast<CCtrlButton*>(pIM->getCapturePointerLeft());
|
||||
CCtrlButton *pCB = dynamic_cast<CCtrlButton*>(CWidgetManager::getInstance()->getCapturePointerLeft());
|
||||
if (pCB != NULL)
|
||||
{
|
||||
// A button has been captured -> Transform the capture to the corresponding ctrlsheet
|
||||
|
@ -686,7 +686,7 @@ bool CDBGroupListSheetText::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
_SheetChildren[pos]->Ctrl->isDragable() && (!_SheetChildren[pos]->Ctrl->getGrayed()))
|
||||
{
|
||||
pDraggedSheet = _SheetChildren[pos]->Ctrl;
|
||||
pIM->setCapturePointerLeft(pDraggedSheet);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(pDraggedSheet);
|
||||
NLGUI::CEventDescriptorMouse newEv = eventDesc;
|
||||
// Send this because not send (the captured button has processed the event mouseleftdown)
|
||||
newEv.setEventTypeExtended(NLGUI::CEventDescriptorMouse::mouseleftdown);
|
||||
|
@ -695,7 +695,7 @@ bool CDBGroupListSheetText::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
}
|
||||
else
|
||||
{
|
||||
pDraggedSheet = dynamic_cast<CDBCtrlSheet*>(pIM->getCapturePointerLeft());
|
||||
pDraggedSheet = dynamic_cast<CDBCtrlSheet*>(CWidgetManager::getInstance()->getCapturePointerLeft());
|
||||
// auto scroll only if swapable
|
||||
if(swapable())
|
||||
{
|
||||
|
@ -714,7 +714,7 @@ bool CDBGroupListSheetText::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
|
||||
{
|
||||
sint posdst = -1,possrc = -1;
|
||||
const vector<CCtrlBase*> &rV = pIM->getCtrlsUnderPointer();
|
||||
const vector<CCtrlBase*> &rV = CWidgetManager::getInstance()->getCtrlsUnderPointer();
|
||||
for (uint i = 0; i < rV.size(); ++i)
|
||||
{
|
||||
CCtrlButton *pCB = dynamic_cast<CCtrlButton*>(rV[i]);
|
||||
|
@ -920,7 +920,7 @@ void CDBGroupListSheetText::setup()
|
|||
|
||||
_SheetChildren[i]->init(this, i);
|
||||
}
|
||||
pIM->registerClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->registerClockMsgTarget(this);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -175,7 +175,7 @@ bool CCtrlResizer::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (event.getType() == NLGUI::CEventDescriptor::mouse)
|
||||
{
|
||||
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
|
||||
if ((CInterfaceManager::getInstance()->getCapturePointerLeft() != this) && !isIn(eventDesc.getX(), eventDesc.getY()))
|
||||
if ((CWidgetManager::getInstance()->getCapturePointerLeft() != this) && !isIn(eventDesc.getX(), eventDesc.getY()))
|
||||
return false;
|
||||
|
||||
CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent);
|
||||
|
@ -586,7 +586,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
{
|
||||
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
|
||||
// the ctrl must have been captured
|
||||
if (pIM->getCapturePointerLeft() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this)
|
||||
return false;
|
||||
|
||||
CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent);
|
||||
|
@ -604,7 +604,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (_WaitToOpenClose)
|
||||
{
|
||||
_WaitToOpenClose = false;
|
||||
pIM->unregisterClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->unregisterClockMsgTarget(this);
|
||||
// _WaitToOpen can only be set if the container is popable
|
||||
if (gc)
|
||||
{
|
||||
|
@ -642,8 +642,8 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
}
|
||||
gc->invalidateCoords(2);
|
||||
//
|
||||
pIM->setCapturePointerLeft(NULL);
|
||||
pIM->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -652,7 +652,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (_WaitToOpenClose)
|
||||
{
|
||||
_WaitToOpenClose = false;
|
||||
pIM->unregisterClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->unregisterClockMsgTarget(this);
|
||||
}
|
||||
|
||||
if (_CanOpen || gc->isOpenWhenPopup())
|
||||
|
@ -672,7 +672,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (gc->isPopable())
|
||||
{
|
||||
_WaitToOpenClose = true;
|
||||
pIM->registerClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->registerClockMsgTarget(this);
|
||||
_WaitToOpenCloseDate = T1;
|
||||
}
|
||||
else
|
||||
|
@ -848,14 +848,14 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (_ParentScrollingUp)
|
||||
{
|
||||
_ParentScrollingUp = false;
|
||||
pIM->registerClockMsgTarget(this); // want to now when time pass
|
||||
CWidgetManager::getInstance()->registerClockMsgTarget(this); // want to now when time pass
|
||||
}
|
||||
if (glSciY > gl->getYReal()) // is there need for scroll ?
|
||||
{
|
||||
if (!_ParentScrollingDown)
|
||||
{
|
||||
_ParentScrollingDown = true;
|
||||
pIM->registerClockMsgTarget(this); // want to now when time pass
|
||||
CWidgetManager::getInstance()->registerClockMsgTarget(this); // want to now when time pass
|
||||
_ScrollTime = 0;
|
||||
}
|
||||
}
|
||||
|
@ -864,7 +864,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (_ParentScrollingDown)
|
||||
{
|
||||
_ParentScrollingDown = false;
|
||||
pIM->unregisterClockMsgTarget(this); // want to now when time pass
|
||||
CWidgetManager::getInstance()->unregisterClockMsgTarget(this); // want to now when time pass
|
||||
}
|
||||
}
|
||||
y = _ParentListBottom;
|
||||
|
@ -874,7 +874,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (_ParentScrollingDown)
|
||||
{
|
||||
_ParentScrollingDown = false;
|
||||
pIM->registerClockMsgTarget(this); // want to now when time pass
|
||||
CWidgetManager::getInstance()->registerClockMsgTarget(this); // want to now when time pass
|
||||
}
|
||||
sint32 topY = y + _Parent->getHReal();
|
||||
if (topY > _ParentListTop)
|
||||
|
@ -885,7 +885,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (!_ParentScrollingUp)
|
||||
{
|
||||
_ParentScrollingUp = true;
|
||||
pIM->registerClockMsgTarget(this); // want to now when time pass
|
||||
CWidgetManager::getInstance()->registerClockMsgTarget(this); // want to now when time pass
|
||||
_ScrollTime = 0;
|
||||
}
|
||||
}
|
||||
|
@ -894,7 +894,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (_ParentScrollingUp)
|
||||
{
|
||||
_ParentScrollingDown = false;
|
||||
pIM->unregisterClockMsgTarget(this); // want to now when time pass
|
||||
CWidgetManager::getInstance()->unregisterClockMsgTarget(this); // want to now when time pass
|
||||
}
|
||||
}
|
||||
y = _ParentListTop - _Parent->getHReal();
|
||||
|
@ -924,7 +924,7 @@ bool CCtrlMover::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
CGroupContainer *gc = dynamic_cast<CGroupContainer *>(_Parent);
|
||||
if (!gc) return false;
|
||||
_WaitToOpenClose = false;
|
||||
pIM->unregisterClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->unregisterClockMsgTarget(this);
|
||||
// do the open action
|
||||
if (gc->isOpenable() && !gc->isOpenWhenPopup())
|
||||
{
|
||||
|
@ -984,7 +984,7 @@ void CCtrlMover::handleScrolling()
|
|||
else
|
||||
{
|
||||
_ParentScrollingUp = false;
|
||||
im->unregisterClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->unregisterClockMsgTarget(this);
|
||||
_InsertionIndex = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1018,7 +1018,7 @@ void CCtrlMover::handleScrolling()
|
|||
else
|
||||
{
|
||||
_ParentScrollingDown = false;
|
||||
im->unregisterClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->unregisterClockMsgTarget(this);
|
||||
_InsertionIndex = gl->getNumChildren();
|
||||
}
|
||||
}
|
||||
|
@ -1083,8 +1083,8 @@ void CCtrlMover::setPoped(CGroupContainer *gc, sint32 x, sint32 y, CInterfaceMan
|
|||
cm->_MoveDeltaXReal= gc->getXReal() - gc->getX();
|
||||
cm->_MoveDeltaYReal= gc->getYReal() - gc->getY();
|
||||
cm->_Moving= true;
|
||||
pIM->setCapturePointerLeft(cm);
|
||||
pIM->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(cm);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
|
@ -1127,8 +1127,8 @@ void CCtrlMover::setMovingInParent(CGroupContainer *gc, sint32 /* x */, sint32 y
|
|||
_MoveStartY= gc->getY()-eventDesc.getY();
|
||||
_MoveDeltaYReal= gc->getYReal() - gc->getY();
|
||||
|
||||
pIM->setCapturePointerLeft(this);
|
||||
pIM->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(this);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
_Moving = false;
|
||||
_MovingInParentList = true;
|
||||
|
||||
|
@ -1165,7 +1165,7 @@ void CCtrlMover::stopMove(CInterfaceManager *pIM)
|
|||
{
|
||||
_ParentScrollingUp = false;
|
||||
_ParentScrollingDown = false;
|
||||
pIM->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
_HasMoved = false;
|
||||
if (_Moving)
|
||||
{
|
||||
|
@ -2200,9 +2200,9 @@ void CGroupContainer::draw ()
|
|||
bool dontFade = false;
|
||||
// bool alphaUp = false;
|
||||
// should not applied if the container is being resized
|
||||
if (pIM->getCapturePointerLeft() != NULL)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != NULL)
|
||||
{
|
||||
CInterfaceGroup *ig = pIM->getCapturePointerLeft()->getParent();
|
||||
CInterfaceGroup *ig = CWidgetManager::getInstance()->getCapturePointerLeft()->getParent();
|
||||
while (ig)
|
||||
{
|
||||
if (ig == this)
|
||||
|
@ -2218,10 +2218,10 @@ void CGroupContainer::draw ()
|
|||
|
||||
bool isOver = false;
|
||||
|
||||
if (pIM->getCapturePointerLeft() == NULL)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() == NULL)
|
||||
if (isIn(mousePointer->getX(), mousePointer->getY()))
|
||||
{
|
||||
CInterfaceGroup *ig = pIM->getCurrentWindowUnder();
|
||||
CInterfaceGroup *ig = CWidgetManager::getInstance()->getCurrentWindowUnder();
|
||||
while (ig)
|
||||
{
|
||||
if (ig == this)
|
||||
|
@ -3291,8 +3291,8 @@ void CGroupContainer::popupCurrentPos()
|
|||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
im->makeWindow(this);
|
||||
CWidgetManager::getInstance()->setTopWindow(this);
|
||||
im->clearViewUnders();
|
||||
im->clearCtrlsUnders();
|
||||
CWidgetManager::getInstance()->clearViewUnders();
|
||||
CWidgetManager::getInstance()->clearCtrlsUnders();
|
||||
|
||||
// update coords (put coords in world)
|
||||
setX(getXReal());
|
||||
|
@ -3347,8 +3347,8 @@ void CGroupContainer::popin(sint32 insertPos /* = -1 */, bool putBackInFatherCon
|
|||
_MovingInParentList = false;
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
im->unMakeWindow(this);
|
||||
im->clearViewUnders();
|
||||
im->clearCtrlsUnders();
|
||||
CWidgetManager::getInstance()->clearViewUnders();
|
||||
CWidgetManager::getInstance()->clearCtrlsUnders();
|
||||
_Parent = NULL;
|
||||
_ParentPos = NULL;
|
||||
std::vector<CGroupContainer *>::iterator it = std::find(_PopedCont.begin(), _PopedCont.end(), this);
|
||||
|
@ -3534,8 +3534,8 @@ public:
|
|||
pIC->popup();
|
||||
//
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
im->setCapturePointerLeft(NULL);
|
||||
im->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
}
|
||||
};
|
||||
REGISTER_ACTION_HANDLER (CICPopup, "ic_popup");
|
||||
|
@ -3559,8 +3559,8 @@ public:
|
|||
//
|
||||
pIC->popin();
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
im->setCapturePointerLeft(NULL);
|
||||
im->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
}
|
||||
};
|
||||
REGISTER_ACTION_HANDLER (CICPopin, "ic_popin");
|
||||
|
@ -3664,9 +3664,9 @@ void CGroupContainer::forceRolloverAlpha()
|
|||
bool CGroupContainer::hasKeyboardFocus() const
|
||||
{
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
if (im->getCaptureKeyboard() != NULL)
|
||||
if (CWidgetManager::getInstance()->getCaptureKeyboard() != NULL)
|
||||
{
|
||||
const CGroupEditBox *geb = dynamic_cast<const CGroupEditBox *>(im->getCaptureKeyboard());
|
||||
const CGroupEditBox *geb = dynamic_cast<const CGroupEditBox *>(CWidgetManager::getInstance()->getCaptureKeyboard());
|
||||
if (geb)
|
||||
{
|
||||
const CInterfaceGroup *gr = geb->getParent();
|
||||
|
|
|
@ -96,9 +96,9 @@ CGroupEditBox::~CGroupEditBox()
|
|||
{
|
||||
if (this == _CurrSelection) _CurrSelection = NULL;
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
if (im->getCaptureKeyboard() == this || im->getOldCaptureKeyboard() == this)
|
||||
if (CWidgetManager::getInstance()->getCaptureKeyboard() == this || CWidgetManager::getInstance()->getOldCaptureKeyboard() == this)
|
||||
{
|
||||
im->resetCaptureKeyboard();
|
||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -296,7 +296,7 @@ void CGroupEditBox::draw ()
|
|||
}
|
||||
|
||||
// Display the cursor if needed
|
||||
if (pIM->getCaptureKeyboard () == this)
|
||||
if (CWidgetManager::getInstance()->getCaptureKeyboard () == this)
|
||||
{
|
||||
_BlinkTime += DT;
|
||||
if (_BlinkTime > 0.25f)
|
||||
|
@ -558,7 +558,7 @@ void CGroupEditBox::handleEventChar(const NLGUI::CEventDescriptorKey &rEDK)
|
|||
{
|
||||
case KeyESCAPE:
|
||||
_CurrentHistoricIndex= -1;
|
||||
CInterfaceManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
// stop selection
|
||||
_CurrSelection = NULL;
|
||||
_CursorAtPreviousLineEnd = false;
|
||||
|
@ -589,7 +589,7 @@ void CGroupEditBox::handleEventChar(const NLGUI::CEventDescriptorKey &rEDK)
|
|||
if (NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:ENTER_DONT_QUIT_CB")->getValue32() == 0)
|
||||
{
|
||||
if(_LooseFocusOnEnter)
|
||||
pIM->setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
}
|
||||
// stop selection
|
||||
_CurrSelection = NULL;
|
||||
|
@ -720,7 +720,7 @@ void CGroupEditBox::handleEventString(const NLGUI::CEventDescriptorKey &rEDK)
|
|||
bool CGroupEditBox::undo()
|
||||
{
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
if (im->getCaptureKeyboard() != this) return false;
|
||||
if (CWidgetManager::getInstance()->getCaptureKeyboard() != this) return false;
|
||||
if (!_CanUndo) return false;
|
||||
_ModifiedInputString = _InputString;
|
||||
setInputString(_StartInputString);
|
||||
|
@ -735,7 +735,7 @@ bool CGroupEditBox::undo()
|
|||
bool CGroupEditBox::redo()
|
||||
{
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
if (im->getCaptureKeyboard() != this) return false;
|
||||
if (CWidgetManager::getInstance()->getCaptureKeyboard() != this) return false;
|
||||
if (!_CanRedo) return false;
|
||||
setInputString(_ModifiedInputString);
|
||||
_CanUndo = true;
|
||||
|
@ -877,9 +877,9 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightup)
|
||||
{
|
||||
if (pIM->getCapturePointerRight() == this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerRight() == this)
|
||||
{
|
||||
pIM->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
if (!_ListMenuRight.empty())
|
||||
{
|
||||
if (CDBCtrlSheet::getDraggedSheet() == NULL)
|
||||
|
@ -905,7 +905,7 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
{
|
||||
_SelectingText = true;
|
||||
stopParentBlink();
|
||||
pIM->setCaptureKeyboard (this);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard (this);
|
||||
// set the right cursor position
|
||||
uint newCurPos;
|
||||
bool cursorAtPreviousLineEnd;
|
||||
|
@ -945,7 +945,7 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightdown)
|
||||
{
|
||||
pIM->setCapturePointerRight(this);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(this);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -960,7 +960,7 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
NLGUI::CEventDescriptorActiveCalledOnParent &activeEvent = (NLGUI::CEventDescriptorActiveCalledOnParent &) eventDesc;
|
||||
if (activeEvent.getActive() == false && _ResetFocusOnHide)
|
||||
{
|
||||
CInterfaceManager::getInstance()->resetCaptureKeyboard();
|
||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||
// If a selection was shown, reset it
|
||||
if (_CurrSelection == this) _CurrSelection = NULL;
|
||||
}
|
||||
|
@ -1243,9 +1243,8 @@ void CGroupEditBox::setSelectionAll()
|
|||
void CGroupEditBox::setActive(bool active)
|
||||
{
|
||||
if (!active && _ResetFocusOnHide)
|
||||
{
|
||||
CInterfaceManager::getInstance()->resetCaptureKeyboard();
|
||||
}
|
||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||
|
||||
CInterfaceGroup::setActive(active);
|
||||
}
|
||||
|
||||
|
@ -1295,7 +1294,7 @@ void CGroupEditBox::setCommand(const ucstring &command, bool execute)
|
|||
}
|
||||
else
|
||||
{
|
||||
CInterfaceManager::getInstance()->setCaptureKeyboard (this);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard (this);
|
||||
_CursorPos = (sint32)_InputString.length();
|
||||
}
|
||||
}
|
||||
|
@ -1431,7 +1430,7 @@ void CGroupEditBox::setFocusOnText()
|
|||
|
||||
// else set the focus
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
pIM->setCaptureKeyboard (this);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard (this);
|
||||
|
||||
_CurrSelection = this;
|
||||
_SelectCursorPos= (sint32)_InputString.size();
|
||||
|
@ -1457,8 +1456,8 @@ int CGroupEditBox::luaCancelFocusOnText(CLuaState &ls)
|
|||
CLuaIHM::checkArgCount(ls, funcName, 0);
|
||||
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
if (pIM->getCaptureKeyboard()==this || pIM->getOldCaptureKeyboard()==this)
|
||||
pIM->resetCaptureKeyboard();
|
||||
if (CWidgetManager::getInstance()->getCaptureKeyboard()==this || CWidgetManager::getInstance()->getOldCaptureKeyboard()==this)
|
||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||
|
||||
_CurrSelection = NULL;
|
||||
_SelectCursorPos= 0;
|
||||
|
@ -1494,12 +1493,12 @@ void CGroupEditBox::setFrozen (bool state)
|
|||
{
|
||||
CInterfaceManager *pIM= CInterfaceManager::getInstance();
|
||||
// stop capture and selection
|
||||
pIM->setCaptureKeyboard (NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard (NULL);
|
||||
if(_CurrSelection==this) _CurrSelection = NULL;
|
||||
// do not allow to recover focus
|
||||
if (pIM->getOldCaptureKeyboard() == this)
|
||||
if (CWidgetManager::getInstance()->getOldCaptureKeyboard() == this)
|
||||
{
|
||||
pIM->resetCaptureKeyboard();
|
||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -241,10 +241,10 @@ public:
|
|||
void release()
|
||||
{
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
if (im->getCapturePointerLeft() == this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() == this)
|
||||
{
|
||||
_Moving = false;
|
||||
im->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
}
|
||||
}
|
||||
virtual uint getDeltaDepth() const { return 100; }
|
||||
|
@ -281,7 +281,7 @@ public:
|
|||
if (!this->isIn(eventDesc.getX(), eventDesc.getY())) return false;
|
||||
_TargetGroup = getTargetGroup();
|
||||
if (!_TargetGroup) return false;
|
||||
im->setCapturePointerLeft(this);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(this);
|
||||
_Moving = true;
|
||||
_OffsetX = _TargetGroup->getW() - eventDesc.getX();
|
||||
return true;
|
||||
|
@ -292,7 +292,7 @@ public:
|
|||
}
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mousemove)
|
||||
{
|
||||
if (_Moving && im->getCapturePointerLeft() == this)
|
||||
if (_Moving && CWidgetManager::getInstance()->getCapturePointerLeft() == this)
|
||||
{
|
||||
if (!_TargetGroup)
|
||||
{
|
||||
|
|
|
@ -1853,7 +1853,7 @@ CGroupHTML::CGroupHTML(const TCtorParam ¶m)
|
|||
_GroupListAdaptor = NULL;
|
||||
|
||||
// Register
|
||||
CInterfaceManager::getInstance()->registerClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->registerClockMsgTarget(this);
|
||||
|
||||
// HTML parameters
|
||||
BgColor = CRGBA::Black;
|
||||
|
@ -1935,7 +1935,7 @@ CGroupHTML::~CGroupHTML()
|
|||
|
||||
bool CGroupHTML::parse(xmlNodePtr cur,CInterfaceGroup *parentGroup)
|
||||
{
|
||||
nlassert(CInterfaceManager::getInstance()->isClockMsgTarget(this));
|
||||
nlassert( CWidgetManager::getInstance()->isClockMsgTarget(this));
|
||||
|
||||
|
||||
if(!CGroupScrollText::parse(cur, parentGroup))
|
||||
|
@ -3492,8 +3492,8 @@ void CGroupHTML::removeContent ()
|
|||
_GroupListAdaptor->clearGroups();
|
||||
_GroupListAdaptor->clearControls();
|
||||
_GroupListAdaptor->clearViews();
|
||||
CInterfaceManager::getInstance()->clearViewUnders();
|
||||
CInterfaceManager::getInstance()->clearCtrlsUnders();
|
||||
CWidgetManager::getInstance()->clearViewUnders();
|
||||
CWidgetManager::getInstance()->clearCtrlsUnders();
|
||||
_Paragraph = NULL;
|
||||
|
||||
// Reset default background color
|
||||
|
|
|
@ -578,7 +578,7 @@ void CGroupList::draw ()
|
|||
sint32 x = CWidgetManager::getInstance()->getPointer()->getX();
|
||||
sint32 y = CWidgetManager::getInstance()->getPointer()->getY();
|
||||
|
||||
CInterfaceGroup *pIG = pIM->getWindowUnder(x, y);
|
||||
CInterfaceGroup *pIG = CWidgetManager::getInstance()->getWindowUnder(x, y);
|
||||
CInterfaceGroup *pParent = this;
|
||||
bool bFound = false;
|
||||
while (pParent != NULL)
|
||||
|
|
|
@ -126,7 +126,7 @@ static void popupLandMarkNameDialog()
|
|||
eb->setInputString(ucstring());
|
||||
}
|
||||
|
||||
im->setCaptureKeyboard(eb);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(eb);
|
||||
eb->setSelectionAll();
|
||||
}
|
||||
|
||||
|
@ -181,7 +181,7 @@ bool CGroupMap::CPolyButton::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
|
||||
{
|
||||
if (im->getCapturePointerLeft() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this)
|
||||
return false;
|
||||
|
||||
// Set the map !!!
|
||||
|
@ -198,7 +198,7 @@ bool CGroupMap::CPolyButton::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
}
|
||||
}
|
||||
|
||||
im->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
if (bFound)
|
||||
Map->setMap(Map->getCurMap()->Children[i].Name);
|
||||
return true;
|
||||
|
@ -209,7 +209,7 @@ bool CGroupMap::CPolyButton::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
{
|
||||
if (contains(CVector2f((float)eventDesc.getX(), (float)eventDesc.getY())))
|
||||
{
|
||||
im->setCapturePointerLeft(this);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(this);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -263,7 +263,7 @@ void CGroupMap::CPolyButton::drawPolyButton()
|
|||
rVR.getScreenOOSize(oow, ooh);
|
||||
|
||||
bool bOver = false;
|
||||
const std::vector<CCtrlBase*> &rCUP = pIM->getCtrlsUnderPointer();
|
||||
const std::vector<CCtrlBase*> &rCUP = CWidgetManager::getInstance()->getCtrlsUnderPointer();
|
||||
for (uint32 i = 0; i < rCUP.size(); ++i)
|
||||
if (rCUP[i] == this)
|
||||
{
|
||||
|
@ -1718,7 +1718,7 @@ bool CGroupMap::handleEvent(const NLGUI::CEventDescriptor &event)
|
|||
panEnd = eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup && _Panning && _HasMoved;
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup && !panEnd)
|
||||
{
|
||||
//if (im->getCapturePointerLeft() == this)
|
||||
//if (CWidgetManager::getInstance()->getCapturePointerLeft() == this)
|
||||
// NB : don't test capture of mouse here, because
|
||||
// some R2 tool may begin outside of this window
|
||||
// example : clicking in the palette window and doing a drag-and-drop to the
|
||||
|
@ -1736,7 +1736,7 @@ bool CGroupMap::handleEvent(const NLGUI::CEventDescriptor &event)
|
|||
{
|
||||
if (!R2::getEditor().getCurrentTool()->getPreviousToolClickEndFlag())
|
||||
{
|
||||
if (im->getCapturePointerLeft() == this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() == this)
|
||||
{
|
||||
// unselected unless tool has been changed before last mouse left up (happens when one's finish a route using double click -> should not unselect then)
|
||||
R2::getEditor().setSelectedInstance(NULL);
|
||||
|
@ -1747,7 +1747,7 @@ bool CGroupMap::handleEvent(const NLGUI::CEventDescriptor &event)
|
|||
}
|
||||
else if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightup)
|
||||
{
|
||||
if (im->getCapturePointerRight() == this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerRight() == this)
|
||||
{
|
||||
if (isIn(eventDesc.getX(), eventDesc.getY()))
|
||||
{
|
||||
|
@ -1792,7 +1792,7 @@ bool CGroupMap::handleEvent(const NLGUI::CEventDescriptor &event)
|
|||
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
|
||||
{
|
||||
if (im->getCapturePointerLeft() != this)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -1803,7 +1803,7 @@ bool CGroupMap::handleEvent(const NLGUI::CEventDescriptor &event)
|
|||
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightdown)
|
||||
{
|
||||
im->setCapturePointerRight(this);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1811,7 +1811,7 @@ bool CGroupMap::handleEvent(const NLGUI::CEventDescriptor &event)
|
|||
{
|
||||
if (isIn(eventDesc.getX(), eventDesc.getY()))
|
||||
{
|
||||
im->setCapturePointerLeft(this);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(this);
|
||||
_StartXForPaning = eventDesc.getX();
|
||||
_StartYForPaning = eventDesc.getY();
|
||||
_StartWorldOffsetForPaning = _WorldOffset;
|
||||
|
@ -1845,7 +1845,7 @@ bool CGroupMap::handleEvent(const NLGUI::CEventDescriptor &event)
|
|||
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mousemove)
|
||||
{
|
||||
if (im->getCapturePointerLeft() != this || !_Panning)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != this || !_Panning)
|
||||
return CInterfaceGroup::handleEvent(event);
|
||||
|
||||
if (_MapTexW != 0 && _MapTexH != 0)
|
||||
|
|
|
@ -53,9 +53,9 @@ void CGroupModalGetKey::setActive (bool state)
|
|||
{
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
if (state == true)
|
||||
pIM->setCaptureKeyboard (this);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard (this);
|
||||
else
|
||||
pIM->setCaptureKeyboard (NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard (NULL);
|
||||
|
||||
CViewText *pVT= dynamic_cast<CViewText*>(CWidgetManager::getInstance()->getElementFromId( VIEW_TEXT_KEY ));
|
||||
if (pVT != NULL) pVT->setText(string(""));
|
||||
|
|
|
@ -738,7 +738,7 @@ void CGroupParagraph::checkCoords ()
|
|||
if (_LastW != (sint) parentWidth)
|
||||
{
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
CCtrlBase *pCB = pIM->getCapturePointerLeft();
|
||||
CCtrlBase *pCB = CWidgetManager::getInstance()->getCapturePointerLeft();
|
||||
if (pCB != NULL)
|
||||
{
|
||||
CCtrlResizer *pCR = dynamic_cast<CCtrlResizer*>(pCB);
|
||||
|
@ -778,7 +778,7 @@ void CGroupParagraph::draw ()
|
|||
sint32 x = CWidgetManager::getInstance()->getPointer()->getX();
|
||||
sint32 y = CWidgetManager::getInstance()->getPointer()->getY();
|
||||
|
||||
CInterfaceGroup *pIG = pIM->getWindowUnder(x,y);
|
||||
CInterfaceGroup *pIG = CWidgetManager::getInstance()->getWindowUnder(x,y);
|
||||
CInterfaceGroup *pParent = this;
|
||||
bool bFound = false;
|
||||
while (pParent != NULL)
|
||||
|
|
|
@ -829,7 +829,7 @@ void CCtrlTabButton::setBlink (bool b)
|
|||
{
|
||||
_TextColorNormalBlink = getTextColorNormal();
|
||||
_TextModulateGlobalColorNormalBlink = getTextModulateGlobalColorNormal();
|
||||
pIM->registerClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->registerClockMsgTarget(this);
|
||||
}
|
||||
_Blinking = true;
|
||||
}
|
||||
|
@ -837,7 +837,7 @@ void CCtrlTabButton::setBlink (bool b)
|
|||
{
|
||||
if (_Blinking)
|
||||
{
|
||||
pIM->unregisterClockMsgTarget(this);
|
||||
CWidgetManager::getInstance()->unregisterClockMsgTarget(this);
|
||||
setTextColorNormal(_TextColorNormalBlink);
|
||||
setTextModulateGlobalColorNormal(_TextModulateGlobalColorNormalBlink);
|
||||
}
|
||||
|
|
|
@ -792,7 +792,7 @@ void CGroupTable::checkCoords ()
|
|||
else
|
||||
{
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
CCtrlBase *pCB = pIM->getCapturePointerLeft();
|
||||
CCtrlBase *pCB = CWidgetManager::getInstance()->getCapturePointerLeft();
|
||||
if (pCB != NULL)
|
||||
{
|
||||
CCtrlResizer *pCR = dynamic_cast<CCtrlResizer*>(pCB);
|
||||
|
|
|
@ -576,7 +576,7 @@ void CGroupTree::draw()
|
|||
sint32 x = CWidgetManager::getInstance()->getPointer()->getX();
|
||||
sint32 y = CWidgetManager::getInstance()->getPointer()->getY();
|
||||
|
||||
CInterfaceGroup *pIG = pIM->getWindowUnder(x, y);
|
||||
CInterfaceGroup *pIG = CWidgetManager::getInstance()->getWindowUnder(x, y);
|
||||
CInterfaceGroup *pParent = this;
|
||||
bool bFound = false;
|
||||
while (pParent != NULL)
|
||||
|
|
|
@ -228,7 +228,7 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event)
|
|||
if(event == EventKeyDownId)
|
||||
{
|
||||
CEventKeyDown* downEvent=(CEventKeyDown*)&event;
|
||||
if (!pIM->getCaptureKeyboard () || !EditActions.keyPushed (*downEvent))
|
||||
if (!CWidgetManager::getInstance()->getCaptureKeyboard () || !EditActions.keyPushed (*downEvent))
|
||||
Actions.keyPushed (*downEvent);
|
||||
}
|
||||
// Event from the Keyboard (UP KEYS)
|
||||
|
|
|
@ -571,8 +571,8 @@ bool CInterface3DScene::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
if (event.getType() == NLGUI::CEventDescriptor::mouse)
|
||||
{
|
||||
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
|
||||
if ((CInterfaceManager::getInstance()->getCapturePointerLeft() != this) &&
|
||||
(CInterfaceManager::getInstance()->getCapturePointerRight() != this) &&
|
||||
if ((CWidgetManager::getInstance()->getCapturePointerLeft() != this) &&
|
||||
(CWidgetManager::getInstance()->getCapturePointerRight() != this) &&
|
||||
(!((eventDesc.getX() >= _XReal) &&
|
||||
(eventDesc.getX() < (_XReal + _WReal))&&
|
||||
(eventDesc.getY() > _YReal) &&
|
||||
|
@ -585,7 +585,7 @@ bool CInterface3DScene::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
_MouseLDownX = eventDesc.getX();
|
||||
_MouseLDownY = eventDesc.getY();
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
pIM->setCapturePointerLeft(this); // Because we are not just a control
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(this); // Because we are not just a control
|
||||
return true;
|
||||
}
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
|
||||
|
@ -599,7 +599,7 @@ bool CInterface3DScene::handleEvent (const NLGUI::CEventDescriptor &event)
|
|||
_MouseRDownX = eventDesc.getX();
|
||||
_MouseRDownY = eventDesc.getY();
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
pIM->setCapturePointerRight(this); // Because we are not just a control
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(this); // Because we are not just a control
|
||||
return true;
|
||||
}
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightup)
|
||||
|
|
|
@ -144,8 +144,7 @@ CInterfaceGroup::~CInterfaceGroup()
|
|||
// initStart = ryzomGetLocalTime ();
|
||||
clearControls();
|
||||
// nlinfo ("%d seconds for clearControls '%s'", (uint32)(ryzomGetLocalTime ()-initStart)/1000, _Id.c_str());
|
||||
CInterfaceManager *manager = CInterfaceManager::getInstance();
|
||||
manager->removeRefOnGroup (this);
|
||||
CWidgetManager::getInstance()->removeRefOnGroup (this);
|
||||
|
||||
#ifdef AJM_DEBUG_TRACK_INTERFACE_GROUPS
|
||||
// AJM DEBUG
|
||||
|
|
|
@ -377,14 +377,8 @@ CInterfaceManager::~CInterfaceManager()
|
|||
void CInterfaceManager::reset()
|
||||
{
|
||||
CViewRenderer::getInstance()->reset();
|
||||
_CtrlsUnderPointer.clear();
|
||||
CWidgetManager::getInstance()->setCurContextHelp( NULL );
|
||||
_ViewsUnderPointer.clear();
|
||||
_GroupsUnderPointer.clear();
|
||||
_CaptureKeyboard = NULL;
|
||||
_OldCaptureKeyboard = NULL;
|
||||
setCapturePointerLeft(NULL);
|
||||
setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->reset();
|
||||
|
||||
_ActiveAnims.clear();
|
||||
for (uint32 i = 0; i < _IDStringWaiters.size(); ++i)
|
||||
delete _IDStringWaiters[i];
|
||||
|
@ -1330,24 +1324,8 @@ void CInterfaceManager::updateFrameEvents()
|
|||
}
|
||||
}
|
||||
|
||||
// send clock tick msg to ctrl that are captured
|
||||
NLGUI::CEventDescriptorSystem clockTick;
|
||||
clockTick.setEventTypeExtended(NLGUI::CEventDescriptorSystem::clocktick);
|
||||
if (_CapturePointerLeft)
|
||||
{
|
||||
_CapturePointerLeft->handleEvent(clockTick);
|
||||
}
|
||||
if (_CapturePointerRight)
|
||||
{
|
||||
_CapturePointerRight->handleEvent(clockTick);
|
||||
}
|
||||
CWidgetManager::getInstance()->sendClockTickEvent();
|
||||
|
||||
// and send clock tick msg to ctrl that are registered
|
||||
std::vector<CCtrlBase*> clockMsgTarget = _ClockMsgTargets;
|
||||
for(std::vector<CCtrlBase*>::iterator it = clockMsgTarget.begin(); it != clockMsgTarget.end(); ++it)
|
||||
{
|
||||
(*it)->handleEvent(clockTick);
|
||||
}
|
||||
IngameDbMngr.flushObserverCalls();
|
||||
NLGUI::CDBManager::getInstance()->flushObserverCalls();
|
||||
|
||||
|
@ -1374,7 +1352,7 @@ void CInterfaceManager::updateFrameViews(NL3D::UCamera camera)
|
|||
if (!camera.empty())
|
||||
CViewRenderer::getInstance()->setWorldSpaceFrustum (camera.getFrustum());
|
||||
|
||||
checkCoords();
|
||||
CWidgetManager::getInstance()->checkCoords();
|
||||
drawViews(camera);
|
||||
|
||||
// The interface manager may change usual Global setup. reset them.
|
||||
|
@ -1707,7 +1685,7 @@ bool CInterfaceManager::saveConfig (const string &filename)
|
|||
quitVisitor.Desktop = k;
|
||||
setMode(k);
|
||||
visit(&quitVisitor);
|
||||
checkCoords();
|
||||
CWidgetManager::getInstance()->checkCoords();
|
||||
}
|
||||
setMode(0);
|
||||
setMode(_CurrentMode);
|
||||
|
@ -1812,106 +1790,6 @@ bool CInterfaceManager::saveConfig (const string &filename)
|
|||
return true;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::checkCoords()
|
||||
{
|
||||
H_AUTO ( RZ_Interface_validateCoords )
|
||||
std::vector< CWidgetManager::SMasterGroup > &_MasterGroups = CWidgetManager::getInstance()->getAllMasterGroup();
|
||||
|
||||
uint32 nMasterGroup;
|
||||
|
||||
{
|
||||
H_AUTO ( RZ_Interface_checkCoords )
|
||||
|
||||
// checkCoords all the windows
|
||||
for (nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = 0; nPriority < WIN_PRIORITY_MAX; nPriority++)
|
||||
{
|
||||
list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority];
|
||||
list<CInterfaceGroup*>::const_iterator itw;
|
||||
for (itw = rList.begin(); itw!= rList.end();)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
itw++; // since checkCoords invalidate the iterator, be sure we move to the next one before
|
||||
if (pIG->getActive())
|
||||
pIG->checkCoords ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool bRecomputeCtrlUnderPtr = false;
|
||||
{
|
||||
H_AUTO ( RZ_Interface_updateCoords )
|
||||
|
||||
// updateCoords all the needed windows
|
||||
for (nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = 0; nPriority < WIN_PRIORITY_MAX; nPriority++)
|
||||
{
|
||||
list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority];
|
||||
list<CInterfaceGroup*>::const_iterator itw;
|
||||
for (itw = rList.begin(); itw!= rList.end(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
bool updateCoordCalled= false;
|
||||
// updateCoords the window only if the master group is his parent and if need it
|
||||
// do it until updateCoords() no more invalidate coordinates!!
|
||||
while (pIG->getParent()==rMG.Group && (pIG->getInvalidCoords()>0))
|
||||
{
|
||||
bRecomputeCtrlUnderPtr = true;
|
||||
// Update as many pass wanted (3 time for complex resizing, 1 for scroll for example)
|
||||
uint numPass= pIG->getInvalidCoords();
|
||||
// reset before updateCoords
|
||||
pIG->resetInvalidCoords();
|
||||
for(uint i=0;i<numPass;i++)
|
||||
{
|
||||
pIG->updateCoords ();
|
||||
}
|
||||
updateCoordCalled= true;
|
||||
}
|
||||
// If the group need to update pos each frame (eg: CGroupInScene),
|
||||
// and updateCoords not called
|
||||
if(pIG->getParent()==rMG.Group && !updateCoordCalled && pIG->isNeedFrameUpdatePos())
|
||||
{
|
||||
// This Group will compute the delta to apply.
|
||||
pIG->onFrameUpdateWindowPos(0,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( CWidgetManager::getInstance()->getPointer() != NULL)
|
||||
CWidgetManager::getInstance()->getPointer()->updateCoords();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (bRecomputeCtrlUnderPtr)
|
||||
{
|
||||
H_AUTO ( RZ_Interface_RecomputeCtrlUnderPtr )
|
||||
if ( CWidgetManager::getInstance()->getPointer() != NULL )
|
||||
{
|
||||
sint32 mx = CWidgetManager::getInstance()->getPointer()->getX();
|
||||
sint32 my = CWidgetManager::getInstance()->getPointer()->getY();
|
||||
getViewsUnder (mx, my, _ViewsUnderPointer);
|
||||
getCtrlsUnder (mx, my, _CtrlsUnderPointer);
|
||||
getGroupsUnder (mx, my, _GroupsUnderPointer);
|
||||
CInterfaceGroup *ptr = getWindowUnder (mx, my);
|
||||
_WindowUnder = ptr?ptr->getId():"";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::drawViews(NL3D::UCamera camera)
|
||||
{
|
||||
|
@ -1924,14 +1802,14 @@ void CInterfaceManager::drawViews(NL3D::UCamera camera)
|
|||
NLGUI::CDBManager::getInstance()->flushObserverCalls();
|
||||
|
||||
// If an element has captured the keyboard, make sure it is alway visible (all parent windows active)
|
||||
if (_CaptureKeyboard != NULL)
|
||||
if( CWidgetManager::getInstance()->getCaptureKeyboard() != NULL)
|
||||
{
|
||||
CCtrlBase *cb = _CaptureKeyboard;
|
||||
CCtrlBase *cb = CWidgetManager::getInstance()->getCaptureKeyboard();
|
||||
do
|
||||
{
|
||||
if (!cb->getActive())
|
||||
{
|
||||
setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
break;
|
||||
}
|
||||
cb = cb->getParent();
|
||||
|
@ -2062,7 +1940,7 @@ void CInterfaceManager::drawViews(NL3D::UCamera camera)
|
|||
|
||||
if ( CWidgetManager::getInstance()->getPointer()->show())
|
||||
{
|
||||
CDBCtrlSheet *pCS = dynamic_cast<CDBCtrlSheet*>((CCtrlBase*)_CapturePointerLeft);
|
||||
CDBCtrlSheet *pCS = dynamic_cast<CDBCtrlSheet*>( CWidgetManager::getInstance()->getCapturePointerLeft() );
|
||||
if ((pCS != NULL) && (pCS->isDraging()))
|
||||
{
|
||||
sint x= CWidgetManager::getInstance()->getPointer()->getX() - pCS->getDeltaDragX();
|
||||
|
@ -2107,6 +1985,7 @@ CCtrlBase* CInterfaceManager::getNewContextHelpCtrl()
|
|||
// get the top most ctrl under us
|
||||
CCtrlBase *best = NULL;
|
||||
sint8 bestRenderLayer = -128;
|
||||
const std::vector< CCtrlBase* >& _CtrlsUnderPointer = CWidgetManager::getInstance()->getCtrlsUnderPointer();
|
||||
for (sint i = (sint32)_CtrlsUnderPointer.size()-1; i>=0; i--)
|
||||
{
|
||||
CCtrlBase *pICL = _CtrlsUnderPointer[i];
|
||||
|
@ -2129,6 +2008,7 @@ CCtrlBase* CInterfaceManager::getNewContextHelpCtrl()
|
|||
{
|
||||
// if a control was not found, try with the groups
|
||||
sint8 bestRenderLayer = -128;
|
||||
const std::vector< CInterfaceGroup* >& _GroupsUnderPointer = CWidgetManager::getInstance()->getGroupsUnderPointer();
|
||||
for (sint i = (sint32)_GroupsUnderPointer.size()-1; i>=0; i--)
|
||||
{
|
||||
CCtrlBase *pICL = _GroupsUnderPointer[i];
|
||||
|
@ -2608,16 +2488,16 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
const NLGUI::CEventDescriptorSystem &eventDesc = reinterpret_cast< const NLGUI::CEventDescriptorSystem& >( event );
|
||||
if( eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorSystem::setfocus )
|
||||
{
|
||||
if( _CapturePointerLeft != NULL )
|
||||
if( CWidgetManager::getInstance()->getCapturePointerLeft() != NULL )
|
||||
{
|
||||
_CapturePointerLeft->handleEvent( event );
|
||||
setCapturePointerLeft( NULL );
|
||||
CWidgetManager::getInstance()->getCapturePointerLeft()->handleEvent( event );
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft( NULL );
|
||||
}
|
||||
|
||||
if( _CapturePointerRight != NULL )
|
||||
if( CWidgetManager::getInstance()->getCapturePointerRight() != NULL )
|
||||
{
|
||||
_CapturePointerRight->handleEvent( event );
|
||||
setCapturePointerRight( NULL );
|
||||
CWidgetManager::getInstance()->getCapturePointerRight()->handleEvent( event );
|
||||
CWidgetManager::getInstance()->setCapturePointerRight( NULL );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2665,7 +2545,7 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
}
|
||||
// else just disable it.
|
||||
// Special case: leave the escape Key to the CaptureKeyboard .
|
||||
else if(!_CaptureKeyboard )
|
||||
else if(! CWidgetManager::getInstance()->getCaptureKeyboard() )
|
||||
{
|
||||
if(!win->getAHOnEscape().empty())
|
||||
CAHManager::getInstance()->runActionHandler(win->getAHOnEscape(), win, win->getAHOnEscapeParams());
|
||||
|
@ -2683,9 +2563,9 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
if(tw && !tw->getAHOnEnter().empty())
|
||||
{
|
||||
// if the captured keyboard is in this Modal window, then must handle him in priority
|
||||
if(_CaptureKeyboard && _CaptureKeyboard->getRootWindow()==tw)
|
||||
if( CWidgetManager::getInstance()->getCaptureKeyboard() && CWidgetManager::getInstance()->getCaptureKeyboard()->getRootWindow()==tw)
|
||||
{
|
||||
bool result = _CaptureKeyboard->handleEvent(event);
|
||||
bool result = CWidgetManager::getInstance()->getCaptureKeyboard()->handleEvent(event);
|
||||
IngameDbMngr.flushObserverCalls();
|
||||
NLGUI::CDBManager::getInstance()->flushObserverCalls();
|
||||
return result;
|
||||
|
@ -2699,8 +2579,8 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
}
|
||||
|
||||
// else the 'return' key bring back to the last edit box (if possible)
|
||||
CCtrlBase *oldCapture = _OldCaptureKeyboard ? _OldCaptureKeyboard : _DefaultCaptureKeyboard;
|
||||
if (_CaptureKeyboard == NULL && oldCapture && !handled)
|
||||
CCtrlBase *oldCapture = CWidgetManager::getInstance()->getOldCaptureKeyboard() ? CWidgetManager::getInstance()->getOldCaptureKeyboard() : CWidgetManager::getInstance()->getDefaultCaptureKeyboard();
|
||||
if ( CWidgetManager::getInstance()->getCaptureKeyboard() == NULL && oldCapture && !handled)
|
||||
{
|
||||
/* If the editbox does not want to recover focus, then abort. This possibility is normaly avoided
|
||||
through setCaptureKeyboard() which already test getRecoverFocusOnEnter(), but it is still possible
|
||||
|
@ -2710,10 +2590,10 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
if(!dynamic_cast<CGroupEditBox*>(oldCapture) ||
|
||||
dynamic_cast<CGroupEditBox*>(oldCapture)->getRecoverFocusOnEnter())
|
||||
{
|
||||
_CaptureKeyboard = oldCapture;
|
||||
notifyElementCaptured(_CaptureKeyboard);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard( oldCapture );
|
||||
CWidgetManager::getInstance()->notifyElementCaptured( CWidgetManager::getInstance()->getCaptureKeyboard() );
|
||||
// make sure all parent windows are active
|
||||
CCtrlBase *cb = _CaptureKeyboard;
|
||||
CCtrlBase *cb = CWidgetManager::getInstance()->getCaptureKeyboard();
|
||||
CGroupContainer *lastContainer = NULL;
|
||||
for(;;)
|
||||
{
|
||||
|
@ -2741,9 +2621,9 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
}
|
||||
|
||||
// General case: handle it in the Captured keyboard
|
||||
if (_CaptureKeyboard != NULL && !handled)
|
||||
if ( CWidgetManager::getInstance()->getCaptureKeyboard() != NULL && !handled)
|
||||
{
|
||||
bool result = _CaptureKeyboard->handleEvent(event);
|
||||
bool result = CWidgetManager::getInstance()->getCaptureKeyboard()->handleEvent(event);
|
||||
IngameDbMngr.flushObserverCalls();
|
||||
NLGUI::CDBManager::getInstance()->flushObserverCalls();
|
||||
return result;
|
||||
|
@ -2773,14 +2653,15 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
if( _MouseHandlingEnabled )
|
||||
{
|
||||
// First thing to do : Capture handling
|
||||
if (_CapturePointerLeft != NULL)
|
||||
handled|= _CapturePointerLeft->handleEvent(event);
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerLeft() != NULL)
|
||||
handled|= CWidgetManager::getInstance()->getCapturePointerLeft()->handleEvent(event);
|
||||
|
||||
if (_CapturePointerRight != NULL && _CapturePointerRight!=_CapturePointerLeft)
|
||||
handled|= _CapturePointerRight->handleEvent(event);
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerRight() != NULL &&
|
||||
CWidgetManager::getInstance()->getCapturePointerLeft() != CWidgetManager::getInstance()->getCapturePointerRight() )
|
||||
handled|= CWidgetManager::getInstance()->getCapturePointerRight()->handleEvent(event);
|
||||
|
||||
CInterfaceGroup *ptr = getWindowUnder (eventDesc.getX(), eventDesc.getY());
|
||||
_WindowUnder = ptr?ptr->getId():"";
|
||||
CInterfaceGroup *ptr = CWidgetManager::getInstance()->getWindowUnder (eventDesc.getX(), eventDesc.getY());
|
||||
CWidgetManager::getInstance()->setCurrentWindowUnder( ptr );
|
||||
|
||||
// Any Mouse event but move disable the ContextHelp
|
||||
if(eventDesc.getEventTypeExtended() != NLGUI::CEventDescriptorMouse::mousemove)
|
||||
|
@ -2789,7 +2670,7 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
}
|
||||
|
||||
// get the group under the mouse
|
||||
CInterfaceGroup *pNewCurrentWnd = _WindowUnder;
|
||||
CInterfaceGroup *pNewCurrentWnd = CWidgetManager::getInstance()->getCurrentWindowUnder();
|
||||
_MouseOverWindow= pNewCurrentWnd!=NULL;
|
||||
|
||||
|
||||
|
@ -2833,7 +2714,7 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
if( !CWidgetManager::getInstance()->isPreviousModal( pNewCurrentWnd ) )
|
||||
pNewCurrentWnd = NULL; // can't handle event before we have left all modal windows
|
||||
}
|
||||
movePointer (0,0); // Reget controls under pointer
|
||||
CWidgetManager::getInstance()->movePointer (0,0); // Reget controls under pointer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2862,6 +2743,7 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
{
|
||||
// Take the top most control.
|
||||
uint nMaxDepth = 0;
|
||||
const std::vector< CCtrlBase* >& _CtrlsUnderPointer = CWidgetManager::getInstance()->getCtrlsUnderPointer();
|
||||
for (sint32 i = (sint32)_CtrlsUnderPointer.size()-1; i >= 0; i--)
|
||||
{
|
||||
CCtrlBase *ctrl= _CtrlsUnderPointer[i];
|
||||
|
@ -2871,24 +2753,24 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
if (d > nMaxDepth)
|
||||
{
|
||||
nMaxDepth = d;
|
||||
_CapturePointerLeft = ctrl;
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft( ctrl );
|
||||
}
|
||||
}
|
||||
}
|
||||
notifyElementCaptured(_CapturePointerLeft);
|
||||
CWidgetManager::getInstance()->notifyElementCaptured( CWidgetManager::getInstance()->getCapturePointerLeft() );
|
||||
if (clickedOutModalWindow && !clickedOutModalWindow->OnPostClickOut.empty())
|
||||
{
|
||||
CAHManager::getInstance()->runActionHandler(clickedOutModalWindow->OnPostClickOut, _CapturePointerLeft, clickedOutModalWindow->OnPostClickOutParams);
|
||||
CAHManager::getInstance()->runActionHandler(clickedOutModalWindow->OnPostClickOut, CWidgetManager::getInstance()->getCapturePointerLeft(), clickedOutModalWindow->OnPostClickOutParams);
|
||||
}
|
||||
}
|
||||
//if found
|
||||
if (_CapturePointerLeft != NULL)
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerLeft() != NULL)
|
||||
{
|
||||
// consider clicking on a control implies handling of the event.
|
||||
handled= true;
|
||||
|
||||
// handle the capture
|
||||
_CapturePointerLeft->handleEvent(event);
|
||||
CWidgetManager::getInstance()->getCapturePointerLeft()->handleEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2911,6 +2793,7 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
// Take the top most control.
|
||||
{
|
||||
uint nMaxDepth = 0;
|
||||
const std::vector< CCtrlBase* >& _CtrlsUnderPointer = CWidgetManager::getInstance()->getCtrlsUnderPointer();
|
||||
for (sint32 i = (sint32)_CtrlsUnderPointer.size()-1; i >= 0; i--)
|
||||
{
|
||||
CCtrlBase *ctrl= _CtrlsUnderPointer[i];
|
||||
|
@ -2920,21 +2803,21 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
if (d > nMaxDepth)
|
||||
{
|
||||
nMaxDepth = d;
|
||||
_CapturePointerRight = ctrl;
|
||||
CWidgetManager::getInstance()->setCapturePointerRight( ctrl );
|
||||
}
|
||||
}
|
||||
}
|
||||
notifyElementCaptured(_CapturePointerRight);
|
||||
CWidgetManager::getInstance()->notifyElementCaptured( CWidgetManager::getInstance()->getCapturePointerRight() );
|
||||
if (clickedOutModalWindow && !clickedOutModalWindow->OnPostClickOut.empty())
|
||||
{
|
||||
CAHManager::getInstance()->runActionHandler(clickedOutModalWindow->OnPostClickOut, _CapturePointerRight, clickedOutModalWindow->OnPostClickOutParams);
|
||||
CAHManager::getInstance()->runActionHandler(clickedOutModalWindow->OnPostClickOut, CWidgetManager::getInstance()->getCapturePointerRight(), clickedOutModalWindow->OnPostClickOutParams);
|
||||
}
|
||||
}
|
||||
//if found
|
||||
if (_CapturePointerRight != NULL)
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerRight() != NULL)
|
||||
{
|
||||
// handle the capture
|
||||
handled |= _CapturePointerRight->handleEvent(event);
|
||||
handled |= CWidgetManager::getInstance()->getCapturePointerRight()->handleEvent(event);
|
||||
}
|
||||
}
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightup)
|
||||
|
@ -2942,12 +2825,12 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
if (!handled)
|
||||
if (pNewCurrentWnd != NULL)
|
||||
pNewCurrentWnd->handleEvent(event);
|
||||
if (_CapturePointerRight != NULL)
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerRight() != NULL)
|
||||
{
|
||||
EventsListener.addUIHandledButtonMask(rightButton); // prevent 'click in scene' as mouse was previously captured
|
||||
// (more a patch that anything, but 'UserControls' test for 'mouse up'
|
||||
// directly later in the main loop (not through message queue), so it has no way of knowing that the event was handled...
|
||||
setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
handled= true;
|
||||
}
|
||||
}
|
||||
|
@ -2976,12 +2859,12 @@ bool CInterfaceManager::handleEvent (const NLGUI::CEventDescriptor& event)
|
|||
// Put here to let a chance to the window to handle if the capture dont
|
||||
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouseleftup)
|
||||
{
|
||||
if (_CapturePointerLeft != NULL)
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerLeft() != NULL)
|
||||
{
|
||||
EventsListener.addUIHandledButtonMask (leftButton); // prevent 'click in scene' as mouse was previously captured
|
||||
// (more a patch that anything, but 'UserControls' test for 'mouse up'
|
||||
// directly later in the main loop (not through message queue), so it has no way of knowing that the event was handled...
|
||||
setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
//handled= true;
|
||||
}
|
||||
}
|
||||
|
@ -3043,7 +2926,7 @@ bool CInterfaceManager::handleMouseMoveEvent( const NLGUI::CEventDescriptor &eve
|
|||
|
||||
if( ( oldX != newX ) || ( oldY != newY ) )
|
||||
{
|
||||
movePointerAbs( newX, newY );
|
||||
CWidgetManager::getInstance()->movePointerAbs( newX, newY );
|
||||
NLGUI::CEventDescriptorMouse &ve = const_cast< NLGUI::CEventDescriptorMouse& >( e );
|
||||
ve.setX( CWidgetManager::getInstance()->getPointer()->getX() );
|
||||
ve.setY( CWidgetManager::getInstance()->getPointer()->getY() );
|
||||
|
@ -3052,61 +2935,6 @@ bool CInterfaceManager::handleMouseMoveEvent( const NLGUI::CEventDescriptor &eve
|
|||
return true;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::movePointer (sint32 dx, sint32 dy)
|
||||
{
|
||||
if (!CWidgetManager::getInstance()->getPointer()) return;
|
||||
CViewPointer *_Pointer = CWidgetManager::getInstance()->getPointer();
|
||||
uint32 nScrW, nScrH;
|
||||
sint32 oldpx, oldpy, newpx, newpy, disppx, disppy, olddisppx, olddisppy;
|
||||
|
||||
CViewRenderer::getInstance()->getScreenSize (nScrW, nScrH);
|
||||
_Pointer->getPointerPos (oldpx, oldpy);
|
||||
|
||||
olddisppx = oldpx;
|
||||
olddisppy = oldpy;
|
||||
|
||||
newpx = oldpx + dx;
|
||||
newpy = oldpy + dy;
|
||||
|
||||
if (newpx < 0) newpx = 0;
|
||||
if (newpy < 0) newpy = 0;
|
||||
if (newpx > (sint32)nScrW) newpx = nScrW;
|
||||
if (newpy > (sint32)nScrH) newpy = nScrH;
|
||||
dx = newpx - oldpx;
|
||||
dy = newpy - oldpy;
|
||||
|
||||
disppx = newpx;
|
||||
disppy = newpy;
|
||||
|
||||
_Pointer->setPointerPos (newpx, newpy);
|
||||
_Pointer->setPointerDispPos (disppx, disppy);
|
||||
|
||||
// must get back coordinates because of snapping
|
||||
sint32 mx = _Pointer->getX();
|
||||
sint32 my = _Pointer->getY();
|
||||
getViewsUnder (mx, my, _ViewsUnderPointer);
|
||||
getCtrlsUnder (mx, my, _CtrlsUnderPointer);
|
||||
getGroupsUnder (mx, my, _GroupsUnderPointer);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::movePointerAbs(sint32 px, sint32 py)
|
||||
{
|
||||
if (!CWidgetManager::getInstance()->getPointer()) return;
|
||||
uint32 nScrW, nScrH;
|
||||
CViewRenderer::getInstance()->getScreenSize (nScrW, nScrH);
|
||||
clamp(px, 0, (sint32) nScrW);
|
||||
clamp(py, 0, (sint32) nScrH);
|
||||
//
|
||||
CWidgetManager::getInstance()->getPointer()->setPointerPos (px, py);
|
||||
CWidgetManager::getInstance()->getPointer()->setPointerDispPos (px, py);
|
||||
//
|
||||
getViewsUnder (px, py, _ViewsUnderPointer);
|
||||
getCtrlsUnder (px, py, _CtrlsUnderPointer);
|
||||
getGroupsUnder (px, py, _GroupsUnderPointer);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::getNewWindowCoordToNewScreenSize(sint32 &x, sint32 &y, sint32 w, sint32 h, sint32 newScreenW, sint32 newScreenH) const
|
||||
{
|
||||
|
@ -3312,7 +3140,7 @@ void CInterfaceManager::updateAllLocalisedElements()
|
|||
}
|
||||
|
||||
// update coords one
|
||||
checkCoords();
|
||||
CWidgetManager::getInstance()->checkCoords();
|
||||
|
||||
// Action by default (container opening
|
||||
for (nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
|
@ -3405,235 +3233,12 @@ void CInterfaceManager::processServerIDString()
|
|||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
CInterfaceGroup* CInterfaceManager::getWindowUnder (sint32 x, sint32 y)
|
||||
{
|
||||
H_AUTO (RZ_Interface_Window_Under )
|
||||
|
||||
std::vector< CWidgetManager::SMasterGroup > &_MasterGroups = CWidgetManager::getInstance()->getAllMasterGroup();
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0; nPriority--)
|
||||
{
|
||||
const list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
if (pIG->isWindowUnder (x, y))
|
||||
return pIG;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
CInterfaceGroup* CInterfaceManager::getGroupUnder (sint32 x, sint32 y)
|
||||
{
|
||||
std::vector< CWidgetManager::SMasterGroup > &_MasterGroups = CWidgetManager::getInstance()->getAllMasterGroup();
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0; nPriority--)
|
||||
{
|
||||
const list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
CInterfaceGroup *pIGunder = pIG->getGroupUnder (x ,y);
|
||||
if (pIGunder != NULL)
|
||||
return pIGunder;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::getViewsUnder (sint32 x, sint32 y, std::vector<CViewBase*> &vVB)
|
||||
{
|
||||
vVB.clear ();
|
||||
|
||||
// No Op if screen minimized
|
||||
if(CViewRenderer::getInstance()->isMinimized())
|
||||
return;
|
||||
|
||||
std::vector< CWidgetManager::SMasterGroup > &_MasterGroups = CWidgetManager::getInstance()->getAllMasterGroup();
|
||||
|
||||
uint32 sw, sh;
|
||||
CViewRenderer::getInstance()->getScreenSize(sw, sh);
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0; nPriority--)
|
||||
{
|
||||
const list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
|
||||
// Accecpt if not modal clip
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
if (pIG->getViewsUnder (x, y, 0, 0, (sint32) sw, (sint32) sh, vVB))
|
||||
return ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::getCtrlsUnder (sint32 x, sint32 y, std::vector<CCtrlBase*> &vICL)
|
||||
{
|
||||
vICL.clear ();
|
||||
|
||||
// No Op if screen minimized
|
||||
if(CViewRenderer::getInstance()->isMinimized())
|
||||
return;
|
||||
|
||||
std::vector< CWidgetManager::SMasterGroup > &_MasterGroups = CWidgetManager::getInstance()->getAllMasterGroup();
|
||||
|
||||
uint32 sw, sh;
|
||||
CViewRenderer::getInstance()->getScreenSize(sw, sh);
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0 ; nPriority--)
|
||||
{
|
||||
const list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
|
||||
// Accecpt if not modal clip
|
||||
if (!CWidgetManager::getInstance()->hasModal() || CWidgetManager::getInstance()->getModal().ModalWindow == pIG || CWidgetManager::getInstance()->getModal().ModalExitClickOut)
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
if (pIG->getCtrlsUnder (x, y, 0, 0, (sint32) sw, (sint32) sh, vICL))
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::getGroupsUnder (sint32 x, sint32 y, std::vector<CInterfaceGroup *> &vIGL)
|
||||
{
|
||||
vIGL.clear ();
|
||||
|
||||
// No Op if screen minimized
|
||||
if(CViewRenderer::getInstance()->isMinimized())
|
||||
return;
|
||||
|
||||
std::vector< CWidgetManager::SMasterGroup > &_MasterGroups = CWidgetManager::getInstance()->getAllMasterGroup();
|
||||
|
||||
uint32 sw, sh;
|
||||
CViewRenderer::getInstance()->getScreenSize(sw, sh);
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0 ; nPriority--)
|
||||
{
|
||||
const list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
|
||||
// Accecpt if not modal clip
|
||||
if (!CWidgetManager::getInstance()->hasModal() || CWidgetManager::getInstance()->getModal().ModalWindow == pIG ||
|
||||
CWidgetManager::getInstance()->getModal().ModalExitClickOut)
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
if (pIG->isIn(x, y))
|
||||
{
|
||||
vIGL.push_back(pIG);
|
||||
pIG->getGroupsUnder (x, y, 0, 0, (sint32) sw, (sint32) sh, vIGL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
CInterfaceElement* CInterfaceManager::getElementFromDefine (const std::string &defineId)
|
||||
{
|
||||
return CWidgetManager::getInstance()->getElementFromId(getDefine(defineId));
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::setCaptureKeyboard(CCtrlBase *c)
|
||||
{
|
||||
CGroupEditBox *oldEb= dynamic_cast<CGroupEditBox*>((CCtrlBase*)_CaptureKeyboard);
|
||||
CGroupEditBox *newEb= dynamic_cast<CGroupEditBox*>(c);
|
||||
|
||||
if (_CaptureKeyboard && _CaptureKeyboard != c)
|
||||
{
|
||||
_CaptureKeyboard->onKeyboardCaptureLost();
|
||||
}
|
||||
// If the old capturedKeyboard is an editBox and allow recoverFocusOnEnter
|
||||
if ( oldEb && oldEb->getRecoverFocusOnEnter() )
|
||||
{
|
||||
_OldCaptureKeyboard = _CaptureKeyboard;
|
||||
}
|
||||
if ( newEb )
|
||||
{
|
||||
CGroupEditBox::disableSelection();
|
||||
|
||||
if (!newEb->getAHOnFocus().empty())
|
||||
{
|
||||
CAHManager::getInstance()->runActionHandler(newEb->getAHOnFocus(), newEb, newEb->getAHOnFocusParams());
|
||||
}
|
||||
|
||||
}
|
||||
_CaptureKeyboard = c;
|
||||
notifyElementCaptured(c);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::resetCaptureKeyboard()
|
||||
{
|
||||
CCtrlBase *captureKeyboard = _CaptureKeyboard;
|
||||
_OldCaptureKeyboard = NULL;
|
||||
_CaptureKeyboard = NULL;
|
||||
if (captureKeyboard)
|
||||
{
|
||||
captureKeyboard->onKeyboardCaptureLost();
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::runProcedure (const string &procName, CCtrlBase *pCaller,
|
||||
const vector<string> ¶mList)
|
||||
|
@ -3967,28 +3572,6 @@ void CInterfaceManager::unMakeWindow(CInterfaceGroup *group, bool noWarning)
|
|||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CInterfaceManager::notifyElementCaptured(CCtrlBase *c)
|
||||
{
|
||||
std::set<CCtrlBase *> seen;
|
||||
CCtrlBase *curr = c;
|
||||
while (curr)
|
||||
{
|
||||
seen.insert(curr);
|
||||
curr->elementCaptured(c);
|
||||
curr = curr->getParent();
|
||||
}
|
||||
// also warn the ctrl under the pointer
|
||||
for (uint i = 0; i < (uint) _CtrlsUnderPointer.size(); ++i)
|
||||
{
|
||||
if (!seen.count(_CtrlsUnderPointer[i]))
|
||||
{
|
||||
_CtrlsUnderPointer[i]->elementCaptured(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::enableMouseHandling(bool handle)
|
||||
{
|
||||
|
@ -3999,15 +3582,15 @@ void CInterfaceManager::enableMouseHandling(bool handle)
|
|||
return;
|
||||
|
||||
// If Left captured, reset
|
||||
if( _CapturePointerLeft )
|
||||
if( CWidgetManager::getInstance()->getCapturePointerLeft() )
|
||||
{
|
||||
setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
}
|
||||
|
||||
// Same for Right
|
||||
if( _CapturePointerRight )
|
||||
if( CWidgetManager::getInstance()->getCapturePointerRight() )
|
||||
{
|
||||
setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
}
|
||||
|
||||
// Avoid any problem with modals
|
||||
|
@ -4126,36 +3709,6 @@ void CInterfaceManager::launchContextMenuInGame (const std::string &nameOfCM)
|
|||
}
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::registerClockMsgTarget(CCtrlBase *vb)
|
||||
{
|
||||
if (!vb) return;
|
||||
if (isClockMsgTarget(vb))
|
||||
{
|
||||
nlwarning("<CInterfaceManager::registerClockMsgTarget> Element %s is already registered", vb->getId().c_str());
|
||||
return;
|
||||
}
|
||||
_ClockMsgTargets.push_back(vb);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::unregisterClockMsgTarget(CCtrlBase *vb)
|
||||
{
|
||||
if (!vb) return;
|
||||
std::vector<CCtrlBase*>::iterator it = std::find(_ClockMsgTargets.begin(), _ClockMsgTargets.end(), vb);
|
||||
if (it != _ClockMsgTargets.end())
|
||||
{
|
||||
_ClockMsgTargets.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
bool CInterfaceManager::isClockMsgTarget(CCtrlBase *vb) const
|
||||
{
|
||||
std::vector<CCtrlBase*>::const_iterator it = std::find(_ClockMsgTargets.begin(), _ClockMsgTargets.end(), vb);
|
||||
return it != _ClockMsgTargets.end();
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::setContentAlpha(uint8 alpha)
|
||||
{
|
||||
|
@ -4243,13 +3796,13 @@ void CInterfaceManager::setMode(uint8 newMode)
|
|||
}
|
||||
|
||||
// check if there's a special behaviour with current captured ctrl that prevent from changing desktop
|
||||
if (_CapturePointerLeft != NULL)
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerLeft() != NULL)
|
||||
{
|
||||
if (!_CapturePointerLeft->canChangeVirtualDesktop()) return;
|
||||
if (!CWidgetManager::getInstance()->getCapturePointerLeft()->canChangeVirtualDesktop()) return;
|
||||
}
|
||||
if (_CapturePointerRight != NULL)
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerRight() != NULL)
|
||||
{
|
||||
if (!_CapturePointerRight->canChangeVirtualDesktop()) return;
|
||||
if (!CWidgetManager::getInstance()->getCapturePointerRight()->canChangeVirtualDesktop()) return;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4258,7 +3811,7 @@ void CInterfaceManager::setMode(uint8 newMode)
|
|||
//CBotChatUI::refreshActiveWindows();
|
||||
|
||||
_CurrentMode = newMode;
|
||||
checkCoords();
|
||||
CWidgetManager::getInstance()->checkCoords();
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
|
@ -4572,66 +4125,6 @@ void CInterfaceManager::restoreAllContainersBackupPosition()
|
|||
}
|
||||
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::removeRefOnCtrl (CCtrlBase *ctrlBase)
|
||||
{
|
||||
if ( CWidgetManager::getInstance()->getCurContextHelp() == ctrlBase)
|
||||
CWidgetManager::getInstance()->setCurContextHelp( NULL );
|
||||
if (getCapturePointerLeft() == ctrlBase)
|
||||
setCapturePointerLeft(NULL);
|
||||
if (getCapturePointerRight() == ctrlBase)
|
||||
setCapturePointerRight (NULL);
|
||||
if (getCaptureKeyboard() == ctrlBase)
|
||||
setCaptureKeyboard(NULL);
|
||||
if (getOldCaptureKeyboard() == ctrlBase)
|
||||
setOldCaptureKeyboard(NULL);
|
||||
if (getDefaultCaptureKeyboard() == ctrlBase)
|
||||
setDefaultCaptureKeyboard(NULL);
|
||||
uint i;
|
||||
for (i=0; i<_CtrlsUnderPointer.size(); i++)
|
||||
{
|
||||
if (_CtrlsUnderPointer[i] == ctrlBase)
|
||||
{
|
||||
_CtrlsUnderPointer.erase (_CtrlsUnderPointer.begin()+i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
// Unregister from ClockMsgTargets
|
||||
unregisterClockMsgTarget (ctrlBase);
|
||||
}
|
||||
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::removeRefOnView (CViewBase *viewBase)
|
||||
{
|
||||
uint i;
|
||||
for (i=0; i<_ViewsUnderPointer.size(); i++)
|
||||
{
|
||||
if (_ViewsUnderPointer[i] == viewBase)
|
||||
{
|
||||
_ViewsUnderPointer.erase (_ViewsUnderPointer.begin()+i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::removeRefOnGroup (CInterfaceGroup *group)
|
||||
{
|
||||
uint i;
|
||||
for (i=0; i<_GroupsUnderPointer.size(); i++)
|
||||
{
|
||||
if (_GroupsUnderPointer[i] == group)
|
||||
{
|
||||
_GroupsUnderPointer.erase (_GroupsUnderPointer.begin()+i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ***************************************************************************
|
||||
|
||||
uint CInterfaceManager::getUserDblClickDelay()
|
||||
|
@ -4801,10 +4294,10 @@ NLMISC_COMMAND(loadui, "Load an interface file", "<loadui [all]/interface.xml>")
|
|||
im->updateAllLocalisedElements();
|
||||
|
||||
// reset captures
|
||||
im->setCapturePointerLeft(NULL);
|
||||
im->setCapturePointerRight(NULL);
|
||||
im->setOldCaptureKeyboard(NULL);
|
||||
im->setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setOldCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -5144,25 +4637,6 @@ bool CInterfaceManager::testDragCopyKey()
|
|||
driver->AsyncListener.isKeyDown(KeyRCONTROL);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::setCapturePointerLeft(CCtrlBase *c)
|
||||
{
|
||||
// additionally, abort any dragging
|
||||
if(CDBCtrlSheet::getDraggedSheet())
|
||||
{
|
||||
CDBCtrlSheet::getDraggedSheet()->abortDraging();
|
||||
}
|
||||
_CapturePointerLeft = c;
|
||||
notifyElementCaptured(c);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::setCapturePointerRight(CCtrlBase *c)
|
||||
{
|
||||
_CapturePointerRight = c;
|
||||
notifyElementCaptured(c);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CInterfaceManager::notifyMailAvailable()
|
||||
{
|
||||
|
|
|
@ -232,18 +232,6 @@ public:
|
|||
void addServerID (const std::string &sTarget, uint32 id, IStringProcess *cb = NULL);
|
||||
void processServerIDString();
|
||||
|
||||
/**
|
||||
* get the window under a spot
|
||||
* \param : X coord of the spot
|
||||
* \param : Y coord of the spot
|
||||
* \return : pointer to the window
|
||||
*/
|
||||
CInterfaceGroup* getWindowUnder (sint32 x, sint32 y);
|
||||
CInterfaceGroup* getCurrentWindowUnder() { return _WindowUnder; }
|
||||
CInterfaceGroup* getGroupUnder (sint32 x, sint32 y);
|
||||
void getViewsUnder (sint32 x, sint32 y, std::vector<CViewBase*> &vVB);
|
||||
void getCtrlsUnder (sint32 x, sint32 y, std::vector<CCtrlBase*> &vICL);
|
||||
void getGroupsUnder (sint32 x, sint32 y, std::vector<CInterfaceGroup*> &vIGL);
|
||||
/**
|
||||
* get a window from its Id of its group.
|
||||
* NB: "ctrl_launch_modal" is a special Id which return the last ctrl which has launch a modal. NULL if modal closed.
|
||||
|
@ -298,7 +286,6 @@ public:
|
|||
/**
|
||||
* Draw views
|
||||
*/
|
||||
void checkCoords();
|
||||
void drawViews (NL3D::UCamera camera);
|
||||
void drawAutoAdd ();
|
||||
void drawContextHelp ();
|
||||
|
@ -317,49 +304,6 @@ public:
|
|||
uint8 getGlobalRolloverFactorContent() const { return _GlobalRolloverFactorContent; }
|
||||
uint8 getGlobalRolloverFactorContainer() const { return _GlobalRolloverFactorContainer; }
|
||||
|
||||
|
||||
// Relative move of pointer
|
||||
void movePointer (sint32 dx, sint32 dy);
|
||||
// Set absolute coordinates of pointer
|
||||
void movePointerAbs(sint32 px, sint32 py);
|
||||
const std::vector<CViewBase*> &getViewsUnderPointer () { return _ViewsUnderPointer; }
|
||||
const std::vector<CInterfaceGroup *> &getGroupsUnderPointer () { return _GroupsUnderPointer; }
|
||||
const std::vector<CCtrlBase*> &getCtrlsUnderPointer () { return _CtrlsUnderPointer; }
|
||||
//
|
||||
void clearGroupsUnders() { _GroupsUnderPointer.clear(); }
|
||||
void clearViewUnders() { _ViewsUnderPointer.clear(); }
|
||||
void clearCtrlsUnders() { _CtrlsUnderPointer.clear(); }
|
||||
|
||||
// Remove all references on a view (called when the ctrl is destroyed)
|
||||
void removeRefOnView (CViewBase *ctrlBase);
|
||||
|
||||
// Remove all references on a ctrl (called when the ctrl is destroyed)
|
||||
void removeRefOnCtrl (CCtrlBase *ctrlBase);
|
||||
|
||||
// Remove all references on a group (called when the group is destroyed)
|
||||
void removeRefOnGroup (CInterfaceGroup *group);
|
||||
|
||||
/**
|
||||
* Capture
|
||||
*/
|
||||
CCtrlBase *getCapturePointerLeft() { return _CapturePointerLeft; }
|
||||
CCtrlBase *getCapturePointerRight() { return _CapturePointerRight; }
|
||||
CCtrlBase *getCaptureKeyboard() { return _CaptureKeyboard; }
|
||||
CCtrlBase *getOldCaptureKeyboard() { return _OldCaptureKeyboard; }
|
||||
CCtrlBase *getDefaultCaptureKeyboard() { return _DefaultCaptureKeyboard; }
|
||||
|
||||
void setCapturePointerLeft(CCtrlBase *c);
|
||||
void setCapturePointerRight(CCtrlBase *c);
|
||||
void setOldCaptureKeyboard(CCtrlBase *c) { _OldCaptureKeyboard = c; }
|
||||
// NB: setCaptureKeyboard(NULL) has not the same effect as resetCaptureKeyboard(). it allows the capture
|
||||
// to come back to the last captured window (resetCaptureKeyboard() not)
|
||||
void setCaptureKeyboard(CCtrlBase *c);
|
||||
void resetCaptureKeyboard();
|
||||
/** Set the default box to use when no keyboard has been previously captured
|
||||
* The given dialog should be static
|
||||
*/
|
||||
void setDefaultCaptureKeyboard(CCtrlBase *c) { _DefaultCaptureKeyboard = c; }
|
||||
|
||||
/// Update all the elements
|
||||
void updateAllLocalisedElements ();
|
||||
|
||||
|
@ -452,19 +396,12 @@ public:
|
|||
void unMakeWindow(CInterfaceGroup *group, bool noWarning=false);
|
||||
|
||||
|
||||
// True if the keyboard is captured
|
||||
bool isKeyboardCaptured() const {return _CaptureKeyboard!=NULL;}
|
||||
bool isMouseOverWindow() const {return _MouseOverWindow;}
|
||||
|
||||
// Enable mouse Events to interface. if false, release Captures.
|
||||
void enableMouseHandling(bool handle);
|
||||
bool isMouseHandlingEnabled() const { return _MouseHandlingEnabled; }
|
||||
|
||||
// register a view that wants to be notified at each frame (receive the msg 'clocktick')
|
||||
void registerClockMsgTarget(CCtrlBase *vb);
|
||||
void unregisterClockMsgTarget(CCtrlBase *vb);
|
||||
bool isClockMsgTarget(CCtrlBase *vb) const;
|
||||
|
||||
// Modes
|
||||
void setMode(uint8 newMode);
|
||||
uint8 getMode() const { return _CurrentMode; }
|
||||
|
@ -784,23 +721,8 @@ private:
|
|||
|
||||
NLMISC::CCDBNodeLeaf *_DescTextTarget;
|
||||
|
||||
// Capture
|
||||
NLMISC::CRefPtr<CCtrlBase> _CaptureKeyboard;
|
||||
NLMISC::CRefPtr<CCtrlBase> _OldCaptureKeyboard;
|
||||
NLMISC::CRefPtr<CCtrlBase> _DefaultCaptureKeyboard;
|
||||
NLMISC::CRefPtr<CCtrlBase> _CapturePointerLeft;
|
||||
NLMISC::CRefPtr<CCtrlBase> _CapturePointerRight;
|
||||
bool _MouseOverWindow;
|
||||
|
||||
// view that should be notified from clock msg
|
||||
std::vector<CCtrlBase*> _ClockMsgTargets;
|
||||
|
||||
// What is under pointer
|
||||
std::vector<CViewBase*> _ViewsUnderPointer;
|
||||
std::vector<CCtrlBase*> _CtrlsUnderPointer;
|
||||
std::vector<CInterfaceGroup *> _GroupsUnderPointer;
|
||||
|
||||
|
||||
// Context Help
|
||||
bool _ContextHelpActive;
|
||||
//CCtrlBasePtr _CurCtrlContextHelp;
|
||||
|
@ -829,13 +751,9 @@ private:
|
|||
// List of active Anims
|
||||
std::vector<CInterfaceAnim*> _ActiveAnims;
|
||||
|
||||
CInterfaceGroupPtr _WindowUnder;
|
||||
|
||||
bool isControlInWindow (CCtrlBase *ctrl, CInterfaceGroup *pNewCurrentWnd);
|
||||
uint getDepth (CCtrlBase *ctrl, CInterfaceGroup *pNewCurrentWnd);
|
||||
|
||||
void notifyElementCaptured(CCtrlBase *c);
|
||||
|
||||
// System Options
|
||||
CInterfaceOptionValue _SystemOptions[NumSystemOptions];
|
||||
|
||||
|
|
|
@ -1050,7 +1050,7 @@ int CLuaIHMRyzom::setCaptureKeyboard(CLuaState &ls)
|
|||
CLuaIHM::fails(ls, "%s waits a ui control as arg 1", funcName);
|
||||
}
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
im->setCaptureKeyboard(ctrl);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(ctrl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1061,7 +1061,7 @@ int CLuaIHMRyzom::resetCaptureKeyboard(CLuaState &ls)
|
|||
const char *funcName = "resetCaptureKeyboard";
|
||||
CLuaIHM::checkArgCount(ls, funcName, 0);
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
im->resetCaptureKeyboard();
|
||||
CWidgetManager::getInstance()->resetCaptureKeyboard();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2419,7 +2419,7 @@ int CLuaIHMRyzom::getCurrentWindowUnder(CLuaState &ls)
|
|||
//H_AUTO(Lua_CLuaIHM_getCurrentWindowUnder)
|
||||
CLuaStackChecker lsc(&ls, 1);
|
||||
CInterfaceManager *im = CInterfaceManager::getInstance();
|
||||
CInterfaceElement *pIE= im->getCurrentWindowUnder();
|
||||
CInterfaceElement *pIE= CWidgetManager::getInstance()->getCurrentWindowUnder();
|
||||
if(!pIE)
|
||||
{
|
||||
ls.pushNil();
|
||||
|
|
|
@ -2423,7 +2423,7 @@ public:
|
|||
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(gc->getGroup("eb"));
|
||||
if (eb)
|
||||
{
|
||||
im->setCaptureKeyboard(eb);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(eb);
|
||||
eb->setInputString(ucstring(""));
|
||||
}
|
||||
//
|
||||
|
|
|
@ -23,8 +23,7 @@
|
|||
|
||||
CViewBase::~CViewBase()
|
||||
{
|
||||
CInterfaceManager *manager = CInterfaceManager::getInstance();
|
||||
manager->removeRefOnView (this);
|
||||
CWidgetManager::getInstance()->removeRefOnView (this);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
|
|
|
@ -277,7 +277,7 @@ void CViewBitmapCombo::draw()
|
|||
sint32 mx = 0, my = 0;
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
CViewRenderer &rVR = *CViewRenderer::getInstance();
|
||||
const std::vector<CViewBase *> &rVB = pIM->getViewsUnderPointer();
|
||||
const std::vector<CViewBase *> &rVB = CWidgetManager::getInstance()->getViewsUnderPointer();
|
||||
if (!CWidgetManager::getInstance()->getPointer()) return;
|
||||
CWidgetManager::getInstance()->getPointer()->getPointerDispPos(mx, my);
|
||||
bool over = false;
|
||||
|
|
|
@ -205,9 +205,9 @@ void CViewPointer::draw ()
|
|||
_LastHightLight = NULL;
|
||||
}
|
||||
|
||||
if (pIM->getCapturePointerLeft() != NULL && pIM->isMouseHandlingEnabled())
|
||||
if ( CWidgetManager::getInstance()->getCapturePointerLeft() != NULL && pIM->isMouseHandlingEnabled())
|
||||
{
|
||||
CCtrlMover *pCM = dynamic_cast<CCtrlMover*>(pIM->getCapturePointerLeft());
|
||||
CCtrlMover *pCM = dynamic_cast<CCtrlMover*>( CWidgetManager::getInstance()->getCapturePointerLeft());
|
||||
if ((pCM != NULL) && (pCM->canMove() == true))
|
||||
{
|
||||
CGroupContainer *pGC = dynamic_cast<CGroupContainer *>(pCM->getParent());
|
||||
|
@ -239,11 +239,11 @@ void CViewPointer::draw ()
|
|||
}
|
||||
}
|
||||
|
||||
const vector<CCtrlBase *> &rICL = pIM->getCtrlsUnderPointer ();
|
||||
const vector<CCtrlBase *> &rICL = CWidgetManager::getInstance()->getCtrlsUnderPointer ();
|
||||
|
||||
|
||||
// Draw the captured cursor
|
||||
CCtrlBase *pCB = pIM->getCapturePointerLeft();
|
||||
CCtrlBase *pCB = CWidgetManager::getInstance()->getCapturePointerLeft();
|
||||
if (pCB != NULL)
|
||||
{
|
||||
if (drawResizer(pCB,col)) return;
|
||||
|
@ -256,7 +256,7 @@ void CViewPointer::draw ()
|
|||
return;
|
||||
}
|
||||
|
||||
const vector<CViewBase *> &vUP = pIM->getViewsUnderPointer ();
|
||||
const vector<CViewBase *> &vUP = CWidgetManager::getInstance()->getViewsUnderPointer ();
|
||||
|
||||
for(uint i=0;i<vUP.size();i++)
|
||||
{
|
||||
|
@ -292,7 +292,7 @@ void CViewPointer::draw ()
|
|||
}
|
||||
|
||||
// Draw if capture right
|
||||
pCB = pIM->getCapturePointerRight();
|
||||
pCB = CWidgetManager::getInstance()->getCapturePointerRight();
|
||||
if (pCB != NULL)
|
||||
{
|
||||
// Is it a 3d scene ?
|
||||
|
@ -355,7 +355,7 @@ void CViewPointer::draw ()
|
|||
CGroupContainer *pGC = dynamic_cast<CGroupContainer *>(pCM->getParent());
|
||||
if (pGC != NULL && !pGC->isLocked())
|
||||
{
|
||||
if (pIM->getCapturePointerLeft() != pCM)
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft() != pCM)
|
||||
pGC->setHighLighted(true, 128);
|
||||
else
|
||||
pGC->setHighLighted(true, 255);
|
||||
|
@ -373,7 +373,7 @@ void CViewPointer::draw ()
|
|||
{
|
||||
if (rICL.empty())
|
||||
{
|
||||
const vector<CInterfaceGroup *> &rIGL = pIM->getGroupsUnderPointer ();
|
||||
const vector<CInterfaceGroup *> &rIGL = CWidgetManager::getInstance()->getGroupsUnderPointer ();
|
||||
for (uint32 i = 0; i < rIGL.size(); ++i)
|
||||
{
|
||||
CInterfaceGroup *pG = rIGL[i];
|
||||
|
|
|
@ -381,7 +381,7 @@ void CViewText::checkCoords ()
|
|||
else
|
||||
{
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
CCtrlBase *pCB = pIM->getCapturePointerLeft();
|
||||
CCtrlBase *pCB = CWidgetManager::getInstance()->getCapturePointerLeft();
|
||||
if (pCB != NULL)
|
||||
{
|
||||
CCtrlResizer *pCR = dynamic_cast<CCtrlResizer*>(pCB);
|
||||
|
@ -630,7 +630,7 @@ void CViewText::draw ()
|
|||
if(mouseIn)
|
||||
{
|
||||
// check the window under the mouse is the root window
|
||||
CInterfaceGroup *pIG = pIM->getWindowUnder(x,y);
|
||||
CInterfaceGroup *pIG = CWidgetManager::getInstance()->getWindowUnder(x,y);
|
||||
CInterfaceElement *pParent = this;
|
||||
bool bFound = false;
|
||||
while (pParent != NULL)
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
#include "group_container.h"
|
||||
#include "group_in_scene.h"
|
||||
#include "view_pointer.h"
|
||||
#include "group_editbox.h"
|
||||
#include "dbctrl_sheet.h"
|
||||
|
||||
CWidgetManager* CWidgetManager::instance = NULL;
|
||||
std::string CWidgetManager::_CtrlLaunchingModalId= "ctrl_launch_modal";
|
||||
|
@ -699,6 +701,544 @@ void CWidgetManager::popModalWindowCategory(const std::string &category)
|
|||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
CInterfaceGroup* CWidgetManager::getWindowUnder (sint32 x, sint32 y)
|
||||
{
|
||||
H_AUTO (RZ_Interface_Window_Under )
|
||||
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0; nPriority--)
|
||||
{
|
||||
const std::list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
std::list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
if (pIG->isWindowUnder (x, y))
|
||||
return pIG;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
CInterfaceGroup* CWidgetManager::getGroupUnder (sint32 x, sint32 y)
|
||||
{
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0; nPriority--)
|
||||
{
|
||||
const std::list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
std::list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
CInterfaceGroup *pIGunder = pIG->getGroupUnder (x ,y);
|
||||
if (pIGunder != NULL)
|
||||
return pIGunder;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::getViewsUnder (sint32 x, sint32 y, std::vector<CViewBase*> &vVB)
|
||||
{
|
||||
vVB.clear ();
|
||||
|
||||
// No Op if screen minimized
|
||||
if(CViewRenderer::getInstance()->isMinimized())
|
||||
return;
|
||||
|
||||
uint32 sw, sh;
|
||||
CViewRenderer::getInstance()->getScreenSize(sw, sh);
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0; nPriority--)
|
||||
{
|
||||
const std::list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
std::list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
|
||||
// Accecpt if not modal clip
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
if (pIG->getViewsUnder (x, y, 0, 0, (sint32) sw, (sint32) sh, vVB))
|
||||
return ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::getCtrlsUnder (sint32 x, sint32 y, std::vector<CCtrlBase*> &vICL)
|
||||
{
|
||||
vICL.clear ();
|
||||
|
||||
// No Op if screen minimized
|
||||
if(CViewRenderer::getInstance()->isMinimized())
|
||||
return;
|
||||
|
||||
uint32 sw, sh;
|
||||
CViewRenderer::getInstance()->getScreenSize(sw, sh);
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0 ; nPriority--)
|
||||
{
|
||||
const std::list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
std::list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
|
||||
// Accecpt if not modal clip
|
||||
if (!CWidgetManager::getInstance()->hasModal() || CWidgetManager::getInstance()->getModal().ModalWindow == pIG || CWidgetManager::getInstance()->getModal().ModalExitClickOut)
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
if (pIG->getCtrlsUnder (x, y, 0, 0, (sint32) sw, (sint32) sh, vICL))
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::getGroupsUnder (sint32 x, sint32 y, std::vector<CInterfaceGroup *> &vIGL)
|
||||
{
|
||||
vIGL.clear ();
|
||||
|
||||
// No Op if screen minimized
|
||||
if(CViewRenderer::getInstance()->isMinimized())
|
||||
return;
|
||||
|
||||
uint32 sw, sh;
|
||||
CViewRenderer::getInstance()->getScreenSize(sw, sh);
|
||||
for (uint32 nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = WIN_PRIORITY_MAX; nPriority > 0 ; nPriority--)
|
||||
{
|
||||
const std::list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority-1];
|
||||
std::list<CInterfaceGroup*>::const_reverse_iterator itw;
|
||||
for (itw = rList.rbegin(); itw != rList.rend(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
|
||||
// Accecpt if not modal clip
|
||||
if (!CWidgetManager::getInstance()->hasModal() || CWidgetManager::getInstance()->getModal().ModalWindow == pIG ||
|
||||
CWidgetManager::getInstance()->getModal().ModalExitClickOut)
|
||||
if (pIG->getActive() && pIG->getUseCursor())
|
||||
{
|
||||
if (pIG->isIn(x, y))
|
||||
{
|
||||
vIGL.push_back(pIG);
|
||||
pIG->getGroupsUnder (x, y, 0, 0, (sint32) sw, (sint32) sh, vIGL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ***************************************************************************
|
||||
void CWidgetManager::removeRefOnView( CViewBase *viewBase )
|
||||
{
|
||||
uint i;
|
||||
for (i=0; i<_ViewsUnderPointer.size(); i++)
|
||||
{
|
||||
if (_ViewsUnderPointer[i] == viewBase)
|
||||
{
|
||||
_ViewsUnderPointer.erase (_ViewsUnderPointer.begin()+i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CWidgetManager::removeRefOnCtrl(CCtrlBase *ctrlBase)
|
||||
{
|
||||
if ( getCurContextHelp() == ctrlBase)
|
||||
setCurContextHelp( NULL );
|
||||
if (getCapturePointerLeft() == ctrlBase)
|
||||
setCapturePointerLeft(NULL);
|
||||
if (getCapturePointerRight() == ctrlBase)
|
||||
setCapturePointerRight (NULL);
|
||||
if (getCaptureKeyboard() == ctrlBase)
|
||||
setCaptureKeyboard(NULL);
|
||||
if (getOldCaptureKeyboard() == ctrlBase)
|
||||
setOldCaptureKeyboard(NULL);
|
||||
if (getDefaultCaptureKeyboard() == ctrlBase)
|
||||
setDefaultCaptureKeyboard(NULL);
|
||||
uint i;
|
||||
for (i=0; i<_CtrlsUnderPointer.size(); i++)
|
||||
{
|
||||
if (_CtrlsUnderPointer[i] == ctrlBase)
|
||||
{
|
||||
_CtrlsUnderPointer.erase (_CtrlsUnderPointer.begin()+i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
|
||||
// Unregister from ClockMsgTargets
|
||||
unregisterClockMsgTarget(ctrlBase);
|
||||
}
|
||||
|
||||
|
||||
// ***************************************************************************
|
||||
void CWidgetManager::removeRefOnGroup (CInterfaceGroup *group)
|
||||
{
|
||||
uint i;
|
||||
for (i=0; i<_GroupsUnderPointer.size(); i++)
|
||||
{
|
||||
if (_GroupsUnderPointer[i] == group)
|
||||
{
|
||||
_GroupsUnderPointer.erase (_GroupsUnderPointer.begin()+i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CWidgetManager::reset()
|
||||
{
|
||||
setCurContextHelp( NULL );
|
||||
|
||||
_ViewsUnderPointer.clear();
|
||||
_CtrlsUnderPointer.clear();
|
||||
_GroupsUnderPointer.clear();
|
||||
|
||||
_CaptureKeyboard = NULL;
|
||||
_OldCaptureKeyboard = NULL;
|
||||
setCapturePointerLeft(NULL);
|
||||
setCapturePointerRight(NULL);
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::checkCoords()
|
||||
{
|
||||
H_AUTO ( RZ_Interface_validateCoords )
|
||||
|
||||
uint32 nMasterGroup;
|
||||
|
||||
{
|
||||
H_AUTO ( RZ_Interface_checkCoords )
|
||||
|
||||
// checkCoords all the windows
|
||||
for (nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = 0; nPriority < WIN_PRIORITY_MAX; nPriority++)
|
||||
{
|
||||
std::list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority];
|
||||
std::list<CInterfaceGroup*>::const_iterator itw;
|
||||
for (itw = rList.begin(); itw!= rList.end();)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
itw++; // since checkCoords invalidate the iterator, be sure we move to the next one before
|
||||
if (pIG->getActive())
|
||||
pIG->checkCoords ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool bRecomputeCtrlUnderPtr = false;
|
||||
{
|
||||
H_AUTO ( RZ_Interface_updateCoords )
|
||||
|
||||
// updateCoords all the needed windows
|
||||
for (nMasterGroup = 0; nMasterGroup < _MasterGroups.size(); nMasterGroup++)
|
||||
{
|
||||
CWidgetManager::SMasterGroup &rMG = _MasterGroups[nMasterGroup];
|
||||
if (rMG.Group->getActive())
|
||||
{
|
||||
for (uint8 nPriority = 0; nPriority < WIN_PRIORITY_MAX; nPriority++)
|
||||
{
|
||||
std::list<CInterfaceGroup*> &rList = rMG.PrioritizedWindows[nPriority];
|
||||
std::list<CInterfaceGroup*>::const_iterator itw;
|
||||
for (itw = rList.begin(); itw!= rList.end(); itw++)
|
||||
{
|
||||
CInterfaceGroup *pIG = *itw;
|
||||
bool updateCoordCalled= false;
|
||||
// updateCoords the window only if the master group is his parent and if need it
|
||||
// do it until updateCoords() no more invalidate coordinates!!
|
||||
while (pIG->getParent()==rMG.Group && (pIG->getInvalidCoords()>0))
|
||||
{
|
||||
bRecomputeCtrlUnderPtr = true;
|
||||
// Update as many pass wanted (3 time for complex resizing, 1 for scroll for example)
|
||||
uint numPass= pIG->getInvalidCoords();
|
||||
// reset before updateCoords
|
||||
pIG->resetInvalidCoords();
|
||||
for(uint i=0;i<numPass;i++)
|
||||
{
|
||||
pIG->updateCoords ();
|
||||
}
|
||||
updateCoordCalled= true;
|
||||
}
|
||||
// If the group need to update pos each frame (eg: CGroupInScene),
|
||||
// and updateCoords not called
|
||||
if(pIG->getParent()==rMG.Group && !updateCoordCalled && pIG->isNeedFrameUpdatePos())
|
||||
{
|
||||
// This Group will compute the delta to apply.
|
||||
pIG->onFrameUpdateWindowPos(0,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( CWidgetManager::getInstance()->getPointer() != NULL)
|
||||
CWidgetManager::getInstance()->getPointer()->updateCoords();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (bRecomputeCtrlUnderPtr)
|
||||
{
|
||||
H_AUTO ( RZ_Interface_RecomputeCtrlUnderPtr )
|
||||
if ( CWidgetManager::getInstance()->getPointer() != NULL )
|
||||
{
|
||||
sint32 mx = _Pointer->getX();
|
||||
sint32 my = _Pointer->getY();
|
||||
getViewsUnder (mx, my, _ViewsUnderPointer);
|
||||
getCtrlsUnder (mx, my, _CtrlsUnderPointer);
|
||||
getGroupsUnder (mx, my, _GroupsUnderPointer);
|
||||
CInterfaceGroup *ptr = getWindowUnder (mx, my);
|
||||
_WindowUnder = ptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::movePointer (sint32 dx, sint32 dy)
|
||||
{
|
||||
if (!_Pointer)
|
||||
return;
|
||||
|
||||
uint32 nScrW, nScrH;
|
||||
sint32 oldpx, oldpy, newpx, newpy, disppx, disppy, olddisppx, olddisppy;
|
||||
|
||||
CViewRenderer::getInstance()->getScreenSize (nScrW, nScrH);
|
||||
_Pointer->getPointerPos (oldpx, oldpy);
|
||||
|
||||
olddisppx = oldpx;
|
||||
olddisppy = oldpy;
|
||||
|
||||
newpx = oldpx + dx;
|
||||
newpy = oldpy + dy;
|
||||
|
||||
if (newpx < 0) newpx = 0;
|
||||
if (newpy < 0) newpy = 0;
|
||||
if (newpx > (sint32)nScrW) newpx = nScrW;
|
||||
if (newpy > (sint32)nScrH) newpy = nScrH;
|
||||
dx = newpx - oldpx;
|
||||
dy = newpy - oldpy;
|
||||
|
||||
disppx = newpx;
|
||||
disppy = newpy;
|
||||
|
||||
_Pointer->setPointerPos (newpx, newpy);
|
||||
_Pointer->setPointerDispPos (disppx, disppy);
|
||||
|
||||
// must get back coordinates because of snapping
|
||||
sint32 mx = _Pointer->getX();
|
||||
sint32 my = _Pointer->getY();
|
||||
getViewsUnder (mx, my, _ViewsUnderPointer);
|
||||
getCtrlsUnder (mx, my, _CtrlsUnderPointer);
|
||||
getGroupsUnder (mx, my, _GroupsUnderPointer);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::movePointerAbs(sint32 px, sint32 py)
|
||||
{
|
||||
if(!CWidgetManager::getInstance()->getPointer())
|
||||
return;
|
||||
|
||||
uint32 nScrW, nScrH;
|
||||
CViewRenderer::getInstance()->getScreenSize (nScrW, nScrH);
|
||||
NLMISC::clamp(px, 0, (sint32) nScrW);
|
||||
NLMISC::clamp(py, 0, (sint32) nScrH);
|
||||
//
|
||||
_Pointer->setPointerPos (px, py);
|
||||
_Pointer->setPointerDispPos (px, py);
|
||||
//
|
||||
getViewsUnder (px, py, _ViewsUnderPointer);
|
||||
getCtrlsUnder (px, py, _CtrlsUnderPointer);
|
||||
getGroupsUnder (px, py, _GroupsUnderPointer);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CWidgetManager::setCapturePointerLeft(CCtrlBase *c)
|
||||
{
|
||||
// additionally, abort any dragging
|
||||
if(CDBCtrlSheet::getDraggedSheet())
|
||||
{
|
||||
CDBCtrlSheet::getDraggedSheet()->abortDraging();
|
||||
}
|
||||
_CapturePointerLeft = c;
|
||||
notifyElementCaptured(c);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CWidgetManager::setCapturePointerRight(CCtrlBase *c)
|
||||
{
|
||||
_CapturePointerRight = c;
|
||||
notifyElementCaptured(c);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::setCaptureKeyboard(CCtrlBase *c)
|
||||
{
|
||||
CGroupEditBox *oldEb= dynamic_cast<CGroupEditBox*>((CCtrlBase*)_CaptureKeyboard);
|
||||
CGroupEditBox *newEb= dynamic_cast<CGroupEditBox*>(c);
|
||||
|
||||
if (_CaptureKeyboard && _CaptureKeyboard != c)
|
||||
{
|
||||
_CaptureKeyboard->onKeyboardCaptureLost();
|
||||
}
|
||||
// If the old capturedKeyboard is an editBox and allow recoverFocusOnEnter
|
||||
if ( oldEb && oldEb->getRecoverFocusOnEnter() )
|
||||
{
|
||||
_OldCaptureKeyboard = _CaptureKeyboard;
|
||||
}
|
||||
if ( newEb )
|
||||
{
|
||||
CGroupEditBox::disableSelection();
|
||||
|
||||
if (!newEb->getAHOnFocus().empty())
|
||||
{
|
||||
CAHManager::getInstance()->runActionHandler(newEb->getAHOnFocus(), newEb, newEb->getAHOnFocusParams());
|
||||
}
|
||||
|
||||
}
|
||||
_CaptureKeyboard = c;
|
||||
notifyElementCaptured(c);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::resetCaptureKeyboard()
|
||||
{
|
||||
CCtrlBase *captureKeyboard = _CaptureKeyboard;
|
||||
_OldCaptureKeyboard = NULL;
|
||||
_CaptureKeyboard = NULL;
|
||||
if (captureKeyboard)
|
||||
{
|
||||
captureKeyboard->onKeyboardCaptureLost();
|
||||
}
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CWidgetManager::registerClockMsgTarget(CCtrlBase *vb)
|
||||
{
|
||||
if (!vb) return;
|
||||
if (isClockMsgTarget(vb))
|
||||
{
|
||||
nlwarning("<CInterfaceManager::registerClockMsgTarget> Element %s is already registered", vb->getId().c_str());
|
||||
return;
|
||||
}
|
||||
_ClockMsgTargets.push_back(vb);
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
void CWidgetManager::unregisterClockMsgTarget(CCtrlBase *vb)
|
||||
{
|
||||
if (!vb) return;
|
||||
std::vector<CCtrlBase*>::iterator it = std::find(_ClockMsgTargets.begin(), _ClockMsgTargets.end(), vb);
|
||||
if (it != _ClockMsgTargets.end())
|
||||
{
|
||||
_ClockMsgTargets.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
// ***************************************************************************
|
||||
bool CWidgetManager::isClockMsgTarget(CCtrlBase *vb) const
|
||||
{
|
||||
std::vector<CCtrlBase*>::const_iterator it = std::find(_ClockMsgTargets.begin(), _ClockMsgTargets.end(), vb);
|
||||
return it != _ClockMsgTargets.end();
|
||||
}
|
||||
|
||||
void CWidgetManager::sendClockTickEvent()
|
||||
{
|
||||
NLGUI::CEventDescriptorSystem clockTick;
|
||||
clockTick.setEventTypeExtended(NLGUI::CEventDescriptorSystem::clocktick);
|
||||
|
||||
if (_CapturePointerLeft)
|
||||
{
|
||||
_CapturePointerLeft->handleEvent(clockTick);
|
||||
}
|
||||
if (_CapturePointerRight)
|
||||
{
|
||||
_CapturePointerRight->handleEvent(clockTick);
|
||||
}
|
||||
|
||||
// and send clock tick msg to ctrl that are registered
|
||||
std::vector<CCtrlBase*> clockMsgTarget = _ClockMsgTargets;
|
||||
for(std::vector<CCtrlBase*>::iterator it = clockMsgTarget.begin(); it != clockMsgTarget.end(); ++it)
|
||||
{
|
||||
(*it)->handleEvent(clockTick);
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void CWidgetManager::notifyElementCaptured(CCtrlBase *c)
|
||||
{
|
||||
std::set<CCtrlBase *> seen;
|
||||
CCtrlBase *curr = c;
|
||||
while (curr)
|
||||
{
|
||||
seen.insert(curr);
|
||||
curr->elementCaptured(c);
|
||||
curr = curr->getParent();
|
||||
}
|
||||
// also warn the ctrl under the pointer
|
||||
for (uint i = 0; i < (uint) _CtrlsUnderPointer.size(); ++i)
|
||||
{
|
||||
if (!seen.count(_CtrlsUnderPointer[i]))
|
||||
{
|
||||
_CtrlsUnderPointer[i]->elementCaptured(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
CWidgetManager::CWidgetManager()
|
||||
{
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
|
||||
class CInterfaceElement;
|
||||
class CCtrlBase;
|
||||
class CViewBase;
|
||||
class CInterfaceGroup;
|
||||
class CViewPointer;
|
||||
|
||||
|
@ -186,6 +187,80 @@ public:
|
|||
CViewPointer* getPointer(){ return _Pointer; }
|
||||
void setPointer( CViewPointer *pointer ){ _Pointer = pointer; }
|
||||
|
||||
/**
|
||||
* get the window under a spot
|
||||
* \param : X coord of the spot
|
||||
* \param : Y coord of the spot
|
||||
* \return : pointer to the window
|
||||
*/
|
||||
CInterfaceGroup* getWindowUnder (sint32 x, sint32 y);
|
||||
CInterfaceGroup* getCurrentWindowUnder() { return _WindowUnder; }
|
||||
void setCurrentWindowUnder( CInterfaceGroup *group ){ _WindowUnder = group; }
|
||||
CInterfaceGroup* getGroupUnder (sint32 x, sint32 y);
|
||||
|
||||
void getViewsUnder( sint32 x, sint32 y, std::vector< CViewBase* > &vVB );
|
||||
void getCtrlsUnder( sint32 x, sint32 y, std::vector< CCtrlBase* > &vICL );
|
||||
void getGroupsUnder (sint32 x, sint32 y, std::vector< CInterfaceGroup* > &vIGL );
|
||||
|
||||
const std::vector< CViewBase* >& getViewsUnderPointer(){ return _ViewsUnderPointer; }
|
||||
const std::vector< CInterfaceGroup* >& getGroupsUnderPointer() { return _GroupsUnderPointer; }
|
||||
const std::vector< CCtrlBase* >& getCtrlsUnderPointer() { return _CtrlsUnderPointer; }
|
||||
|
||||
//
|
||||
void clearViewUnders(){ _ViewsUnderPointer.clear(); }
|
||||
void clearGroupsUnders() { _GroupsUnderPointer.clear(); }
|
||||
void clearCtrlsUnders() { _CtrlsUnderPointer.clear(); }
|
||||
|
||||
// Remove all references on a view (called when the ctrl is destroyed)
|
||||
void removeRefOnView( CViewBase *ctrlBase );
|
||||
|
||||
// Remove all references on a ctrl (called when the ctrl is destroyed)
|
||||
void removeRefOnCtrl (CCtrlBase *ctrlBase);
|
||||
|
||||
// Remove all references on a group (called when the group is destroyed)
|
||||
void removeRefOnGroup (CInterfaceGroup *group);
|
||||
|
||||
void reset();
|
||||
|
||||
void checkCoords();
|
||||
// Relative move of pointer
|
||||
void movePointer (sint32 dx, sint32 dy);
|
||||
// Set absolute coordinates of pointer
|
||||
void movePointerAbs(sint32 px, sint32 py);
|
||||
|
||||
/**
|
||||
* Capture
|
||||
*/
|
||||
CCtrlBase *getCapturePointerLeft() { return _CapturePointerLeft; }
|
||||
CCtrlBase *getCapturePointerRight() { return _CapturePointerRight; }
|
||||
CCtrlBase *getCaptureKeyboard() { return _CaptureKeyboard; }
|
||||
CCtrlBase *getOldCaptureKeyboard() { return _OldCaptureKeyboard; }
|
||||
CCtrlBase *getDefaultCaptureKeyboard() { return _DefaultCaptureKeyboard; }
|
||||
|
||||
void setCapturePointerLeft(CCtrlBase *c);
|
||||
void setCapturePointerRight(CCtrlBase *c);
|
||||
void setOldCaptureKeyboard(CCtrlBase *c){ _OldCaptureKeyboard = c; }
|
||||
// NB: setCaptureKeyboard(NULL) has not the same effect as resetCaptureKeyboard(). it allows the capture
|
||||
// to come back to the last captured window (resetCaptureKeyboard() not)
|
||||
void setCaptureKeyboard(CCtrlBase *c);
|
||||
/** Set the default box to use when no keyboard has been previously captured
|
||||
* The given dialog should be static
|
||||
*/
|
||||
void setDefaultCaptureKeyboard(CCtrlBase *c){ _DefaultCaptureKeyboard = c; }
|
||||
|
||||
void resetCaptureKeyboard();
|
||||
|
||||
// True if the keyboard is captured
|
||||
bool isKeyboardCaptured() const {return _CaptureKeyboard!=NULL;}
|
||||
|
||||
// register a view that wants to be notified at each frame (receive the msg 'clocktick')
|
||||
void registerClockMsgTarget(CCtrlBase *vb);
|
||||
void unregisterClockMsgTarget(CCtrlBase *vb);
|
||||
bool isClockMsgTarget(CCtrlBase *vb) const;
|
||||
void sendClockTickEvent();
|
||||
|
||||
void notifyElementCaptured(CCtrlBase *c);
|
||||
|
||||
static IParser *parser;
|
||||
|
||||
private:
|
||||
|
@ -198,6 +273,23 @@ private:
|
|||
static std::string _CtrlLaunchingModalId;
|
||||
NLMISC::CRefPtr< CCtrlBase > curContextHelp;
|
||||
CViewPointer *_Pointer;
|
||||
|
||||
NLMISC::CRefPtr< CInterfaceGroup > _WindowUnder;
|
||||
|
||||
// Capture
|
||||
NLMISC::CRefPtr<CCtrlBase> _CaptureKeyboard;
|
||||
NLMISC::CRefPtr<CCtrlBase> _OldCaptureKeyboard;
|
||||
NLMISC::CRefPtr<CCtrlBase> _DefaultCaptureKeyboard;
|
||||
NLMISC::CRefPtr<CCtrlBase> _CapturePointerLeft;
|
||||
NLMISC::CRefPtr<CCtrlBase> _CapturePointerRight;
|
||||
|
||||
// What is under pointer
|
||||
std::vector< CViewBase* > _ViewsUnderPointer;
|
||||
std::vector< CCtrlBase* > _CtrlsUnderPointer;
|
||||
std::vector< CInterfaceGroup* > _GroupsUnderPointer;
|
||||
|
||||
// view that should be notified from clock msg
|
||||
std::vector<CCtrlBase*> _ClockMsgTargets;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1319,7 +1319,7 @@ class CAHLoginTab : public IActionHandler
|
|||
|
||||
if (NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:SCREEN")->getValue32() == UI_VARIABLES_SCREEN_CHECKPASS)
|
||||
{
|
||||
CCtrlBase *pCB = pIM->getCaptureKeyboard();
|
||||
CCtrlBase *pCB = CWidgetManager::getInstance()->getCaptureKeyboard();
|
||||
if (pCB != NULL)
|
||||
{
|
||||
CCtrlBase *pNewCB;
|
||||
|
@ -1328,12 +1328,12 @@ class CAHLoginTab : public IActionHandler
|
|||
pNewCB = dynamic_cast<CCtrlBase*>(CWidgetManager::getInstance()->getElementFromId(CTRL_EDITBOX_PASSWORD));
|
||||
else
|
||||
pNewCB = dynamic_cast<CCtrlBase*>(CWidgetManager::getInstance()->getElementFromId(CTRL_EDITBOX_LOGIN));
|
||||
pIM->setCaptureKeyboard(pNewCB);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(pNewCB);
|
||||
}
|
||||
}
|
||||
else if (NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:SCREEN")->getValue32() == UI_VARIABLES_SCREEN_CREATE_ACCOUNT)
|
||||
{
|
||||
CCtrlBase *pCB = pIM->getCaptureKeyboard();
|
||||
CCtrlBase *pCB = CWidgetManager::getInstance()->getCaptureKeyboard();
|
||||
if (pCB != NULL)
|
||||
{
|
||||
CCtrlBase *pNewCB;
|
||||
|
@ -1346,7 +1346,7 @@ class CAHLoginTab : public IActionHandler
|
|||
pNewCB = dynamic_cast<CCtrlBase*>(CWidgetManager::getInstance()->getElementFromId(CTRL_EDITBOX_CREATEACCOUNT_EMAIL));
|
||||
else
|
||||
pNewCB = dynamic_cast<CCtrlBase*>(CWidgetManager::getInstance()->getElementFromId(CTRL_EDITBOX_CREATEACCOUNT_LOGIN));
|
||||
pIM->setCaptureKeyboard(pNewCB);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(pNewCB);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1388,7 +1388,7 @@ void setDefaultChatWindow(CChatWindow *defaultChatWindow)
|
|||
if (defaultChatWindow->getContainer())
|
||||
{
|
||||
CInterfaceGroup *ig = defaultChatWindow->getContainer()->getGroup("eb");
|
||||
if (ig) im->setDefaultCaptureKeyboard(ig);
|
||||
if (ig) CWidgetManager::getInstance()->setDefaultCaptureKeyboard(ig);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3010,7 +3010,7 @@ bool mainLoop()
|
|||
Actions.enable(false);
|
||||
EditActions.enable(false);
|
||||
|
||||
CInterfaceManager::getInstance()->setDefaultCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setDefaultCaptureKeyboard(NULL);
|
||||
|
||||
// Interface saving
|
||||
CInterfaceManager::getInstance()->uninitInGame0();
|
||||
|
@ -3115,8 +3115,8 @@ void displayDebugUIUnderMouse()
|
|||
line-= 2 * lineStep;
|
||||
}
|
||||
//
|
||||
const vector<CCtrlBase *> &rICL = pIM->getCtrlsUnderPointer ();
|
||||
const vector<CInterfaceGroup *> &rIGL = pIM->getGroupsUnderPointer ();
|
||||
const vector<CCtrlBase *> &rICL = CWidgetManager::getInstance()->getCtrlsUnderPointer ();
|
||||
const vector<CInterfaceGroup *> &rIGL = CWidgetManager::getInstance()->getGroupsUnderPointer ();
|
||||
// If previous highlighted element is found in the list, then keep it, else reset to first element
|
||||
if (std::find(rICL.begin(), rICL.end(), HighlightedDebugUI) == rICL.end() &&
|
||||
std::find(rIGL.begin(), rIGL.end(), HighlightedDebugUI) == rIGL.end())
|
||||
|
@ -3183,8 +3183,8 @@ void displayDebugUIUnderMouse()
|
|||
static void getElementsUnderMouse(vector<CInterfaceElement *> &ielem)
|
||||
{
|
||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||
const vector<CCtrlBase *> &rICL = pIM->getCtrlsUnderPointer();
|
||||
const vector<CInterfaceGroup *> &rIGL = pIM->getGroupsUnderPointer();
|
||||
const vector<CCtrlBase *> &rICL = CWidgetManager::getInstance()->getCtrlsUnderPointer();
|
||||
const vector<CInterfaceGroup *> &rIGL = CWidgetManager::getInstance()->getGroupsUnderPointer();
|
||||
ielem.clear();
|
||||
ielem.insert(ielem.end(), rICL.begin(), rICL.end());
|
||||
ielem.insert(ielem.end(), rIGL.begin(), rIGL.end());
|
||||
|
|
|
@ -1664,8 +1664,8 @@ void CEditor::waitScenarioScreen()
|
|||
//
|
||||
ActionsContext.setContext("waiting_network");
|
||||
TGameCycle serverTick = NetMngr.getCurrentServerTick();
|
||||
getUI().setCaptureKeyboard(NULL);
|
||||
getUI().setDefaultCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setDefaultCaptureKeyboard(NULL);
|
||||
loadBackgroundBitmap (StartBackground);
|
||||
|
||||
// patch for the 'sys info that pop' prb (cause unknown for now ...)
|
||||
|
@ -2351,9 +2351,9 @@ void CEditor::setMode(TMode mode)
|
|||
_Mode = mode;
|
||||
loadKeySet(getKeySetPrefix(_Mode));
|
||||
CWidgetManager::getInstance()->disableModalWindow();
|
||||
getUI().setCapturePointerLeft(NULL);
|
||||
getUI().setCapturePointerRight(NULL);
|
||||
getUI().setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
// Season is now unknown, until server force it (in test mode), or first set act set it (in edit mode)
|
||||
_Season = UnknownSeason;
|
||||
//
|
||||
|
@ -7541,7 +7541,7 @@ class CAHR2Undo : public IActionHandler
|
|||
virtual void execute(CCtrlBase * /* pCaller */, const std::string &/* sParams */)
|
||||
{
|
||||
// if an edit box currently has focus, then try undo on it first
|
||||
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(getEditor().getUI().getCaptureKeyboard());
|
||||
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>( CWidgetManager::getInstance()->getCaptureKeyboard());
|
||||
if (eb && eb->undo())
|
||||
{
|
||||
return;
|
||||
|
@ -7570,7 +7570,7 @@ class CAHR2Redo : public IActionHandler
|
|||
virtual void execute(CCtrlBase * /* pCaller */, const std::string &/* sParams */)
|
||||
{
|
||||
// if an edit box currently has focus, then try redo on it first
|
||||
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(getEditor().getUI().getCaptureKeyboard());
|
||||
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(CWidgetManager::getInstance()->getCaptureKeyboard());
|
||||
if (eb && eb->redo())
|
||||
{
|
||||
return;
|
||||
|
|
|
@ -186,7 +186,7 @@ sint32 CTool::getMouseY()
|
|||
bool CTool::isMouseOnUI()
|
||||
{
|
||||
//H_AUTO(R2_CTool_isMouseOnUI)
|
||||
return getUI().getWindowUnder(getMouseX(), getMouseY()) != NULL;
|
||||
return CWidgetManager::getInstance()->getWindowUnder(getMouseX(), getMouseY()) != NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -207,7 +207,7 @@ CGroupMap *CTool::getWorldMap()
|
|||
CGroupMap *CTool::isMouseOnWorldMap()
|
||||
{
|
||||
//H_AUTO(R2_CTool_isMouseOnWorldMap)
|
||||
const std::vector<CInterfaceGroup *> &groupsUnder = getUI().getGroupsUnderPointer();
|
||||
const std::vector<CInterfaceGroup *> &groupsUnder = CWidgetManager::getInstance()->getGroupsUnderPointer();
|
||||
if (groupsUnder.empty()) return NULL;
|
||||
for(uint k = 0; k < groupsUnder.size(); ++k)
|
||||
{
|
||||
|
@ -221,7 +221,7 @@ CGroupMap *CTool::isMouseOnWorldMap()
|
|||
CGroupContainer *CTool::isMouseOnContainer()
|
||||
{
|
||||
//H_AUTO(R2_CTool_isMouseOnContainer)
|
||||
const std::vector<CInterfaceGroup *> &groupsUnder = getUI().getGroupsUnderPointer();
|
||||
const std::vector<CInterfaceGroup *> &groupsUnder = CWidgetManager::getInstance()->getGroupsUnderPointer();
|
||||
if (groupsUnder.empty()) return NULL;
|
||||
for(uint k = 0; k < groupsUnder.size(); ++k)
|
||||
{
|
||||
|
@ -589,7 +589,7 @@ CInstance *CTool::checkInstanceUnderMouse(IDisplayerUIHandle **miniMapHandle /*=
|
|||
IDisplayerUIHandle *bestCandidate = NULL;
|
||||
sint8 bestCandidateLayer = -128;
|
||||
// see if the element is under the mouse
|
||||
const std::vector<CCtrlBase *> &ctrlsUnder = getUI().getCtrlsUnderPointer();
|
||||
const std::vector<CCtrlBase *> &ctrlsUnder = CWidgetManager::getInstance()->getCtrlsUnderPointer();
|
||||
for(sint k = (sint)ctrlsUnder.size() - 1; k >= 0; --k)
|
||||
{
|
||||
IDisplayerUIHandle *handle = dynamic_cast<IDisplayerUIHandle *>(ctrlsUnder[k]);
|
||||
|
@ -637,7 +637,7 @@ CInstance *CTool::checkInstanceUnderMouse(IDisplayerUIHandle **miniMapHandle /*=
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (!IsMouseFreeLook() && !getUI().getCapturePointerLeft() && !getUI().getCapturePointerRight())
|
||||
else if (!IsMouseFreeLook() && !CWidgetManager::getInstance()->getCapturePointerLeft() && !CWidgetManager::getInstance()->getCapturePointerRight())
|
||||
{
|
||||
// Over the screen ?
|
||||
if (isInScreen(x, y))
|
||||
|
@ -719,7 +719,7 @@ void CTool::captureMouse()
|
|||
CGroupMap *gm = isMouseOnWorldMap();
|
||||
if (gm)
|
||||
{
|
||||
getUI().setCapturePointerLeft(gm);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(gm);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -734,7 +734,7 @@ void CTool::captureMouse()
|
|||
void CTool::releaseMouse()
|
||||
{
|
||||
//H_AUTO(R2_CTool_releaseMouse)
|
||||
getUI().setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
UserControls.releaseMouse();
|
||||
getUI().enableMouseHandling(true);
|
||||
getUI().setContextHelpActive(true);
|
||||
|
|
|
@ -93,7 +93,7 @@ void CToolCreateEntity::updateInvalidCursorOnUI()
|
|||
{
|
||||
//H_AUTO(R2_CToolCreateEntity_updateInvalidCursorOnUI)
|
||||
// set the default cursor unless the mouse is on the palette
|
||||
const std::vector<CInterfaceGroup *> &groups = getUI().getGroupsUnderPointer();
|
||||
const std::vector<CInterfaceGroup *> &groups = CWidgetManager::getInstance()->getGroupsUnderPointer();
|
||||
for(uint k = 0; k < groups.size(); ++k)
|
||||
{
|
||||
if (groups[k]->getId() == "ui:interface:r2ed_palette") // hardcoded for now ...
|
||||
|
|
|
@ -175,7 +175,7 @@ bool CToolMaintainedAction::onMouseLeftButtonClicked()
|
|||
CGroupMap *gm = CTool::isMouseOnWorldMap();
|
||||
if (gm)
|
||||
{
|
||||
if (getUI().getCapturePointerLeft())
|
||||
if (CWidgetManager::getInstance()->getCapturePointerLeft())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -242,9 +242,9 @@ void releaseMainLoopReselect()
|
|||
EditActions.releaseAllKeyNoRunning();
|
||||
Actions.releaseAllKeyNoRunning();
|
||||
pIM->removeAllTemplates();
|
||||
pIM->setCaptureKeyboard(NULL);
|
||||
pIM->setCapturePointerLeft(NULL);
|
||||
pIM->setCapturePointerRight(NULL);
|
||||
CWidgetManager::getInstance()->setCaptureKeyboard(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerLeft(NULL);
|
||||
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
|
||||
|
||||
// Yoyo: Don't release attack list manager, because I think it only owns static data (and 3D data created from Driver, not Scenes)
|
||||
// Note that in initMainLoop(), CAttackListManager::getInstance().init() will do nothing (since already created and not released here)
|
||||
|
|
Loading…
Reference in a new issue