roundabout,
created on Monday, 10 March 2025, 18:16:57 (1741630617),
received on Monday, 10 March 2025, 18:17:00 (1741630620)
Author identity: vlad <vlad.muntoiu@gmail.com>
c26aa090a119bdc3e391dae30e4b70aecb10c648
gpanthera.cc
@@ -272,7 +272,7 @@ namespace gPanthera {
remove_handler.disconnect();
}
DockButton::DockButton(DockablePane *pane) : Gtk::Button(), pane(pane) {
DockButton::DockButton(DockablePane *pane) : Gtk::ToggleButton(), pane(pane) {
if(pane->get_icon()) {
this->set_child(*copy_image(pane->get_icon()));
}
@@ -349,9 +349,11 @@ namespace gPanthera {
if(this->pane->get_stack()->get_visible_child_name() == this->pane->get_identifier()) {
this->add_css_class("checked");
this->add_css_class("gpanthera-dock-button-active");
this->set_active(true);
} else {
this->remove_css_class("checked");
this->remove_css_class("gpanthera-dock-button-active");
this->set_active(false);
}
}
@@ -365,9 +367,15 @@ namespace gPanthera {
for(auto *button : old_buttons) {
remove(*button);
}
DockButton* first_child = nullptr;
for(auto *widget = stack->get_first_child(); widget; widget = widget->get_next_sibling()) {
if(auto pane = dynamic_cast<DockablePane*>(widget)) {
auto *button = Gtk::make_managed<DockButton>(pane);
if(!first_child) {
first_child = button;
} else {
button->set_group(*first_child);
}
if(pane->get_identifier() != Glib::ustring("")) {
append(*button);
}
@@ -387,7 +395,6 @@ namespace gPanthera {
this->stacks.erase(std::ranges::remove(this->stacks, stack).begin(), this->stacks.end());
}
void BaseStack::add(Gtk::Widget &child, const Glib::ustring &name) {
Gtk::Stack::add(child, name);
signal_child_added.emit(&child);
gpanthera.hh
@@ -80,7 +80,7 @@ namespace gPanthera {
void add_pane(DockablePane &child);
};
class DockButton : public Gtk::Button {
class DockButton : public Gtk::ToggleButton {
private:
sigc::connection active_style_handler;
std::shared_ptr<Gtk::DragSource> drag_source;