roundabout,
created on Monday, 21 April 2025, 19:08:31 (1745262511),
received on Monday, 21 April 2025, 19:08:51 (1745262531)
Author identity: vlad <vlad.muntoiu@gmail.com>
a7adfec32f48ab7ec7f439d928eab90d69f63710
gpanthera.cc
@@ -497,7 +497,7 @@ namespace gPanthera {
enable_children(); }, false); // Process dropped buttons drop_target->signal_drop().connect([this](const Glib::ValueBase &value, double x, double y) {drop_target->signal_drop().connect([this, content_manager](const Glib::ValueBase &value, double x, double y) {enable_children(); const auto &widget = static_cast<const Glib::Value<ContentPage*>&>(value).get();
@@ -528,6 +528,7 @@ namespace gPanthera {
auto new_notebook = Gtk::make_managed<ContentNotebook>(new_stack, new_switcher, this_notebook ? this_notebook->get_tab_position() : Gtk::PositionType::TOP); new_stack->add_page(*page); new_stack->set_visible_child(*page); content_manager->set_last_operated_page(page);if(x < width / 4) { this->make_paned(Gtk::Orientation::HORIZONTAL, Gtk::PackType::START); if(auto paned = dynamic_cast<Gtk::Paned*>(this->get_parent()->get_parent())) {
@@ -754,6 +755,7 @@ namespace gPanthera {
this->add_controller(drag_source); this->signal_clicked().connect([this, page]() { page->get_stack()->set_visible_child(*page); page->content_manager->set_last_operated_page(page);update_active_style(); }); // Switch tabs on depress
@@ -762,6 +764,7 @@ namespace gPanthera {
this->add_controller(gesture_click); gesture_click->signal_pressed().connect([this, page](int num_presses, double x, double y) { page->get_stack()->set_visible_child(*page); page->content_manager->set_last_operated_page(page);update_active_style(); }); // Provide the drag data
@@ -842,8 +845,10 @@ namespace gPanthera {
close_action->signal_activate().connect([this](const Glib::VariantBase&) { if(!this->page->signal_close.emit()) { if(this->page->get_next_sibling()) { this->page->content_manager->set_last_operated_page(static_cast<ContentPage*>(this->page->get_next_sibling()));this->page->get_stack()->set_visible_child(*this->page->get_next_sibling()); } else if(this->page->get_prev_sibling()) { this->page->content_manager->set_last_operated_page(static_cast<ContentPage*>(this->page->get_prev_sibling()));this->page->get_stack()->set_visible_child(*this->page->get_prev_sibling()); } this->page->redock(nullptr);
@@ -931,8 +936,10 @@ namespace gPanthera {
void ContentPage::lose_visibility() { if(this->get_next_sibling()) { this->content_manager->set_last_operated_page(static_cast<ContentPage*>(this->get_next_sibling()));this->get_stack()->set_visible_child(*this->get_next_sibling()); } else if(this->get_prev_sibling()) { this->content_manager->set_last_operated_page(static_cast<ContentPage*>(this->get_prev_sibling()));this->get_stack()->set_visible_child(*this->get_prev_sibling()); } }
@@ -991,6 +998,18 @@ namespace gPanthera {
stack->add_page(*this); this->content_manager->add_stack(this->stack); } auto click_controller = Gtk::GestureClick::create(); click_controller->set_button(0); click_controller->signal_pressed().connect([this](int num_presses, double x, double y) { this->content_manager->set_last_operated_page(this); }); this->property_has_focus().signal_changed().connect([this]() { if(this->property_has_focus()) { this->content_manager->set_last_operated_page(this); } }); click_controller->set_propagation_phase(Gtk::PropagationPhase::CAPTURE); this->add_controller(click_controller);} ContentManager::ContentManager() : Glib::ObjectBase("ContentManager") {
@@ -1017,4 +1036,13 @@ namespace gPanthera {
ContentStack *ContentNotebook::get_stack() const { return this->stack; } ContentPage *ContentManager::get_last_operated_page() const { return this->last_operated_page; } void ContentManager::set_last_operated_page(ContentPage *page) { this->last_operated_page = page; this->signal_page_operated.emit(page); }} // namespace gPanthera
gpanthera.hh
@@ -108,10 +108,15 @@ namespace gPanthera {
}; class ContentStack; class ContentPage;class ContentManager : public Glib::ObjectBase { private: ContentPage *last_operated_page = nullptr;public: ContentPage *get_last_operated_page() const; void set_last_operated_page(ContentPage *page); sigc::signal<void(ContentPage*)> signal_page_operated;std::vector<ContentStack*> stacks; ContentManager();
locales/ro/LC_MESSAGES/gpanthera.mo
panthera-www.cc
@@ -23,7 +23,8 @@ protected:
auto dock_stack_2 = Gtk::make_managed<gPanthera::DockStack>(layout_manager, "Two"); auto switcher_2 = Gtk::make_managed<gPanthera::DockStackSwitcher>(dock_stack_2, Gtk::Orientation::VERTICAL); auto pane_1_content = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL, 0); pane_1_content->append(*Gtk::make_managed<Gtk::Label>("Pane 1 content"));auto debug_button = Gtk::make_managed<Gtk::Button>("Debug"); pane_1_content->append(*debug_button);auto pane_2_content = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL, 0); pane_2_content->append(*Gtk::make_managed<Gtk::Label>("Pane 2 content")); auto pane_3_content = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL, 0);
@@ -98,6 +99,9 @@ protected:
outer_paned->set_end_child(*inner_paned); outer_grid->attach(*outer_paned, 1, 1, 1, 1); window->set_child(*outer_grid); debug_button->signal_clicked().connect([this, content_manager]() { std::cout << "Last operated page: " << content_manager->get_last_operated_page()->get_name() << std::endl; });} void on_activate() override {