1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Delete working on new placement of input win

This commit is contained in:
James Booth 2012-07-08 02:43:28 +01:00
parent 5fb985152f
commit 15a87f0abb

View File

@ -30,10 +30,13 @@
* The example below shows the values of size, input, a call to wgetyx to * The example below shows the values of size, input, a call to wgetyx to
* find the current cursor location, and the index of the input string. * find the current cursor location, and the index of the input string.
* *
* size : " 7 " * view : |mple|
* input : " example " * input : "example te"
* inp_x : "012345678" * index : "0123456789"
* index : " 0123456 " (inp_x - 1) * inp_x : "0123456789"
* size : 10
* pad_start : 3
* cols : 4
*/ */
#include <string.h> #include <string.h>
@ -63,7 +66,7 @@ void create_input_window(void)
inp_win = newpad(1, MAX_INP_SIZE); inp_win = newpad(1, MAX_INP_SIZE);
wbkgd(inp_win, COLOR_PAIR(1)); wbkgd(inp_win, COLOR_PAIR(1));
keypad(inp_win, TRUE); keypad(inp_win, TRUE);
wmove(inp_win, 0, 1); wmove(inp_win, 0, 0);
prefresh(inp_win, 0, pad_start, rows-1, 0, rows-1, cols-1); prefresh(inp_win, 0, pad_start, rows-1, 0, rows-1, cols-1);
} }
@ -79,7 +82,7 @@ void inp_clear(void)
int rows, cols; int rows, cols;
getmaxyx(stdscr, rows, cols); getmaxyx(stdscr, rows, cols);
wclear(inp_win); wclear(inp_win);
wmove(inp_win, 0, 1); wmove(inp_win, 0, 0);
pad_start = 0; pad_start = 0;
prefresh(inp_win, 0, pad_start, rows-1, 0, rows-1, cols-1); prefresh(inp_win, 0, pad_start, rows-1, 0, rows-1, cols-1);
} }
@ -110,13 +113,13 @@ void inp_get_char(int *ch, char *input, int *size)
getyx(inp_win, inp_y, inp_x); getyx(inp_win, inp_y, inp_x);
// handle insert if not at end of input // handle insert if not at end of input
if (inp_x <= *size) { if (inp_x < *size) {
winsch(inp_win, *ch); winsch(inp_win, *ch);
wmove(inp_win, inp_y, inp_x+1); wmove(inp_win, inp_y, inp_x+1);
for (i = *size; i > inp_x -1; i--) for (i = *size; i > inp_x; i--)
input[i] = input[i-1]; input[i] = input[i-1];
input[inp_x -1] = *ch; input[inp_x] = *ch;
(*size)++; (*size)++;
@ -148,7 +151,7 @@ void inp_get_password(char *passwd)
wclear(inp_win); wclear(inp_win);
noecho(); noecho();
mvwgetnstr(inp_win, 0, 1, passwd, 20); mvwgetnstr(inp_win, 0, 1, passwd, 20);
wmove(inp_win, 0, 1); wmove(inp_win, 0, 0);
echo(); echo();
status_bar_clear(); status_bar_clear();
} }
@ -187,7 +190,7 @@ static int _handle_edit(const int ch, char *input, int *size)
if (*size > 0) { if (*size > 0) {
// if at end, delete last char // if at end, delete last char
if (inp_x > *size) { if (inp_x >= *size) {
wmove(inp_win, inp_y, inp_x-1); wmove(inp_win, inp_y, inp_x-1);
wdelch(inp_win); wdelch(inp_win);
(*size)--; (*size)--;
@ -254,7 +257,7 @@ static int _handle_edit(const int ch, char *input, int *size)
return 1; return 1;
case KEY_HOME: case KEY_HOME:
wmove(inp_win, inp_y, 1); wmove(inp_win, inp_y, 0);
pad_start = 0; pad_start = 0;
prefresh(inp_win, 0, pad_start, rows-1, 0, rows-1, cols-1); prefresh(inp_win, 0, pad_start, rows-1, 0, rows-1, cols-1);
return 1; return 1;