#include "widgets/webWidget.hpp" #include #include WebWidget::WebWidget(std::string label, std::string title, std::string url) { set_label(label); signal_clicked().connect( sigc::mem_fun(*this, &WebWidget::on_toggle_window)); web_window = new Gtk::Window(); web_window->set_title(title); web_window->set_default_size(1024, 768); web_window->signal_close_request().connect( [this]() { web_window->hide(); return true; }, false); auto webview = webkit_web_view_new(); gtk_widget_set_hexpand(webview, true); gtk_widget_set_vexpand(webview, true); auto settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webview)); webkit_settings_set_hardware_acceleration_policy( settings, WEBKIT_HARDWARE_ACCELERATION_POLICY_ALWAYS); webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webview), url.c_str()); // Use C API to set child because we don't have a C++ wrapper for // WebKitWebView gtk_window_set_child(web_window->gobj(), webview); } WebWidget::~WebWidget() { delete web_window; } void WebWidget::on_toggle_window() { if (web_window->is_visible()) { web_window->set_visible(false); this->add_css_class("minimized"); this->remove_css_class("restored"); } else { web_window->set_visible(true); this->remove_css_class("minimized"); this->add_css_class("restored"); } return; }