@@ -160,6 +160,7 @@ typedef enum
160160 MARK_MODE_NONE ,
161161 MARK_MODE_ROWS , /* activated by F3 */
162162 MARK_MODE_BLOCK , /* activated by F15 ~ Shift F3 */
163+ MARK_MODE_COLUMNS , /* activated by F15 ~ Shift F3, when row cursor is hidden */
163164 MARK_MODE_CURSOR , /* activated by SHIFT + CURSOR */
164165 MARK_MODE_MOUSE , /* activated by CTRL + MOUSE */
165166 MARK_MODE_MOUSE_COLUMNS ,/* activated by CTRL + MOUSE on column headers */
@@ -1027,7 +1028,8 @@ redraw_screen(void)
10271028 if (mark_mode == MARK_MODE_MOUSE_BLOCK ||
10281029 mark_mode == MARK_MODE_MOUSE_COLUMNS )
10291030 ref_col = mouse_col ;
1030- else if (mark_mode == MARK_MODE_BLOCK )
1031+ else if (mark_mode == MARK_MODE_BLOCK ||
1032+ mark_mode == MARK_MODE_COLUMNS )
10311033 ref_col = vertical_cursor_column ;
10321034 else
10331035 ref_col = -1 ;
@@ -1211,7 +1213,8 @@ redraw_screen(void)
12111213 !opts -> no_mouse &&
12121214 !(mark_mode == MARK_MODE_MOUSE ||
12131215 mark_mode == MARK_MODE_MOUSE_BLOCK ||
1214- mark_mode == MARK_MODE_MOUSE_COLUMNS ))
1216+ mark_mode == MARK_MODE_MOUSE_COLUMNS ||
1217+ mark_mode == MARK_MODE_COLUMNS ))
12151218 {
12161219 long td = time_diff (current_sec , current_ms ,
12171220 last_doupdate_sec , last_doupdate_ms );
@@ -4443,7 +4446,8 @@ main(int argc, char *argv[])
44434446
44444447 case cmd_Mark :
44454448 if (mark_mode != MARK_MODE_ROWS &&
4446- mark_mode != MARK_MODE_BLOCK )
4449+ mark_mode != MARK_MODE_BLOCK &&
4450+ mark_mode != MARK_MODE_COLUMNS )
44474451 {
44484452 throw_selection (& scrdesc , & desc , & mark_mode );
44494453
@@ -4460,13 +4464,21 @@ main(int argc, char *argv[])
44604464 vertical_cursor_column ))
44614465 break ;
44624466
4463- if (mark_mode != MARK_MODE_BLOCK )
4467+ if (mark_mode != MARK_MODE_BLOCK || mark_mode != MARK_MODE_COLUMNS )
44644468 {
44654469 throw_selection (& scrdesc , & desc , & mark_mode );
44664470
4467- mark_mode = MARK_MODE_BLOCK ;
4468- mark_mode_start_row = cursor_row ;
4469- mark_mode_start_col = vertical_cursor_column ;
4471+ if (opts .no_cursor )
4472+ {
4473+ mark_mode = MARK_MODE_COLUMNS ;
4474+ mark_mode_start_col = vertical_cursor_column ;
4475+ }
4476+ else
4477+ {
4478+ mark_mode = MARK_MODE_BLOCK ;
4479+ mark_mode_start_row = cursor_row ;
4480+ mark_mode_start_col = vertical_cursor_column ;
4481+ }
44704482 }
44714483 else
44724484 mark_mode = MARK_MODE_NONE ;
@@ -4553,6 +4565,7 @@ main(int argc, char *argv[])
45534565
45544566 case cmd_ShowCursor :
45554567 opts .no_cursor = !opts .no_cursor ;
4568+ mark_mode = MARK_MODE_NONE ;
45564569 refresh_scr = true;
45574570 break ;
45584571
@@ -4627,6 +4640,7 @@ main(int argc, char *argv[])
46274640 }
46284641 }
46294642
4643+ mark_mode = MARK_MODE_NONE ;
46304644 refresh_scr = true;
46314645 }
46324646 break ;
0 commit comments