summaryrefslogtreecommitdiff
path: root/vgui2/src/MessageListener.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /vgui2/src/MessageListener.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
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