Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
cs24-19fa
git_rec_nano
Commits
cdc9a295
Commit
cdc9a295
authored
7 years ago
by
Benno Schulenberg
Browse files
Options
Download
Email Patches
Plain Diff
tweaks: move two functions to their proper place, orderingwise
parent
ddc1de19
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/nano.c
+54
-54
src/nano.c
src/prompt.c
+24
-26
src/prompt.c
src/proto.h
+0
-6
src/proto.h
with
78 additions
and
86 deletions
+78
-86
src/nano.c
View file @
cdc9a295
...
...
@@ -1560,6 +1560,60 @@ void unbound_key(int code)
statusline
(
ALERT
,
_
(
"Unbound key: %c"
),
code
);
}
#ifdef ENABLE_MOUSE
/* Handle a mouse click on the edit window or the shortcut list. */
int
do_mouse
(
void
)
{
int
mouse_col
,
mouse_row
;
int
retval
=
get_mouseinput
(
&
mouse_col
,
&
mouse_row
,
TRUE
);
/* If the click is wrong or already handled, we're done. */
if
(
retval
!=
0
)
return
retval
;
/* If the click was in the edit window, put the cursor in that spot. */
if
(
wmouse_trafo
(
edit
,
&
mouse_row
,
&
mouse_col
,
FALSE
))
{
filestruct
*
current_save
=
openfile
->
current
;
ssize_t
row_count
=
mouse_row
-
openfile
->
current_y
;
size_t
leftedge
;
#ifndef NANO_TINY
size_t
current_x_save
=
openfile
->
current_x
;
bool
sameline
=
(
mouse_row
==
openfile
->
current_y
);
/* Whether the click was on the row where the cursor is. */
if
(
ISSET
(
SOFTWRAP
))
leftedge
=
leftedge_for
(
xplustabs
(),
openfile
->
current
);
else
#endif
leftedge
=
get_page_start
(
xplustabs
());
/* Move current up or down to the row corresponding to mouse_row. */
if
(
row_count
<
0
)
go_back_chunks
(
-
row_count
,
&
openfile
->
current
,
&
leftedge
);
else
go_forward_chunks
(
row_count
,
&
openfile
->
current
,
&
leftedge
);
openfile
->
current_x
=
actual_x
(
openfile
->
current
->
data
,
actual_last_column
(
leftedge
,
mouse_col
));
#ifndef NANO_TINY
/* Clicking where the cursor is toggles the mark, as does clicking
* beyond the line length with the cursor at the end of the line. */
if
(
sameline
&&
openfile
->
current_x
==
current_x_save
)
do_mark
();
else
#endif
/* The cursor moved; clean the cutbuffer on the next cut. */
cutbuffer_reset
();
edit_redraw
(
current_save
,
CENTERING
);
}
/* No more handling is needed. */
return
2
;
}
#endif
/* ENABLE_MOUSE */
/* Read in a keystroke. Act on the keystroke if it is a shortcut or a toggle;
* otherwise, insert it into the edit buffer. If allow_funcs is FALSE, don't
* do anything with the keystroke -- just return it. */
...
...
@@ -1735,60 +1789,6 @@ int do_input(bool allow_funcs)
return
input
;
}
#ifdef ENABLE_MOUSE
/* Handle a mouse click on the edit window or the shortcut list. */
int
do_mouse
(
void
)
{
int
mouse_col
,
mouse_row
;
int
retval
=
get_mouseinput
(
&
mouse_col
,
&
mouse_row
,
TRUE
);
/* If the click is wrong or already handled, we're done. */
if
(
retval
!=
0
)
return
retval
;
/* If the click was in the edit window, put the cursor in that spot. */
if
(
wmouse_trafo
(
edit
,
&
mouse_row
,
&
mouse_col
,
FALSE
))
{
filestruct
*
current_save
=
openfile
->
current
;
ssize_t
row_count
=
mouse_row
-
openfile
->
current_y
;
size_t
leftedge
;
#ifndef NANO_TINY
size_t
current_x_save
=
openfile
->
current_x
;
bool
sameline
=
(
mouse_row
==
openfile
->
current_y
);
/* Whether the click was on the row where the cursor is. */
if
(
ISSET
(
SOFTWRAP
))
leftedge
=
leftedge_for
(
xplustabs
(),
openfile
->
current
);
else
#endif
leftedge
=
get_page_start
(
xplustabs
());
/* Move current up or down to the row corresponding to mouse_row. */
if
(
row_count
<
0
)
go_back_chunks
(
-
row_count
,
&
openfile
->
current
,
&
leftedge
);
else
go_forward_chunks
(
row_count
,
&
openfile
->
current
,
&
leftedge
);
openfile
->
current_x
=
actual_x
(
openfile
->
current
->
data
,
actual_last_column
(
leftedge
,
mouse_col
));
#ifndef NANO_TINY
/* Clicking where the cursor is toggles the mark, as does clicking
* beyond the line length with the cursor at the end of the line. */
if
(
sameline
&&
openfile
->
current_x
==
current_x_save
)
do_mark
();
else
#endif
/* The cursor moved; clean the cutbuffer on the next cut. */
cutbuffer_reset
();
edit_redraw
(
current_save
,
CENTERING
);
}
/* No more handling is needed. */
return
2
;
}
#endif
/* ENABLE_MOUSE */
/* The user typed output_len multibyte characters. Add them to the edit
* buffer, filtering out all ASCII control characters if allow_cntrls is
* TRUE. */
...
...
This diff is collapsed.
Click to expand it.
src/prompt.c
View file @
cdc9a295
...
...
@@ -28,6 +28,30 @@ static char *prompt = NULL;
static
size_t
statusbar_x
=
HIGHEST_POSITIVE
;
/* The cursor position in answer. */
#ifdef ENABLE_MOUSE
/* Handle a mouse click on the statusbar prompt or the shortcut list. */
int
do_statusbar_mouse
(
void
)
{
int
mouse_x
,
mouse_y
;
int
retval
=
get_mouseinput
(
&
mouse_x
,
&
mouse_y
,
TRUE
);
/* We can click on the statusbar window text to move the cursor. */
if
(
retval
==
0
&&
wmouse_trafo
(
bottomwin
,
&
mouse_y
,
&
mouse_x
,
FALSE
))
{
size_t
start_col
=
strlenpt
(
prompt
)
+
2
;
/* Move to where the click occurred. */
if
(
mouse_x
>=
start_col
&&
mouse_y
==
0
)
{
statusbar_x
=
actual_x
(
answer
,
get_statusbar_page_start
(
start_col
,
start_col
+
statusbar_xplustabs
())
+
mouse_x
-
start_col
);
update_the_statusbar
();
}
}
return
retval
;
}
#endif
/* Read in a keystroke, interpret it if it is a shortcut or toggle, and
* return it. Set ran_func to TRUE if we ran a function associated with
* a shortcut key, and set finished to TRUE if we're done after running
...
...
@@ -165,32 +189,6 @@ int do_statusbar_input(bool *ran_func, bool *finished)
return
input
;
}
#ifdef ENABLE_MOUSE
/* Handle a mouse click on the statusbar prompt or the shortcut list. */
int
do_statusbar_mouse
(
void
)
{
int
mouse_x
,
mouse_y
;
int
retval
=
get_mouseinput
(
&
mouse_x
,
&
mouse_y
,
TRUE
);
/* We can click on the statusbar window text to move the cursor. */
if
(
retval
==
0
&&
wmouse_trafo
(
bottomwin
,
&
mouse_y
,
&
mouse_x
,
FALSE
))
{
size_t
start_col
;
start_col
=
strlenpt
(
prompt
)
+
2
;
/* Move to where the click occurred. */
if
(
mouse_x
>=
start_col
&&
mouse_y
==
0
)
{
statusbar_x
=
actual_x
(
answer
,
get_statusbar_page_start
(
start_col
,
start_col
+
statusbar_xplustabs
())
+
mouse_x
-
start_col
);
update_the_statusbar
();
}
}
return
retval
;
}
#endif
/* The user typed input_len multibyte characters. Add them to the answer,
* filtering out ASCII control characters if filtering is TRUE. */
void
do_statusbar_output
(
int
*
the_input
,
size_t
input_len
,
...
...
This diff is collapsed.
Click to expand it.
src/proto.h
View file @
cdc9a295
...
...
@@ -442,15 +442,9 @@ void enable_flow_control(void);
void
terminal_init
(
void
);
void
unbound_key
(
int
code
);
int
do_input
(
bool
allow_funcs
);
#ifdef ENABLE_MOUSE
int
do_mouse
(
void
);
#endif
void
do_output
(
char
*
output
,
size_t
output_len
,
bool
allow_cntrls
);
/* Most functions in prompt.c. */
#ifdef ENABLE_MOUSE
int
do_statusbar_mouse
(
void
);
#endif
void
do_statusbar_output
(
int
*
the_input
,
size_t
input_len
,
bool
filtering
);
void
do_statusbar_home
(
void
);
void
do_statusbar_end
(
void
);
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help