add popover component
This commit is contained in:
35
src/components/popover.cpp
Normal file
35
src/components/popover.cpp
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user