Added SILC Thread Queue API
[crypto.git] / apps / irssi / src / fe-text / mainwindows.h
index 491449c62c9ad61f12e48abcbca53820114080de..1bca333d128d7d9781716e4372482d581a01ef18 100644 (file)
@@ -2,27 +2,34 @@
 #define __MAINWINDOWS_H
 
 #include "fe-windows.h"
-#include "screen.h"
+#include "term.h"
 
 #define WINDOW_MIN_SIZE 2
 
+#define MAIN_WINDOW_TEXT_HEIGHT(window) \
+        ((window)->height-(window)->statusbar_lines)
+
 typedef struct {
        WINDOW_REC *active;
-        GSList *sticky_windows; /* list of windows allowed to show only in this mainwindow */
 
-#ifdef USE_CURSES_WINDOWS
-       WINDOW *curses_win;
-#else
-#error disable-curses-windows is currently broken /* FIXME */
-#endif
-       int first_line, last_line, width, height;
-       int statusbar_lines;
-       void *statusbar;
-       void *statusbar_window_item;
+       TERM_WINDOW *screen_win;
+        int sticky_windows; /* number of sticky windows */
+
+       int first_line, last_line; /* first/last line used by this window (0..x) (includes statusbars) */
+       int width, height; /* width/height of the window (includes statusbars) */
+
+       GSList *statusbars;
+       int statusbar_lines_top;
+       int statusbar_lines_bottom;
+       int statusbar_lines; /* top+bottom */
+
+       unsigned int dirty:1; /* This window needs a redraw */
+       unsigned int size_dirty:1; /* We'll need to resize the window, but haven't got around doing it just yet. */
 } MAIN_WINDOW_REC;
 
 extern GSList *mainwindows;
 extern MAIN_WINDOW_REC *active_mainwin;
+extern int screen_reserved_top, screen_reserved_bottom;
 
 void mainwindows_init(void);
 void mainwindows_deinit(void);
@@ -33,10 +40,21 @@ void mainwindow_destroy(MAIN_WINDOW_REC *window);
 void mainwindows_redraw(void);
 void mainwindows_recreate(void);
 
-void mainwindow_set_size(MAIN_WINDOW_REC *window, int size);
+/* Change the window height - the height includes the lines needed for
+   statusbars. If resize_lower is TRUE, the lower window is first tried
+   to be resized instead of upper window. */
+void mainwindow_set_size(MAIN_WINDOW_REC *window, int height,
+                        int resize_lower);
 void mainwindows_resize(int width, int height);
 
-int mainwindows_reserve_lines(int count, int up);
+void mainwindow_change_active(MAIN_WINDOW_REC *mainwin,
+                             WINDOW_REC *skip_window);
+
+int mainwindows_reserve_lines(int top, int bottom);
+int mainwindow_set_statusbar_lines(MAIN_WINDOW_REC *window,
+                                  int top, int bottom);
+void mainwindows_redraw_dirty(void);
+
 GSList *mainwindows_get_sorted(int reverse);
 
 #endif