2016-08-09 30 views
0

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()); 

Antwort

0

ich das Problem gefunden. Cluttermm wickelte das veraltete "Pick" -Signal ab. Offensichtlich verhinderte dies, dass sich das Tastendrucksignal ausbreitete. Also habe ich clutterm gespalten und die Bindungen geändert.

Sehen Sie diese begehen: https://github.com/underdoeg/cluttermm/commit/0e40c9c673c2415ab1b4eb90dd1ebcd95a515810

+0

Bisher dies funktioniert für mich so werde ich es als die akzeptierte Antwort markieren – underdoeg

+0

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