roundabout,
created on Tuesday, 22 April 2025, 19:13:52 (1745349232),
received on Tuesday, 22 April 2025, 19:13:56 (1745349236)
Author identity: vlad <vlad.muntoiu@gmail.com>
02ca09388cff7f48535ad9546e7ce27a3bd80112
gpanthera.hh
@@ -125,11 +125,11 @@ namespace gPanthera {
}; class ContentPage : public Gtk::Overlay { private:Gtk::Widget *tab_widget;protected:ContentStack *stack = nullptr; Gtk::Widget *child; public: Gtk::Widget *tab_widget;std::shared_ptr<ContentManager> content_manager; ContentStack *last_stack = nullptr; ContentPage(std::shared_ptr<ContentManager> content_manager, ContentStack *stack, Gtk::Widget *child, Gtk::Widget *tab_widget);
panthera-www.cc
@@ -16,6 +16,17 @@ protected:
std::shared_ptr<gPanthera::LayoutManager> layout_manager; std::shared_ptr<gPanthera::ContentManager> content_manager; static void notify_callback(GObject *object, GParamSpec *pspec, gpointer data) { auto parent = gtk_widget_get_parent(gtk_widget_get_parent(GTK_WIDGET(object))); if(auto page = dynamic_cast<gPanthera::ContentPage*>(Glib::wrap(parent))) { if(g_strcmp0(pspec->name, "title") == 0) { if(auto label = dynamic_cast<Gtk::Label*>(page->tab_widget)) { label->set_label(webkit_web_view_get_title(WEBKIT_WEB_VIEW(object))); } } } } void on_new_tab(gPanthera::ContentStack *stack) { if(!stack) { // Find the current area
@@ -23,13 +34,14 @@ protected:
} WebKitWebView *webview = WEBKIT_WEB_VIEW(webkit_web_view_new()); webkit_web_view_load_uri(webview, "about:blank");gtk_widget_set_hexpand(GTK_WIDGET(webview), true); gtk_widget_set_vexpand(GTK_WIDGET(webview), true); auto page_content = Gtk::make_managed<Gtk::Box>(); gtk_box_append(page_content->gobj(), GTK_WIDGET(webview)); auto page_tab = new Gtk::Label("Tab"); 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");stack->add_page(*page); }