# HG changeset patch # User Mikael Berthe # Date 1131978543 -3600 # Node ID 180f0a6e4ac90f5a350e853a9ca9817528de1f00 # Parent 979eb0fe296978d716d72873d093bed2f79fe00b Log window's height can be set by the user diff -r 979eb0fe2969 -r 180f0a6e4ac9 mcabber/src/screen.c --- a/mcabber/src/screen.c Sun Nov 13 22:46:46 2005 +0100 +++ b/mcabber/src/screen.c Mon Nov 14 15:29:03 2005 +0100 @@ -42,6 +42,11 @@ #define window_entry(n) list_entry(n, window_entry_t, list) +#define DEFAULT_LOG_WIN_HEIGHT (5+2) +#define CHAT_WIN_HEIGHT (maxY-1-Log_Win_Height) + +static unsigned short int Log_Win_Height; + static inline void check_offset(int); LIST_HEAD(window_list); @@ -199,6 +204,7 @@ void scr_InitCurses(void) { + int requested_lwh; initscr(); raw(); noecho(); @@ -211,8 +217,26 @@ ParseColors(); getmaxyx(stdscr, maxY, maxX); - if (maxY < LOG_WIN_HEIGHT+2) - maxY = LOG_WIN_HEIGHT+2; + Log_Win_Height = DEFAULT_LOG_WIN_HEIGHT; + + requested_lwh = settings_opt_get_int("log_win_height"); + if (requested_lwh > 0) { + if (maxY > requested_lwh + 3) + Log_Win_Height = requested_lwh + 2; + else + Log_Win_Height = ((maxY > 5) ? (maxY - 2) : 3); + } else if (requested_lwh < 0) { + Log_Win_Height = 3; + } + + if (maxY < Log_Win_Height+2) { + if (maxY < 5) { + Log_Win_Height = 3; + maxY = Log_Win_Height+2; + } else { + Log_Win_Height = maxY - 2; + } + } inputLine[0] = 0; ptr_inputline = inputLine; @@ -551,8 +575,8 @@ /* Create windows */ rosterWnd = newwin(CHAT_WIN_HEIGHT, ROSTER_WIDTH, 0, 0); chatWnd = newwin(CHAT_WIN_HEIGHT, maxX - ROSTER_WIDTH, 0, ROSTER_WIDTH); - logWnd_border = newwin(LOG_WIN_HEIGHT, maxX, CHAT_WIN_HEIGHT, 0); - logWnd = newwin(LOG_WIN_HEIGHT-2, maxX-2, CHAT_WIN_HEIGHT+1, 1); + logWnd_border = newwin(Log_Win_Height, maxX, CHAT_WIN_HEIGHT, 0); + logWnd = newwin(Log_Win_Height-2, maxX-2, CHAT_WIN_HEIGHT+1, 1); inputWnd = newwin(1, maxX, maxY-1, 0); if (!rosterWnd || !chatWnd || !logWnd || !inputWnd) { scr_TerminateCurses(); @@ -568,8 +592,8 @@ wresize(rosterWnd, CHAT_WIN_HEIGHT, ROSTER_WIDTH); wresize(chatWnd, CHAT_WIN_HEIGHT, maxX - ROSTER_WIDTH); - wresize(logWnd_border, LOG_WIN_HEIGHT, maxX); - wresize(logWnd, LOG_WIN_HEIGHT-2, maxX-2); + wresize(logWnd_border, Log_Win_Height, maxX); + wresize(logWnd, Log_Win_Height-2, maxX-2); mvwin(logWnd_border, CHAT_WIN_HEIGHT, 0); mvwin(logWnd, CHAT_WIN_HEIGHT+1, 1); @@ -584,7 +608,7 @@ mvwprintw(chatWnd, 0, 0, "This is the status window"); // - Draw/clear the log window - scr_draw_box(logWnd_border, 0, 0, LOG_WIN_HEIGHT, maxX, COLOR_GENERAL, 0, 0); + scr_draw_box(logWnd_border, 0, 0, Log_Win_Height, maxX, COLOR_GENERAL, 0, 0); // Auto-scrolling in log window scrollok(logWnd, TRUE); @@ -629,8 +653,8 @@ // First, update the global variables getmaxyx(stdscr, maxY, maxX); - if (maxY < LOG_WIN_HEIGHT+2) - maxY = LOG_WIN_HEIGHT+2; + if (maxY < Log_Win_Height+2) + maxY = Log_Win_Height+2; // Make sure the cursor stays inside the window check_offset(0); diff -r 979eb0fe2969 -r 180f0a6e4ac9 mcabber/src/screen.h --- a/mcabber/src/screen.h Sun Nov 13 22:46:46 2005 +0100 +++ b/mcabber/src/screen.h Mon Nov 14 15:29:03 2005 +0100 @@ -11,10 +11,8 @@ #define COLOR_BD_DESSEL 5 #define COLOR_BD_DES 6 -#define LOG_WIN_HEIGHT (5+2) #define ROSTER_WIDTH 24 #define PREFIX_WIDTH 17 -#define CHAT_WIN_HEIGHT (maxY-1-LOG_WIN_HEIGHT) #define INPUTLINE_LENGTH 1024