Ich habe das Code-Snippet folgende cluttermm mit 1,24: ": XX Child", wenn darauf geklicktcluttermm Mausereignisse mit verschachtelten Schauspieler
#include <cluttermm.h>
int main(int argc, char *argv[]){
Clutter::init(argc, argv);
auto stage = Clutter::Stage::create();
stage->set_size(1280, 720);
//create a parent actor
auto parent = Clutter::Actor::create();
parent->set_size(1240, 720);
parent->set_margins(20, 20, 20, 20);
//create children
for(unsigned i=0; i<84; i++){
auto child = Clutter::Actor::create();
child->set_name(std::to_string(i).c_str());
child->set_size(80, 80);
child->set_background_color(Clutter::Color(80));
child->set_reactive(true);
child->signal_button_press_event().connect([child](Clutter::ButtonEvent* evt){
g_print("Child: %s", child->get_name().c_str());
return true;
});
parent->add_child(child);
}
auto layout = Clutter::FlowLayout::create(Clutter::FlowOrientation::FLOW_HORIZONTAL);
layout->set_column_spacing(20);
layout->set_row_spacing(20);
parent->set_layout_manager(layout);
stage->add_child(parent);
stage->show();
Clutter::main();
}
Kinder Akteure sollten drucken. Aber sie reagieren überhaupt nicht. Wenn der übergeordnete Typ in die (veraltete) Clutter :: Group geändert wird, ist das Klickverhalten wie erwartet, aber das FlowLayout funktioniert nicht mehr. Was fehlt mir hier? Muss ich etwas am übergeordneten Akteur aktivieren, um die Containerfunktionalität zu aktivieren?
EDIT: Austausch der Eltern Schauspieler mit C-Code verhält sich wie erwartet:
auto parent = clutter_actor_new();
clutter_actor_set_layout_manager (parent, CLUTTER_LAYOUT_MANAGER(layout->gobj()));
clutter_actor_set_size (parent, 1240, 720);
clutter_actor_add_child (CLUTTER_ACTOR(stage->gobj()), parent);
...
clutter_actor_add_child (parent, child->gobj());
Bisher dies funktioniert für mich so werde ich es als die akzeptierte Antwort markieren – underdoeg
Güter für die Suche nach dem Problem erledigt. Vielen Dank. Wir haben in der Vergangenheit ein ähnliches Problem mit dem Pick-Vfunc in ClutterActor gesehen, also ist es vielleicht Teil desselben Problems. Ich habe deine Commits zum Master geschoben, nachdem ich die cluttermm-1-24-Arbeit zum Master gemacht habe (weil Clutter-2.0 nicht passieren wird). Es wäre besser gewesen, sie in Bugzilla zu erwähnen: https://bugzilla.gnome.org/page.cgi?id=browse.html&product=cluttermm. Sie sollten im Moment nicht viel von clutterm erwarten. Niemand hält es wirklich aufrecht, obwohl Verbesserungen sehr willkommen sind. – murrayc