roundabout,
created on Wednesday, 9 April 2025, 13:35:39 (1744205739),
received on Wednesday, 9 April 2025, 18:44:56 (1744224296)
Author identity: vlad <vlad.muntoiu@gmail.com>
2c71f9f9022d513eb1e3ca1e49d8d5923d2e659f
CMakeLists.txt
@@ -7,12 +7,15 @@ add_library(gpanthera SHARED gpanthera.cc)
add_executable(panthera-www panthera-www.cc) target_link_libraries(panthera-www gpanthera) target_link_libraries(panthera-www webkitgtk-6.0)find_package(PkgConfig REQUIRED) pkg_check_modules(GTKMM REQUIRED gtkmm-4.0) pkg_check_modules(WebKit REQUIRED webkitgtk-6.0)include_directories(${GTKMM_INCLUDE_DIRS}) link_directories(${GTKMM_LIBRARY_DIRS}) include_directories(${WebKit_INCLUDE_DIRS})add_definitions(${GTKMM_CFLAGS_OTHER}) target_link_libraries(gpanthera ${GTKMM_LIBRARIES})
gpanthera.cc
@@ -942,14 +942,10 @@ namespace gPanthera {
} } Gtk::Widget *ContentPage::get_child() const {return this->child;}ContentPage::ContentPage(std::shared_ptr<ContentManager> content_manager, ContentStack *stack, Gtk::Widget *child, Gtk::Widget *tab_widget) : Gtk::Box(Gtk::Orientation::VERTICAL, 0), content_manager(std::move(content_manager)), child(child), tab_widget(tab_widget) {Gtk::Overlay(), content_manager(std::move(content_manager)), child(child), tab_widget(tab_widget) {this->set_name("gpanthera_content_page"); this->append(*child);this->set_child(*child);this->set_tab_widget(tab_widget); this->set_margin_top(0); this->set_margin_bottom(0);
gpanthera.hh
@@ -119,7 +119,7 @@ namespace gPanthera {
void remove_stack(ContentStack *stack); }; class ContentPage : public Gtk::Box {class ContentPage : public Gtk::Overlay {private: Gtk::Widget *tab_widget; ContentStack *stack = nullptr;
@@ -128,12 +128,10 @@ namespace gPanthera {
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); Gtk::Widget *get_child() const;sigc::signal<bool()> signal_close; Gtk::Widget *get_tab_widget() const; void redock(ContentStack *stack); void set_tab_widget(Gtk::Widget *tab_widget); void set_child(Gtk::Widget *child);ContentStack *get_stack() const; void lose_visibility(); };
panthera-www.cc
@@ -6,6 +6,8 @@
#include <memory> #include <libintl.h> #include <locale.h> #include <gtk/gtk.h> #include <webkit/webkit.h>class PantheraWww : public Gtk::Application { Gtk::Window *window = Gtk::make_managed<Gtk::Window>();
@@ -76,7 +78,12 @@ 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); auto page_1_content = Gtk::make_managed<Gtk::Label>("Page 1...");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...");