1. 04 Jul, 2022 5 commits
    • Rob Swindell's avatar
      Merge branch 'slyedit_color_selection_update' into 'master' · daf48cf8
      Rob Swindell authored
      SlyEidt: Added the ability for the user to choose text color/attribute codes.
      
      See merge request !193
      daf48cf8
    • Eric Oulashin's avatar
      7b4a8f4e
    • Rob Swindell's avatar
      Merge branch 'dd_file_area_chooser_list_libraries_fix' into 'master' · 15d53f5e
      Rob Swindell authored
      DD file area chooser fix: Listing libraries without first listing directories...
      
      See merge request !194
      15d53f5e
    • Rob Swindell's avatar
      Use Synchronet's built-in mouse tracking support · 8da60139
      Rob Swindell authored
      Synchronet uses "extended normal" mouse reporting for mouse support
      (e.g. menu/display file clickable "hot spots"). Many of the JS scripts
      that predated Synchronet's own internal mouse support would send their
      own mouse-reporting enablement and disablement ANSI sequences and the
      terminal could become out of sync with the expectations of the script
      (i.e. it would not necessarily disable the mouse modes that had been
      set by SBBS before enabling its own preferred mode).
      
      And some scripts (e.g. Synchronet Minesweeper) use a mixture of Synchronet
      hotspot support and direct mouse click coordinate reporting, so it was a
      mess going between different mouse reporting modes at different times in the
      same script.
      
      This all came to light as a result of the fix for issue #412: using mouse
      button releases rather than presses to trigger a hotspot.
      
      So mouse_getkey() now has as a separate "release" property it sets in the
      return value. Right now its always the opposite of "press", but I can imagine
      some mouse tracking modes where movement might be reported with neither a
      button press nor release event.
      
      Anyway, Nelgin, give this a try and see if it resolves the issues you were
      reporting in IRC with avatar chooser mouse support.
      8da60139
    • Rob Swindell's avatar
      Setting console.mouse_mode to true enables default mouse=enabled mode · bca6eb52
      Rob Swindell authored
      A single source of truth is now used for SBBS's mouse mode (MOUSE_MODE_ON). A JS script doesn't need to know what SBBS's preferred/default mouse-enabled mode flags are, just set to this property to "true". Setting to "false" is the same as setting to MOUSE_MODE_OFF (0).
      bca6eb52
  2. 03 Jul, 2022 5 commits
    • Eric Oulashin's avatar
      DD file area chooser fix: Listing libraries without first listing directories... · 58227757
      Eric Oulashin authored
      DD file area chooser fix: Listing libraries without first listing directories within the user's current library (with directory collapsing) works again
      58227757
    • Rob Swindell's avatar
      Add a carriage-return to the mouse hotspot value when needed · 0021b378
      Rob Swindell authored
      For program listings, if the program number is fewer digits than the total
      program list count (number of digits), then a carriage return is required
      to launch that program. Automate this for the mouse hotspot value, so clicking
      Program #1 in a list of 10+ will just run that program and not require the
      user to hit the Enter key.
      0021b378
    • Rob Swindell's avatar
      Paranoia around use of smb.subnum as an index into scfg.sub[] · bd725db6
      Rob Swindell authored
      Use the is_valid_subnum() function before using the smb.subnum as an index into (s)cfg.sub[]. Related to the previous committed fix of writemsg(): leaving the global smb.subnum as -1 (INVALID_SUB) after replying to a post via email or netmail, resulting in a crash here.
      bd725db6
    • Rob Swindell's avatar
      Fix smb.subnum corruption in writemsg() · 2db618ae
      Rob Swindell authored
      Fix issue introduced 9 years ago that could cause a crash after replying to a post via email or netmail and then displaying the header of a poll message or a normal message with votes:
      
      Program terminated with signal SIGSEGV, Segmentation fault.
      #0  0x00007f9f9569a317 in sbbs_t::show_msg (this=0x7f9f70c56880,
          smb=0x7f9f70c5e4e0, msg=0x7f9ebadf08b0, p_mode=4, post=0x7f9f18071a24)
          at getmsg.cpp:255
      255                                             ,cfg.sub[smb->subnum]->misc&SUB_                                                                              NAME ? useron.name : useron.alias, NET_NONE, NULL);
      [Current thread is 1 (Thread 0x7f9ebadf3700 (LWP 23279))]
      (gdb) print smb->subnum
      $1 = 4294967295
      (gdb) bt
      #0  0x00007f9f9569a317 in sbbs_t::show_msg (this=0x7f9f70c56880,
          smb=0x7f9f70c5e4e0, msg=0x7f9ebadf08b0, p_mode=4, post=0x7f9f18071a24)
          at getmsg.cpp:255
      #1  0x00007f9f957b2aee in sbbs_t::scanposts (this=0x7f9f70c56880, subnum=9,
          mode=2, find=0x7f9ebadf1270 "") at readmsgs.cpp:670
      #2  0x00007f9f957bb75a in sbbs_t::scanallsubs (this=0x7f9f70c56880, mode=2)
          at scansubs.cpp:219
      #3  0x00007f9f9568c948 in sbbs_t::exec_msg (this=0x7f9f70c56880,
          csi=0x7f9f70c64768) at execmsg.cpp:315
      #4  0x00007f9f95683129 in sbbs_t::exec_function (this=0x7f9f70c56880,
          csi=0x7f9f70c64768) at execfunc.cpp:422
      #5  0x00007f9f95679450 in sbbs_t::exec (this=0x7f9f70c56880,
          csi=0x7f9f70c64768) at exec.cpp:1199
      #6  0x00007f9f9577d742 in node_thread (arg=0x7f9f70c56880) at main.cpp:4364
      
      writemsg() was changing the global smb.subnum and when writing an email or netmail, that subnum value is -1 (since it's not a sub-board) and then later show_msg() is using the smb.subnum as a index into scfg.sub[] when determining if the current user already voted on the message being displayed and then: bang, crash, fall down, go boom.
      
      Simply saving and restoring the smb.subnum when executing an external editor is all that was needed here. And this is the first use of the C++ "auto" keyword in Synchronet!
      2db618ae
    • Rob Swindell's avatar
      Use mouse button release rather than press to activate a hotspot · 1a3e8507
      Rob Swindell authored
      As described in issue #412, when using extended mouse coordinate (SGR) mode, the mouse button release sequence would be received by the BBS after the hotspot-activated menu option was executed and then that button release sequence possibly passed through to the a child script or program that didn't know how to handle or ignore it.
      
      To resolve this, the BBS now ignores ("eats") the mouse button *press* sequence and only acts upon the mouse button *release* sequence. This is more aligned with how button-clicks work in mouse-control/GUI applications anyway.
      1a3e8507
  3. 02 Jul, 2022 1 commit
  4. 28 Jun, 2022 2 commits
  5. 26 Jun, 2022 6 commits
  6. 25 Jun, 2022 7 commits
  7. 24 Jun, 2022 3 commits
  8. 21 Jun, 2022 4 commits
  9. 20 Jun, 2022 1 commit
  10. 17 Jun, 2022 6 commits