@@ -160,6 +160,7 @@ typedef enum
160
160
MARK_MODE_NONE ,
161
161
MARK_MODE_ROWS , /* activated by F3 */
162
162
MARK_MODE_BLOCK , /* activated by F15 ~ Shift F3 */
163
+ MARK_MODE_COLUMNS , /* activated by F15 ~ Shift F3, when row cursor is hidden */
163
164
MARK_MODE_CURSOR , /* activated by SHIFT + CURSOR */
164
165
MARK_MODE_MOUSE , /* activated by CTRL + MOUSE */
165
166
MARK_MODE_MOUSE_COLUMNS ,/* activated by CTRL + MOUSE on column headers */
@@ -1027,7 +1028,8 @@ redraw_screen(void)
1027
1028
if (mark_mode == MARK_MODE_MOUSE_BLOCK ||
1028
1029
mark_mode == MARK_MODE_MOUSE_COLUMNS )
1029
1030
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 )
1031
1033
ref_col = vertical_cursor_column ;
1032
1034
else
1033
1035
ref_col = -1 ;
@@ -1211,7 +1213,8 @@ redraw_screen(void)
1211
1213
!opts -> no_mouse &&
1212
1214
!(mark_mode == MARK_MODE_MOUSE ||
1213
1215
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 ))
1215
1218
{
1216
1219
long td = time_diff (current_sec , current_ms ,
1217
1220
last_doupdate_sec , last_doupdate_ms );
@@ -4443,7 +4446,8 @@ main(int argc, char *argv[])
4443
4446
4444
4447
case cmd_Mark :
4445
4448
if (mark_mode != MARK_MODE_ROWS &&
4446
- mark_mode != MARK_MODE_BLOCK )
4449
+ mark_mode != MARK_MODE_BLOCK &&
4450
+ mark_mode != MARK_MODE_COLUMNS )
4447
4451
{
4448
4452
throw_selection (& scrdesc , & desc , & mark_mode );
4449
4453
@@ -4460,13 +4464,21 @@ main(int argc, char *argv[])
4460
4464
vertical_cursor_column ))
4461
4465
break ;
4462
4466
4463
- if (mark_mode != MARK_MODE_BLOCK )
4467
+ if (mark_mode != MARK_MODE_BLOCK || mark_mode != MARK_MODE_COLUMNS )
4464
4468
{
4465
4469
throw_selection (& scrdesc , & desc , & mark_mode );
4466
4470
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
+ }
4470
4482
}
4471
4483
else
4472
4484
mark_mode = MARK_MODE_NONE ;
@@ -4553,6 +4565,7 @@ main(int argc, char *argv[])
4553
4565
4554
4566
case cmd_ShowCursor :
4555
4567
opts .no_cursor = !opts .no_cursor ;
4568
+ mark_mode = MARK_MODE_NONE ;
4556
4569
refresh_scr = true;
4557
4570
break ;
4558
4571
@@ -4627,6 +4640,7 @@ main(int argc, char *argv[])
4627
4640
}
4628
4641
}
4629
4642
4643
+ mark_mode = MARK_MODE_NONE ;
4630
4644
refresh_scr = true;
4631
4645
}
4632
4646
break ;
0 commit comments