roundabout,
created on Saturday, 15 March 2025, 14:14:26 (1742048066),
received on Saturday, 15 March 2025, 14:14:29 (1742048069)
Author identity: vlad <vlad.muntoiu@gmail.com>
ecab397861e7db5c54b408c27481e0158e5a521e
gpanthera.cc
@@ -316,6 +316,7 @@ namespace gPanthera {
this->pane->pop_out();
return true;
}
this->set_opacity(1);
return false;
}, false);
// Add a drop target to the button
@@ -579,7 +580,15 @@ namespace gPanthera {
}, false);
this->add_controller(drop_target);
// Pop out if dragged to an external location
// TODO: Implement this, allow defining custom behavior at the content manager level
drag_source->signal_drag_cancel().connect([this](const Glib::RefPtr<Gdk::Drag>&, Gdk::DragCancelReason reason) {
if(reason == Gdk::DragCancelReason::NO_TARGET) {
auto stack = dynamic_cast<ContentStack*>(this->page->get_stack());
this->set_opacity(1);
return stack->signal_detach.emit(this->page);
}
this->set_opacity(1);
return false;
}, false);
}
void ContentTab::update_active_style() {
gpanthera.hh
@@ -149,6 +149,7 @@ namespace gPanthera {
class ContentStack : public BaseStack {
private:
public:
sigc::signal<bool(ContentPage*)> signal_detach;
std::shared_ptr<ContentManager> content_manager;
explicit ContentStack(std::shared_ptr<ContentManager> content_manager);
void add_page(ContentPage &child);
panthera-www.cc
@@ -65,6 +65,10 @@ protected:
auto page_2_content = Gtk::make_managed<Gtk::Label>("Page 2...");
auto page_2_tab = new Gtk::Label("Page 2");
auto page_2 = Gtk::make_managed<gPanthera::ContentPage>(content_manager, content_stack, page_2_content, page_2_tab);
content_stack->signal_detach.connect([](gPanthera::ContentPage *widget) {
std::cout << "Detaching " << widget->get_name() << std::endl;
return false; // Widget not actually detached
});
inner_paned->set_start_child(*content);
inner_paned->set_end_child(*dock_stack_1);
outer_paned->set_end_child(*inner_paned);