diff --git a/Applications/Internet/Cyberia.app/Cyberia.HC b/Applications/Internet/Cyberia.app/Cyberia.HC
index ed41b17..b155f48 100644
--- a/Applications/Internet/Cyberia.app/Cyberia.HC
+++ b/Applications/Internet/Cyberia.app/Cyberia.HC
@@ -319,7 +319,7 @@ U0 @cyberia_set_tab_title_and_icon(TabPanelTab* tab, U8* title, Context2D* icon)
}
if (StrLen(title) > 32) {
MemCpy(&tab->text, title, 29);
- StrCpy(&tab->text + 29, "...");
+ StrCpy(&tab->text + 28, "...");
} else {
StrCpy(&tab->text, title);
}
@@ -354,12 +354,11 @@ U0 @cyberia_history()
String.Append(&addressbar1->text, "%s%s%s%s", url->scheme, url->host, url->path, url->query);
}
- renderer->background_widget->color = renderer->background_color;
+ background1->color = renderer->background_color;
@cyberia_set_tab_title_and_icon(browser->tab, renderer->current_title, @favicon_for_page(renderer));
- widgets_base->next = renderer->widgets_base;
-
@reflow_node_list(renderer);
+ widgets_base->next = renderer->widgets_base;
status1->SetText("Done");
refreshbtn1->disabled = FALSE;
@@ -398,6 +397,38 @@ U0 @cyberia_fwd_clicked()
U8* NEW_TAB_HTML = "
New tab";
+U0 @cyberia_init_renderer(HtmlRenderer* renderer, U8* url_string)
+{
+ MemSet(renderer, 0, sizeof(HtmlRenderer));
+
+ renderer->images = NULL;
+ renderer->link_pointer = Compositor.theme.pointer.link;
+
+ renderer->link_callback = &@cyberia_link_clicked;
+ renderer->form_submit_callback = &@cyberia_form_submit_clicked;
+ renderer->image_load_callback = &@reflow_node_list;
+ renderer->title_callback = &@cyberia_set_tab_title;
+
+ renderer->status_widget = status1;
+ renderer->background_color = Color(255, 255, 255);
+ renderer->background_widget = background1;
+
+ renderer->vertical_scroll_widget = vscroll1;
+
+ renderer->win = CAlloc(sizeof(Window), browser_task);
+ renderer->win->widget = CAlloc(sizeof(@window_widgets_list), browser_task);
+ renderer->widgets_base = renderer->win->widget;
+ renderer->reflow_win = win;
+
+ renderer->indent = -1;
+ // renderer->debug = 1;
+
+ renderer->current_url_string = StrNew(url_string, browser_task);
+ renderer->current_url = @http_parse_url(url_string);
+ renderer->cache_directory = HTTP_CACHE_DIRECTORY;
+ renderer->task = browser_task;
+}
+
U0 @cyberia_navigate(Bool refresh = FALSE)
{
win->focused_widget = NULL;
@@ -431,29 +462,7 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
}
HtmlRenderer* renderer = browser->renderer;
- MemSet(renderer, 0, sizeof(HtmlRenderer));
- widgets_base->next = CAlloc(sizeof(@window_widgets_list), browser_task);
- widgets_base->next->prev = widgets_base;
- renderer->images = NULL;
- renderer->link_pointer = Compositor.theme.pointer.link;
- renderer->link_callback = &@cyberia_link_clicked;
- renderer->form_submit_callback = &@cyberia_form_submit_clicked;
- renderer->image_load_callback = &@reflow_node_list;
- renderer->title_callback = &@cyberia_set_tab_title;
- renderer->widgets_base = widgets_base->next;
- renderer->status_widget = status1;
- renderer->background_widget = background1;
- renderer->background_color = Color(255, 255, 255);
- renderer->background_widget->color = renderer->background_color;
-
- renderer->vertical_scroll_widget = vscroll1;
- renderer->win = win;
- renderer->indent = -1;
-
- renderer->current_url_string = StrNew(url_string, browser_task);
- renderer->current_url = @http_parse_url(url_string);
- renderer->cache_directory = HTTP_CACHE_DIRECTORY;
- renderer->task = browser_task;
+ @cyberia_init_renderer(renderer, url_string);
U8 err_msg_buffer[128];
U8 status_text_buffer[1024];
@@ -566,11 +575,8 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
vscroll1->scroll = 0;
- @reflow_node_list(renderer);
+ @cyberia_history;
@fetch_images_for_page(renderer);
-
- status1->SetText("Done");
- refreshbtn1->disabled = FALSE;
}
U0 @cyberia_new_tab()
@@ -884,6 +890,14 @@ U0 @cyberia_win_mouseat(Window*)
Free(resolved_href);
}
+U0 @cyberia_init_widgets_base()
+{
+ widgets_base = win->widget;
+ while (widgets_base->next) {
+ widgets_base = widgets_base->next;
+ }
+}
+
U0 @cyberia_init()
{
win = Compositor.CreateWindow(24, 24, 992, 768, WIN_FLAGS_DEFAULT);
@@ -954,14 +968,10 @@ U0 @cyberia_init()
Compositor.RegisterForGlobalInputEvents(win);
tabpanel1 = Gui.CreateWidget(win, WIDGET_TYPE_TAB_PANEL, 0, 0, 0, 0);
- tabpanel1->size = 256;
+ tabpanel1->size = 234;
Gui.Widget.SetCallback(tabpanel1, "clicked", &@cyberia_tabpanel_clicked);
- widgets_base = win->widget;
-
- while (widgets_base->next) {
- widgets_base = widgets_base->next;
- }
+ @cyberia_init_widgets_base;
@cyberia_new_tab;
@cyberia_win_repaint(win);
diff --git a/Applications/Internet/Cyberia.app/Resources/close-tab.png b/Applications/Internet/Cyberia.app/Resources/close-tab.png
new file mode 100644
index 0000000..94f062d
Binary files /dev/null and b/Applications/Internet/Cyberia.app/Resources/close-tab.png differ