summaryrefslogtreecommitdiff
path: root/vgui2/src/MessageListener.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'vgui2/src/MessageListener.cpp')
-rw-r--r--vgui2/src/MessageListener.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/vgui2/src/MessageListener.cpp b/vgui2/src/MessageListener.cpp
new file mode 100644
index 0000000..17b468a
--- /dev/null
+++ b/vgui2/src/MessageListener.cpp
@@ -0,0 +1,112 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#include "IMessageListener.h"
+#include "VPanel.h"
+#include "vgui_internal.h"
+
+#include <KeyValues.h>
+#include "vgui/IClientPanel.h"
+#include "vgui/IVGui.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+namespace vgui
+{
+
+//-----------------------------------------------------------------------------
+// Implementation of the message listener
+//-----------------------------------------------------------------------------
+class CMessageListener : public IMessageListener
+{
+public:
+ virtual void Message( VPanel* pSender, VPanel* pReceiver, KeyValues* pKeyValues, MessageSendType_t type );
+};
+
+void CMessageListener::Message( VPanel* pSender, VPanel* pReceiver, KeyValues* pKeyValues, MessageSendType_t type )
+{
+ char const *pSenderName = "NULL";
+ if (pSender)
+ pSenderName = pSender->Client()->GetName();
+
+ char const *pSenderClass = "NULL";
+ if (pSender)
+ pSenderClass = pSender->Client()->GetClassName();
+
+ char const *pReceiverName = "unknown name";
+ if (pReceiver)
+ pReceiverName = pReceiver->Client()->GetName();
+
+ char const *pReceiverClass = "unknown class";
+ if (pReceiver)
+ pReceiverClass = pReceiver->Client()->GetClassName();
+
+ // FIXME: Make a bunch of filters here
+
+ // filter out key focus messages
+ if (!strcmp (pKeyValues->GetName(), "KeyFocusTicked"))
+ {
+ return;
+ }
+ // filter out mousefocus messages
+ else if (!strcmp (pKeyValues->GetName(), "MouseFocusTicked"))
+ {
+ return;
+ }
+ // filter out cursor movement messages
+ else if (!strcmp (pKeyValues->GetName(), "CursorMoved"))
+ {
+ return;
+ }
+ // filter out cursor entered messages
+ else if (!strcmp (pKeyValues->GetName(), "CursorEntered"))
+ {
+ return;
+ }
+ // filter out cursor exited messages
+ else if (!strcmp (pKeyValues->GetName(), "CursorExited"))
+ {
+ return;
+ }
+ // filter out MouseCaptureLost messages
+ else if (!strcmp (pKeyValues->GetName(), "MouseCaptureLost"))
+ {
+ return;
+ }
+ // filter out MousePressed messages
+ else if (!strcmp (pKeyValues->GetName(), "MousePressed"))
+ {
+ return;
+ }
+ // filter out MouseReleased messages
+ else if (!strcmp (pKeyValues->GetName(), "MouseReleased"))
+ {
+ return;
+ }
+ // filter out Tick messages
+ else if (!strcmp (pKeyValues->GetName(), "Tick"))
+ {
+ return;
+ }
+
+ Msg( "%s : (%s (%s) - > %s (%s)) )\n",
+ pKeyValues->GetName(), pSenderClass, pSenderName, pReceiverClass, pReceiverName );
+
+}
+
+
+//-----------------------------------------------------------------------------
+// Singleton instance
+//-----------------------------------------------------------------------------
+static CMessageListener s_MessageListener;
+IMessageListener *MessageListener()
+{
+ return &s_MessageListener;
+}
+
+} \ No newline at end of file