diff options
author | George Hazan <george.hazan@gmail.com> | 2024-05-12 19:48:38 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2024-05-12 19:48:38 +0300 |
commit | f13d9cfc576f434c4c3b30ad26a8aad4f133c732 (patch) | |
tree | fd551d4ad6915b72bab5a4a8c024e5247d536ddf | |
parent | b7e7695a016663f8ec0f8fa57de9e2d3dfd466a2 (diff) |
DbEvent_GetTextW: fix to extract event's text correctly
-rw-r--r-- | plugins/NewStory/src/history_array.cpp | 3 | ||||
-rw-r--r-- | src/mir_app/src/db_events.cpp | 14 |
2 files changed, 16 insertions, 1 deletions
diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp index b2268f81c2..580234ca0d 100644 --- a/plugins/NewStory/src/history_array.cpp +++ b/plugins/NewStory/src/history_array.cpp @@ -370,7 +370,8 @@ void ItemData::load(bool bLoadAlways) switch (dbe.eventType) {
case EVENTTYPE_MESSAGE:
pOwner->MarkRead(this);
- __fallthrough;
+ wtext = DbEvent_GetTextW(&dbe);
+ break;
case EVENTTYPE_STATUSCHANGE:
wtext = mir_utf8decodeW((char *)dbe.pBlob);
diff --git a/src/mir_app/src/db_events.cpp b/src/mir_app/src/db_events.cpp index 502c02882f..45cbdc9022 100644 --- a/src/mir_app/src/db_events.cpp +++ b/src/mir_app/src/db_events.cpp @@ -179,6 +179,20 @@ static INT_PTR DbEventGetTextWorker(const DB::EventInfo *dbei, int codepage, int return 0;
}
+ if (dbei->flags & DBEF_JSON) {
+ JSONNode json = dbei->getJson();
+ std::string str = json["b"].as_string();
+ switch (datatype) {
+ case DBVT_WCHAR:
+ return (INT_PTR)mir_utf8decodeW(str.c_str());
+ case DBVT_ASCIIZ:
+ char *msg = mir_strdup(str.c_str());
+ mir_utf8decodecp(msg, codepage, nullptr);
+ return (INT_PTR)msg;
+ }
+ return 0;
+ }
+
// by default treat an event's blob as a string
if (datatype == DBVT_WCHAR) {
char *str = (char*)alloca(dbei->cbBlob + 1);
|