Unlimited reply link chain (max was 30 replies)
This commit is contained in:
parent
b322344dae
commit
b3496843dd
@ -10,8 +10,9 @@ _____________________________________________________________________________
|
||||
‡ ¬¥âª¨ ¤«ï GoldED+ 1.1.5, /snapshot/
|
||||
_____________________________________________________________________________
|
||||
|
||||
+ <20>¥®£à ¨ç¥®¥ ç¨á«® «¨ª®¢ ¯¨á쬮 ¢ ¤¥à¥¢¥ ®â¢¥â®¢ (¡ë«® 30).
|
||||
- ˆá¯à ¢«¥® "§ ¢¨á ¨¥" ª« ¢¨ âãàë ¢ Win32.
|
||||
+ “«ãç襮 à ᯮ§ ¢ ¨¥ ¯à¨ ª¢®â¨£ .
|
||||
+ “«ãç襮 à ᯮ§ ¢ ¨¥ ¯à¨ ª¢®â¨£¥.
|
||||
! Š«îç¥¢ë¥ á«®¢ ¤«ï ª« ¢¨è à¨á®¢ ¨ï «¨¨© ¨§¬¥¥ë á EditGo* EditBlock*.
|
||||
+ SCheckerDefLang ¬®¦¥â ¨á¯®«ì§®¢ âìáï ¢ £à㯯 å (Random Group).
|
||||
+ Win32: ⥯¥àì ¨¤¥â¨ä¨ª â®à ï§ëª MS Spellcheker ¯à¥¤áâ ¢«¥ ¢ ¯®ï⮩ ä®à¬¥
|
||||
@ -22,8 +23,8 @@ _____________________________________________________________________________
|
||||
|
||||
‘ ¯è®â ®â 26 ¬ àâ 2006: ¨§¬¥¥¨ï ®â®á¨â¥«ì® á ¯è®â ®â 12 ¬ àâ 2006.
|
||||
|
||||
- GoldEd ¥ ¨á¯®«ì§ã¥â â ¡«¨æã ¯¥à¥ª®¤¨à®¢®ª, ¥á«¨ ã஢¥ì ¬¥ìè¥, 祬 ã஢¥ì
|
||||
CHRS-ª«ã¤¦ .
|
||||
- GoldEd ¥ ¨á¯®«ì§ã¥â â ¡«¨æã ¯¥à¥ª®¤¨à®¢®ª, ¥á«¨ ¥ñ ã஢¥ì ¬¥ìè¥, 祬
|
||||
ã஢¥ì CHRS-ª«ã¤¦ .
|
||||
- ˆá¯à ¢«¥® ®â®¡à ¦¥¨¥ ¨¨æ¨ «®¢ ¯à¨ ¨á¯®«ì§®¢ ¨¨ "á।¥£® ¨¬¥¨" (M):
|
||||
QuoteString " FML> "
|
||||
- ˆá¯à ¢«¥® "®¡à¥§ ¨¥" ¤ âë ¨ ¢à¥¬¥¨ ¯à¨ ®â®¡à ¦¥¨¨ § £®«®¢ª®¢ á®®¡é¥¨ï.
|
||||
|
@ -10,6 +10,8 @@ ______________________________________________________________________
|
||||
Notes for GoldED+ 1.1.5, /snapshot/
|
||||
______________________________________________________________________
|
||||
|
||||
+ Unlimited reply link chain (max was 30 replies).
|
||||
|
||||
- Fixed keyboard deadlock on win32.
|
||||
|
||||
+ Improved false quote handling.
|
||||
|
@ -1046,17 +1046,17 @@ void GThreadlist::recursive_build(uint32_t msgn, uint32_t rn, uint32_t level) {
|
||||
}
|
||||
}
|
||||
|
||||
if(found or (list_size == 0))
|
||||
if (found or (list_size == 0))
|
||||
list.push_back(t);
|
||||
|
||||
recursive_build(msg.link.first(), msg.link.list(0), level+1);
|
||||
|
||||
for(int n=0; n < msg.link.list_max()-1; n++) {
|
||||
if(msg.link.list(n)) {
|
||||
for(size_t n = 0, max = msg.link.list_max(); n < max; n++)
|
||||
{
|
||||
if (msg.link.list(n))
|
||||
recursive_build(msg.link.list(n), msg.link.list(n+1), level+1);
|
||||
} else
|
||||
break;
|
||||
}
|
||||
|
||||
AA->LoadHdr(&msg, oldmsgno);
|
||||
}
|
||||
}
|
||||
|
@ -220,21 +220,18 @@ void MarkMsgs_Txt(int item, char* markstring) {
|
||||
|
||||
static void recursive_mark(GMsg* msg, uint32_t msgno, bool markasread)
|
||||
{
|
||||
int i;
|
||||
gmsg_links templink;
|
||||
|
||||
if(AA->Msgn.ToReln(msgno) and AA->LoadHdr(msg, msgno, false)) {
|
||||
|
||||
templink = msg->link;
|
||||
if (AA->Msgn.ToReln(msgno) and AA->LoadHdr(msg, msgno, false))
|
||||
{
|
||||
gmsg_links templink = msg->link;
|
||||
|
||||
if (!markasread)
|
||||
{
|
||||
if(templink.first())
|
||||
if (templink.first())
|
||||
AA->Mark.Add(templink.first());
|
||||
|
||||
for(i = 0; i < templink.list_max(); i++)
|
||||
for (size_t i = 0, max = templink.list_max(); i < max; i++)
|
||||
{
|
||||
if(templink.list(i))
|
||||
if (templink.list(i))
|
||||
AA->Mark.Add(templink.list(i));
|
||||
}
|
||||
}
|
||||
@ -244,13 +241,13 @@ static void recursive_mark(GMsg* msg, uint32_t msgno, bool markasread)
|
||||
AA->UpdateTimesread(msg);
|
||||
}
|
||||
|
||||
if(templink.first())
|
||||
if (templink.first())
|
||||
recursive_mark(msg, templink.first(), markasread);
|
||||
|
||||
for(i = 0; i < templink.list_max(); i++) {
|
||||
if(templink.list(i)) {
|
||||
for (size_t i = 0, max = templink.list_max(); i < max; i++)
|
||||
{
|
||||
if (templink.list(i))
|
||||
recursive_mark(msg, templink.list(i), markasread);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1151,17 +1151,22 @@ void MakeMsg(int mode, GMsg* omsg, bool ignore_replyto) {
|
||||
if(AA->LoadHdr(reply, reply_msgno, false)) {
|
||||
uint32_t replynext;
|
||||
bool ok2save = false;
|
||||
if(streql(AA->basetype(), "SQUISH")) {
|
||||
if(reply->link.first()) {
|
||||
for(int r=0; r<reply->link.list_max()-1; r++) {
|
||||
if(reply->link.list(r) == 0) {
|
||||
|
||||
if (streql(AA->basetype(), "SQUISH"))
|
||||
{
|
||||
if (reply->link.first())
|
||||
{
|
||||
for (size_t r = 0; !ok2save; r++)
|
||||
{
|
||||
if (reply->link.list(r) == 0)
|
||||
{
|
||||
reply->link.list_set(r, msg->msgno);
|
||||
ok2save = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
reply->link.first_set(msg->msgno);
|
||||
ok2save = true;
|
||||
}
|
||||
|
@ -1052,16 +1052,18 @@ void Reader() {
|
||||
// ------------------------------------------------------------------
|
||||
// Determine if the message has replies
|
||||
|
||||
uint32_t MsgHasReplies(GMsg* msg) {
|
||||
|
||||
if(msg->link.first())
|
||||
uint32_t MsgHasReplies(GMsg* msg)
|
||||
{
|
||||
if (msg->link.first())
|
||||
return msg->link.first();
|
||||
|
||||
for(int n=0; n<msg->link.list_max(); n++)
|
||||
if(msg->link.list(n))
|
||||
for (size_t n = 0, max = msg->link.list_max(); n < max; n++)
|
||||
{
|
||||
if (msg->link.list(n))
|
||||
return msg->link.list(n);
|
||||
}
|
||||
|
||||
if(msg->link.next())
|
||||
if (msg->link.next())
|
||||
return msg->link.next();
|
||||
|
||||
return 0;
|
||||
|
@ -39,6 +39,8 @@
|
||||
#include <gvidall.h>
|
||||
#include <gmsgattr.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Internet name typedefs
|
||||
@ -180,37 +182,53 @@ Line* AddHexdump(Line*& line, void* data, size_t datalen);
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
class gmsg_links {
|
||||
|
||||
class gmsg_links
|
||||
{
|
||||
private:
|
||||
|
||||
enum { list_limit = 29 };
|
||||
|
||||
uint32_t reply_to;
|
||||
uint32_t reply_first;
|
||||
uint32_t reply_list[list_limit];
|
||||
uint32_t reply_next;
|
||||
|
||||
std::vector<uint32_t> reply_list;
|
||||
|
||||
public:
|
||||
|
||||
void reset() {
|
||||
void reset()
|
||||
{
|
||||
reply_to = reply_first = reply_next = 0;
|
||||
for(int n=0; n<list_max(); n++)
|
||||
reply_list[n] = 0;
|
||||
reply_list.clear();
|
||||
}
|
||||
|
||||
int list_max() const { return list_limit; }
|
||||
int list_max() const { return reply_list.size(); }
|
||||
|
||||
void to_set(uint32_t m) { reply_to = m; }
|
||||
void first_set(uint32_t m) { reply_first = m; }
|
||||
void list_set(int n, uint32_t m) { reply_list[n] = m; }
|
||||
void next_set(uint32_t m) { reply_next = m; }
|
||||
|
||||
void list_set(size_t n, uint32_t m)
|
||||
{
|
||||
size_t size = reply_list.size();
|
||||
if (n >= size)
|
||||
{
|
||||
for (size_t i = size; i <= n; i++)
|
||||
reply_list.push_back(0);
|
||||
}
|
||||
|
||||
reply_list[n] = m;
|
||||
}
|
||||
|
||||
uint32_t to() const { return reply_to; }
|
||||
uint32_t first() const { return reply_first; }
|
||||
uint32_t list(int n) const { return reply_list[n]; }
|
||||
uint32_t next() const { return reply_next; }
|
||||
|
||||
uint32_t list(size_t n) const
|
||||
{
|
||||
if (n >= reply_list.size())
|
||||
return 0;
|
||||
|
||||
return reply_list[n];
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -276,7 +294,7 @@ public:
|
||||
|
||||
uint board; // Board number (if applicable)
|
||||
|
||||
uint32_t msgno; // Message number
|
||||
uint32_t msgno; // Message number
|
||||
gmsg_links link; // Message reply links
|
||||
|
||||
ftn_addr oorig; // Original origination address
|
||||
|
@ -313,10 +313,12 @@ int JamArea::load_message(int __mode, gmsg* __msg, JamHdr& __hdr) {
|
||||
throw_free(_subfield);
|
||||
|
||||
// Get reply numbers in chain
|
||||
if(wide->lookreplies and __msg->link.first()) {
|
||||
if (wide->lookreplies and __msg->link.first())
|
||||
{
|
||||
int r = 0;
|
||||
uint32_t m = __msg->link.first();
|
||||
while(m and (r < __msg->link.list_max())) {
|
||||
while (m)
|
||||
{
|
||||
JamHdr _rhdr;
|
||||
memset(&_rhdr, 0, sizeof(JamHdr));
|
||||
lseekset(data->fhjdx, m-data->hdrinfo.basemsgnum, sizeof(JamIndex));
|
||||
@ -324,8 +326,7 @@ int JamArea::load_message(int __mode, gmsg* __msg, JamHdr& __hdr) {
|
||||
lseekset(data->fhjhr, _idx.hdroffset);
|
||||
read(data->fhjhr, &_rhdr, sizeof(JamHdr));
|
||||
m = _rhdr.replynext;
|
||||
if(m)
|
||||
__msg->link.list_set(r++, m);
|
||||
if (m) __msg->link.list_set(r++, m);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,8 +107,9 @@ int SquishArea::load_message(int __mode, gmsg* __msg, SqshHdr& __hdr) {
|
||||
// Convert link.list
|
||||
int q = 0;
|
||||
int r = __hdr.replies[0] == __hdr.replies[1] ? 2 : 1;
|
||||
while(r<=8) {
|
||||
if(__hdr.replies[r] and __hdr.replies[r-1] != __hdr.replies[r])
|
||||
while (r <= 8)
|
||||
{
|
||||
if (__hdr.replies[r] and __hdr.replies[r-1] != __hdr.replies[r])
|
||||
__msg->link.list_set(q++, __hdr.replies[r]);
|
||||
r++;
|
||||
}
|
||||
|
Reference in New Issue
Block a user