add popover component

This commit is contained in:
2025-12-20 20:52:04 +01:00
parent 3558fd3ebc
commit 47f052f913
8 changed files with 119 additions and 89 deletions

View File

@@ -3,23 +3,7 @@
#include <gtkmm/label.h>
#include <webkit/webkit.h>
WebWidget::WebWidget(std::string icon, std::string title, std::string url) {
auto label = Gtk::make_managed<Gtk::Label>(icon);
label->add_css_class("icon-label");
set_child(*label);
signal_clicked().connect(
sigc::mem_fun(*this, &WebWidget::on_toggle_window));
popover = new Gtk::Popover();
popover->set_parent(*this);
popover->set_autohide(true);
popover->signal_closed().connect([this]() {
this->add_css_class("minimized");
this->remove_css_class("restored");
});
WebWidget::WebWidget(std::string icon, std::string name, std::string url) : Popover(icon, name) {
auto webview = webkit_web_view_new();
gtk_widget_set_hexpand(webview, true);
gtk_widget_set_vexpand(webview, true);
@@ -31,19 +15,5 @@ WebWidget::WebWidget(std::string icon, std::string title, std::string url) {
webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webview), url.c_str());
gtk_popover_set_child(popover->gobj(), webview);
}
WebWidget::~WebWidget() {
delete popover;
}
void WebWidget::on_toggle_window() {
if (popover->get_visible()) {
popover->popdown();
} else {
popover->popup();
this->remove_css_class("minimized");
this->add_css_class("restored");
}
this->set_popover_child(*Glib::wrap(webview));
}