roundabout,
created on Friday, 14 March 2025, 18:34:11 (1741977251),
received on Friday, 14 March 2025, 18:34:14 (1741977254)
Author identity: vlad <vlad.muntoiu@gmail.com>
8320631e719e88c7a8664ed5550653b221ecbd63
gpanthera.cc
@@ -478,13 +478,14 @@ namespace gPanthera {
}
ContentTab* first_child = nullptr;
for(auto *widget = stack->get_first_child(); widget; widget = widget->get_next_sibling()) {
if(auto pane = dynamic_cast<ContentPage*>(widget)) {
auto *button = Gtk::make_managed<ContentTab>(pane);
if(auto page = dynamic_cast<ContentPage*>(widget)) {
auto *button = Gtk::make_managed<ContentTab>(page);
if(!first_child) {
first_child = button;
} else {
button->set_group(*first_child);
}
this->append(*button);
}
}
}
@@ -501,7 +502,7 @@ namespace gPanthera {
this->get_style_context()->add_class("toggle");
this->get_style_context()->add_class("gpanthera-content-tab");
// Add/remove CSS classes when the pane is shown/hidden
active_style_handler = this->page->get_stack()->property_visible_child_name().signal_changed().connect([this]() {
active_style_handler = this->page->get_stack()->property_visible_child().signal_changed().connect([this]() {
this->update_active_style();
});
drag_source = Gtk::DragSource::create();
@@ -514,6 +515,7 @@ namespace gPanthera {
this->add_controller(drag_source);
this->signal_clicked().connect([this, page]() {
page->get_stack()->set_visible_child(*page);
update_active_style();
});
// Provide the drag data
drag_source->signal_prepare().connect([this](double, double) {
@@ -523,6 +525,7 @@ namespace gPanthera {
drag_source->set_icon(paintable, 0, 0);
return Gdk::ContentProvider::create(value);
}, false);
update_active_style();
// Pop out if dragged to an external location
// TODO: Implement this, allow defining custom behavior at the content manager level
}
panthera-www.cc
@@ -53,15 +53,15 @@ protected:
outer_paned->set_start_child(*dock_stack_2);
auto inner_paned = Gtk::make_managed<Gtk::Paned>(Gtk::Orientation::VERTICAL);
auto content = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL, 0);
// auto content_manager = std::make_shared<gPanthera::ContentManager>();
// auto content_stack = Gtk::make_managed<gPanthera::ContentStack>(content_manager);
// auto content_stack_switcher = Gtk::make_managed<gPanthera::ContentTabBar>(content_stack, Gtk::Orientation::HORIZONTAL);
// content->append(*content_stack_switcher);
// content->append(*content_stack);
// auto page_1_content = Gtk::make_managed<Gtk::Label>("Page 1...");
// auto page_1_tab = Gtk::make_managed<Gtk::Label>("Page 1");
// auto page_1 = Gtk::make_managed<gPanthera::ContentPage>(content_manager, content_stack, page_1_content, page_1_tab);
// content_stack->add_page(*page_1);
auto content_manager = std::make_shared<gPanthera::ContentManager>();
auto content_stack = Gtk::make_managed<gPanthera::ContentStack>(content_manager);
auto content_stack_switcher = Gtk::make_managed<gPanthera::ContentTabBar>(content_stack, Gtk::Orientation::HORIZONTAL);
content->append(*content_stack_switcher);
content->append(*content_stack);
auto page_1_content = Gtk::make_managed<Gtk::Label>("Page 1...");
auto page_1_tab = Gtk::make_managed<Gtk::Label>("Page 1");
auto page_1 = Gtk::make_managed<gPanthera::ContentPage>(content_manager, content_stack, page_1_content, page_1_tab);
content_stack->add_page(*page_1);
inner_paned->set_start_child(*content);
inner_paned->set_end_child(*dock_stack_1);
outer_paned->set_end_child(*inner_paned);