diff options
Diffstat (limited to 'src/windows.c')
-rw-r--r-- | src/windows.c | 296 |
1 files changed, 184 insertions, 112 deletions
diff --git a/src/windows.c b/src/windows.c index eb9b4580..c56ceb70 100644 --- a/src/windows.c +++ b/src/windows.c @@ -88,11 +88,11 @@ static void _set_current(int index); static void _create_windows(void); static void _cons_splash_logo(void); static void _cons_show_basic_help(void); -static void _cons_show_contact(PContact contact); +static void _win_show_contact(ProfWin *window, PContact contact); static int _find_prof_win_index(const char * const contact); static int _new_prof_win(const char * const contact, win_type_t type); static void _current_window_refresh(void); -static void _win_show_time(WINDOW *win); +static void _win_show_time(WINDOW *win, char showchar); static void _win_show_user(WINDOW *win, const char * const user, const int colour); static void _win_show_message(WINDOW *win, const char * const message); static void _win_show_error_msg(WINDOW *win, const char * const message); @@ -125,8 +125,10 @@ ui_init(void) initscr(); raw(); keypad(stdscr, TRUE); - mousemask(ALL_MOUSE_EVENTS, NULL); - mouseinterval(5); + if (prefs_get_mouse()) { + mousemask(ALL_MOUSE_EVENTS, NULL); + mouseinterval(5); + } ui_load_colours(); refresh(); create_title_bar(); @@ -345,7 +347,7 @@ ui_show_incoming_msg(const char * const from, const char * const message, // no spare windows left if (win_index == 0) { if (tv_stamp == NULL) { - _win_show_time(console->win); + _win_show_time(console->win, '-'); } else { GDateTime *time = g_date_time_new_from_timeval_utc(tv_stamp); gchar *date_fmt = g_date_time_format(time, "%H:%M:%S"); @@ -382,7 +384,7 @@ ui_show_incoming_msg(const char * const from, const char * const message, // currently viewing chat window with sender if (win_index == current_index) { if (tv_stamp == NULL) { - _win_show_time(win); + _win_show_time(win, '-'); } else { GDateTime *time = g_date_time_new_from_timeval_utc(tv_stamp); gchar *date_fmt = g_date_time_format(time, "%H:%M:%S"); @@ -421,7 +423,7 @@ ui_show_incoming_msg(const char * const from, const char * const message, } if (tv_stamp == NULL) { - _win_show_time(win); + _win_show_time(win, '-'); } else { GDateTime *time = g_date_time_new_from_timeval_utc(tv_stamp); gchar *date_fmt = g_date_time_format(time, "%H:%M:%S"); @@ -495,7 +497,7 @@ ui_disconnected(void) for (i = 1; i < NUM_WINS; i++) { if (windows[i] != NULL) { WINDOW *win = windows[i]->win; - _win_show_time(win); + _win_show_time(win, '-'); wattron(win, COLOUR_ERROR); wprintw(win, "%s\n", "Lost connection."); wattroff(win, COLOUR_ERROR); @@ -593,7 +595,7 @@ win_current_show(const char * const msg, ...) va_start(arg, msg); GString *fmt_msg = g_string_new(NULL); g_string_vprintf(fmt_msg, msg, arg); - _win_show_time(current->win); + _win_show_time(current->win, '-'); wprintw(current->win, "%s\n", fmt_msg->str); g_string_free(fmt_msg, TRUE); va_end(arg); @@ -605,7 +607,7 @@ void win_current_bad_show(const char * const msg) { WINDOW *win = current->win; - _win_show_time(win); + _win_show_time(win, '-'); wattron(win, COLOUR_ERROR); wprintw(win, "%s\n", msg); wattroff(win, COLOUR_ERROR); @@ -645,7 +647,7 @@ win_show_error_msg(const char * const from, const char *err_msg) // chat window exists if (win_index < NUM_WINS) { win = windows[win_index]->win; - _win_show_time(win); + _win_show_time(win, '-'); _win_show_error_msg(win, err_msg); if (win_index == current_index) { dirty = TRUE; @@ -675,7 +677,7 @@ win_show_system_msg(const char * const from, const char *message) } win = windows[win_index]->win; - _win_show_time(win); + _win_show_time(win, '-'); wprintw(win, "*%s %s\n", bare_jid, message); // this is the current window @@ -697,7 +699,7 @@ win_show_gone(const char * const from) // chat window exists if (win_index < NUM_WINS) { win = windows[win_index]->win; - _win_show_time(win); + _win_show_time(win, '-'); wattron(win, COLOUR_GONE); wprintw(win, "*%s ", from); wprintw(win, "has left the conversation."); @@ -719,7 +721,16 @@ win_new_chat_win(const char * const to) // create new window if (win_index == NUM_WINS) { - win_index = _new_prof_win(to, WIN_CHAT); + Jid *jid = jid_create(to); + + if (muc_room_is_active(jid)) { + win_index = _new_prof_win(to, WIN_PRIVATE); + } else { + win_index = _new_prof_win(to, WIN_CHAT); + } + + jid_destroy(jid); + win = windows[win_index]->win; if (prefs_get_chlog() && prefs_get_history()) { @@ -753,13 +764,16 @@ win_show_outgoing_msg(const char * const from, const char * const to, // create new window if (win_index == NUM_WINS) { + Jid *jid = jid_create(to); - if (muc_room_is_active(to)) { + if (muc_room_is_active(jid)) { win_index = _new_prof_win(to, WIN_PRIVATE); } else { win_index = _new_prof_win(to, WIN_CHAT); } + jid_destroy(jid); + win = windows[win_index]->win; if (prefs_get_chlog() && prefs_get_history()) { @@ -779,7 +793,7 @@ win_show_outgoing_msg(const char * const from, const char * const to, win = windows[win_index]->win; } - _win_show_time(win); + _win_show_time(win, '-'); if (strncmp(message, "/me ", 4) == 0) { wattron(win, COLOUR_ME); wprintw(win, "*%s ", from); @@ -794,33 +808,40 @@ win_show_outgoing_msg(const char * const from, const char * const to, } void -win_join_chat(const char * const room, const char * const nick) +win_join_chat(Jid *jid) { - int win_index = _find_prof_win_index(room); + int win_index = _find_prof_win_index(jid->barejid); // create new window if (win_index == NUM_WINS) { - win_index = _new_prof_win(room, WIN_MUC); + win_index = _new_prof_win(jid->barejid, WIN_MUC); } ui_switch_win(win_index); } void -win_show_room_roster(const char * const room) +win_show_room_roster(const char * const room, GList *roster, const char * const presence) { int win_index = _find_prof_win_index(room); WINDOW *win = windows[win_index]->win; - GList *roster = muc_get_roster(room); - + _win_show_time(win, '!'); if ((roster == NULL) || (g_list_length(roster) == 0)) { wattron(win, COLOUR_ROOMINFO); - wprintw(win, "You are alone!\n"); + if (presence == NULL) { + wprintw(win, "Room is empty.\n"); + } else { + wprintw(win, "No participants are %s.\n", presence); + } wattroff(win, COLOUR_ROOMINFO); } else { wattron(win, COLOUR_ROOMINFO); - wprintw(win, "Room occupants:\n"); + if (presence == NULL) { + wprintw(win, "Participants: "); + } else { + wprintw(win, "Participants (%s): ", presence); + } wattroff(win, COLOUR_ROOMINFO); wattron(win, COLOUR_ONLINE); @@ -880,9 +901,9 @@ win_show_room_member_offline(const char * const room, const char * const nick) int win_index = _find_prof_win_index(room); WINDOW *win = windows[win_index]->win; - _win_show_time(win); + _win_show_time(win, '!'); wattron(win, COLOUR_OFFLINE); - wprintw(win, "-- %s has left the room.\n", nick); + wprintw(win, "<- %s has left the room.\n", nick); wattroff(win, COLOUR_OFFLINE); if (win_index == current_index) @@ -896,9 +917,9 @@ win_show_room_member_online(const char * const room, const char * const nick, int win_index = _find_prof_win_index(room); WINDOW *win = windows[win_index]->win; - _win_show_time(win); + _win_show_time(win, '!'); wattron(win, COLOUR_ONLINE); - wprintw(win, "++ %s has joined the room.\n", nick); + wprintw(win, "-> %s has joined the room.\n", nick); wattroff(win, COLOUR_ONLINE); if (win_index == current_index) @@ -926,7 +947,7 @@ win_show_room_member_nick_change(const char * const room, int win_index = _find_prof_win_index(room); WINDOW *win = windows[win_index]->win; - _win_show_time(win); + _win_show_time(win, '!'); wattron(win, COLOUR_THEM); wprintw(win, "** %s is now known as %s\n", old_nick, nick); wattroff(win, COLOUR_THEM); @@ -941,7 +962,7 @@ win_show_room_nick_change(const char * const room, const char * const nick) int win_index = _find_prof_win_index(room); WINDOW *win = windows[win_index]->win; - _win_show_time(win); + _win_show_time(win, '!'); wattron(win, COLOUR_ME); wprintw(win, "** You are now known as %s\n", nick); wattroff(win, COLOUR_ME); @@ -983,7 +1004,7 @@ win_show_room_message(const char * const room_jid, const char * const nick, int win_index = _find_prof_win_index(room_jid); WINDOW *win = windows[win_index]->win; - _win_show_time(win); + _win_show_time(win, '-'); if (strcmp(nick, muc_get_room_nick(room_jid)) != 0) { if (strncmp(message, "/me ", 4) == 0) { wattron(win, COLOUR_THEM); @@ -1047,6 +1068,7 @@ win_show_room_subject(const char * const room_jid, const char * const subject) int win_index = _find_prof_win_index(room_jid); WINDOW *win = windows[win_index]->win; + _win_show_time(win, '!'); wattron(win, COLOUR_ROOMINFO); wprintw(win, "Room subject: "); wattroff(win, COLOUR_ROOMINFO); @@ -1069,6 +1091,7 @@ win_show_room_broadcast(const char * const room_jid, const char * const message) int win_index = _find_prof_win_index(room_jid); WINDOW *win = windows[win_index]->win; + _win_show_time(win, '!'); wattron(win, COLOUR_ROOMINFO); wprintw(win, "Room message: "); wattroff(win, COLOUR_ROOMINFO); @@ -1093,7 +1116,7 @@ cons_show_wins(void) cons_show(""); cons_show("Active windows:"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "1: Console\n"); for (i = 1; i < NUM_WINS; i++) { @@ -1106,7 +1129,7 @@ cons_show_wins(void) for (i = 1; i < NUM_WINS; i++) { if (windows[i] != NULL) { ProfWin *window = windows[i]; - _win_show_time(console->win); + _win_show_time(console->win, '-'); switch (window->type) { @@ -1163,9 +1186,50 @@ cons_show_status(const char * const contact) PContact pcontact = contact_list_get_contact(contact); if (pcontact != NULL) { - _cons_show_contact(pcontact); + _win_show_contact(console, pcontact); + } else { + cons_show("No such contact \"%s\" in roster.", contact); + } +} + +void +win_show_status(void) +{ + char *recipient = win_current_get_recipient(); + PContact pcontact = contact_list_get_contact(recipient); + + if (pcontact != NULL) { + _win_show_contact(current, pcontact); } else { - cons_show("No such contact %s in roster.", contact); + win_current_show("Error getting contact info."); + } +} + +void +win_private_show_status(void) +{ + Jid *jid = jid_create(win_current_get_recipient()); + + PContact pcontact = muc_get_participant(jid->barejid, jid->resourcepart); + + if (pcontact != NULL) { + _win_show_contact(current, pcontact); + } else { + win_current_show("Error getting contact info."); + } + + jid_destroy(jid); +} + +void +win_room_show_status(const char * const contact) +{ + PContact pcontact = muc_get_participant(win_current_get_recipient(), contact); + + if (pcontact != NULL) { + _win_show_contact(current, pcontact); + } else { + win_current_show("No such participant \"%s\" in room.", contact); } } @@ -1228,6 +1292,11 @@ cons_show_ui_prefs(void) else cons_show("Version checking (/vercheck) : OFF"); + if (prefs_get_mouse()) + cons_show("Mouse handling (/mouse) : ON"); + else + cons_show("Mouse handling (/mouse) : OFF"); + if (prefs_get_statuses()) cons_show("Status (/statuses) : ON"); else @@ -1524,7 +1593,7 @@ cons_show_contacts(GSList *list) while(curr) { PContact contact = curr->data; if (strcmp(p_contact_subscription(contact), "none") != 0) { - _cons_show_contact(contact); + _win_show_contact(console, contact); } curr = g_slist_next(curr); } @@ -1537,7 +1606,7 @@ cons_bad_show(const char * const msg, ...) va_start(arg, msg); GString *fmt_msg = g_string_new(NULL); g_string_vprintf(fmt_msg, msg, arg); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_ERROR); wprintw(console->win, "%s\n", fmt_msg->str); wattroff(console->win, COLOUR_ERROR); @@ -1554,7 +1623,7 @@ cons_bad_show(const char * const msg, ...) void cons_show_time(void) { - _win_show_time(console->win); + _win_show_time(console->win, '-'); } void @@ -1564,7 +1633,7 @@ cons_show(const char * const msg, ...) va_start(arg, msg); GString *fmt_msg = g_string_new(NULL); g_string_vprintf(fmt_msg, msg, arg); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "%s\n", fmt_msg->str); g_string_free(fmt_msg, TRUE); va_end(arg); @@ -1591,7 +1660,7 @@ cons_show_word(const char * const word) void cons_bad_command(const char * const cmd) { - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "Unknown command: %s\n", cmd); if (current_index == 0) { @@ -1610,7 +1679,7 @@ cons_about(void) if (prefs_get_splash()) { _cons_splash_logo(); } else { - _win_show_time(console->win); + _win_show_time(console->win, '-'); if (strcmp(PACKAGE_STATUS, "development") == 0) { wprintw(console->win, "Welcome to Profanity, version %sdev\n", PACKAGE_VERSION); @@ -1619,21 +1688,21 @@ cons_about(void) } } - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "Copyright (C) 2012, 2013 James Booth <%s>.\n", PACKAGE_BUGREPORT); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "\n"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "This is free software; you are free to change and redistribute it.\n"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "There is NO WARRANTY, to the extent permitted by law.\n"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "\n"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "Type '/help' to show complete help.\n"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "\n"); if (prefs_get_vercheck()) { @@ -1659,12 +1728,12 @@ cons_check_version(gboolean not_available_msg) if (relase_valid) { if (_new_release(latest_release)) { - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "A new version of Profanity is available: %s", latest_release); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "Check <http://www.profanity.im> for details.\n"); free(latest_release); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "\n"); } else { if (not_available_msg) { @@ -1815,47 +1884,47 @@ _new_release(char *found_version) static void _cons_splash_logo(void) { - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "Welcome to\n"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_SPLASH); wprintw(console->win, " ___ _ \n"); wattroff(console->win, COLOUR_SPLASH); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_SPLASH); wprintw(console->win, " / __) (_)_ \n"); wattroff(console->win, COLOUR_SPLASH); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_SPLASH); wprintw(console->win, " ____ ____ ___ | |__ ____ ____ _| |_ _ _ \n"); wattroff(console->win, COLOUR_SPLASH); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_SPLASH); wprintw(console->win, "| _ \\ / ___) _ \\| __) _ | _ \\| | _) | | |\n"); wattroff(console->win, COLOUR_SPLASH); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_SPLASH); wprintw(console->win, "| | | | | | |_| | | ( ( | | | | | | |_| |_| |\n"); wattroff(console->win, COLOUR_SPLASH); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_SPLASH); wprintw(console->win, "| ||_/|_| \\___/|_| \\_||_|_| |_|_|\\___)__ |\n"); wattroff(console->win, COLOUR_SPLASH); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_SPLASH); wprintw(console->win, "|_| (____/ \n"); wattroff(console->win, COLOUR_SPLASH); - _win_show_time(console->win); + _win_show_time(console->win, '-'); wprintw(console->win, "\n"); - _win_show_time(console->win); + _win_show_time(console->win, '-'); if (strcmp(PACKAGE_STATUS, "development") == 0) { wprintw(console->win, "Version %sdev\n", PACKAGE_VERSION); } else { @@ -1896,12 +1965,12 @@ _new_prof_win(const char * const contact, win_type_t type) } static void -_win_show_time(WINDOW *win) +_win_show_time(WINDOW *win, char showchar) { GDateTime *time = g_date_time_new_now_local(); gchar *date_fmt = g_date_time_format(time, "%H:%M:%S"); wattron(win, COLOUR_TIME); - wprintw(win, "%s - ", date_fmt); + wprintw(win, "%s %c ", date_fmt, showchar); wattroff(win, COLOUR_TIME); g_date_time_unref(time); g_free(date_fmt); @@ -1974,7 +2043,7 @@ _show_status_string(WINDOW *win, const char * const from, if (!prefs_get_statuses()) return; - _win_show_time(win); + _win_show_time(win, '-'); if (show != NULL) { if (strcmp(show, "away") == 0) { @@ -2052,7 +2121,7 @@ _show_status_string(WINDOW *win, const char * const from, static void _cons_show_typing(const char * const short_from) { - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_TYPING); wprintw(console->win, "!! %s is typing a message...\n", short_from); wattroff(console->win, COLOUR_TYPING); @@ -2061,14 +2130,14 @@ _cons_show_typing(const char * const short_from) static void _cons_show_incoming_message(const char * const short_from, const int win_index) { - _win_show_time(console->win); + _win_show_time(console->win, '-'); wattron(console->win, COLOUR_INCOMING); wprintw(console->win, "<< incoming from %s (%d)\n", short_from, win_index + 1); wattroff(console->win, COLOUR_INCOMING); } static void -_cons_show_contact(PContact contact) +_win_show_contact(ProfWin *window, PContact contact) { const char *jid = p_contact_jid(contact); const char *name = p_contact_name(contact); @@ -2076,68 +2145,68 @@ _cons_show_contact(PContact contact) const char *status = p_contact_status(contact); GDateTime *last_activity = p_contact_last_activity(contact); - _win_show_time(console->win); + _win_show_time(window->win, '-'); if (strcmp(presence, "online") == 0) { - wattron(console->win, COLOUR_ONLINE); + wattron(window->win, COLOUR_ONLINE); } else if (strcmp(presence, "away") == 0) { - wattron(console->win, COLOUR_AWAY); + wattron(window->win, COLOUR_AWAY); } else if (strcmp(presence, "chat") == 0) { - wattron(console->win, COLOUR_CHAT); + wattron(window->win, COLOUR_CHAT); } else if (strcmp(presence, "dnd") == 0) { - wattron(console->win, COLOUR_DND); + wattron(window->win, COLOUR_DND); } else if (strcmp(presence, "xa") == 0) { - wattron(console->win, COLOUR_XA); + wattron(window->win, COLOUR_XA); } else { - wattron(console->win, COLOUR_OFFLINE); + wattron(window->win, COLOUR_OFFLINE); } - wprintw(console->win, "%s", jid); + wprintw(window->win, "%s", jid); if (name != NULL) { - wprintw(console->win, " (%s)", name); + wprintw(window->win, " (%s)", name); } - wprintw(console->win, " is %s", presence); + wprintw(window->win, " is %s", presence); if (last_activity != NULL) { GDateTime *now = g_date_time_new_now_local(); GTimeSpan span = g_date_time_difference(now, last_activity); - wprintw(console->win, ", idle "); + wprintw(window->win, ", idle "); int hours = span / G_TIME_SPAN_HOUR; span = span - hours * G_TIME_SPAN_HOUR; if (hours > 0) { - wprintw(console->win, "%dh", hours); + wprintw(window->win, "%dh", hours); } int minutes = span / G_TIME_SPAN_MINUTE; span = span - minutes * G_TIME_SPAN_MINUTE; - wprintw(console->win, "%dm", minutes); + wprintw(window->win, "%dm", minutes); int seconds = span / G_TIME_SPAN_SECOND; - wprintw(console->win, "%ds", seconds); + wprintw(window->win, "%ds", seconds); } if (status != NULL) { - wprintw(console->win, ", \"%s\"", p_contact_status(contact)); + wprintw(window->win, ", \"%s\"", p_contact_status(contact)); } - wprintw(console->win, "\n"); + wprintw(window->win, "\n"); if (strcmp(presence, "online") == 0) { - wattroff(console->win, COLOUR_ONLINE); + wattroff(window->win, COLOUR_ONLINE); } else if (strcmp(presence, "away") == 0) { - wattroff(console->win, COLOUR_AWAY); + wattroff(window->win, COLOUR_AWAY); } else if (strcmp(presence, "chat") == 0) { - wattroff(console->win, COLOUR_CHAT); + wattroff(window->win, COLOUR_CHAT); } else if (strcmp(presence, "dnd") == 0) { - wattroff(console->win, COLOUR_DND); + wattroff(window->win, COLOUR_DND); } else if (strcmp(presence, "xa") == 0) { - wattroff(console->win, COLOUR_XA); + wattroff(window->win, COLOUR_XA); } else { - wattroff(console->win, COLOUR_OFFLINE); + wattroff(window->win, COLOUR_OFFLINE); } } @@ -2176,42 +2245,45 @@ _win_handle_page(const wint_t * const ch) int page_space = rows - 4; int *page_start = &(current->y_pos); - MEVENT mouse_event; + if (prefs_get_mouse()) { + MEVENT mouse_event; - if (*ch == KEY_MOUSE) { - if (getmouse(&mouse_event) == OK) { + if (*ch == KEY_MOUSE) { + if (getmouse(&mouse_event) == OK) { #ifdef PLATFORM_CYGWIN - if (mouse_event.bstate & BUTTON5_PRESSED) { // mouse wheel down + if (mouse_event.bstate & BUTTON5_PRESSED) { // mouse wheel down #else - if (mouse_event.bstate & BUTTON2_PRESSED) { // mouse wheel down + if (mouse_event.bstate & BUTTON2_PRESSED) { // mouse wheel down #endif - *page_start += 4; + *page_start += 4; - // only got half a screen, show full screen - if ((y - (*page_start)) < page_space) - *page_start = y - page_space; + // only got half a screen, show full screen + if ((y - (*page_start)) < page_space) + *page_start = y - page_space; - // went past end, show full screen - else if (*page_start >= y) - *page_start = y - page_space; + // went past end, show full screen + else if (*page_start >= y) + *page_start = y - page_space; - current->paged = 1; - dirty = TRUE; - } else if (mouse_event.bstate & BUTTON4_PRESSED) { // mouse wheel up - *page_start -= 4; + current->paged = 1; + dirty = TRUE; + } else if (mouse_event.bstate & BUTTON4_PRESSED) { // mouse wheel up + *page_start -= 4; - // went past beginning, show first page - if (*page_start < 0) - *page_start = 0; + // went past beginning, show first page + if (*page_start < 0) + *page_start = 0; - current->paged = 1; - dirty = TRUE; + current->paged = 1; + dirty = TRUE; + } } } + } // page up - } else if (*ch == KEY_PPAGE) { + if (*ch == KEY_PPAGE) { *page_start -= page_space; // went past beginning, show first page |