From 1babfcf1ace8b1db5f09a983967c37fb5e5eaf27 Mon Sep 17 00:00:00 2001 From: John Johns Date: Sat, 13 Mar 2021 19:50:50 -0800 Subject: [PATCH] chat history browsing by Filtik https://github.com/H-uru/Plasma/commit/5e9378ad5e084bfad2e8c627ab537a210cb87bd7 --- .../pfGameGUIMgr/pfGUIDialogNotifyProc.cpp | 14 ++++++++++++++ .../pfGameGUIMgr/pfGUIDialogNotifyProc.h | 1 + .../FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.cpp | 14 ++++++++++++-- .../FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.h | 4 +++- .../Plasma/FeatureLib/pfMessage/pfGUINotifyMsg.h | 4 ++++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.cpp b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.cpp index 544ad293..29db5ba2 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.cpp +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.cpp @@ -97,6 +97,20 @@ void pfGUIDialogNotifyProc::DoSomething( pfGUIControlMod *ctrl ) ISendNotify( ctrl->GetKey(), pfGUINotifyMsg::kValueChanged ); } +void pfGUIDialogNotifyProc::HandleExtendedEvent( pfGUIControlMod *ctrl, UInt32 event ) +{ + pfGUIEditBoxMod *edit = pfGUIEditBoxMod::ConvertNoRef( ctrl ); + + if(edit && event == pfGUIEditBoxMod::kWantMessageHistoryUp) + { + ISendNotify( ctrl->GetKey(), pfGUINotifyMsg::kMessageHistoryUp ); + } + else if(edit && event == pfGUIEditBoxMod::kWantMessageHistoryDown) + { + ISendNotify( ctrl->GetKey(), pfGUINotifyMsg::kMessageHistoryDown ); + } +} + void pfGUIDialogNotifyProc::OnInit( void ) { if ( fDialog ) diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.h index f04e2fcd..8f5fa64f 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIDialogNotifyProc.h @@ -70,6 +70,7 @@ class pfGUIDialogNotifyProc : public pfGUIDialogProc pfGUIDialogNotifyProc( plKey &r ); virtual void DoSomething( pfGUIControlMod *ctrl ); + virtual void HandleExtendedEvent( pfGUIControlMod *ctrl, UInt32 event ); virtual void OnInit( void ); virtual void OnShow( void ); virtual void OnHide( void ); diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.cpp b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.cpp index ba5412fa..10414f9a 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.cpp +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.cpp @@ -458,11 +458,11 @@ hsBool pfGUIEditBoxMod::HandleKeyEvent( pfGameGUIMgr::EventType event, plKeyDef { fFirstHalfExitKeyPushed = false; // Use arrow keys to do our dirty work - if( key == KEY_UP || key == KEY_HOME ) + if( key == KEY_HOME ) { SetCursorToHome(); } - else if( key == KEY_DOWN || key == KEY_END ) + else if( key == KEY_END ) { SetCursorToEnd(); } @@ -502,6 +502,16 @@ hsBool pfGUIEditBoxMod::HandleKeyEvent( pfGameGUIMgr::EventType event, plKeyDef DoSomething(); // Query WasEscaped() to see if it was escape vs enter return true; } + else if (key == KEY_UP) + { + // Send notify for python scripts + HandleExtendedEvent(kWantMessageHistoryUp); + } + else if (key == KEY_DOWN) + { + // Send notify for python scripts + HandleExtendedEvent(kWantMessageHistoryDown); + } else if (modifiers & pfGameGUIMgr::kCtrlDown) { if (key == KEY_C) diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.h index 7216968e..3dec28f9 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfGameGUIMgr/pfGUIEditBoxMod.h @@ -134,7 +134,9 @@ class pfGUIEditBoxMod : public pfGUIControlMod // Extended event types enum ExtendedEvents { - kValueChanging + kValueChanging, + kWantMessageHistoryUp, + kWantMessageHistoryDown }; }; diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfGUINotifyMsg.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfGUINotifyMsg.h index 901207e2..640209bf 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfGUINotifyMsg.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfMessage/pfGUINotifyMsg.h @@ -83,6 +83,8 @@ public: kFocusChange, // when one of its controls loses focus to another kExitMode, // GUI Exit Mode key was pressed kInterestingEvent, // GUI interesting-ness has changed + kMessageHistoryUp = 9, // up key to scroll back in history + kMessageHistoryDown,// down key to scroll forward in history kEndEventList }; @@ -97,6 +99,8 @@ public: // kAction - single click on item(s) // kEditBox // kAction - enter key hit +// kMessageHistoryUp - up key hit +// kMessageHistoryDown - down key hit // kUpDownPair // kValueChanged - the value of the pair has been changed // kKnob