roundabout,
created on Saturday, 12 April 2025, 11:55:55 (1744458955),
received on Saturday, 12 April 2025, 11:55:58 (1744458958)
Author identity: vlad <vlad.muntoiu@gmail.com>
d4e6748d33214b8f2f2135efa2bccf75c2c1ef74
gpanthera.cc
@@ -6,6 +6,7 @@
#include <libintl.h> #include <locale.h> #include <filesystem> #include <ranges>#define _(STRING) gettext(STRING) namespace gPanthera {
@@ -459,6 +460,20 @@ namespace gPanthera {
signal_child_removed.emit(&child); } void ContentStack::disable_children() { auto children = collect_children(*this); for(auto *child : children) { child->set_can_target(false); } } void ContentStack::enable_children() { auto children = collect_children(*this); for(auto *child : children) { child->set_can_target(true); } } ContentStack::ContentStack(std::shared_ptr<ContentManager> content_manager, std::function<bool(ContentPage*)> detach_handler) : BaseStack(), content_manager(std::move(content_manager)) { this->set_name("gpanthera_content_stack");
@@ -472,8 +487,18 @@ namespace gPanthera {
drop_target = Gtk::DropTarget::create(ContentPage::get_type(), Gdk::DragAction::MOVE); this->add_controller(drop_target); // Some widgets (such as webviews) will consume anything dropped on their ancestors. We have // to disable all child widgets to ensure the drop can be caught by this widget. drop_target->signal_enter().connect([this](double x, double y) { disable_children(); return Gdk::DragAction::MOVE; }, false); drop_target->signal_leave().connect([this]() { enable_children(); }, false);// Process dropped buttons drop_target->signal_drop().connect([this](const Glib::ValueBase &value, double x, double y) { enable_children();const auto &widget = static_cast<const Glib::Value<ContentPage*>&>(value).get(); if(auto page = dynamic_cast<ContentPage*>(widget)) {
gpanthera.hh
@@ -153,6 +153,9 @@ namespace gPanthera {
}; class ContentStack : public BaseStack { private: void disable_children(); void enable_children();protected: std::function<bool(ContentPage*)> detach_handler; public:
panthera-www.cc
@@ -7,6 +7,7 @@
#include <libintl.h> #include <locale.h> #include <gtk/gtk.h> #include <gdk/gdk.h>#include <webkit/webkit.h> class PantheraWww : public Gtk::Application {