68445Re: [PATCH] Support mouse wheel scrolling of inactive windows in the terminal
- Feb 25, 2013On Mon, Feb 25, 2013 at 3:26 AM, Bram Moolenaar <Bram@...> wrote:
>In this bit of code:
> Brodie Rao wrote:
>> On Sun, Feb 24, 2013 at 12:40 PM, Bram Moolenaar <Bram@...> wrote:
>> > Brodie Rao wrote:
>> >> Support mouse wheel scrolling of inactive windows in the terminal
>> > Does this actually work for every type of terminal that supports the
>> > mouse wheel? Or only for some of them?
>> Reading check_termcode() in src/term.c, I find the following:
>> - For FEAT_MOUSE_GPM, FEAT_SYSMOUSE, FEAT_MOUSE_XTERM, FEAT_MOUSE_SGR
>> and FEAT_MOUSE_URXVT, all mouse events come with the mouse's position.
>> - For FEAT_MOUSE_DEC, FEAT_MOUSE_JSB, FEAT_MOUSE_NET, and
>> FEAT_MOUSE_PTERM, the mouse wheel is not supported, so mouse wheel
>> events will never be sent.
>> - According to src/os_msdos.c, DOS_MOUSE also doesn't support the mouse wheel.
>> I think that covers everything.
> OK. I do think users will be surprised that the behavior changes.
> But it becomes more consistent with the GUI.
>> It's possible that there are some terminal emulators that don't set
>> the mouse position properly for mouse wheel events, but considering
>> all the protocols consider it a normal button press like any other
>> button, that seems unlikely.
>> I did notice one issue in my patch that I'm not sure about: Is the
>> gui.in_use check necessary? If it's false, does Vim fall back to the
>> terminal, and if so, will it handle mouse events? If that's the case,
>> that check probably shouldn't be there.
> The Unix version of Vim has one binary that can run both in a terminal
> and as a GUI. You can switch from terminal to GUI with the ":gui"
> command. Thus we need a runtime check if it matters whether the GUI is
> diff --git a/src/edit.c b/src/edit.c(and in the same check in src/normal.c)
> --- a/src/edit.c
> +++ b/src/edit.c
> @@ -9139,9 +9139,13 @@ ins_mousescroll(dir)
> tpos = curwin->w_cursor;
> -# if defined(FEAT_GUI) && defined(FEAT_WINDOWS)
> - /* Currently the mouse coordinates are only known in the GUI. */
> - if (gui.in_use && mouse_row >= 0 && mouse_col >= 0)
> +# ifdef FEAT_WINDOWS
> + if (
> +# ifdef FEAT_GUI
> + gui.in_use &&
> +# endif
> + mouse_row >= 0 && mouse_col >= 0
> + )
> int row, col;
I don't think the "gui.in_use" check should be here. mouse_row and
mouse_col will be set properly even if gui.in_use is false, and
mouse_find_win() and curwin should both work fine. If we did leave
that check, you wouldn't be able to scroll inactive windows in the
terminal with a GUI build that's running in the terminal.
I'll send an updated patch that drops those two checks.
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
You received this message because you are subscribed to the Google Groups "vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
For more options, visit https://groups.google.com/groups/opt_out.
- << Previous post in topic Next post in topic >>