diff --git a/code/nel/include/nel/gui/group_container_base.h b/code/nel/include/nel/gui/group_container_base.h
index 1e5313e1b..b961f5da3 100644
--- a/code/nel/include/nel/gui/group_container_base.h
+++ b/code/nel/include/nel/gui/group_container_base.h
@@ -86,6 +86,9 @@ namespace NLGUI
uint8 getCurrentContentAlpha() const{ return _CurrentContentAlpha; }
virtual bool isGrayed() const{ return false; }
+ virtual bool getTouchFlag(bool clearFlag) const{ return false; }
+ virtual void backupPosition(){}
+ virtual void restorePosition(){}
protected:
void triggerAlphaSettingsChangedAH();
diff --git a/code/ryzom/client/src/interface_v3/group_editbox.cpp b/code/ryzom/client/src/interface_v3/group_editbox.cpp
index 529642288..1fd5c37cf 100644
--- a/code/ryzom/client/src/interface_v3/group_editbox.cpp
+++ b/code/ryzom/client/src/interface_v3/group_editbox.cpp
@@ -14,21 +14,17 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
-
-
-#include "stdpch.h"
-
#include "group_editbox.h"
-#include "interface_manager.h"
-#include "input_handler_manager.h"
#include "nel/misc/command.h"
#include "nel/gui/view_text.h"
#include "nel/misc/xml_auto_ptr.h"
#include "nel/gui/interface_options.h"
-#include "dbctrl_sheet.h"
-#include "group_container.h"
-#include "../time_client.h"
+#include "nel/gui/ctrl_draggable.h"
+#include "nel/gui/group_container_base.h"
#include "nel/gui/lua_ihm.h"
+#include "nel/gui/widget_manager.h"
+#include "nel/gui/view_renderer.h"
+#include "nel/gui/db_manager.h"
using namespace std;
using namespace NLMISC;
@@ -41,6 +37,7 @@ using namespace NL3D;
sint32 CGroupEditBox::_SelectCursorPos = 0;
CGroupEditBox *CGroupEditBox::_MenuFather = NULL;
+CGroupEditBox::IComboKeyHandler* CGroupEditBox::comboKeyHandler = NULL;
// ----------------------------------------------------------------------------
@@ -93,7 +90,6 @@ CGroupEditBox::CGroupEditBox(const TCtorParam ¶m) :
CGroupEditBox::~CGroupEditBox()
{
if (this == _CurrSelection) _CurrSelection = NULL;
- CInterfaceManager *im = CInterfaceManager::getInstance();
if (CWidgetManager::getInstance()->getCaptureKeyboard() == this || CWidgetManager::getInstance()->getOldCaptureKeyboard() == this)
{
CWidgetManager::getInstance()->resetCaptureKeyboard();
@@ -106,8 +102,6 @@ bool CGroupEditBox::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
if(!CInterfaceGroup::parse(cur, parentGroup))
return false;
CXMLAutoPtr prop;
-// CInterfaceManager *pIM = CInterfaceManager::getInstance();
-// CViewRenderer &rVR = *CViewRenderer::getInstance();
if (! CInterfaceGroup::parse(cur,parentGroup) )
{
@@ -216,7 +210,6 @@ bool CGroupEditBox::parse(xmlNodePtr cur, CInterfaceGroup * parentGroup)
void CGroupEditBox::draw ()
{
//
- CInterfaceManager *pIM = CInterfaceManager::getInstance();
CViewRenderer &rVR = *CViewRenderer::getInstance();
//
/*CRGBA col;
@@ -296,7 +289,7 @@ void CGroupEditBox::draw ()
// Display the cursor if needed
if (CWidgetManager::getInstance()->getCaptureKeyboard () == this)
{
- _BlinkTime += DT;
+ _BlinkTime += 0.0025f;
if (_BlinkTime > 0.25f)
{
_BlinkTime = fmodf(_BlinkTime, 0.25f);
@@ -566,7 +559,6 @@ void CGroupEditBox::handleEventChar(const NLGUI::CEventDescriptorKey &rEDK)
break;
// OTHER
default:
- CInterfaceManager *pIM = CInterfaceManager::getInstance();
if ((rEDK.getChar() == KeyRETURN) && !_WantReturn)
{
// update historic.
@@ -583,7 +575,6 @@ void CGroupEditBox::handleEventChar(const NLGUI::CEventDescriptorKey &rEDK)
_CursorPos = 0;
// loose the keyboard focus
- CInterfaceManager *im = CInterfaceManager::getInstance();
if (NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:CHAT:ENTER_DONT_QUIT_CB")->getValue32() == 0)
{
if(_LooseFocusOnEnter)
@@ -717,7 +708,6 @@ void CGroupEditBox::handleEventString(const NLGUI::CEventDescriptorKey &rEDK)
// ----------------------------------------------------------------------------
bool CGroupEditBox::undo()
{
- CInterfaceManager *im = CInterfaceManager::getInstance();
if (CWidgetManager::getInstance()->getCaptureKeyboard() != this) return false;
if (!_CanUndo) return false;
_ModifiedInputString = _InputString;
@@ -732,7 +722,6 @@ bool CGroupEditBox::undo()
// ----------------------------------------------------------------------------
bool CGroupEditBox::redo()
{
- CInterfaceManager *im = CInterfaceManager::getInstance();
if (CWidgetManager::getInstance()->getCaptureKeyboard() != this) return false;
if (!_CanRedo) return false;
setInputString(_ModifiedInputString);
@@ -748,11 +737,10 @@ void CGroupEditBox::triggerOnChangeAH()
{
_CanUndo = true;
_CanRedo = false;
+
if (!_AHOnChange.empty())
- {
- CInterfaceManager *pIM = CInterfaceManager::getInstance();
CAHManager::getInstance()->runActionHandler(_AHOnChange, this, _ParamsOnChange);
- }
+
}
// ----------------------------------------------------------------------------
@@ -856,8 +844,7 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
else
{
// Look into the input handler Manager if the key combo has to be considered as handled
- CInputHandlerManager *pIH= CInputHandlerManager::getInstance();
- if( pIH->isComboKeyChat(rEDK) )
+ if( ( CGroupEditBox::comboKeyHandler != NULL ) && comboKeyHandler->isComboKeyChat(rEDK) )
return true;
else
return false;
@@ -871,8 +858,6 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
/////////////////
const NLGUI::CEventDescriptorMouse &eventDesc = (const NLGUI::CEventDescriptorMouse &)event;
- CInterfaceManager *pIM = CInterfaceManager::getInstance();
-
if (eventDesc.getEventTypeExtended() == NLGUI::CEventDescriptorMouse::mouserightup)
{
if (CWidgetManager::getInstance()->getCapturePointerRight() == this)
@@ -880,7 +865,7 @@ bool CGroupEditBox::handleEvent (const NLGUI::CEventDescriptor& event)
CWidgetManager::getInstance()->setCapturePointerRight(NULL);
if (!_ListMenuRight.empty())
{
- if (CDBCtrlSheet::getDraggedSheet() == NULL)
+ if (CCtrlDraggable::getDraggedSheet() == NULL)
{
_MenuFather = this;
CWidgetManager::getInstance()->enableModalWindow (this, _ListMenuRight);
@@ -1069,7 +1054,7 @@ void CGroupEditBox::updateCoords()
if (_BackupFatherContainerPos)
{
- CGroupContainer *gc = static_cast< CGroupContainer* >( getEnclosingContainer() );
+ CGroupContainerBase *gc = static_cast< CGroupContainerBase* >( getEnclosingContainer() );
if (gc && !gc->getTouchFlag(true))
{
@@ -1301,12 +1286,9 @@ void CGroupEditBox::setCommand(const ucstring &command, bool execute)
// ***************************************************************************
void CGroupEditBox::makeTopWindow()
{
- CInterfaceManager *im = CInterfaceManager::getInstance();
CInterfaceGroup *root = getRootWindow();
- if (root)
- {
+ if(root)
CWidgetManager::getInstance()->setTopWindow(root);
- }
}
// ***************************************************************************
@@ -1405,10 +1387,8 @@ void CGroupEditBox::elementCaptured(CCtrlBase *capturedElement)
void CGroupEditBox::onKeyboardCaptureLost()
{
if (!_AHOnFocusLost.empty())
- {
- CInterfaceManager *im = CInterfaceManager::getInstance();
CAHManager::getInstance()->runActionHandler(_AHOnFocusLost, this, _AHOnFocusLostParams);
- }
+
}
// ***************************************************************************
@@ -1428,7 +1408,6 @@ void CGroupEditBox::setFocusOnText()
return;
// else set the focus
- CInterfaceManager *pIM = CInterfaceManager::getInstance();
CWidgetManager::getInstance()->setCaptureKeyboard (this);
_CurrSelection = this;
@@ -1454,7 +1433,6 @@ int CGroupEditBox::luaCancelFocusOnText(CLuaState &ls)
const char *funcName = "cancelFocusOnText";
CLuaIHM::checkArgCount(ls, funcName, 0);
- CInterfaceManager *pIM = CInterfaceManager::getInstance();
if (CWidgetManager::getInstance()->getCaptureKeyboard()==this || CWidgetManager::getInstance()->getOldCaptureKeyboard()==this)
CWidgetManager::getInstance()->resetCaptureKeyboard();
@@ -1490,7 +1468,6 @@ void CGroupEditBox::setFrozen (bool state)
// if frozen, loose the focus
if(_Frozen)
{
- CInterfaceManager *pIM= CInterfaceManager::getInstance();
// stop capture and selection
CWidgetManager::getInstance()->setCaptureKeyboard (NULL);
if(_CurrSelection==this) _CurrSelection = NULL;
diff --git a/code/ryzom/client/src/interface_v3/group_editbox.h b/code/ryzom/client/src/interface_v3/group_editbox.h
index 1c0a02e68..2df561ff8 100644
--- a/code/ryzom/client/src/interface_v3/group_editbox.h
+++ b/code/ryzom/client/src/interface_v3/group_editbox.h
@@ -33,8 +33,16 @@ namespace NLGUI
class CGroupEditBox : public CGroupEditBoxBase
{
public:
+
+ class IComboKeyHandler
+ {
+ public:
+ virtual ~IComboKeyHandler(){}
+ virtual bool isComboKeyChat( const NLGUI::CEventDescriptorKey &edk ) const = 0;
+ };
+
enum TEntryType { Text, Integer, PositiveInteger, Float, PositiveFloat, Alpha, AlphaNum, AlphaNumSpace, Password, Filename, PlayerName }; // the type of entry this edit bot can deal with
-public:
+
DECLARE_UI_CLASS( CGroupEditBox )
/// Constructor
CGroupEditBox(const TCtorParam ¶m);
@@ -341,6 +349,12 @@ private:
}
return false;
}
+
+ static IComboKeyHandler *comboKeyHandler;
+
+public:
+ static void setComboKeyHandler( IComboKeyHandler *handler ){ comboKeyHandler = handler; }
+
};
diff --git a/code/ryzom/client/src/interface_v3/input_handler_manager.cpp b/code/ryzom/client/src/interface_v3/input_handler_manager.cpp
index da2fddea9..7622cc737 100644
--- a/code/ryzom/client/src/interface_v3/input_handler_manager.cpp
+++ b/code/ryzom/client/src/interface_v3/input_handler_manager.cpp
@@ -67,11 +67,13 @@ CInputHandlerManager::CInputHandlerManager()
_RecoverFocusLost = false;
inputHandler.setListener( CInterfaceManager::getInstance() );
+ CGroupEditBox::setComboKeyHandler( this );
}
// ***************************************************************************
CInputHandlerManager::~CInputHandlerManager()
{
+ CGroupEditBox::setComboKeyHandler( NULL );
}
// ********************************************************************************************
diff --git a/code/ryzom/client/src/interface_v3/input_handler_manager.h b/code/ryzom/client/src/interface_v3/input_handler_manager.h
index 085806122..aa5903b72 100644
--- a/code/ryzom/client/src/interface_v3/input_handler_manager.h
+++ b/code/ryzom/client/src/interface_v3/input_handler_manager.h
@@ -26,6 +26,7 @@
#include
#include "nel/gui/event_descriptor.h"
#include "nel/gui/input_handler.h"
+#include "group_editbox.h"
/**
@@ -40,7 +41,7 @@
*/
-class CInputHandlerManager : public NLMISC::IEventListener
+class CInputHandlerManager : public NLMISC::IEventListener, public CGroupEditBox::IComboKeyHandler
{
public:
/// The EventServer Filled with Filtered Messages the InterfaceManager didn't cactch