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

@@ -0,0 +1,35 @@
#include "components/popover.hpp"
#include "gtkmm/label.h"
#include "gtkmm/object.h"
Popover::Popover(std::string icon, std::string name) {
auto label = Gtk::make_managed<Gtk::Label>(icon);
label->add_css_class("icon-label");
set_child(*label);
signal_clicked().connect(
sigc::mem_fun(*this, &Popover::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");
});
}
Popover::~Popover() {
delete popover;
}
void Popover::on_toggle_window() {
if (popover->get_visible()) {
popover->popdown();
} else {
this->remove_css_class("minimized");
this->add_css_class("restored");
popover->popup();
}
}