roundabout,
created on Friday, 2 May 2025, 18:05:11 (1746209111),
received on Friday, 2 May 2025, 18:05:14 (1746209114)
Author identity: vlad <vlad.muntoiu@gmail.com>
21e5a134d08b8b6e1b33b3e5d0235b5780815d58
panthera-www.cc
@@ -17,6 +17,7 @@ protected:
std::shared_ptr<gPanthera::LayoutManager> layout_manager;
std::shared_ptr<gPanthera::ContentManager> content_manager;
Gtk::Entry *url_bar = nullptr;
std::string cookie_file = "cookies.txt";
static void notify_callback(GObject *object, GParamSpec *pspec, gpointer data) {
if(!gtk_widget_get_parent(GTK_WIDGET(object))) {
@@ -60,6 +61,9 @@ protected:
auto page = Gtk::make_managed<gPanthera::ContentPage>(content_manager, stack, page_content, page_tab);
g_signal_connect(webview, "notify", G_CALLBACK(notify_callback), page->gobj());
webkit_web_view_load_uri(webview, "about:blank");
auto cookie_manager = webkit_network_session_get_cookie_manager(webkit_web_view_get_network_session(webview));
webkit_cookie_manager_set_persistent_storage(cookie_manager, cookie_file.c_str(), WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT);
webkit_cookie_manager_set_accept_policy(cookie_manager, WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS);
stack->add_page(*page);
stack->set_visible_child(*page);
content_manager->set_last_operated_page(page);
@@ -133,17 +137,7 @@ protected:
auto content_stack = Gtk::make_managed<gPanthera::ContentStack>(content_manager, detach_handler);
auto content_stack_switcher = Gtk::make_managed<gPanthera::ContentTabBar>(content_stack, Gtk::Orientation::HORIZONTAL, return_extra_child);
content_manager->add_stack(content_stack);
WebKitWebView *webview = WEBKIT_WEB_VIEW(webkit_web_view_new());
webkit_web_view_load_uri(webview, "https://www.example.com");
gtk_widget_set_hexpand(GTK_WIDGET(webview), true);
gtk_widget_set_vexpand(GTK_WIDGET(webview), true);
auto page_1_content = Gtk::make_managed<Gtk::Box>();
gtk_box_append(page_1_content->gobj(), GTK_WIDGET(webview));
auto page_1_tab = new Gtk::Label("Page 1");
auto page_1 = Gtk::make_managed<gPanthera::ContentPage>(content_manager, content_stack, page_1_content, page_1_tab);
auto page_2_content = Gtk::make_managed<Gtk::Label>("Page 2...");
auto page_2_tab = new Gtk::Label("Page 2");
auto page_2 = Gtk::make_managed<gPanthera::ContentPage>(content_manager, content_stack, page_2_content, page_2_tab);
WebKitWebView *webview = WEBKIT_WEB_VIEW(webkit_web_view_new()); // for some reason, this has to be created
content->set_name("content_box");
auto content_notebook = Gtk::make_managed<gPanthera::ContentNotebook>(content_stack, content_stack_switcher, Gtk::PositionType::TOP);
content->append(*content_notebook);