New features: ReplyLinkFloat & ReplyLinkShowAlways
This commit is contained in:
parent
eb75fd337c
commit
5cab8ee60e
@ -634,6 +634,15 @@ REPLYLINK Direct ; Link directly to the original message.
|
|||||||
;REPLYLINKLIST FAST ; Use only header/subfield data.
|
;REPLYLINKLIST FAST ; Use only header/subfield data.
|
||||||
REPLYLINKLIST FULL ; Use full msgbody, parsing kludges, origin etc.
|
REPLYLINKLIST FULL ; Use full msgbody, parsing kludges, origin etc.
|
||||||
|
|
||||||
|
// Show floating replylink threads (default: yes)
|
||||||
|
;ReplyLinkFloat No
|
||||||
|
ReplyLinkFloat Yes
|
||||||
|
|
||||||
|
// For messages without replies show it's as replylink threads too
|
||||||
|
// (default: yes)
|
||||||
|
;ReplyLinkShowAlways No
|
||||||
|
ReplyLinkShowAlways Yes
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
-- CARBON COPY AND CROSSPOSTING
|
-- CARBON COPY AND CROSSPOSTING
|
||||||
|
|
||||||
|
@ -704,6 +704,15 @@ ReplyLink Direct ;
|
|||||||
;ReplyLinkList Fast ; ˆá¯®«ì§®¢ âì ⮫쪮 § £®«®¢®ª.
|
;ReplyLinkList Fast ; ˆá¯®«ì§®¢ âì ⮫쪮 § £®«®¢®ª.
|
||||||
ReplyLinkList Full ; ˆá¯®«ì§®¢ âì ¯®«®áâìî ¢áñ á®®¡é¥¨¥.
|
ReplyLinkList Full ; ˆá¯®«ì§®¢ âì ¯®«®áâìî ¢áñ á®®¡é¥¨¥.
|
||||||
|
|
||||||
|
// <20>®ª §ë¢ âì ¯« ¢ î騥 â।ë (¯® 㬮«ç ¨î: yes)
|
||||||
|
;ReplyLinkFloat No
|
||||||
|
ReplyLinkFloat Yes
|
||||||
|
|
||||||
|
// <20>®ª §ë¢ âì â। ¤ ¦¥ ¢ ⮬ á«ãç ¥, ª®£¤ ã ¯¨áì¬ ¥â ®â¢¥â®¢
|
||||||
|
// (¯® 㬮«ç ¨î: yes)
|
||||||
|
;ReplyLinkShowAlways No
|
||||||
|
ReplyLinkShowAlways Yes
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
-- ‹ˆ—<CB86>€Ÿ <20>Ž—’€
|
-- ‹ˆ—<CB86>€Ÿ <20>Ž—’€
|
||||||
|
@ -10,6 +10,11 @@ ______________________________________________________________________
|
|||||||
Notes for GoldED+ 1.1.5, /snapshot/
|
Notes for GoldED+ 1.1.5, /snapshot/
|
||||||
______________________________________________________________________
|
______________________________________________________________________
|
||||||
|
|
||||||
|
+ New reply-linking features: show floating reply link threads and show
|
||||||
|
messages without replies in replylinking threads view. New config file
|
||||||
|
tokens: REPLYLINKFLOAT (yes/no), REPLYLINKSHOWALWAYS (yes/no).
|
||||||
|
(Patch from Ianos Gnatiuc 2:5030/830.17)
|
||||||
|
|
||||||
+ New AKA matching feature: match for "From" field then (if not matched)
|
+ New AKA matching feature: match for "From" field then (if not matched)
|
||||||
match for "To" field. New config token AKAMATCHFROMTO (yes/no).
|
match for "To" field. New config token AKAMATCHFROMTO (yes/no).
|
||||||
(Patch from Ianos Gnatiuc 2:5030/830.17)
|
(Patch from Ianos Gnatiuc 2:5030/830.17)
|
||||||
|
@ -43,11 +43,6 @@ To fix:
|
|||||||
|
|
||||||
* UUdecoder not 100% reliable: any volunteers for uulib maintaining?
|
* UUdecoder not 100% reliable: any volunteers for uulib maintaining?
|
||||||
* Need some workarounds on -install feature under UNIX-like OS.
|
* Need some workarounds on -install feature under UNIX-like OS.
|
||||||
* Win32 (only when runned under Win9x) version does not support case
|
|
||||||
insensitive search of regexp's for high part of ASCII table. That's
|
|
||||||
a limitation of Microsoft C RTL, I can't do anything easy for that
|
|
||||||
but probably someday I provide a huge patch (I wonder if Microsoft
|
|
||||||
accept patches? =))...
|
|
||||||
______________________________________________________________________
|
______________________________________________________________________
|
||||||
|
|
||||||
Known wishes that not currently planned (any volunteers?):
|
Known wishes that not currently planned (any volunteers?):
|
||||||
|
@ -753,7 +753,9 @@ CfgGed::CfgGed() {
|
|||||||
quotewraphard = false;
|
quotewraphard = false;
|
||||||
ra2usersbbs = 0;
|
ra2usersbbs = 0;
|
||||||
replylink = REPLYLINK_DIRECT;
|
replylink = REPLYLINK_DIRECT;
|
||||||
|
replylinkfloat = true;
|
||||||
replylinklist = 0;
|
replylinklist = 0;
|
||||||
|
replylinkshowalways = true;
|
||||||
screenblanker = 180;
|
screenblanker = 180;
|
||||||
screenblankertype = BLANK_SLIDEWIN;
|
screenblankertype = BLANK_SLIDEWIN;
|
||||||
screenmaxcol = 0;
|
screenmaxcol = 0;
|
||||||
|
@ -306,7 +306,9 @@ const word CRC_RCVDISABLESCFM = 0xD3B2;
|
|||||||
const word CRC_REGISTERKEY = 0xF428;
|
const word CRC_REGISTERKEY = 0xF428;
|
||||||
const word CRC_REGISTERNAME = 0x2CAF;
|
const word CRC_REGISTERNAME = 0x2CAF;
|
||||||
const word CRC_REPLYLINK = 0x88A1;
|
const word CRC_REPLYLINK = 0x88A1;
|
||||||
|
const word CRC_REPLYLINKFLOAT = 0xA3EC;
|
||||||
const word CRC_REPLYLINKLIST = 0x104F;
|
const word CRC_REPLYLINKLIST = 0x104F;
|
||||||
|
const word CRC_REPLYLINKSHOWALWAYS = 0x2BCD;
|
||||||
const word CRC_ROBOTNAME = 0x7393;
|
const word CRC_ROBOTNAME = 0x7393;
|
||||||
const word CRC_SCREENBLANKER = 0x5CF7;
|
const word CRC_SCREENBLANKER = 0x5CF7;
|
||||||
const word CRC_SCREENMAXCOL = 0xFFFC;
|
const word CRC_SCREENMAXCOL = 0xFFFC;
|
||||||
|
@ -497,7 +497,9 @@ SwitchR:
|
|||||||
switch(crc) {
|
switch(crc) {
|
||||||
case CRC_RA2USERSBBS : CfgRa2usersbbs (); break;
|
case CRC_RA2USERSBBS : CfgRa2usersbbs (); break;
|
||||||
case CRC_REPLYLINK : CfgReplylink (); break;
|
case CRC_REPLYLINK : CfgReplylink (); break;
|
||||||
|
case CRC_REPLYLINKFLOAT : CfgReplylinkfloat (); break;
|
||||||
case CRC_REPLYLINKLIST : CfgReplylinklist (); break;
|
case CRC_REPLYLINKLIST : CfgReplylinklist (); break;
|
||||||
|
case CRC_REPLYLINKSHOWALWAYS:CfgReplylinkshowalways();break;
|
||||||
case CRC_ROBOTNAME : CfgRobotname (); break;
|
case CRC_ROBOTNAME : CfgRobotname (); break;
|
||||||
default : found = false;
|
default : found = false;
|
||||||
}
|
}
|
||||||
|
@ -178,6 +178,13 @@ void CfgReplylink() {
|
|||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
|
void CfgReplylinkfloat()
|
||||||
|
{
|
||||||
|
CFG->replylinkfloat = (0 != GetYesno(val));
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
void CfgReplylinklist() {
|
void CfgReplylinklist() {
|
||||||
|
|
||||||
if(strieql(val, "Fast"))
|
if(strieql(val, "Fast"))
|
||||||
@ -188,6 +195,12 @@ void CfgReplylinklist() {
|
|||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
|
void CfgReplylinkshowalways()
|
||||||
|
{
|
||||||
|
CFG->replylinkshowalways = (0 != GetYesno(val));
|
||||||
|
}
|
||||||
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
void CfgRobotname(const char* v) {
|
void CfgRobotname(const char* v) {
|
||||||
|
|
||||||
char* ptr = val = throw_strdup(v);
|
char* ptr = val = throw_strdup(v);
|
||||||
@ -287,7 +300,7 @@ void CfgScreensize() {
|
|||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
void CfgSearchfor() {
|
void CfgSearchfor() {
|
||||||
|
|
||||||
INam buf;
|
INam buf;
|
||||||
strxcpy(buf, StripQuotes(val), sizeof(buf));
|
strxcpy(buf, StripQuotes(val), sizeof(buf));
|
||||||
if(cfgingroup)
|
if(cfgingroup)
|
||||||
@ -444,7 +457,7 @@ void CfgSoupbadmsgs() {
|
|||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
void CfgSoupemail() {
|
void CfgSoupemail() {
|
||||||
|
|
||||||
strupr(strxcpy(CFG->soupemail, val, sizeof(Echo)));
|
strupr(strxcpy(CFG->soupemail, val, sizeof(Echo)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -292,7 +292,9 @@ void CfgQwkreplylinker ();
|
|||||||
void CfgQwktosslog ();
|
void CfgQwktosslog ();
|
||||||
void CfgRa2usersbbs ();
|
void CfgRa2usersbbs ();
|
||||||
void CfgReplylink ();
|
void CfgReplylink ();
|
||||||
|
void CfgReplylinkfloat ();
|
||||||
void CfgReplylinklist ();
|
void CfgReplylinklist ();
|
||||||
|
void CfgReplylinkshowalways();
|
||||||
void CfgReplyto ();
|
void CfgReplyto ();
|
||||||
void CfgRobotname ();
|
void CfgRobotname ();
|
||||||
void CfgScreenblanker ();
|
void CfgScreenblanker ();
|
||||||
|
@ -540,6 +540,8 @@ void SelMaskPick::Run() {
|
|||||||
|
|
||||||
index = position = AL.mask;
|
index = position = AL.mask;
|
||||||
|
|
||||||
|
replylinkfloat = CFG->replylinkfloat;
|
||||||
|
|
||||||
run_picker();
|
run_picker();
|
||||||
|
|
||||||
if(not aborted)
|
if(not aborted)
|
||||||
|
@ -84,6 +84,7 @@ GPickArealist::GPickArealist() {
|
|||||||
pmscan = false;
|
pmscan = false;
|
||||||
|
|
||||||
area_fuzidx = 0;
|
area_fuzidx = 0;
|
||||||
|
replylinkfloat = CFG->replylinkfloat;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -294,7 +294,9 @@ public:
|
|||||||
bool quotewraphard;
|
bool quotewraphard;
|
||||||
int ra2usersbbs; // RA2;
|
int ra2usersbbs; // RA2;
|
||||||
int replylink;
|
int replylink;
|
||||||
|
bool replylinkfloat;
|
||||||
int replylinklist;
|
int replylinklist;
|
||||||
|
bool replylinkshowalways;
|
||||||
gstrarray robotname;
|
gstrarray robotname;
|
||||||
int screenblanker; // blanktime;
|
int screenblanker; // blanktime;
|
||||||
int screenblankertype;
|
int screenblankertype;
|
||||||
|
@ -98,6 +98,7 @@ public:
|
|||||||
|
|
||||||
void gfileselect::open() {
|
void gfileselect::open() {
|
||||||
|
|
||||||
|
replylinkfloat = CFG->replylinkfloat;
|
||||||
display_page();
|
display_page();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -97,6 +97,7 @@ public:
|
|||||||
memset(&msg, 0, sizeof(GMsg));
|
memset(&msg, 0, sizeof(GMsg));
|
||||||
mlst = NULL;
|
mlst = NULL;
|
||||||
maximum_index = AA->Msgn.Count()-1;
|
maximum_index = AA->Msgn.Count()-1;
|
||||||
|
replylinkfloat = CFG->replylinkfloat;
|
||||||
};
|
};
|
||||||
~GMsgList() {
|
~GMsgList() {
|
||||||
ResetMsg(&msg);
|
ResetMsg(&msg);
|
||||||
@ -684,7 +685,6 @@ private:
|
|||||||
GMsg msg;
|
GMsg msg;
|
||||||
std::vector<ThreadEntry> list;
|
std::vector<ThreadEntry> list;
|
||||||
ThreadEntry t;
|
ThreadEntry t;
|
||||||
uint h_offset;
|
|
||||||
|
|
||||||
void BuildThreadIndex(dword msgno);
|
void BuildThreadIndex(dword msgno);
|
||||||
void recursive_build(ulong msgn, ulong rn, ulong level);
|
void recursive_build(ulong msgn, ulong rn, ulong level);
|
||||||
@ -702,7 +702,7 @@ public:
|
|||||||
|
|
||||||
void Run();
|
void Run();
|
||||||
|
|
||||||
GThreadlist() { memset(&msg, 0, sizeof(GMsg)); };
|
GThreadlist() { memset(&msg, 0, sizeof(GMsg)); replylinkfloat = CFG->replylinkfloat; };
|
||||||
~GThreadlist() { ResetMsg(&msg); };
|
~GThreadlist() { ResetMsg(&msg); };
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -930,6 +930,17 @@ void GThreadlist::print_line(uint idx, uint pos, bool isbar) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (CFG->replylinkfloat && isbar)
|
||||||
|
{
|
||||||
|
int l1 = strlen(buf2);
|
||||||
|
int l2 = strlen(msg.By());
|
||||||
|
|
||||||
|
if ((l1 + l2) > tdlen)
|
||||||
|
new_hoffset = (l1 + l2)-tdlen+1;
|
||||||
|
else
|
||||||
|
new_hoffset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if((strlen(buf2) > h_offset) and (strlen(&buf2[h_offset]) < tdlen)) {
|
if((strlen(buf2) > h_offset) and (strlen(&buf2[h_offset]) < tdlen)) {
|
||||||
strxcpy(buf, msg.By(), tdlen - strlen(&buf2[h_offset]));
|
strxcpy(buf, msg.By(), tdlen - strlen(&buf2[h_offset]));
|
||||||
window.prints(pos, 8+strlen(&buf2[h_offset]), isbar ? sattr : attr, buf);
|
window.prints(pos, 8+strlen(&buf2[h_offset]), isbar ? sattr : attr, buf);
|
||||||
@ -1022,6 +1033,7 @@ void GThreadlist::BuildThreadIndex(dword msgn) {
|
|||||||
maximum_position = MinV((uint) list.size() - 1, (uint) ylen - 1);
|
maximum_position = MinV((uint) list.size() - 1, (uint) ylen - 1);
|
||||||
index = 0;
|
index = 0;
|
||||||
h_offset = 0;
|
h_offset = 0;
|
||||||
|
new_hoffset = 0;
|
||||||
|
|
||||||
for(uint i = 0; i<list.size(); i++) {
|
for(uint i = 0; i<list.size(); i++) {
|
||||||
if(list[i].msgno == msgn)
|
if(list[i].msgno == msgn)
|
||||||
@ -1087,7 +1099,7 @@ bool GThreadlist::handle_key() {
|
|||||||
case KK_ListGotoPrev:
|
case KK_ListGotoPrev:
|
||||||
case KK_ListGotoNext:
|
case KK_ListGotoNext:
|
||||||
NextThread((key == KK_ListGotoNext));
|
NextThread((key == KK_ListGotoNext));
|
||||||
if(list.size() <= 1)
|
if (!CFG->replylinkshowalways && (list.size() <= 1))
|
||||||
return false;
|
return false;
|
||||||
center(CFG->displistcursor);
|
center(CFG->displistcursor);
|
||||||
break;
|
break;
|
||||||
@ -1194,7 +1206,7 @@ void GThreadlist::Run() {
|
|||||||
|
|
||||||
BuildThreadIndex(reader_msg->msgno);
|
BuildThreadIndex(reader_msg->msgno);
|
||||||
|
|
||||||
if(list.size() > 1)
|
if(CFG->replylinkshowalways || (list.size() > 1))
|
||||||
run_picker();
|
run_picker();
|
||||||
else {
|
else {
|
||||||
w_info(LNG->NoThreadlist);
|
w_info(LNG->NoThreadlist);
|
||||||
|
@ -38,6 +38,7 @@ guserbase::guserbase() {
|
|||||||
long tries = 0;
|
long tries = 0;
|
||||||
|
|
||||||
strcpy(fname, AddPath(CFG->goldpath, CFG->golduser));
|
strcpy(fname, AddPath(CFG->goldpath, CFG->golduser));
|
||||||
|
replylinkfloat = CFG->replylinkfloat;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
usrbase.open(fname, O_RDWR|O_CREAT|O_BINARY, SH_DENYNO, S_STDRW);
|
usrbase.open(fname, O_RDWR|O_CREAT|O_BINARY, SH_DENYNO, S_STDRW);
|
||||||
@ -506,7 +507,7 @@ bool guserbase::read_entry(uint idx, gusrbaseentry *ent) {
|
|||||||
clear_entry(ent);
|
clear_entry(ent);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
usrbase.lseek(idx*sizeof(gusrbaseentry)+sizeof(gusrbaseheader), SEEK_SET);
|
usrbase.lseek(idx*sizeof(gusrbaseentry)+sizeof(gusrbaseheader), SEEK_SET);
|
||||||
usrbase.read(ent->macro, sizeof(ent->macro));
|
usrbase.read(ent->macro, sizeof(ent->macro));
|
||||||
usrbase.read(ent->name, sizeof(ent->name));
|
usrbase.read(ent->name, sizeof(ent->name));
|
||||||
@ -600,7 +601,7 @@ void guserbase::update_screen(bool force) {
|
|||||||
need_update = false;
|
need_update = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
@ -634,7 +635,7 @@ bool guserbase::handle_key() {
|
|||||||
write_entry(nidx);
|
write_entry(nidx);
|
||||||
index = nidx;
|
index = nidx;
|
||||||
}
|
}
|
||||||
unlock();
|
unlock();
|
||||||
center(CFG->displistcursor);
|
center(CFG->displistcursor);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -719,7 +720,7 @@ bool guserbase::run(GMsg* msg, bool selectonly) {
|
|||||||
|
|
||||||
void guserbase::update_addressbook(GMsg* msg, bool reverse, bool force) {
|
void guserbase::update_addressbook(GMsg* msg, bool reverse, bool force) {
|
||||||
|
|
||||||
Addr fidoaddr;
|
Addr fidoaddr;
|
||||||
IAdr iaddr;
|
IAdr iaddr;
|
||||||
INam name;
|
INam name;
|
||||||
|
|
||||||
@ -960,7 +961,7 @@ bool lookup_addressbook(GMsg* msg, char* name, char* aka, bool browser) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
void build_pseudo(GMsg* msg, bool direction) {
|
void build_pseudo(GMsg* msg, bool direction) {
|
||||||
@ -972,7 +973,7 @@ void build_pseudo(GMsg* msg, bool direction) {
|
|||||||
p.build_pseudo(msg, strbtrim(msg->To()), AA->isinternet() ? msg->iaddr : msg->dest.make_string(buf));
|
p.build_pseudo(msg, strbtrim(msg->To()), AA->isinternet() ? msg->iaddr : msg->dest.make_string(buf));
|
||||||
else
|
else
|
||||||
p.build_pseudo(msg, strbtrim(msg->By()), AA->isinternet() ? msg->iorig : msg->orig.make_string(buf), false);
|
p.build_pseudo(msg, strbtrim(msg->By()), AA->isinternet() ? msg->iorig : msg->orig.make_string(buf), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
@ -385,8 +385,8 @@ public:
|
|||||||
bool isscanned : 1; // TRUE if scanned
|
bool isscanned : 1; // TRUE if scanned
|
||||||
bool ispmscanned : 1; // TRUE if pmscanned
|
bool ispmscanned : 1; // TRUE if pmscanned
|
||||||
bool istossed : 1; // TRUE if msgs were tossed to this area
|
bool istossed : 1; // TRUE if msgs were tossed to this area
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------
|
// ----------------------------------------------------------------
|
||||||
// Access config data
|
// Access config data
|
||||||
|
|
||||||
|
@ -49,6 +49,8 @@ gwinpick::gwinpick() {
|
|||||||
maximum_index = minimum_index = maximum_position = index = position = 0;
|
maximum_index = minimum_index = maximum_position = index = position = 0;
|
||||||
aborted = listwrap = false;
|
aborted = listwrap = false;
|
||||||
direction = 0;
|
direction = 0;
|
||||||
|
replylinkfloat = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -150,7 +152,7 @@ void gwinpick::cursor_pagedown() {
|
|||||||
while(not is_selectable(max_index)) --max_index;
|
while(not is_selectable(max_index)) --max_index;
|
||||||
|
|
||||||
uint max_position = max_index - index + position;
|
uint max_position = max_index - index + position;
|
||||||
|
|
||||||
if(position < max_position) {
|
if(position < max_position) {
|
||||||
if(index == max_index) {
|
if(index == max_index) {
|
||||||
if(maximum_position < maximum_index) {
|
if(maximum_position < maximum_index) {
|
||||||
@ -313,6 +315,18 @@ void gwinpick::display_page() {
|
|||||||
|
|
||||||
uint n;
|
uint n;
|
||||||
|
|
||||||
|
if (replylinkfloat)
|
||||||
|
{
|
||||||
|
if (h_offset == new_hoffset)
|
||||||
|
{
|
||||||
|
for (n=0; n<=maximum_position and n<=m; n++)
|
||||||
|
if (position == n)
|
||||||
|
print_line(index+n, n, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
h_offset = new_hoffset;
|
||||||
|
}
|
||||||
|
|
||||||
for(n=0; n<=maximum_position and n<=m; n++)
|
for(n=0; n<=maximum_position and n<=m; n++)
|
||||||
print_line(index+n, n, (position == n));
|
print_line(index+n, n, (position == n));
|
||||||
|
|
||||||
@ -486,6 +500,9 @@ int gwinpick::run_picker() {
|
|||||||
|
|
||||||
keyok = default_handle_key();
|
keyok = default_handle_key();
|
||||||
|
|
||||||
|
if (replylinkfloat && (h_offset != new_hoffset))
|
||||||
|
display_page();
|
||||||
|
|
||||||
} while(keyok);
|
} while(keyok);
|
||||||
|
|
||||||
#ifdef GOLD_MOUSE
|
#ifdef GOLD_MOUSE
|
||||||
|
@ -56,6 +56,10 @@ protected:
|
|||||||
|
|
||||||
gkey key;
|
gkey key;
|
||||||
bool keyok;
|
bool keyok;
|
||||||
|
uint new_hoffset;
|
||||||
|
uint h_offset;
|
||||||
|
bool replylinkfloat; // in derived classes set this with CFG->replylinkfloat
|
||||||
|
// before call display_page() and run_picker()
|
||||||
|
|
||||||
void cursor_up();
|
void cursor_up();
|
||||||
void cursor_down();
|
void cursor_down();
|
||||||
|
Reference in New Issue
Block a user