Mercurial > vim
diff src/ui.c @ 17578:696030820746 v8.1.1786
patch 8.1.1786: double click in popup scrollbar starts selection
commit https://github.com/vim/vim/commit/13b11eddcaf5176fb1127c8bc8f4b4f46bd05488
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Aug 1 15:52:45 2019 +0200
patch 8.1.1786: double click in popup scrollbar starts selection
Problem: Double click in popup scrollbar starts selection.
Solution: Ignore the double click.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 01 Aug 2019 16:00:07 +0200 |
parents | 74b6674b99fd |
children | d5e5d0fc3fa8 |
line wrap: on
line diff
--- a/src/ui.c +++ b/src/ui.c @@ -1058,6 +1058,17 @@ clip_compare_pos( clip_start_selection(int col, int row, int repeated_click) { Clipboard_T *cb = &clip_star; +#ifdef FEAT_TEXT_PROP + win_T *wp; + int row_cp = row; + int col_cp = col; + + wp = mouse_find_win(&row_cp, &col_cp, FIND_POPUP); + if (wp != NULL && WIN_IS_POPUP(wp) + && popup_is_in_scrollbar(wp, row_cp, col_cp)) + // click or double click in scrollbar does not start a selection + return; +#endif if (cb->state == SELECT_DONE) clip_clear_selection(cb); @@ -1072,30 +1083,23 @@ clip_start_selection(int col, int row, i cb->origin_row = (short_u)cb->start.lnum; cb->state = SELECT_IN_PROGRESS; #ifdef FEAT_TEXT_PROP + if (wp != NULL && WIN_IS_POPUP(wp)) { - win_T *wp; - int row_cp = row; - int col_cp = col; - - wp = mouse_find_win(&row_cp, &col_cp, FIND_POPUP); - if (wp != NULL && WIN_IS_POPUP(wp)) - { - // Click in a popup window restricts selection to that window, - // excluding the border. - cb->min_col = wp->w_wincol + wp->w_popup_border[3]; - cb->max_col = wp->w_wincol + popup_width(wp) - 1 - - wp->w_popup_border[1]; - cb->min_row = wp->w_winrow + wp->w_popup_border[0]; - cb->max_row = wp->w_winrow + popup_height(wp) - 1 - - wp->w_popup_border[2]; - } - else - { - cb->min_col = 0; - cb->max_col = screen_Columns; - cb->min_row = 0; - cb->max_row = screen_Rows; - } + // Click in a popup window restricts selection to that window, + // excluding the border. + cb->min_col = wp->w_wincol + wp->w_popup_border[3]; + cb->max_col = wp->w_wincol + popup_width(wp) - 1 + - wp->w_popup_border[1]; + cb->min_row = wp->w_winrow + wp->w_popup_border[0]; + cb->max_row = wp->w_winrow + popup_height(wp) - 1 + - wp->w_popup_border[2]; + } + else + { + cb->min_col = 0; + cb->max_col = screen_Columns; + cb->min_row = 0; + cb->max_row = screen_Rows; } #endif