roundabout,
created on Friday, 27 June 2025, 10:31:49 (1751020309),
received on Friday, 27 June 2025, 10:31:52 (1751020312)
Author identity: vlad <vlad.muntoiu@gmail.com>
0286ad0a89d149cb222e8be1a59c9a75fc7bf25d
panthera-www.cc
@@ -315,11 +315,14 @@ private:
gPanthera::ContentPage *controlled_page = nullptr; public: friend class PantheraWww; explicit PantheraWindow(Glib::RefPtr<Gtk::Application> const &application) : Gtk::ApplicationWindow(application) {auto panthera = dynamic_cast<PantheraWww*>(application.get());explicit PantheraWindow(Gtk::Application *application) : Gtk::ApplicationWindow() { // There is a constructor with Glib::RefPtr<Gtk::Application>, but it is not appropriate // because the window will own the application, creating a cycle auto panthera = dynamic_cast<PantheraWww*>(application);if(!panthera) { throw std::runtime_error("Application is not a PantheraWww instance"); } panthera->add_window(*this);this->set_default_size(800, 600); layout_manager = std::make_shared<gPanthera::LayoutManager>();
@@ -451,27 +454,40 @@ public:
auto reload_button = Gtk::make_managed<Gtk::Button>(); reload_button->set_child(*Gtk::make_managed<Gtk::Image>(Gio::Icon::create("view-refresh-symbolic"))); reload_button->set_tooltip_text("Reload"); back_button->signal_clicked().connect([this, panthera]() {auto back_action = Gio::SimpleAction::create("go_back"); add_action(back_action); back_action->signal_activate().connect([this, panthera](const Glib::VariantBase&) {if(controlled_page) { if(auto webview = WEBKIT_WEB_VIEW(controlled_page->get_child()->get_first_child()->gobj())) { webkit_web_view_go_back(webview); } } }); forward_button->signal_clicked().connect([this, panthera]() {back_button->set_action_name("win.go_back"); auto forward_action = Gio::SimpleAction::create("go_forward"); add_action(forward_action); forward_action->signal_activate().connect([this, panthera](const Glib::VariantBase&) {if(controlled_page) { if(auto webview = WEBKIT_WEB_VIEW(controlled_page->get_child()->get_first_child()->gobj())) { webkit_web_view_go_forward(webview); } } }); reload_button->signal_clicked().connect([this, panthera]() {forward_button->set_action_name("win.go_forward"); auto reload_action = Gio::SimpleAction::create("reload"); add_action(reload_action); reload_action->signal_activate().connect([this, panthera](const Glib::VariantBase&) {if(controlled_page) { if(auto webview = WEBKIT_WEB_VIEW(controlled_page->get_child()->get_first_child()->gobj())) { webkit_web_view_reload(webview); } } }); reload_button->set_action_name("win.reload");// Search bar // TODO: provide history, provide a menu button with the other engines auto search_bar = Gtk::make_managed<Gtk::Entry>();
@@ -700,8 +716,7 @@ void PantheraWww::on_new_tab(gPanthera::ContentStack *stack, const Glib::ustring
} PantheraWindow *PantheraWww::make_window() { Glib::RefPtr<Gtk::Application> self_ref = Glib::make_refptr_for_instance<Gtk::Application>(this);auto window = Gtk::make_managed<PantheraWindow>(self_ref);auto window = Gtk::make_managed<PantheraWindow>(this);return window; }
@@ -774,7 +789,7 @@ void PantheraWww::on_startup() {
}); add_action(new_tab_action); set_accels_for_action("app.new_tab", {"<Primary>T"}); file_menu->append(_("New tab"), "app.new_tab");file_menu->append(_("New _Tab"), "app.new_tab");// Close tab auto close_tab_action = Gio::SimpleAction::create("close_tab"); close_tab_action->signal_activate().connect([this](const Glib::VariantBase&) {
@@ -785,7 +800,7 @@ void PantheraWww::on_startup() {
}); add_action(close_tab_action); set_accels_for_action("app.close_tab", {"<Primary>W"}); file_menu->append(_("Close tab"), "app.close_tab");file_menu->append(_("_Close Tab"), "app.close_tab");// New window auto new_window_action = Gio::SimpleAction::create("new_window"); new_window_action->signal_activate().connect([this](const Glib::VariantBase&) {
@@ -793,9 +808,33 @@ void PantheraWww::on_startup() {
}); add_action(new_window_action); set_accels_for_action("app.new_window", {"<Primary>N"}); file_menu->append(_("New window"), "app.new_window");file_menu->append(_("_New Window"), "app.new_window"); // Quit auto quit_action = Gio::SimpleAction::create("quit"); quit_action->signal_activate().connect([this](const Glib::VariantBase&) { quit(); }); add_action(quit_action); set_accels_for_action("app.quit", {"<Primary>Q"}); file_menu->append(_("_Quit"), "app.quit"); main_menu->append_submenu(_("_File"), file_menu); // Go auto go_menu = Gio::Menu::create(); // Back go_menu->append(_("_Back"), "win.go_back"); // Forward go_menu->append(_("_Forward"), "win.go_forward"); main_menu->append_submenu(_("_Go"), go_menu); // View auto view_menu = Gio::Menu::create(); // Reload view_menu->append(_("_Reload"), "win.reload");main_menu->append_submenu(_("File"), file_menu);main_menu->append_submenu(_("_View"), view_menu);set_menubar(main_menu); }