Applications/Internet/Cyberia: Handle all vscroll changes before issuing reflow in @cyberia_win_repaint() callback
This commit is contained in:
parent
e98a0a13c2
commit
d47e33acb0
1 changed files with 11 additions and 12 deletions
|
@ -22,9 +22,9 @@ TextInputWidget* addressbar1 = NULL;
|
||||||
@window_widgets_list* widgets_base = NULL;
|
@window_widgets_list* widgets_base = NULL;
|
||||||
@html_dom_node* node_list = NULL;
|
@html_dom_node* node_list = NULL;
|
||||||
|
|
||||||
I64 old_window_width = -1;
|
I64 prev_win_width = -1;
|
||||||
I64 old_window_height = -1;
|
I64 prev_win_height = -1;
|
||||||
I64 old_mouse_z = Mouse.z;
|
I64 prev_mouse_z = Mouse.z;
|
||||||
|
|
||||||
Window* hanbaga_menu = Menu.New("Cyberia");
|
Window* hanbaga_menu = Menu.New("Cyberia");
|
||||||
Menu.AddItem(hanbaga_menu, "New Tab", NULL, &Reboot, NULL, NULL);
|
Menu.AddItem(hanbaga_menu, "New Tab", NULL, &Reboot, NULL, NULL);
|
||||||
|
@ -809,12 +809,11 @@ U0 @cyberia_win_repaint(Window*)
|
||||||
vscroll1->width = 16;
|
vscroll1->width = 16;
|
||||||
vscroll1->height = background1->height;
|
vscroll1->height = background1->height;
|
||||||
|
|
||||||
I64 delta_z = Mouse.z - old_mouse_z;
|
I64 delta_z = Mouse.z - prev_mouse_z;
|
||||||
if (delta_z) {
|
if (delta_z) {
|
||||||
vscroll1->scroll += (RENDERER_DEFAULT_MAX_LINE_HEIGHT * delta_z);
|
vscroll1->scroll += (RENDERER_DEFAULT_MAX_LINE_HEIGHT * delta_z);
|
||||||
@cyberia_vscroll_change(vscroll1);
|
|
||||||
}
|
}
|
||||||
old_mouse_z = Mouse.z;
|
prev_mouse_z = Mouse.z;
|
||||||
|
|
||||||
if (StrLen(&status2->text)) {
|
if (StrLen(&status2->text)) {
|
||||||
status1->y = win->height;
|
status1->y = win->height;
|
||||||
|
@ -829,18 +828,18 @@ U0 @cyberia_win_repaint(Window*)
|
||||||
if (!browser || !browser->renderer || !widgets_base)
|
if (!browser || !browser->renderer || !widgets_base)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (widgets_base->next && (old_window_width != win->width || old_window_height != win->height)) {
|
|
||||||
@reflow_node_list(browser->renderer);
|
|
||||||
old_window_width = win->width;
|
|
||||||
old_window_height = win->height;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (browser->renderer->calculated_page_height > background1->height) {
|
if (browser->renderer->calculated_page_height > background1->height) {
|
||||||
vscroll1->max = browser->renderer->calculated_page_height;
|
vscroll1->max = browser->renderer->calculated_page_height;
|
||||||
vscroll1->length = (vscroll1->height - 31) / MaxI64(2, ToI64(browser->renderer->calculated_page_height / background1->height));
|
vscroll1->length = (vscroll1->height - 31) / MaxI64(2, ToI64(browser->renderer->calculated_page_height / background1->height));
|
||||||
vscroll1->x = win->width - 25;
|
vscroll1->x = win->width - 25;
|
||||||
background1->width -= vscroll1->width;
|
background1->width -= vscroll1->width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (widgets_base->next && (prev_win_width != win->width || prev_win_height != win->height) || delta_z) {
|
||||||
|
@reflow_node_list(browser->renderer);
|
||||||
|
prev_win_width = win->width;
|
||||||
|
prev_win_height = win->height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
U0 @cyberia_unset_status_text()
|
U0 @cyberia_unset_status_text()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue