Skip to content

Commit 5248574

Browse files
committed
possibility to select columns by shift F3 (row cursor should be hidden)
1 parent 50411ec commit 5248574

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/pspg.c

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)