roundabout,
created on Wednesday, 9 April 2025, 18:44:52 (1744224292),
received on Wednesday, 9 April 2025, 18:44:56 (1744224296)
Author identity: vlad <vlad.muntoiu@gmail.com>
f4fda9f0de744bc2036f845aa035b0132908bb33
gpanthera.cc
@@ -473,11 +473,10 @@ namespace gPanthera {
drop_target = Gtk::DropTarget::create(ContentPage::get_type(), Gdk::DragAction::MOVE); this->add_controller(drop_target); // Process dropped buttons drop_target->signal_drop().connect([this](const Glib::ValueBase& value, double x, double y) {drop_target->signal_drop().connect([this](const Glib::ValueBase &value, double x, double y) {const auto &widget = static_cast<const Glib::Value<ContentPage*>&>(value).get(); if(auto page = dynamic_cast<ContentPage*>(widget)) { page->lose_visibility();if(page->get_stack() == this && !this->get_first_child()->get_next_sibling()) { // Don't allow splitting if there are no more pages return false;
@@ -489,10 +488,15 @@ namespace gPanthera {
double width = this->get_allocated_width(), height = this->get_allocated_height(); // Split based on the drop position if(!(x < width / 4 || x > width * 3 / 4 || y < height / 4 || y > height * 3 / 4)) { if(page->get_stack() == this) { return false; } page->lose_visibility();// If the drop position is not at a quarter to the edges, move to the same stack this->add_page(*page); return true; } page->lose_visibility();auto new_stack = Gtk::make_managed<ContentStack>(this->content_manager, this->detach_handler); auto this_notebook = dynamic_cast<ContentNotebook*>(this->get_parent()); auto new_switcher = Gtk::make_managed<ContentTabBar>(new_stack, this_notebook ? this_notebook->get_switcher()->get_orientation() : Gtk::Orientation::HORIZONTAL, this_notebook->get_switcher()->get_extra_child_function());
@@ -594,7 +598,7 @@ namespace gPanthera {
drop_target = Gtk::DropTarget::create(ContentPage::get_type(), Gdk::DragAction::MOVE); this->add_controller(drop_target); // Process dropped buttons drop_target->signal_drop().connect([this](const Glib::ValueBase& value, double x, double y) {drop_target->signal_drop().connect([this](const Glib::ValueBase &value, double x, double y) {if(const auto &widget = static_cast<const Glib::Value<ContentPage*>&>(value).get()) { if(auto page = dynamic_cast<ContentPage*>(widget)) { this->stack->add_page(*page);
@@ -749,7 +753,7 @@ namespace gPanthera {
}, false); drop_target = Gtk::DropTarget::create(ContentPage::get_type(), Gdk::DragAction::MOVE); // Process dropped buttons by inserting them after the current button drop_target->signal_drop().connect([this](const Glib::ValueBase& value, double x, double y) {drop_target->signal_drop().connect([this](const Glib::ValueBase &value, double x, double y) {const auto &widget = static_cast<const Glib::Value<ContentPage*>&>(value).get(); if(widget) {
@@ -790,14 +794,15 @@ namespace gPanthera {
if(reason == Gdk::DragCancelReason::NO_TARGET) { auto stack = dynamic_cast<ContentStack*>(this->page->get_stack()); bool result = stack->signal_detach.emit(this->page); if(!result) {this->set_opacity(1);}this->set_opacity(1);return result; } this->set_opacity(1); return false; }, false); drag_source->signal_drag_end().connect([this](const Glib::RefPtr<Gdk::Drag>&, bool drop_ok) { this->set_opacity(1); }, false);// Provide a context menu context_menu = Gio::Menu::create();