equal
deleted
inserted
replaced
72 static WINDOW *mainstatusWnd, *chatstatusWnd; |
72 static WINDOW *mainstatusWnd, *chatstatusWnd; |
73 static PANEL *rosterPanel, *chatPanel, *inputPanel; |
73 static PANEL *rosterPanel, *chatPanel, *inputPanel; |
74 static PANEL *mainstatusPanel, *chatstatusPanel; |
74 static PANEL *mainstatusPanel, *chatstatusPanel; |
75 static PANEL *logPanel; |
75 static PANEL *logPanel; |
76 static int maxY, maxX; |
76 static int maxY, maxX; |
|
77 static int prev_chatwidth; |
77 static winbuf *statusWindow; |
78 static winbuf *statusWindow; |
78 static winbuf *currentWindow; |
79 static winbuf *currentWindow; |
79 static GList *statushbuf; |
80 static GList *statushbuf; |
80 |
81 |
81 static int roster_hidden; |
82 static int roster_hidden; |
429 x = Roster_Width; |
430 x = Roster_Width; |
430 if (log_win_on_top) |
431 if (log_win_on_top) |
431 y = Log_Win_Height-1; |
432 y = Log_Win_Height-1; |
432 else |
433 else |
433 y = 0; |
434 y = 0; |
|
435 |
434 lines = CHAT_WIN_HEIGHT; |
436 lines = CHAT_WIN_HEIGHT; |
435 cols = maxX - Roster_Width; |
437 cols = maxX - Roster_Width; |
436 if (cols < 1) cols = 1; |
438 if (cols < 1) |
|
439 cols = 1; |
437 |
440 |
438 tmp->win = newwin(lines, cols, y, x); |
441 tmp->win = newwin(lines, cols, y, x); |
439 while (!tmp->win) { |
442 while (!tmp->win) { |
440 safe_usleep(250); |
443 safe_usleep(250); |
441 tmp->win = newwin(lines, cols, y, x); |
444 tmp->win = newwin(lines, cols, y, x); |
903 inputPanel = new_panel(inputWnd); |
906 inputPanel = new_panel(inputWnd); |
904 |
907 |
905 // Build the buddylist at least once, to make sure the special buffer |
908 // Build the buddylist at least once, to make sure the special buffer |
906 // is added |
909 // is added |
907 buddylist_build(); |
910 buddylist_build(); |
|
911 |
|
912 // Init prev_chatwidth; this variable will be used to prevent us |
|
913 // from rewrapping buffers when the width doesn't change. |
|
914 prev_chatwidth = maxX - Roster_Width - PREFIX_WIDTH; |
908 // Wrap existing status buffer lines |
915 // Wrap existing status buffer lines |
909 hbuf_rebuild(&statushbuf, maxX - Roster_Width - PREFIX_WIDTH); |
916 hbuf_rebuild(&statushbuf, prev_chatwidth); |
910 |
917 |
911 #ifndef UNICODE |
918 #ifndef UNICODE |
912 if (utf8_mode) |
919 if (utf8_mode) |
913 scr_LogPrint(LPRINT_NORMAL, |
920 scr_LogPrint(LPRINT_NORMAL, |
914 "WARNING: Compiled without full UTF-8 support!"); |
921 "WARNING: Compiled without full UTF-8 support!"); |
931 static void resize_win_buffer(gpointer key, gpointer value, gpointer data) |
938 static void resize_win_buffer(gpointer key, gpointer value, gpointer data) |
932 { |
939 { |
933 winbuf *wbp = value; |
940 winbuf *wbp = value; |
934 struct dimensions *dim = data; |
941 struct dimensions *dim = data; |
935 int chat_x_pos, chat_y_pos; |
942 int chat_x_pos, chat_y_pos; |
|
943 int new_chatwidth; |
936 |
944 |
937 if (!(wbp && wbp->win)) |
945 if (!(wbp && wbp->win)) |
938 return; |
946 return; |
939 |
947 |
940 if (log_win_on_top) |
948 if (log_win_on_top) |
954 // If a panel exists, replace the old window with the new |
962 // If a panel exists, replace the old window with the new |
955 if (wbp->panel) |
963 if (wbp->panel) |
956 replace_panel(wbp->panel, wbp->win); |
964 replace_panel(wbp->panel, wbp->win); |
957 // Redo line wrapping |
965 // Redo line wrapping |
958 wbp->top = hbuf_previous_persistent(wbp->top); |
966 wbp->top = hbuf_previous_persistent(wbp->top); |
959 hbuf_rebuild(&wbp->hbuf, maxX - Roster_Width - PREFIX_WIDTH); |
967 |
|
968 new_chatwidth = maxX - Roster_Width - PREFIX_WIDTH; |
|
969 if (new_chatwidth != prev_chatwidth) |
|
970 hbuf_rebuild(&wbp->hbuf, new_chatwidth); |
960 } |
971 } |
961 |
972 |
962 // scr_Resize() |
973 // scr_Resize() |
963 // Function called when the window is resized. |
974 // Function called when the window is resized. |
964 // - Resize windows |
975 // - Resize windows |
987 g_hash_table_foreach(winbufhash, resize_win_buffer, &dim); |
998 g_hash_table_foreach(winbufhash, resize_win_buffer, &dim); |
988 |
999 |
989 // Resize/move special status buffer |
1000 // Resize/move special status buffer |
990 if (statusWindow) |
1001 if (statusWindow) |
991 resize_win_buffer(NULL, statusWindow, &dim); |
1002 resize_win_buffer(NULL, statusWindow, &dim); |
|
1003 |
|
1004 // Update prev_chatwidth, now that all buffers have been resized |
|
1005 prev_chatwidth = maxX - Roster_Width - PREFIX_WIDTH; |
992 |
1006 |
993 // Refresh current buddy window |
1007 // Refresh current buddy window |
994 if (chatmode) |
1008 if (chatmode) |
995 scr_ShowBuddyWindow(); |
1009 scr_ShowBuddyWindow(); |
996 } |
1010 } |