Opened 11 years ago

Closed 10 years ago

#2854 closed enhancement (fixed)

[Terminal] midnight commander can't be controlled by a mouse

Reported by: diver Owned by: axeld
Priority: normal Milestone: R1
Component: Applications/Terminal Version: R1/pre-alpha1
Keywords: Cc:
Blocked By: Blocking:
Has a Patch: no Platform: All

Description

Both konsole and gnome-terminal can control mc by a mouse, but our terminal don't.

Attachments (2)

terminal_r30246.diff (13.9 KB) - added by oco 10 years ago.
Patch that add mouse support (xterm mode 1003 for now)
terminal_r30297.diff (7.9 KB) - added by oco 10 years ago.
Patch that implement xterm mouse mode 9, 1000 and 1002

Download all attachments as: .zip

Change History (12)

comment:1 Changed 11 years ago by bonefish

Type: bugenhancement

That's just a missing feature. :-)

Changed 10 years ago by oco

Attachment: terminal_r30246.diff added

Patch that add mouse support (xterm mode 1003 for now)

comment:2 Changed 10 years ago by oco

Here is a patch that should help with this missing feature. At least, it is enough to have mouse support in the freepascal text mode IDE.

comment:3 Changed 10 years ago by diver

Great! Did you tried midnight commander? Just ssh to some unix box with mc installed.

comment:4 Changed 10 years ago by oco

No, i don't have this here. According to http://mc.redhat-club/svn/trunk/FAQ, you may need to invoke "mc -x"

comment:6 Changed 10 years ago by axeld

Owner: changed from jackburton to axeld
Status: newassigned

comment:7 Changed 10 years ago by axeld

Thanks oco, applied in hrev30268! There were a number of things to note about your, though:

  • The array size of the "destBuffer" was one byte too small.
  • Coding style requires upper caps to delimit variables, not underscores; xterm_x, xterm_buttons become xtermX, and xtermButtons.
  • Since we're using C++, it's preferred to declare variables when you need them, not at the beginning of a function.
  • If you only add a few lines, and need to indent the whole long rest of a function, it's often clearer if you return from your special case, and leave the rest of the code unchanged.
  • When you add a TODO comment, it's usually useful to write the comment directly next to the "TODO" so that when you grep for TODO, you will see at least part of the comment (to get an idea).

I'll keep this bug open until we have the confirmation it'll work with midnight commander.

comment:8 Changed 10 years ago by oco

After looking at http://www.midnight-commander.org/browser/src/mouse.c, midnight commander user xterm mode 1000. A new patch will be needed.

Changed 10 years ago by oco

Attachment: terminal_r30297.diff added

Patch that implement xterm mouse mode 9, 1000 and 1002

comment:9 Changed 10 years ago by oco

Here is a new patch that implement 3 others xterm mouse mode : 9, 1000, 1002. Only mode 1000 was tested (the freepascal IDE could support it). The remaining mode 1001 (mouse highlight tracking) is not implemented. I have no plan to implement it as i don't fully understand how it should work.

comment:10 Changed 10 years ago by axeld

Resolution: fixed
Status: assignedclosed

Thanks, I've applied it in hrev30374.

I have some remarks again, though:

  • please don't use names like "Btn" - always prefer more descriptive names like "Button" in this case (I've already changed that in the patch). OTOH redundant long naming like SetReportX10Mouse(bool reportX10Mouse) should be avoided.
  • When having so many boolean flags, maybe a "uint32 fReportFlags" would be more appropriate; I haven't changed this, though.
  • please honour the 80 character per line limit.
Note: See TracTickets for help on using tickets.