void gui_window_switch_right (struct t_gui_window *window) { struct t_gui_window *ptr_win; for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { if ((ptr_win != window) && (gui_window_side_by_side (window, ptr_win) == 2)) { gui_current_window = ptr_win; gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); return; } } }
void gui_window_switch (struct t_gui_window *window) { if (gui_current_window == window) return; /* remove unused bars from current window */ /* ... */ gui_current_window = window; gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); hook_signal_send ("window_switch", WEECHAT_HOOK_SIGNAL_POINTER, window); }
struct t_gui_window * gui_window_split_vertical (struct t_gui_window *window, int percentage) { struct t_gui_window *new_window; int width1, width2; if (!gui_ok) return NULL; new_window = NULL; width1 = (window->win_width * percentage) / 100; width2 = window->win_width - width1 - 1; if ((percentage > 0) && (percentage <= 100)) { new_window = gui_window_new (window, window->buffer, window->win_x + width1 + 1, window->win_y, width2, window->win_height, percentage, 100); if (new_window) { /* reduce old window height (left window) */ window->win_width = width1; window->win_width_pct = 100 - percentage; /* assign same buffer for new window (right window) */ gui_buffer_add_value_num_displayed (new_window->buffer, 1); gui_window_switch_to_buffer (window, window->buffer, 1); gui_current_window = new_window; gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); /* create & draw separator */ gui_window_draw_separator (gui_current_window); } } return new_window; }
int gui_window_merge (struct t_gui_window *window) { struct t_gui_window_tree *parent, *sister; parent = window->ptr_tree->parent_node; if (parent) { sister = (parent->child1->window == window) ? parent->child2 : parent->child1; if (!(sister->window)) return 0; if (window->win_y == sister->window->win_y) { /* horizontal merge */ window->win_width += sister->window->win_width + 1; window->win_width_pct += sister->window->win_width_pct; } else { /* vertical merge */ window->win_height += sister->window->win_height; window->win_height_pct += sister->window->win_height_pct; } if (sister->window->win_x < window->win_x) window->win_x = sister->window->win_x; if (sister->window->win_y < window->win_y) window->win_y = sister->window->win_y; gui_window_free (sister->window); gui_window_tree_node_to_leaf (parent, window); gui_window_switch_to_buffer (window, window->buffer, 1); gui_window_redraw_buffer (window->buffer); return 1; } return 0; }
struct t_gui_window * gui_window_split_horizontal (struct t_gui_window *window, int percentage) { struct t_gui_window *new_window; int height1, height2; if (!gui_ok) return NULL; new_window = NULL; height1 = (window->win_height * percentage) / 100; height2 = window->win_height - height1; if ((percentage > 0) && (percentage <= 100)) { new_window = gui_window_new (window, window->buffer, window->win_x, window->win_y, window->win_width, height1, 100, percentage); if (new_window) { /* reduce old window height (bottom window) */ window->win_y = new_window->win_y + new_window->win_height; window->win_height = height2; window->win_height_pct = 100 - percentage; /* assign same buffer for new window (top window) */ gui_buffer_add_value_num_displayed (new_window->buffer, 1); gui_window_switch_to_buffer (window, window->buffer, 1); gui_current_window = new_window; gui_window_switch_to_buffer (gui_current_window, gui_current_window->buffer, 1); gui_window_redraw_buffer (gui_current_window->buffer); } } return new_window; }
void gui_main_refreshs () { struct t_gui_window *ptr_win; struct t_gui_buffer *ptr_buffer; struct t_gui_bar *ptr_bar; /* refresh color buffer if needed */ if (gui_color_buffer_refresh_needed) { gui_color_buffer_display (); gui_color_buffer_refresh_needed = 0; } /* compute max length for prefix/buffer if needed */ for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { /* compute buffer/prefix max length for own_lines */ if (ptr_buffer->own_lines) { if (ptr_buffer->own_lines->buffer_max_length_refresh) { gui_line_compute_buffer_max_length (ptr_buffer, ptr_buffer->own_lines); } if (ptr_buffer->own_lines->prefix_max_length_refresh) gui_line_compute_prefix_max_length (ptr_buffer->own_lines); } /* compute buffer/prefix max length for mixed_lines */ if (ptr_buffer->mixed_lines) { if (ptr_buffer->mixed_lines->buffer_max_length_refresh) { gui_line_compute_buffer_max_length (ptr_buffer, ptr_buffer->mixed_lines); } if (ptr_buffer->mixed_lines->prefix_max_length_refresh) gui_line_compute_prefix_max_length (ptr_buffer->mixed_lines); } } /* refresh window if needed */ if (gui_window_refresh_needed) { gui_window_refresh_screen ((gui_window_refresh_needed > 1) ? 1 : 0); gui_window_refresh_needed = 0; } /* refresh bars if needed */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if (ptr_bar->bar_refresh_needed) { gui_bar_draw (ptr_bar); } } /* refresh window if needed (if asked during refresh of bars) */ if (gui_window_refresh_needed) { gui_window_refresh_screen ((gui_window_refresh_needed > 1) ? 1 : 0); gui_window_refresh_needed = 0; } /* refresh windows if needed */ for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { if (ptr_win->refresh_needed) { gui_window_switch_to_buffer (ptr_win, ptr_win->buffer, 0); gui_window_redraw_buffer (ptr_win->buffer); ptr_win->refresh_needed = 0; } } /* refresh chat buffers if needed */ for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { if (ptr_buffer->chat_refresh_needed) { gui_chat_draw (ptr_buffer, (ptr_buffer->chat_refresh_needed) > 1 ? 1 : 0); } } /* refresh bars if needed */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if (ptr_bar->bar_refresh_needed) { gui_bar_draw (ptr_bar); } } /* move cursor (for cursor mode) */ if (gui_cursor_mode) gui_window_move_cursor (); }
void gui_main_refreshs () { struct t_gui_window *ptr_win; struct t_gui_buffer *ptr_buffer; struct t_gui_bar *ptr_bar; /* refresh color buffer if needed */ if (gui_color_buffer_refresh_needed) { gui_color_buffer_display (); gui_color_buffer_refresh_needed = 0; } /* refresh window if needed */ if (gui_window_refresh_needed) { gui_window_refresh_screen ((gui_window_refresh_needed > 1) ? 1 : 0); gui_window_refresh_needed = 0; } /* refresh bars if needed */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if (ptr_bar->bar_refresh_needed) { gui_bar_draw (ptr_bar); } } /* refresh windows if needed */ for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { if (ptr_win->refresh_needed) { gui_window_switch_to_buffer (ptr_win, ptr_win->buffer, 0); gui_window_redraw_buffer (ptr_win->buffer); ptr_win->refresh_needed = 0; } } /* refresh chat buffers if needed */ for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { if (ptr_buffer->chat_refresh_needed) { gui_chat_draw (ptr_buffer, (ptr_buffer->chat_refresh_needed) > 1 ? 1 : 0); } } /* refresh bars if needed */ for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { if (ptr_bar->bar_refresh_needed) { gui_bar_draw (ptr_bar); } } /* move cursor (for cursor mode) */ if (gui_cursor_mode) gui_window_move_cursor (); }