more bugs
This commit is contained in:
parent
f8c7a7a690
commit
c3f5b20ca7
@ -505,40 +505,38 @@ static inline bool
|
|||||||
render_os_window(OSWindow *os_window, double now, unsigned int *active_window_id) {
|
render_os_window(OSWindow *os_window, double now, unsigned int *active_window_id) {
|
||||||
bool dirtied = false;
|
bool dirtied = false;
|
||||||
if (OPT(mouse_hide_wait) > 0 && now - os_window->last_mouse_activity_at > OPT(mouse_hide_wait)) hide_mouse(os_window);
|
if (OPT(mouse_hide_wait) > 0 && now - os_window->last_mouse_activity_at > OPT(mouse_hide_wait)) hide_mouse(os_window);
|
||||||
if (os_window->num_tabs) {
|
Tab *tab = os_window->tabs + os_window->active_tab;
|
||||||
Tab *tab = os_window->tabs + os_window->active_tab;
|
for (unsigned int i = 0; i < tab->num_windows; i++) {
|
||||||
for (unsigned int i = 0; i < tab->num_windows; i++) {
|
Window *w = tab->windows + i;
|
||||||
Window *w = tab->windows + i;
|
|
||||||
#define WD w->render_data
|
#define WD w->render_data
|
||||||
if (w->visible && WD.screen) {
|
if (w->visible && WD.screen) {
|
||||||
if (w->last_drag_scroll_at > 0) {
|
if (w->last_drag_scroll_at > 0) {
|
||||||
if (now - w->last_drag_scroll_at >= 0.02) {
|
if (now - w->last_drag_scroll_at >= 0.02) {
|
||||||
if (drag_scroll(w, os_window)) {
|
if (drag_scroll(w, os_window)) {
|
||||||
w->last_drag_scroll_at = now;
|
w->last_drag_scroll_at = now;
|
||||||
set_maximum_wait(0.02);
|
set_maximum_wait(0.02);
|
||||||
} else w->last_drag_scroll_at = 0;
|
} else w->last_drag_scroll_at = 0;
|
||||||
} else set_maximum_wait(now - w->last_drag_scroll_at);
|
} else set_maximum_wait(now - w->last_drag_scroll_at);
|
||||||
}
|
}
|
||||||
bool is_active_window = i == tab->active_window;
|
bool is_active_window = i == tab->active_window;
|
||||||
if (is_active_window) {
|
if (is_active_window) {
|
||||||
*active_window_id = w->id;
|
*active_window_id = w->id;
|
||||||
collect_cursor_info(&WD.screen->current_cursor_render_info, w, now, os_window);
|
collect_cursor_info(&WD.screen->current_cursor_render_info, w, now, os_window);
|
||||||
if (update_window_title(w, os_window)) dirtied = true;
|
if (update_window_title(w, os_window)) dirtied = true;
|
||||||
} else WD.screen->current_cursor_render_info.is_visible = false;
|
} else WD.screen->current_cursor_render_info.is_visible = false;
|
||||||
if (draw_cells(WD.vao_idx, WD.gvao_idx, WD.xstart, WD.ystart, WD.dx, WD.dy, WD.screen, os_window)) {
|
if (draw_cells(WD.vao_idx, WD.gvao_idx, WD.xstart, WD.ystart, WD.dx, WD.dy, WD.screen, os_window)) {
|
||||||
if (is_active_window && WD.screen->current_cursor_render_info.is_visible && WD.screen->current_cursor_render_info.shape != CURSOR_BLOCK) {
|
if (is_active_window && WD.screen->current_cursor_render_info.is_visible && WD.screen->current_cursor_render_info.shape != CURSOR_BLOCK) {
|
||||||
draw_cursor(&WD.screen->current_cursor_render_info, os_window == global_state.focused_os_window);
|
draw_cursor(&WD.screen->current_cursor_render_info, os_window == global_state.focused_os_window);
|
||||||
}
|
|
||||||
dirtied = true;
|
|
||||||
}
|
|
||||||
if (WD.screen->start_visual_bell_at != 0) {
|
|
||||||
double bell_left = global_state.opts.visual_bell_duration - (now - WD.screen->start_visual_bell_at);
|
|
||||||
set_maximum_wait(bell_left);
|
|
||||||
}
|
}
|
||||||
|
dirtied = true;
|
||||||
|
}
|
||||||
|
if (WD.screen->start_visual_bell_at != 0) {
|
||||||
|
double bell_left = global_state.opts.visual_bell_duration - (now - WD.screen->start_visual_bell_at);
|
||||||
|
set_maximum_wait(bell_left);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#undef WD
|
|
||||||
}
|
}
|
||||||
|
#undef WD
|
||||||
return dirtied;
|
return dirtied;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -553,7 +551,7 @@ render(double now) {
|
|||||||
|
|
||||||
for (size_t i = 0; i < global_state.num_os_windows; i++) {
|
for (size_t i = 0; i < global_state.num_os_windows; i++) {
|
||||||
OSWindow *w = global_state.os_windows + i;
|
OSWindow *w = global_state.os_windows + i;
|
||||||
if (!should_os_window_be_rendered(w)) continue;
|
if (!w->num_tabs || !should_os_window_be_rendered(w)) continue;
|
||||||
if (w->viewport_size_dirty) {
|
if (w->viewport_size_dirty) {
|
||||||
update_surface_size(w->viewport_width, w->viewport_height);
|
update_surface_size(w->viewport_width, w->viewport_height);
|
||||||
w->viewport_size_dirty = false;
|
w->viewport_size_dirty = false;
|
||||||
|
|||||||
@ -14,11 +14,13 @@ GlobalState global_state = {{0}};
|
|||||||
if (array[i].id == qid) { \
|
if (array[i].id == qid) { \
|
||||||
destroy(array + i); \
|
destroy(array + i); \
|
||||||
memset(array + i, 0, sizeof(structure)); \
|
memset(array + i, 0, sizeof(structure)); \
|
||||||
size_t num_to_right = capacity - count - 1; \
|
size_t num_to_right = count - 1 - i; \
|
||||||
if (num_to_right) memmove(array + i, array + i + 1, num_to_right * sizeof(structure)); \
|
if (num_to_right) memmove(array + i, array + i + 1, num_to_right * sizeof(structure)); \
|
||||||
(count)--; \
|
(count)--; \
|
||||||
|
break; \
|
||||||
} \
|
} \
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#define WITH_OS_WINDOW(os_window_id) \
|
#define WITH_OS_WINDOW(os_window_id) \
|
||||||
for (size_t o = 0; o < global_state.num_os_windows; o++) { \
|
for (size_t o = 0; o < global_state.num_os_windows; o++) { \
|
||||||
OSWindow *os_window = global_state.os_windows + o; \
|
OSWindow *os_window = global_state.os_windows + o; \
|
||||||
@ -87,7 +89,7 @@ add_window(id_type os_window_id, id_type tab_id, PyObject *title) {
|
|||||||
tab->windows[tab->num_windows].render_data.vao_idx = create_cell_vao();
|
tab->windows[tab->num_windows].render_data.vao_idx = create_cell_vao();
|
||||||
tab->windows[tab->num_windows].render_data.gvao_idx = create_graphics_vao();
|
tab->windows[tab->num_windows].render_data.gvao_idx = create_graphics_vao();
|
||||||
Py_INCREF(tab->windows[tab->num_windows].title);
|
Py_INCREF(tab->windows[tab->num_windows].title);
|
||||||
return tab->windows[tab->num_windows++].id;
|
return tab->windows[tab->num_windows++].id;
|
||||||
END_WITH_TAB;
|
END_WITH_TAB;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user