53 lines
1.5 KiB
C++
53 lines
1.5 KiB
C++
#include "widgets/webWidget.hpp"
|
|
#include <gtkmm/box.h>
|
|
#include <webkit/webkit.h>
|
|
|
|
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;
|
|
}
|